基于深度学习的自然语言处理--笔记(第五章)

第五章 神经网络训练


前言

与线性模型类似,神经网络也是可微分的参数化函数,它使用了基于梯度的优化方法来进行训练,非线性神经网络的目标函数并不是凸函数,因此使用基于梯度的优化方法,可能会陷入局部极小。但是,基于梯度的优化方法在实际应用中仍然取得了良好的效果。
梯度计算是神经网络训练的核心

5.1计算图

计算图是任意数学表达式的一种图表达结构。
它是一个有向无环图 (DAG),其中结点对
应于数学运算或者变量,边对应于结点间计算值的流。图形结构在不同的组件之间根据依赖
关系定义计算的顺序。计算图是 DAG ,而不是一棵树,一个操作的结果可以作为多个连续操作的输人。
下面我们来看一个简单的计算图例子,计算
( a ∗ b + 1 ) ∗ ( a ∗ b + 2 ) (a*b+1)*(a*b+2) (ab+1)(ab+2)
在这里插入图片描述

5.1.1前向计算

前向传递计算了图中结点的输出,由于每个结点的输出只依赖于它本身和传人的边,所以容易通过遍历拓扑顺序的结点来计算所有结点的输出,并在给定前驱时,计算每个结点的输出。

在这里插入图片描述

5.1.2 反向计算(倒数、反向传播)

反向传播过程开始于设置一个损失结点 N N N ,该结点拥有 1 ∗ 1 1*1 11的标量输出,然后进行前向传播计算直到到达结点 N N N,根据结点值,反向传播过程计算了该结点参数的梯度。
在这里插入图片描述反向传播算法本质上是使用链式求导法则

5.2 实践经验

目标函数的非凸性意味着优化过程可能陷入局部极小或鞍点,从不同的初始点开始(比如,参数的不同随机值)可能会产生不同的结果,因此我们建议尝试几次从不同的随机初始化开始训练,选择其中 一个在开发集上最好的结果。
随机数的大小对网络训练的成功与否具有非常大的影响。

  1. 建议权重矩阵:
    在这里插入图片描述 U ( a , b ) U(a,b) U(a,b)是范围 [ a , b ] [a,b] [a,b]的一个均匀采样。权重矩阵 W ∈ R d i n ∗ d o u t W\in\mathbb R^{d_{in}*d_{out}} WRdindout

  2. 当使用 R e L u ReLu ReLu非线性激活函数时,应该从均值为0,方差为 ( 2 / d i n ) 1 / 2 (2/{d_{in}})^{1/2} (2/din)1/2的高斯分布采样进行权值初始化。

5.2.4 梯度消失与梯度爆炸

在深层网络中,因为梯度通过计算图反向传播回来,错误梯度是非常常见的,要么梯度消失(变得非常接近0),要么梯度爆炸(变得非常高)。
处理梯度消失是个开放性研究问题。解决方案有:让网络变浅,逐步训练。
处理梯度爆炸:简单而有效方法,如果它们的范数超过给定的阈值,就裁剪掉。

5.2.5饱和神经元与死神经元

带有 tanh与sigmoid 激活函数的网络层往往容易饱和——造成该层的输出都接近于1 ,这是激活函数的上界。
带有 ReLU 激活函数的网络层不会饱和,但是会“死掉”一一大部分甚至所有的值为负值,因此对于所有的输入来说都裁剪为0 ,从而导致该层梯度全为0 。
如果你的网络没有训练好,检查网络层的饱和神经元与死神经元是明智的,饱和神经元是由值太大的输入层造成的。这可以通过更改初始 、缩放输人值的范围或者改变学习速率来控制。死神经元是由进入网络层的负值引起的(例如,在大规模的梯度更新后可能会发生),减少学习率将减缓这种现象。
对于饱和层来说,另一种选择是归一激活函数后的饱和值。归一化是对抗饱和神经元的有效方法,但是在梯度计算过程中代价较大。

5.2.7 学习率

学习率的选择是重要的,太大的学习率会阻止网络收敛到一个有效的解,太小的学习率则需要长时间来收敛。
一个经验法则是,实验应该从范围 [ 0 , 1 ] [0,1] [0,1]内尝试初始学习率,比如 0. 001, 0. 01, 0. 1 , 观测网络的loss 值,一旦 loss 值在开发集上停止改进,则降低学习率。
一个常见的表示是将初始速率除以迭代次数。
在这里插入图片描述

5.2.8 minibatch

在每个训练样例( minibatch 大小为 1) 或者每k个训练样例训练结束后更新参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值