【深度学习学习笔记】5.反馈神经网络之一:循环神经网络RNN

一、前向传播

先输入 a < 0 > a^{<0>} a<0>,通常它是一个零向量。

1.先计算激活值

a < 1 > = g 1 ( W a a a < 0 > + W a x x < 1 > + b a ) a^{<1>}=g_1(W_{aa}a^{<0>}+W_{ax}x^{<1>}+b_a) a<1>=g1(Waaa<0>+Waxx<1>+ba),激活函数经常是tanh,不过有时候也会用ReLU.

2.然后再计算预测结果

y ˆ < 0 > = g 2 ( W y a a < 1 > + b y ) yˆ^{<0>}=g_2(W_{ya}a^{<1>}+b_y) yˆ<0>=g2(Wyaa<1>+by),激活函数取决于输出,如果它是一个二分问题,用sigmoid函数作为激活函数,如果是k类别分类问题的话,那么可以选用softmax作为激活函数。

3.在t时刻的一般公式

a < t > = g 1 ( W a a a < t − 1 > + W a x x < t > + b a ) a^{<t>}=g_1(W_{aa}a^{<t-1>}+W_{ax}x^{<t>}+b_a) a<t>=g1(Waaa<t1>+Waxx<t>+ba)

y ˆ < t > = g 2 ( W y a a < t > + b y ) yˆ^{<t>}=g_2(W_{ya}a^{<t>}+b_y) yˆ<t>=g2(Wyaa<t>+by)

4.简化公式

W a a 和 W a x W_{aa}和W_{ax} WaaWax水平拼接成 W a W_{a} Wa,则上述公式简化 a < t > = g 1 ( W a [ a < t − 1 > , x < t > ] + b a ) a^{<t>}=g_1(W_{a}[a^{<t-1>},x^{<t>}]+b_a) a<t>=g1(Wa[a<t1>,x<t>]+ba)

y ˆ < t > = g 2 ( W y a < t > + b y ) yˆ^{<t>}=g_2(W_{y}a^{<t>}+b_y) yˆ<t>=g2(Wya<t>+by)

二、反向传播

1.损失函数

L < t > ( y ˆ < t > , y < t > ) = − y < t > l o g y ˆ < t > − ( 1 − y < t > ) l o g ( 1 − y ˆ < t > ) L^{<t>}{(yˆ^{<t>},y^{<t>})}=-y^{<t>}logyˆ^{<t>}-(1-y^{<t>})log(1-yˆ^{<t>}) L<t>(yˆ<t>,y<t>)=y<t>logyˆ<t>(1y<t>)log(1yˆ<t>)

L ( y ˆ , y ) = ∑ t = 1 T x L < t > ( y ˆ < t > , y < t > ) L{(yˆ,y)}=∑_{t=1}^{T_x}L^{<t>}(yˆ^{<t>},y^{<t>}) L(yˆ,y)=t=1TxL<t>(yˆ<t>,y<t>)

2.

a ( t ) = t a n h ( W a a a ( t − 1 ) + W a x x ( t ) + b ) a^{(t)}=tanh(W_{aa}a^{(t-1)}+W_{ax}x^{(t)}+b) a(t)=tanh(Waaa(t1)+Waxx(t)+b)

三、其他结构的RNN

1.“多对多”(many-to-many)的结构

上述的RNN中,每个输出 y ˆ < t > yˆ^{<t>} yˆ<t>都根据对应的输入 a < t > a^{<t>} a<t>,因为输入序列有很多的输入,而输出序列也有很多输出,因此是“多对多”(many-to-many)的结构。
“多对多”的结构还有输入和输出长度不同的情况。机器翻译这样的应用。所以还需要一个新的网络结构,这个网络的结构有两个不同的部分,前面是一个编码器,获取输入的句子,后面跟着解码器,它会读取整个句子,然后输出翻译成其他语言的结果。

2.“多对一”(many-to-one)的结构

假如处理情感分类问题,这里输入x可能是一段文本,比如一个电影的评论,“These is nothing to like in this movie.”(“这部电影没什么还看的。”),所以x就是一个序列,而y可能是从1到5的一个数字,表示电影得分;或者是0或1,这代表正面评价和负面评价。
一次输入一个单词,我们不再在每个时间上都有输出了,而是让这个RNN网络读入整个句子,然后在最后一个时间上得到输出,这样输入的就是整个句子,所以这个神经网络叫做“多对一”(many-to-one)结构,因为它有很多输入,然后输出一个数字

3.“一对一”(one-to-one)的结构

一个小型的标准的神经网络,输入x然后得到输出y。

4.“一对多”(one-to-many)的结构

对于一个“一对多”神经网络结构的例子就是音乐生成:输入x可以是一个整数,表示你想要的音乐类型或者是你想要的音乐的第一个音符,并且如果你什么都不想输入,x可以是空的输入,可设为0向量,通常会把第一个合成的输出也喂给下一层,神经网络输出一些音符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值