课程1 Natural Language Processing with Classification and Vector Spaces
- 经典的Logistic regression模型用来做分类: 他的灵魂还在,但是逻辑回归单独使用基本是见不到了.
- 向量空间: 这个是比较原始的基于词数的词或者文档的表示方式, 在这个表示的基础上可以做向量的相似度, 转换等操作. 这里面关键的概念还是保存了下来,只是现在更多使用word2vec或者深度学习的词向量表示.
课程2: Natural Language Processing with Probabilistic Models
自动纠错 Autocorrect
最小编辑距离 Minimum edit distance: 使用最少插入(insert, 权重1), 删除(delete, 权重1)和替换(replace, 权重2)来从A转换成B, 可以是词或者句子.
动态规划找到两个词之间最小编辑距离.
Part of Speech Tagging and Hidden Markov Models
磁性标注 POS tagging : 一般会被用来找命名实体(NER), 语音识别等场景
Markov chain:
- 转移概率 Transition probabilities: 不同状态之间转移的概率, 一般使用转移矩阵来记录所有状态之间转移的概率. 这里有个假设是每个状态转移只跟当前状态相关. 实际上也是个比较强的假设, 感觉跟朴素贝叶斯的独立同分布也差不多的样子.
- 隐马尔科夫模型 Hidden Markov Model
4 Natural Language Processing with Attention Models
课程1 Neural Machine Translation
基本上翻译成了这块的必修课,好像大家都会将翻译. 实际上翻译这个任务不是那么直接, 我们不精通两门语言很多时候就会限制我们对于这个任务好坏的判断, 而且这个任务一般人也不会自己做, Google翻译或者百度翻译已经做的很好了, 不同语言之间翻译非常费事而且很难找到好的需要自己训练模型的应用场景. 所以不管是教学还是实用感觉都不是特别好.
所以我觉得很重要的原因是Seq2Seq和后来的Transformer的重要突破其实都是来自于翻译, 所以大家在讲到这个模型的时候讲到翻译好像就很完整.
Seq2Seq
- Encoder将输入压缩成一个语义向量
- Decoder将这个语义向量还原成另外一种语言的标识
- 随着输入的边长, 性能下降的很明显, 猜想的原因可能是因为语义向量的长度有限产生了信息瓶颈, 但是我觉得还是因为如果Encoder选择的是RNN系列模型, 信息不能传递的很远.
- Seq2Seq with Attention: Attention还是明显提升了性能的, 因为让每次在翻译的时候都能够看到所有的输入的潜在语义向量,而不仅仅是最后被压缩的单个语义向量. 这样当输入长度边长以后, 只要Attention在, 就可以关注到输入的任意位置. 这个是后面Transformer的最核心的基础.
Teach forcing
Decoder是一个自回归模型, 一开始初始化后训练的效果很差, 如果使用从开始就不对的词继续往下预测, 每次损失都很大, 从一开始模型就很难学到东西就开始振荡. Teach forcing是一个方法可以不管decoder输出什么都按照一定概率替换成正确的词,这样可以让模型在比较多的正确的词的基础上来预测下一个词, 帮助模型更好的训练. 但是能不能提高最终的正确率也说不好,但是如果从头训练不加的话很可能就练不下去了. 可以随着训练适当减小teach forcing的比例.
课程4: Natural Language Processing with Attention Models
3 Question Answering
问答
- Context-based: 包含上下文的问答系统, 输入是问题和上下文, 从上下文里挑选出答案
- Closed book: 输入只有问题, 要给出答案
迁移学习 Transfer Learning
在NLP中迁移学习相对于CNN还是比较新的,但是取得了非常大的进展.
- 在A任务上进行训练, 获得预训练模型,可以在不同的任务上获得提升.
- 可以在没有标注的数据集上进行预训练
- 可以训练很大的模型在很大的未标注的数据集上, 微调就可以在下游任务取得很好的性能
重要进展: CBOW –> ELMo –> GPT –> BERT –> BART, T5…
4. Chatbot
Attention的劣势是计算复杂度是长度的平方, 这个非常限制句子的长度. 另外更长的句子会需要更大的模型, 也会因为GPU内存不足而受到限制.
Reformer
- LSH(Locality Sensitive Hashing)
- Reversible Residual Layers