Stanford CS224n: Natural Language Processing with Deep Learning
课程主页:http://web.stanford.edu/class/cs224n/
已完成的课程作业代码:https://github.com/xingjian-f/Standford-cs224n-assignments
一些笔记:
lec1
1 什么是自然语言处理?
让机器能够“理解”自然语言,从而能够做一些有意义的任务。
2 人类语言有什么特点?
语言不是大自然的产物,是人造的,所以处理它和处理视觉、声音会有很多不同。
语言是离散的。但人类传递语言的载体,图像、语音是连续的。不同的载体对应的语言含义却是不变的。
3 自然语言处理为什么很难?
nlp的难点在于歧义性和,需要推理性(人类说话有时不是完整的表达,而需要听者的推理)
4 (词汇形态学,语法,语义,篇章)各个层级的表示形式?
向量
lec2
1 怎样表示一个词的含义?
(1)使用分类学的方法,例如WordNet。离散表示,one-hot。
(2)分布式表示
lec3
1 Word2Vec 和 Glove 训练后,都得到了两组词向量,这两组要怎么用呢?
经验主义,把它们叠加。不过最好先自己试一试各种情况。
2 怎么评估词向量?
词的相似度,类比性,之类的测试集,或者作为下游任务的输入,评估下游任务的好坏。
后者更“实际”,但评估消耗时间更长。
lec8
1 RNN中为什么梯度消失或爆炸会带来问题?
爆炸导致导数无法评估,clip解决。
消失导致“远”一点的参数几乎不更新,对角线初始化,relu,LSTM,GRU解决。
2 神经翻译模型中使用RNN有哪些trick?
1 encoder 和 decoder 的参数不共享。
2 decoder中,把上一个隐层,encoder最后一层,上一个输出结果都最为当前隐层的输入。
3 多层RNN。
4 双向RNN。
(以上都是想办法增加参数)
5 GRU 和 LSTM
lec11
1 LSTM 和 RNN记忆力的比较
RNN最多记8-10步,LSTM可以到100步。(实验性结论)
2 使用LSTM的trick
1 把forget gate 的 bias 初始化到1
2 只在垂直方向上使用dropout
3 ensemble,使用8-10个网络,然后平均它们的预测结果,一般有少量的提升!
3 什么是 scheduled sampling?
RNN下一步的输入中,随机的给ground truth 或 预测结果。
4 什么是BLEU?
共有n-gram数目(n经常取4),并惩罚预测长度小于真实长度。作为机器翻译的评价指标,开始时和人类评分很match,现在已经被玩坏了。所以google等宣称达到人类水平的翻译结果,其实和真实人类的水平还有很多差距。
lec12
1 NLP中CNN有什么用?怎么用?
CNN可以比RNN更能捕获短语向量,没有RNN的梯度消失问题,GPU更友好。
可以用不同size的卷积来捕获不同长度的短语向量。
pooling层,尤其是max-over-time pooling, 可以得到这个卷积提取到的某个激活值最大的特征,(即找到了某个短语)。
使用两套预训练词向量,一套参与训练,一套不参与。
(character based model,经验主义,一般效果会提升,但训练时间更长,因为输入长度变的更长了。似乎中文很适合?我在中文文本分类任务中,也发现char based 效果比 word based效果要好一些。)
2 NLP任务中不同模型的比较
1 Bag of Vectors:对于简单的分类任务来说,是很好的base line。多加几层效果会更好!
2 Window Model:对于不需要宽的视野的分类任务来说,比较好。
3 CNNs:分类任务上效果好,但很难给出直观解释,在GPU上容易并行。
4 RNNs:对于分类任务不是最好的,比CNN慢,可以做序列tagging he classification。