Forward Propagation Neuron Net
Backward Propagation Neuron Net
- BP算法的目标是加速求解矩阵运算中的梯度下降问题。
- 链式法则:在上图中, ∂e∂b=∂e∂c∂c∂b+∂e∂d∂d∂b ,即a对b的求导等于a到b的各个路径上逐个求导后乘积的和。
- BP的优势在于对每一段路径仅做一次访问即可求出顶点对每一个下层节点的偏导。
RNNs
LSTM
- LSTM相比于RNNs的优势在于:
- 处理了梯度爆炸和梯度消失的问题
- 梯度爆炸和消失指多重嵌套 (f(f(f(...f(x))))) 后梯度过大或过小的问题
- 结果是模型对之前的信息能进行更有效的记忆
- LSTM 采用的三个门以及Cells:
- 其中黑点表示矩阵*操作,外部接入的带箭头三根黑线包含两部分:输入层输入和上一时刻隐藏层的输入。
- 三个门和cells的被定义为公式中带自身下标的矩阵群,学习的过程是通过反向传播调整矩阵群,达到损失函数的最小化。
- Input gate:
atl=(∑i=1Iwil∗xti+∑h=1Hwhl∗bt−1h+∑c=1Cwcl∗st−1c)btl=f(atl)
- Forget gate:atϕ=∑i=1Iwiϕ∗xti+∑h=1Hwhϕ∗bt−1h+∑c=1Cwcϕ∗st−1cbtϕ=f(atϕ) - Cells:
atc=∑i=1Iwic∗xti+∑h=1Hwhc∗bt−1hstc=btl∗g(atc)+btϕ∗st−1c这里的 g(atc) 指的是上图最下层的 fg 函数
- Output gate:
atω=∑i=1Iwiω∗xti+∑h=1Hwhω∗bt−1h+∑c=1Cwcω∗stcbtω=f(atω)
- 最后的神经输出
btc=btω∗h(stc)
- I,H,C 分别代表输入样本的维度数,隐藏层的神经数,和Cell的数量。
- xi,bh,sc 分别表示一个样本的一个维度,一个隐藏层神经元的输出和一个cell的输出
主要参数及处理算法
- Layer Number
- 表示神经网络的深度
- 过深的网络容易造成过拟合
- Layer Size
- 表示每层神经网络包含的神经元个数
- 同样容易造成过拟合
TBPTT Length (for RNNs)
- Truncated Backpropagation Through Time Length
- 延时间反响传播的截断时长
- 表示进行反向传播间隔长度,i.e. 使用 N 个输入的结果对参数进行调整,实质效果反应为通过N个输入计算输出
- 例如:在文本生成中,对“老司机翻车啦!”,当
N=4 :
- input0=“老司机翻”,label0=“司机翻车”
- input1=“司机翻车”,label1=“机翻车啦”
Epoch Number
- 表示总体循环次数
- 每遍历一次全样本集为1次Epoch
- Example Length:
- 表示输入样本的长度
- 在文本生成中表示输入的文字的长短。
- Mini Batch Size:
- 最小批处理数量
- 表示系统并发处理的样本(example/sentence)个数
- 一般设为8的倍数,方便GPU运算单元处理
- 增大的优点:
- 增加并发量,提高速度,对GPU运算效果更明显
- 每次下降方向更准确,不易产生震荡(少走弯路)
- 增大的缺点:
- 陷入局部最优?????
- 运算矩阵过大,内存爆炸
- 因为矩阵过大,计算速度慢,参数更新也慢a
- Optimization Algorithm:
- 参数矩阵优化算法
- 优化的参考范围是一个mini batch
- 优化算法:Stochastic Gradient Descent
- 用于优化SGD选参(如learning rate)的算法:
- ADAM
- RMSProp
- Momentom
- NAG
- Adagrad
- Adadelta
- Initialization Algorithm:
- 参数矩阵初始化算法
- 在NN建立时使用
- 常用算法:
- XAVIER(假定激活函数是线性的)
- MSRA
- Activation Functions
- Sigmoid:(0,1)
- tanh:(-1,+1)
- ReLu:max(0, xs )
- Ramp:max(-1,max(1, xs ))
- Loss Functions
- Square:连续回归
- Log:二分类
- Hinge:二分类
- LogSoftMax:多分类
- MaxMargin:多分类