01 前馈式神经网络(FNN,Feedforward Neural Network)
隐含层只存在于神经网络这个黑箱的内部,外部不可见
每一个圆圈表示神经元,结构如下:
会把神经元所有的输入做加权的求和,求和之后经过一个非线性的变化进行输出
加权的过程通常会有一个常数作为偏置,非线性函数称为激活函数
前馈式神经网络本质上就是一个巨大的复合函数
计算图
02 什么是循环神经网络
循环网络的展开表示
h表示网络中的一个隐层
中间有一个运算,用A来表示
普通循环神经网络唯一的区别:
- 它的输入是分散在各个时刻上的,x1这个输入得到了h1的输出之后,再进行x2的输入
- 循环网络的参数都在中间的运算A里面,这个运算在每一时刻是完全重复的,只是输入不一样,网络结构和网络参数在各个时刻是完全共享的
循环网络的内部运算
两个输入hi-1和xi
xi是当前时刻的输入
Tanh —双曲正切函数
循环网络的输出 Elman Network
RNN与语言模型
基于RNN的语言模型
输入和输出是结合在一起的,上一时刻的输出正好是下一时刻的输入
做语言模型的时候,怎么计算输出呢?
预测的这些词需要是概率分布
所有的概率加在一起等于1
RNN的训练
损失函数
把梯度从最后一个时刻传到最前面的一个时刻,它的传导路径非常长,
LSTM- long short-term memory
最简单的RNN它内部A内部隐藏的函数是一个很简单的线性变换加上一个双曲正切的激活函数,LSTM这里做了改善
- Cell内部的计算很复杂,引入了各种门控机制
- 对于LSTM, 它引入了两个信息通道,其中一个通道称为记忆单元,另一个是常用的隐含状态,
LSTM内部机理
遗忘门
首先门控机制它有一个遗忘门
遗忘门的意思是说每个单元不是有记忆吗,记忆可以从上一个时刻传递到下一个时刻,不能总记得,有的事情做完了就要忘掉
是通过一个门控的机制,通过一个线性变换再加上一个s型函数得到一个值,这个值会按照每一维乘到这个记忆上,得到新的记忆,这就是遗忘门
输入门
输入门是说我的输入到底对当前输入是不是有效
输入门就会控制当前的输入以多大的程度来加到记忆上
如果是噪音就不加,如果是特别重要的事情就全加上去
输出门
输出门因为有两个信息通道,一个是记忆Ct,另一个是所要输出的隐含状态ht
输出门控制有多少信息通过Ct提取到隐含状态ht中
记忆更新
一部分是遗忘门乘以上一个时刻的记忆
一个是通过输入门乘以这一时刻得到新的信息
GRU,Gate Recurrent Unit 门控循环单元
它的想法是LSTM门控机制非常重要,非常有用,但是可能不需要这么复杂
把LSTM中的两个信息流重新简化成一个信息流,ht
只有两个门,两个门分别叫做更新门和重置门