神经网络算法改进


* 提高泛化能力

  • 代价函数的选择:交叉熵代价函数
  • 四种规范化:L1;L2;弃权;训练数据集合的人为扩大

1. 交叉熵代价函数

* 二次代价函数的缺点

  • 明显错误的情况,学习速率反而慢
  • 为什么?学习速率,由偏导数$$\frac{\partial C}{\partial w}$$和$$\frac{\partial C}{\partial b}$$决定

  • 二次函数 $$C=\frac{(y-a)^2}{2}$$,其中 a是神经元的输出:$$a=\sigma(z), \ \ z=wx+b$$

  • 当神经元的输出接近 1的时候,曲线变平坦,$$\sigma^{'}(z)$$很小,学习速率慢

* 交叉熵函数

  • 说明,交叉熵函数的权重学习速度,由$$\sigma(z)-y$$决定,避免了$$\sigma^{'}(z)项$$导致的学习缓慢

* 多神经元的交叉熵

* 交叉熵的意义

  • 交叉熵是不确定性的量度

  • 假设,a是神经元估算y=1的概率,1-a是y=0的概率,

  • 交叉熵:学习到y的正确值的平均起来的不确定性

2. softmax


3. 过度拟合和规范化

3.1 过拟合

  • 模型拥有足够的精确度来描述,几乎所有给定大小的数据集,但对新的数据集合难以泛华

* 超参数

  • 使用validation——data数据集
  • hold_out的方法:就是从training_test中留出或者拿出一部分

* 解决过拟合的最好的方式之一:增加训练的样本数目

3.2 规范化

* 权重衰减或者L2

* 为什么规范化可以减少过拟合

  • 小的权重在某种程度上意味着更低的复杂性,也就是对数据具有更简单却强大的解释,因此应该优先选择

3.3 其他正则化技术

  • L1
  • 人为扩大数据集合

* 算法A和算法B的比较,第一反应,你使用什么样的数据集合


4. 权重的初始化

  • 简单方式:归一化的高斯分布,均值是0,方差是1
  • 改进:假设有$$n{in}$$个输入权重的神经元,则我们用均值为0,标准差为$$\sqrt{1}{n{in}}$$,的高斯分布初始化这些权重

5. 神经网络超参数

  • 主要的超参数:学习速率,正则化参数,批数据大小

* 学习速率

  • 不适用验证集,经验设置,数量级的方法(0.0001,0.001,0.01,0.1,1.0,10.0)
  • 过大会震荡
  • 过小会在开始的时候速度很慢
  • 选择立即开始,而不是震荡或者增加的值

* 迭代次数

* 正则化参数

  • 建议:首先确定步长,此时不包括规范化参数$$\lambda=0.0$$

  • 使用验证数据集合,选择$$\lambda$$

  • $$\lambda确定后,再验证步长$$

* 小批量数据集的选择

  • 数据集太小,速度慢
  • 太大,不能够,足够频繁的更新权重
  • 10左右

6. 其他技术

6.1 随机梯度下降的变化

* hessian技术

  • 二次导数

* momentum的梯度下降

* Nesterov的技术


7. 人工神经网络的其他模型

  • tanh
  • ReLU

results matching ""

    No results matching ""