CS224d lecture 8札记

欢迎转载,转载注明原文地址:

http://blog.csdn.net/neighborhoodguo/article/details/47174415


又开始新一课的札记啦!最近Project Proposal也快到了,时间还是比较紧的。不过课程已经过半了还是挺开心的。stanford开放这么有技术含量的课程,还是很钦佩stanford的开放精神。

这一课是对Recurrent NN for MT做了一个简要的介绍。个人认为这种方法比较靠谱耶,想想我们人类对于母语的学习,对于母语的理解,从来都不是先分析语法,再分析语义的,而是直接就从前到后听或看久直接理解了。RNN对于语言的理解表示我个人认为比较类似人类的思维方式(如果有朋友看到我这篇文章有不同见解,欢迎讨论)。而这门课的Project我就做这个好啦,哈哈。使用RNN的MT!

先梳理一下这一讲的脉络哦。首先是对Bidirectional及deep RNNs for opinion labeling的wrapping up,然后是现今MT的pipeline,再最后就是Recurrent NN实现MT的大体思路及方法,再往后就是几个Recurrent NN实现MT的改进措施。

1.Wrapping up

Deep Bidirectional RNNs这个结构上一课讲得很详细了,这次就不表了。

F1 score这个东西的解释这次给了个图,非常好呢。十分直观清楚。

Parallel corpora的例子:欧盟的议会文件,埃及出土的大石头(- -)

 

2.现今tranditional MT的pipeline

第一步是Alignment顾名思义就是source language里的词对应到target language是哪个词。

这个东东真的是很复杂呀,最简单的情况是一对一的,但是还有zero fertility,一对多的,多对一的,多对多的,好烦躁有木有。

Alignment之后还没完,还得reordering这些词,使其在target language里表达的很“正确”。

本来Alignment就很复杂,还得从中选出最适合的词,还得reordering这个可真是。。。说不下去了。怎么办?RNN闪亮登场!

 

3.RNN model for MT

首先是最简单的例子

使用RNN把source language的单词一个一个的输入到model里,最终把这一整句话用一个vector表示出来,也就是encoder的过程;然后得到最终的vector之后再decoder将原始的句子用target language表示出来。看起来挺诱人挺高效的有木有!但是其实米有这么简单呀!

于是就duang推出了第一种加强改良版

decoder的过程不仅仅是从最后一个hidden node(以下简写为C)中提取信息,还从前一个decoder出来的单词及前一个hidden node里提取信息。这样有什么好处我也不造(- -)据老师说很棒。

还有几个一是改良方法是使用stacked/deep RNNs;二是使用bidirectional encoder,而不是使用最简单的一层的encoder;三是把单词的顺序倒个个,原因说的是第一个单词的信息能很容易保留下来,然后target language就能很容易从中提取出信息,做出有效的翻译(说实话没搞明白为啥有用)

最后有两个超级改良版:GRU和LSTMs

 

4.GRU

main ideas: 1.keep around memories to capture long distance dependencies

      2.allow error messages to flow at different strengths depending on the inputs

推荐阅读里有有两篇讲GRU的,讲得挺好的,受益匪浅。Paper里还将LSTM和GRU进行了对比。

GRU的思路是首先根据当前word vector及前一个hidden state计算出update gate和reset gate;再根据reset gate、当前word vector及前一个hidden state计算出new memory content。

reset gate的用处很明确了,就是当reset gate为1的时候,new memory content忽略之前所有的memory。最终的memory是之前的hidden node及new memory content的综合体

数学公式表示就是:

 

5.LSTMs

这个东西有很长时间的历史了不过据说很有用。直接上公式吧,公式很清晰:

 

6.GRU和LSTMs的区别

说实话GRU和LSTMs其实是很像的先上个对比图吧:

以下说说他们之间的相同与不同:

1.new memory的计算方法都是根据之前的state及input计算,但是GRU有一个R gate控制之前state的进入量,在LSTM里没有这个gate

2.产生新的state的方式不同,LSTM有两个不同的gate分别是f gate和i gate;GRU只有一个gate就是z gate

3.LSTM对新产生的state有一个o gate可以调节大小;GRU直接输出无任何调节。

 

参考网址:

http://www.ubi.com/

https://github.com/jych/librnn.git

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值