回归神经网络RNN(Recurrent Neural network)
2016-05-18 19:18
417 查看
RNN不同于前馈神经网络,被认为具有记忆能力。其输入被看作一个序列,形如xt(x1,x2,x3...)其数学模型如下:
ht=h(W1ht−1+U2xt+b1)
yt=f(Vht+b2)
这里ht表示在t时的状态,yt表示在t时的输出,h和f是非线性函数,常用sigmoid函数f(x)=11+e−x,W U V 和b是需要学习的变量。这里的关键是t时的状态是由t-1时的状态和t时的输入共同得到,也就是说理论上RNN可以记住任意长序列的输入。它和前馈神经网络相比还具有不限定长度的输入序列,比如在自然语言模型中,需要估计一个句子出现的概念,而每个句子的长度是不固定的。
和前馈神经网络一样,RNN也可以通过Backpropagation算法进行训练即BPTT算法。其目标函数所有时间点上的成本函数的和:
E=∑Tt=1et (1)
对W求倒数:
dEdW=∑Tt=1detdw (2),其中
detdW=detdytdytdhtdhtdW (3)
dhtdW = dhtdht−1dht−1W+dhtdW (4) 注意等式右边是将W和ht−1看成不相关的变量
以此类推:
dht−1dW = dht−1dht−2dht−2W+dht−1dW (5) 以此类推并将其代入前面式子的右边就可以得到:
dhtdW=∑tk=1dhtdhkdhkdW (6)
将(6)代入(3)就得到:
detdW=∑tk=1detdytdytdhtdhtdhkdhkdW
这里很容易得到:
dhtdhk=∏tj=k+1dhjdhj−1
推导完成。
上面BPTT算法会遇到导数逐渐消失或趋于无穷大的问题,LSTM是很好的解决方案 。
ht=h(W1ht−1+U2xt+b1)
yt=f(Vht+b2)
这里ht表示在t时的状态,yt表示在t时的输出,h和f是非线性函数,常用sigmoid函数f(x)=11+e−x,W U V 和b是需要学习的变量。这里的关键是t时的状态是由t-1时的状态和t时的输入共同得到,也就是说理论上RNN可以记住任意长序列的输入。它和前馈神经网络相比还具有不限定长度的输入序列,比如在自然语言模型中,需要估计一个句子出现的概念,而每个句子的长度是不固定的。
和前馈神经网络一样,RNN也可以通过Backpropagation算法进行训练即BPTT算法。其目标函数所有时间点上的成本函数的和:
E=∑Tt=1et (1)
对W求倒数:
dEdW=∑Tt=1detdw (2),其中
detdW=detdytdytdhtdhtdW (3)
dhtdW = dhtdht−1dht−1W+dhtdW (4) 注意等式右边是将W和ht−1看成不相关的变量
以此类推:
dht−1dW = dht−1dht−2dht−2W+dht−1dW (5) 以此类推并将其代入前面式子的右边就可以得到:
dhtdW=∑tk=1dhtdhkdhkdW (6)
将(6)代入(3)就得到:
detdW=∑tk=1detdytdytdhtdhtdhkdhkdW
这里很容易得到:
dhtdhk=∏tj=k+1dhjdhj−1
推导完成。
上面BPTT算法会遇到导数逐渐消失或趋于无穷大的问题,LSTM是很好的解决方案 。
相关文章推荐
- bp神经网络及matlab实现
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能入门教程之十一 最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)
- TensorFlow人工智能引擎入门教程所有目录
- 如何用70行代码实现深度神经网络算法
- 基于神经网络的预测模型
- 神经网络初步学习手记
- RBF的一点个人理解
- 利用自收敛深度人工神经网络构建(DNN)构建多语种大词汇量连续语音识别系统
- UFLDL Exercise: Convolutional Neural Network
- 神经网络凸优化
- 基于遗传算法(GA)的神经网络训练算法
- 神经网络 caffe 的 vs2013 版本代码
- 传统BP神经网络完整例子(电力负荷预测)
- Matlab 神经网络工具箱
- Google最新人工智能算法RankBrain的实现--写在后面的话
- 备份:创建VS工程使用神经网络库——FANN
- 卷积神经网络知识要点
- BP神经网络识别手写数字项目解析及代码
- Deep learning: autoencoders and sparsity