#RNN#LSTM

先将句子中的词变成向量:1-of-N encoding

 有些词汇可能从未见过,就可以把它们分到Other中

 一个词在不同的语境回被分到不同的类别中

所以需要神经网络有记忆力 ,比如它在看到红色的taipei之前就看到过arrive这个词,在看到绿色台北之前就看考过leave这个词,这种有记忆力的网络就叫做rnn

每次layer的output都要存到memory里去,下次input时就不会只考虑input,还会考虑memory里的数值

为什么需要RNN(循环神经网络)

他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。

比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列; 当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列

 例:权重矩阵为1,无偏差,所有函数均线性

初始化为0

 

 

 

 

i///cvb改变output也变 

 

arrive变成vactor输入nn里,a1为layer的输出,根据a1产生y1,y1为每一个slot的几率,a1

存到memory中,taipei变成input,这次layer会同时考虑a1与taibei,得到a2,根据a2得到y2

 以此类推。(同一个network在不同的时间被使用了3次),所以即使输入的input是不同的,但是memory中的值是不同的,所以最后的结果也是不同的

 

jordan network存入的是上一个input的output,jordannetwork可以获得比较好的performance

因为elman network的的memory没有很好的target,比较难控制他学到了什么

但是y是有target的,比较清楚放入memory中的是什么

 RNN可以是双向的,上述的结构,输入的是句子的话,就从句首一直读到句尾,也可以反向读取,先读Xt+2,同时训练一个正向的和逆向的,然后将这两个layer都接在一个output layer上,得到最后的y。这样做的好处就是在产生output的时候,看的范围是比较广的,如果今天只有正向的network,就只看过之前的词,反向的从句尾就未考虑

 当外界(结构中的其它部分)某个nerual的output想要写入memorycell中时,必须先通过一个闸门,只有当闸门打开时,才能将值写入,控制闸门的开关也是网络自己学的,输出的时候,也有一个闸门,同上一类闸门,第三类闸门叫做forget gate,决定什么时候把过去取记得的东西忘掉

所以一共4个input 1个output

 输入的zi也是数值

 

假设输入的部分为z, 三个闸门分别有三个z操控,现在把z通过activation function得到g(z)

zi通过另外的activation function得到f(zi),通常我们会选择sigmoid function,因为输出的值为0-1之间,代表门打开的程度,假设f(zi)等于0,闸门关闭,如果等于1,则相反,f(zf)为0,则遗忘之前的c,如果为1,则加上之前的c

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值