2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects

资源链接:https://www.bilibili.com/video/BV1r4411

课程一开始介绍了一些作业情况,具体就不介绍了,不过推荐了很多比较好的nlp的数据的网址,这个建议大家保留下:

https://machinelearningmastery.com/datasets-natural-languageprocessing/

https://github.com/niderhoff/nlp-datasets等等...

正课知识内容

我没找到...对应的课件,截图均来自视频

本次继续上一节的内容,具体解释了许多概念(类似上节课的进阶或者补充吧)

通过时间反向传播

RNNs的一层中是通过时间反向传播的

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第1张图片

大致意思就是:当梯度消失时,我们没有任何依赖能显示t和t+n的数据之间是有依赖的,甚至不知道梯度消失的地方发生了什么;梯度消失条件:参数设置错误,是因为原始的公式(即上图的f公式)导致的吗?因为有个2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第2张图片

就导致梯度随着时间消失了~

通过上述其实就是因为公式是一层层嵌套的,反向传播过程也是一层层的回来的,这就是导致梯度消失的重要原因(即是因为每层嵌套导致太长了),如下图:

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第3张图片

如果我们尝试创造一种新的/快捷的/跳跃式的连接方式(这种方式可以使得结点不是一层层嵌套的,允许跳跃发生,即减少了长度,也就是梯度相乘的项变少了),如下:

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第4张图片

而且这个跳跃的链接是自适应的,也就是训练出来的~这个自适应的想法也就是我们之前说的gru和lstm

GRU

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第5张图片

  • 我们可以创建自适应的快捷连接
  • 候选更新
  • 更新门

这样创建的网络可以自适应地修剪不必要的连接,如下图:

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第6张图片

将RNN单元想象为一个微型计算机

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第7张图片2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第8张图片

(RNN会访问所以的h,对于计算机来说就是访问所有的寄存器,这是很不好的;而gru则只使用部分资源,gru效果更好且更加实用)

两个最广泛使用的门控循环单位:GRU和LSTM

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第9张图片

LSTM

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第10张图片

  • (蓝色部分)LSTM门的所有操作都可以被遗忘/忽略,而不是把所有的东西都塞到其他所有东西上面,也就是这部分实现了跳跃链接
  • (绿色部分)下一步的非线性更新就像一个RNN
  • (粉色部分)这部分是核心(ResNets也是如此)不是乘,而是将非线性的东西和ct-1相加得到ct 。ct和ct-1之间存在线性联络

在NMT模型输出中中有大量的词汇,导致最后结果使用softmax方法会计算量非常大。(因为输出一个词的概率几乎词库内的词都有一个概率值,只不过有大有小而已,这样时间复杂度和词库规模成线性关系了)

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第11张图片

解决方法:使用限定/适中的生成词汇量,大概5w条

2019年CS224N课程笔记-Lecture 9: Practical Tips for Final Projects_第12张图片

缺点:容易产生UNKs(两种情况,不认识源语言,或者生成了不认识的目标语言,例如目标语言的稀有词),而适中的生成词汇则会产生UNKs(第二种情况导致)

还有其他方法解决吗?

层序softmax(word2vec的近似算法):用一种树型结构的词汇表来代替之前的

噪声对比估计思想:二值分类(这是一种快速训练方法,而不是解决方法,但是把6天的变成训练6小时,这完全是个胜利~,想具体了解此部分的可以参考该大佬的文章:https://zhuanlan.zhihu.com/p/76568362)

训练一部数据,也就是每次在词汇表的子集上进行训练,在测试时,自适应的选择一部分最可能出现的词汇表。

也可以使用注意力机制、还有什么复制模型(这个地方没听懂!

机器翻译的评价

最好的方式无非是人工评价,但是在深度学习中是不可能实现的(循环好几天的几十万条数据,不太可能人去评价),所以又具体讲解了一些BLEU,我上一节课发的BLEU补充的就挺全的了~具体看那个就可以,还有一些其他的评价例如:TER, METEOR, ……

你可能感兴趣的:(人工智能,深度学习,NLP,人工智能,深度学习,自然语言处理)