您的位置:首页 > 其它

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

2017-08-28 21:46 295 查看
2、神经网络技巧和贴士

2.1 梯度检查

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



其中


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

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





2.2 正则

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




是Frobenius范数。

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

2.3 神经单元

常用的激活函数有以下几种

Sigmoid





梯度为



Tanh





梯度为



Hard tanh

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





导数可表达为



Soft sign





导数可表达为



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

ReLU





导数为



Leaky ReLU





导数为



2.4 Xavier参数初始化

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



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

这里bias单元初始化为0

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

2.5 学习速率





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

Ronan等提出了

,其中a0是初始速率,t是何时速率开始递减。

2.6使用AdaGrad

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



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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  NLP 笔记