2021-06-08 自然语言处理技术——学习笔记

最近听了太多与自然语言相关的内容,觉得很神奇,但同时又是一头雾水。今天终于决定要去找一些相关资料看一下,那些常常听到名词到底是什么意思,顺便做个记录。


参考网址:https://www.zhihu.com/question/19895141

自然语言处理(简单NLP, Natural language process),是研究计算机处理人类语言的一门技术。包括:1.句法语义分析,2.信息提取,3.文本挖掘,4.机器翻译,5.信息检索,6.问答系统,7.对话系统。(我听到比较多的应用是机器翻译和问题系统)

GitHub上出现了一套NLP课程,课程为期13周,从文本嵌入分类开始,讲到Seq2Seq,再到机器翻译、对话系统、对抗学习等等,内容丰富。入门选手可以考虑。(课程网址请到参考网址中查收)


参考网址:https://zhuanlan.zhihu.com/p/96778666

1. word2vec

Firth在1957年提出一种重要的语言学思想:一个词语的意思应该由它的上下文表示

在word2vec出现前,一种简单的对词的表示是one-hot向量,这种表示方法最大的缺点在于没办法表示出词语之间的相似性。

Tomas Mikolov在2013年发表了几篇重要的论文,首次提出了CBOW和Skip-gram模型,而word2vec只是一个工具,其背后的模型就是CBOW (Continuous Bag of Words)或Skip-gram模型。

2. Transformer

在说明transformer前,需要简述一下attention机制。

seq2seq是由一个encoder和一个decoder构成,编码器负责把源序列编码成向量,解码器是一语言模型,负责 根据编码的信息生成目标序列。这个结构的问题在于,编码器需要把整个Source sentence的信息全部编码起来,这是seq2seq的瓶颈所在。而attention机制就是解决这个瓶颈的一种方法。attention的核心想法是:在解码器的每一个时间步,都和编码器直接连接,然后只关注source sentence中的特定的一部分。(不是很明白)

但是seq2seq+attention机制,还是要按照序列顺序去encoding的,不好做分布式计算,于是有了直接抛弃RNN, LSTM的self-attention机制,以及应用了这个机制的transformer.

(个人理解:transformer的作用也是进行序列的转换,只是可以采用分布式地方式去处理encoding.)

3. Bert (Bidirectional Encoder Representations from Transformers)

整个bert分为两步,pre-training和fine-tuning。在pre-training部分,在不同的pre-training任务中在未标记的数据上进行训练,在fine-tuning部分,模型先使用pre-trained的参数初始化,然后在下游任务中用标记数据对所有参数进行微调,虽然初始化用的都是相同的pre-trained参数,但是在下游不同任务中可以有不同的fine-tuning模型。

(参考网址:https://zhuanlan.zhihu.com/p/103226488)

因为pre-training需要大量的数据和大量的计算资源,所以google开源了多国的语言预训练模型,我们可以在这个基础上进行fine-tuning。

为了使bert可以适应下游的任务,输入被改造成: [CLS]+句子A(+[SEP]+句子B+[SEP])。其中[CLS]代表的是分类任务中的特殊token,它的输出就是模型的pooler output;[SEP]为分隔符;句子A和句子B是模型的输入文本,其中句子B可以为空。

bert使用两个非监督任务来pre-training模型:

task1 masked LM: 为了训练深度双向模型,作者使用了一种随机掩盖一定百分比的输入词的方法,然后再去预测这些掩盖的词,这种方法叫做Masked LM (MLM)。其实就可以想象成是完形填空,在作者实验中使用的 15%的词,也就是随机掩盖15%的词,然后再去预测 这些掩盖的词。

task2 Next Sequence Prediction: 很多下游任务比如QA, Natural language inference都是基于对两个句子之间的关系去理解的,但是在语言模型中没有捕捉到这个信息,bert就是为了解决这个问题,加入了NSP训练任务。50%的时间选择句子A真正的下一个句子B作为一个句子对(标记为IsNext), 50%的时间选择句子A和随机句子作为句子对(标记为NotNext)训练数据就是这样,虽然简单,但是很有效。

bert使用了MLM+NSP的多任务学习模式,并利用Tansformer的self-attention机制实现双向功能,设计了更通用的输入和输出层,适配了多任务下的迁移学习。

你可能感兴趣的:(2021-06-08 自然语言处理技术——学习笔记)