本次搬运Sebastian Ruder的博客A Review of the Neural History of Natural Language Processing,可以快速了解深度学习时代NLP的发展历史及其中的里程碑式工作。
2001 Neural language models
语言建模是指在给定前面若干个单词的情况下,预测文本下一个出现的单词。这是一个最简单的自然语言处理任务,但同时有着最具体的应用。传统方法使用n-gram模型进行语言建模,并用不同平滑方法处理未出现的n-gram。[1]
第一个神经网络方法是Bengio等人在2001年提出的feed-forward neural network[2],该方法首先在look-up table中查询到前面n个单词的表示向量,拼接并送入隐藏层,之后被送入softmax层。
现在FFNN更多地被RNN[3],LSTM[4]取代用来做语言建模。
2008 Multi-task learning
多任务学习第一次被应用于处理NLP任务的神经网络是2008年的[5][6],Collobert和Weston的文章也被评为ICML 2018的最佳时间检验奖。
2013 Word embeddings
自然语言的稀疏向量表示一直以来是用词袋模型解决的。Mikolov在2013年提出了稠密向量表示word2vec,有两种训练方式,一种是CBOW(continuous bag-of-words),从周围词预测中心词,另一种是skip-gram,从中心词预测周围词。
word embedding也能通过有微调的矩阵分解以及SVD LSA等传统矩阵分解方法得到,但word2vec还是最被广泛运用的。此外,word2vec中skip-gram的负采样方法也有很多的应用场景。
一个有趣的方向是如何利用无监督学习把不同语言映射到同一个投影空间中,这样就能更好地实现跨语言迁移学习,从而利用常用语言的预训练向量来帮助解决低资源语言的若干问题。
2013 Neural networks for NLP
RNN CNN和RecNN被应用于NLP。其中,recursive neural network和前两者不同,不把语言看做序列,而看做有结构的信息,自底向上建模语言的表示,而RNN则自左向右或自右向左建模语言。
2014 Sequence-to-sequence models
2014年Sutskever提出seq2seq模型,利用encoder-decoder结构实现序列到序列的映射。之后谷歌全面使用seq2seq进行机器翻译,代替phrase-based翻译系统,开启了神经机器翻译的时代。
由于decoder的存在,seq2seq模型不仅可以实现语言序列到语言序列的映射,也可以实现图片到语言,以及序列到结构化序列的映射。
2015 Attention
2015年Bahdanau[7]提出的Attention真正使神经机器翻译的效果超过了传统的phrase-based翻译系统。seq2seq中要把整个序列的语义压缩为一个固定大小的向量,而attention通过让decoder能够看到输入序列的隐状态来缓解这个问题。
2015 Memory-based networks
Attention可以看做一种模糊记忆,模型能根据带权重的隐藏状态自主选择抽取什么记忆。在Attention之外,很多包含显式记忆的模型被提出,比如neural turing machines[8], memory networks9], end-to-end memory networks[10]等等。
2018 Pretrained language models
2018年是预训练语言模型元年,以BERT为首的预训练语言模型极大地提高了在神经网络在一系列任务上的效果。
参考文献
[1] Kneser, R., & Ney, H. (1995, May). Improved backing-off for m-gram language modeling. In icassp (Vol. 1, p. 181e4).
[2] Bengio, Y., Ducharme, R., & Vincent, P. (2001). Proceedings of NIPS.
[3] Mikolov, T., Karafiát, M., Burget, L., Černocký, J., & Khudanpur, S. (2010). Recurrent neural network based language model. In Eleventh Annual Conference of the International Speech Communication Association.
[4] Graves, A. (2013). Generating sequences with recurrent neural networks. arXiv preprint arXiv:1308.0850.
[5] Collobert, R., & Weston, J. (2008). A unified architecture for natural language processing. In Proceedings of the 25th International Conference on Machine Learning (pp. 160–167).
[6] Collobert, R., Weston, J., Bottou, L., Karlen, M., Kavukcuoglu, K., & Kuksa, P. (2011). Natural Language Processing (almost) from Scratch. Journal of Machine Learning Research, 12(Aug), 2493–2537. Retrieved from http://arxiv.org/abs/1103.0398.
[7] Bahdanau, D., Cho, K., & Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. In ICLR 2015.
[8] Graves, A., Wayne, G., & Danihelka, I. (2014). Neural turing machines. arXiv preprint arXiv:1410.5401.
[9] Weston, J., Chopra, S., & Bordes, A. (2015). Memory Networks. In Proceedings of ICLR 2015.
[10] Sukhbaatar, S., Szlam, A., Weston, J., & Fergus, R. (2015). End-To-End Memory Networks. In Proceedings of NIPS 2015. Retrieved from http://arxiv.org/abs/1503.08895