RNN(recurrent neural networks)
2.应用领域:NLP(Natural Language Processing)自然语言处理
3.目的:用来处理序列数据
4.介绍:RNN被称为循环神经网络,即一个序列当前的输出与前面的输出也有关。
5.具体的表现形式为:网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。(关键点:隐藏层之间的节点有连接,可以自连也可互连,隐藏层的输入包括输入层的输入以及上一时刻隐藏层的输出)。Back Projections:指引导信息从输出单元返回隐藏单元。
6.符号标记:
(1)输入集 {x0,x1,...,xt,xt+1,...}
输出单元的输出集 {y0,y1,...,yt,yt+1,...}
隐藏层的输出集 {s0,s1,...,st,st+1,...}
2).s(t)表示隐藏层的第t步的状态,是网络的记忆单元,包含了前面所有步(实际中只包含前面若干步)的隐藏层状态,根据当前输入层的输入与上一步隐藏层的状态进行计算,s(t)=f(U x(t)+W s(t-1)),其中f一般是非线性的激活函数,如tanh或ReLU,在计算s(0)时,即第一个单词的隐藏层状态,需要用到s(-1),但是其并不存在,一般置为0向量。
补充:tanh为双曲正切函数,y=tanhx=(e^x-e^(-x))/(e^x+e^(-x)),其不是周期函数。双曲正切的定义域为整个实数域,值域为(-1,1),双曲正切函数的图形夹在水平直线y=1及y=-1之间,且当x的绝对值很大是,它的图形在第一象限内接近与直线y=1,而在第三象限内接近于直线y=-1。
ReLU(Rectified Linear Units,修正线性单元)激活函数,f(x)=max(0,x),x是一个神经元的输入。softplus函数f(x)=ln(1+e^x)是其的一个平滑近似函数。(相关文章:http://blog.csdn.net/jiejinquanil/article/details/50217307 及 http://blog.csdn.net/sheng_ai/article/details/38055209)
3).o(t)是第t步的输出,如下个单词的向量表示,o(t)=softmax(V s(t)).
4).比较:在传统神经网络中,每一个网络层的参数是不共享的;在RNNS中,每输入一步,每层各自都共享参数U,V,W。如果是一个多层的传统神经网络,那么x(t)到s(t)之间的U矩阵与x(t+1)s(t+1)之间的U是不同的,而RNNs中的却是一样的,同理对于s与s层之间的W、s层与o层之间的V也是一样的。RNNs中每一步都在做相同的事情,知识输入不同,因此大大地降低了网络中需要学习的参数。
5).图中每一步都会有输出,但是并不是每一步都需要有输出。比如,预测一条语句所表达的情绪,仅仅需要关系最后一个单词输入后的输出,而不需要知道每个单词输入后的输出。同理,每步都需要输入也不是必须的。RNNs的关键之处在于隐藏层,隐藏层能够捕捉序列的信息。
7.词向量:对词进行数值化,使用一个指定长度的实数向量v来表示一个词。
(1)最简单的表示方法:使用One-hot vector(独热编码)表示单词,即根据单词的数量|V|生成一个|V|*1的向量,当某一位为一的时候其他位都为零,然后这个向量就代表一个单词。
例如:["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"],自然状态码为:000,001,010,011,100,101,独热编码为:000001,000010,000100,001000,010000,100000。
(2)缺点:向量长度与单词个数有关,维护比较麻烦;
主观性太强;
人工标记labor并且adapt比较麻烦;
很难计算单词之间的相似性。
(3)更有效的词向量模式:通过神经网络或者深度学习对词进行训练,输出一个指定维度的向量,该向量便是输入词的表达,如word2vec。(http://wei-li.cnblogs.com/p/word2vec.html)
8.RNNs的应用:
(1)语言模型与文本生成(Language Modeling and Generating Text)
(2)机器翻译(Machine Translation)
(3)语音识别(Speech Recognition)
(4)图像描述生成(Generation Image Description)
9.RNNs的训练:
对于RNN的训练和对传统的ANN训练一样样,同样使用BP误差反向传播算法。不过有一点区别,如果讲RNNs进行网络展开,那么参数W,U,V是共享的,而传统神经网络却不是的。并且在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,并且还依赖前面若干步的网络的状态。
10.RNNs扩展和改进模型
(1)Simple RNNs(SRNs)
(2)Bidirectional RNNs(双向网络)
(3)Deep(BIrectional) RNNs
(4)Echo State Networks
(5)Gated Recurrent Unit Recurrent Nerual Networks(GRUs)
(6)LSTM Networks
(7)Clockwork RNNs(CW-RNNS)
11.中(英文缩写)英名词对照:
(1)训练算法:
BPTT Back Propagation Through Time
RTRL Real-time Recuurent Learning
EKF Extended Kalman Filter
梯度消失/爆炸问题 the vanishing/exploding gradient problem
词向量 Word Representation / Word embeding
(2)神经网络结构
输入单元 Input units
输出单元 Output units
隐藏单元 Hidden units
ReLU(修正线性单元)激活函数 Redtified Linear Units激活函数
(3)神经网络
LSTM(长短时记忆网络) Long Short-Term Memory
CW-RNNs(时钟频率驱动循环神经网络) Clockwork RNNs
FNNS(前向反馈神经网络) Feed-forward Nerual Networks
参考文章:1.http://blog.csdn.net/heyongluoyao8/article/details/48636251
2.http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/
2.应用领域:NLP(Natural Language Processing)自然语言处理
3.目的:用来处理序列数据
4.介绍:RNN被称为循环神经网络,即一个序列当前的输出与前面的输出也有关。
5.具体的表现形式为:网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。(关键点:隐藏层之间的节点有连接,可以自连也可互连,隐藏层的输入包括输入层的输入以及上一时刻隐藏层的输出)。Back Projections:指引导信息从输出单元返回隐藏单元。
6.符号标记:
(1)输入集 {x0,x1,...,xt,xt+1,...}
输出单元的输出集 {y0,y1,...,yt,yt+1,...}
隐藏层的输出集 {s0,s1,...,st,st+1,...}
(2)详细说明
2).s(t)表示隐藏层的第t步的状态,是网络的记忆单元,包含了前面所有步(实际中只包含前面若干步)的隐藏层状态,根据当前输入层的输入与上一步隐藏层的状态进行计算,s(t)=f(U x(t)+W s(t-1)),其中f一般是非线性的激活函数,如tanh或ReLU,在计算s(0)时,即第一个单词的隐藏层状态,需要用到s(-1),但是其并不存在,一般置为0向量。
补充:tanh为双曲正切函数,y=tanhx=(e^x-e^(-x))/(e^x+e^(-x)),其不是周期函数。双曲正切的定义域为整个实数域,值域为(-1,1),双曲正切函数的图形夹在水平直线y=1及y=-1之间,且当x的绝对值很大是,它的图形在第一象限内接近与直线y=1,而在第三象限内接近于直线y=-1。
ReLU(Rectified Linear Units,修正线性单元)激活函数,f(x)=max(0,x),x是一个神经元的输入。softplus函数f(x)=ln(1+e^x)是其的一个平滑近似函数。(相关文章:http://blog.csdn.net/jiejinquanil/article/details/50217307 及 http://blog.csdn.net/sheng_ai/article/details/38055209)
3).o(t)是第t步的输出,如下个单词的向量表示,o(t)=softmax(V s(t)).
4).比较:在传统神经网络中,每一个网络层的参数是不共享的;在RNNS中,每输入一步,每层各自都共享参数U,V,W。如果是一个多层的传统神经网络,那么x(t)到s(t)之间的U矩阵与x(t+1)s(t+1)之间的U是不同的,而RNNs中的却是一样的,同理对于s与s层之间的W、s层与o层之间的V也是一样的。RNNs中每一步都在做相同的事情,知识输入不同,因此大大地降低了网络中需要学习的参数。
5).图中每一步都会有输出,但是并不是每一步都需要有输出。比如,预测一条语句所表达的情绪,仅仅需要关系最后一个单词输入后的输出,而不需要知道每个单词输入后的输出。同理,每步都需要输入也不是必须的。RNNs的关键之处在于隐藏层,隐藏层能够捕捉序列的信息。
7.词向量:对词进行数值化,使用一个指定长度的实数向量v来表示一个词。
(1)最简单的表示方法:使用One-hot vector(独热编码)表示单词,即根据单词的数量|V|生成一个|V|*1的向量,当某一位为一的时候其他位都为零,然后这个向量就代表一个单词。
例如:["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"],自然状态码为:000,001,010,011,100,101,独热编码为:000001,000010,000100,001000,010000,100000。
(2)缺点:向量长度与单词个数有关,维护比较麻烦;
主观性太强;
人工标记labor并且adapt比较麻烦;
很难计算单词之间的相似性。
(3)更有效的词向量模式:通过神经网络或者深度学习对词进行训练,输出一个指定维度的向量,该向量便是输入词的表达,如word2vec。(http://wei-li.cnblogs.com/p/word2vec.html)
8.RNNs的应用:
(1)语言模型与文本生成(Language Modeling and Generating Text)
(2)机器翻译(Machine Translation)
(3)语音识别(Speech Recognition)
(4)图像描述生成(Generation Image Description)
9.RNNs的训练:
对于RNN的训练和对传统的ANN训练一样样,同样使用BP误差反向传播算法。不过有一点区别,如果讲RNNs进行网络展开,那么参数W,U,V是共享的,而传统神经网络却不是的。并且在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,并且还依赖前面若干步的网络的状态。
10.RNNs扩展和改进模型
(1)Simple RNNs(SRNs)
(2)Bidirectional RNNs(双向网络)
(3)Deep(BIrectional) RNNs
(4)Echo State Networks
(5)Gated Recurrent Unit Recurrent Nerual Networks(GRUs)
(6)LSTM Networks
(7)Clockwork RNNs(CW-RNNS)
11.中(英文缩写)英名词对照:
(1)训练算法:
BPTT Back Propagation Through Time
RTRL Real-time Recuurent Learning
EKF Extended Kalman Filter
梯度消失/爆炸问题 the vanishing/exploding gradient problem
词向量 Word Representation / Word embeding
(2)神经网络结构
输入单元 Input units
输出单元 Output units
隐藏单元 Hidden units
ReLU(修正线性单元)激活函数 Redtified Linear Units激活函数
(3)神经网络
LSTM(长短时记忆网络) Long Short-Term Memory
CW-RNNs(时钟频率驱动循环神经网络) Clockwork RNNs
FNNS(前向反馈神经网络) Feed-forward Nerual Networks