2、神经网络技巧和贴士

2.1 梯度检查

我们讨论了用微分来计算神经网络模型中参数的误差梯度,这里讨论另一种近似技巧,不需要误差反向传播。

NLP深度学习 —— CS224学习笔记7

其中NLP深度学习 —— CS224学习笔记7

这种方法计算成本极其高,要使用两次前向传播,但是一种验证反向传播的好方法。

一个简单的梯度检查可以用以下方法实现

NLP深度学习 —— CS224学习笔记7

NLP深度学习 —— CS224学习笔记7

2.2 正则

我们使用L2正则防止过拟合

NLP深度学习 —— CS224学习笔记7

NLP深度学习 —— CS224学习笔记7是Frobenius范数。

使用这样的约束可以解释为先验贝叶斯信任,优化的权重接近0。

2.3 神经单元

常用的**函数有以下几种

Sigmoid

NLP深度学习 —— CS224学习笔记7

NLP深度学习 —— CS224学习笔记7

梯度为

NLP深度学习 —— CS224学习笔记7

Tanh

NLP深度学习 —— CS224学习笔记7

NLP深度学习 —— CS224学习笔记7

梯度为

NLP深度学习 —— CS224学习笔记7

Hard tanh

计算代价更小,但对于z级数大于1时饱和

NLP深度学习 —— CS224学习笔记7

NLP深度学习 —— CS224学习笔记7

导数可表达为



NLP深度学习 —— CS224学习笔记7

Soft sign

NLP深度学习 —— CS224学习笔记7

NLP深度学习 —— CS224学习笔记7

导数可表达为

NLP深度学习 —— CS224学习笔记7

sgn是signum函数,返回1或-1,依赖于z的符号。

ReLU

NLP深度学习 —— CS224学习笔记7

NLP深度学习 —— CS224学习笔记7

导数为

NLP深度学习 —— CS224学习笔记7

Leaky ReLU

NLP深度学习 —— CS224学习笔记7

NLP深度学习 —— CS224学习笔记7

导数为

NLP深度学习 —— CS224学习笔记7

2.4 Xavier参数初始化

Xavier等发现,对于sigmoid和tanh**单元,更低的误差率和更快的聚合可以通过将矩阵权重W随机初始化为下列范围内的均匀分布

NLP深度学习 —— CS224学习笔记7

n_(l)是输入单元,n_(l+1)是输出单元

这里bias单元初始化为0

这种方法试图在层之间保持**振动和反向传播梯度振动,否则梯度振动(信息的代理)一般会随着层间反向传播递减。

2.5 学习速率

NLP深度学习 —— CS224学习笔记7

NLP深度学习 —— CS224学习笔记7

我们碰到的大多数模型是non-convex模型,大的学习速率难以预测因为很大机会损失函数会发散。

Ronan等提出了NLP深度学习 —— CS224学习笔记7,其中a0是初始速率,t是何时速率开始递减。

2.6使用AdaGrad

与标准随机梯度下降的区别在于学习速率可对每个参数不同。每个参数的学习速率依赖于这个参数的梯度更新历史,对于此前更新少的参数使用更大的学习速率以使它更快更新。

NLP深度学习 —— CS224学习笔记7

如果梯度的历史RMS非常低,则学习速率会非常高,简单实现如下

NLP深度学习 —— CS224学习笔记7

相关文章:

  • 2021-07-24
  • 2021-12-18
  • 2021-04-13
  • 2021-08-15
  • 2021-07-02
  • 2021-06-27
猜你喜欢
  • 2021-09-21
  • 2021-11-07
  • 2021-06-15
  • 2021-07-05
  • 2021-10-19
  • 2021-04-05
  • 2021-04-09
相关资源
相似解决方案