本文主要是介绍WDK李宏毅学习笔记第十二周01_ELMO,BERT,GPT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ELMO,BERT,GPT
文章目录
- ELMO,BERT,GPT
- 摘要
- 1、Contextualized Word Embedding
- 2、Embeddings from Language Model(ELMO)
- 3、Bidirectional Encoder Representations from Transformers(BERT)
- 3.1 How to use BERT-Case 1
- 3.2 How to use BERT-Case 2
- 3.3 How to use BERT-Case 3
- 3.4 How to use BERT-Case 4
- 4、Generative Pre-Training(GPT)
- 方法
- 结论与展望
摘要
在实际生活中,一个word往往有多个意思,光靠一个vector是没法完全代表一个word的,所有说,前面word embedding的方法都是不够好的,本章讲的就是解决一词多意问题的方法—ELMO,BERT,GPT,它们的目的是用多个vector表示同一个word的多个意思,以此解决对应问题。1、Contextualized Word Embedding
Contextualized Word Embedding是根据语义对word进行编码,同样的word可以对应不同的word,以解决一次多用的问题。
2、Embeddings from Language Model(ELMO)
ELMO是一个RNN-base的model,它是train一个正向的RNN和一个反向的RNN,再将其得到的结果接起来,就可以得到词汇的Embedding,该Embedding不仅考虑了前文意思,也考虑了后文意思。同样的word,要是前后文意思不同,得到的Embedding也不同,从而实现一词多译。
当我们的RNN是Deep的时候,对于同一个词汇,每一层都会输出一个Embedding,这样该如何选择?
ELMO的做法是全都要,如下图右上角所示,将每一层的的两个Embedding都加权求和,得到代表能够每一层的Embedding,权重的值是learning到的。
3、Bidirectional Encoder Representations from Transformers(BERT)
BERT做的事情是输入word,然后输出word对应的Embedding。
训练BERT的方法有俩个。
- Masked LM。它就是随机的将句子中间的词用[Mask]替代,然后让machine去找合适的词填好。这样如果是多个词填在一起没有违和感时,那么它们就会有非常接近的Embedding。
- Next Sentence Prediction。它做的事情是,给machine两个句子,在句子开头,输入标志符[CLS],句子间用标志符[SEP]表示两个句子的分隔符,[CLS]标志符得到的Embedding会送给一个二分类model,该model判断这两个句子该不该连在一块。
3.1 How to use BERT-Case 1
它是进行语义识别的,如下图所示,像BERT输入一些句子,和分类标志符[CLS],将分类标志符的对应位置的Embedding丢给Linear Classifier,Linear Classifier再输出语义是好还是不好。
3.2 How to use BERT-Case 2
向BERT输入word和分类标志符[CLS],将每个word对应的输出丢给分类器,分类器输出每个word对应的类别,可以用来解决词性分类的问题。
3.3 How to use BERT-Case 3
Natural Language Inference(给machine一个前提和假设,machine判断根据前期假设是否成立,它的做法是输入多个句子和分类标志符[CLS],句子间用标志符[SEP]隔开,分类器输出假设是否成立。
3.4 How to use BERT-Case 4
Extraction-based Question Answering(给machine读文章,希望问它问题可以正确的回答),它的做法是给machine输入问题和文章,再learned两个vector,一个vector和文章word的embedding做点积,将得到的值做Softmax,得到最大值位置,作为答案的起始点,另一个word也是同样的做法,它输出的最大值位置作为文章结束点。
4、Generative Pre-Training(GPT)
GPT就是如下图所示的model,它其实就是Transformer 的 Decoder ,它做的事情是自动填词。GPT是最复杂的,但是它也是很有效,相比其他model,它可以用很少的training data就可以做到相同的事情。
方法
- ELMO的做法是training一个正向的RNN和反向的RNN,两者组合作为word的Embedding,这样word Embedding不仅考虑了前文语境思,也考虑了后文语境,且不同语境得到的word也都是不同的。
- BERT是Transformer的Encoder,它常用的训练方法有两个,一个是将句子中的某些word用标志符[mask]代替,让machine去猜被代替的词是什么,如此就可以找到每个word的Embedding。另一个是输入分类标志符和句子间的分隔标志符,然后输入句子是否是可以连在一块的,让machine知道句子间的联系及含义。
- GPT是Transformer的Dncoder,它是将每一个word分为3个vector,每一层的输出作为下一次的输入,将联系一层一层传递下去,然后training出所有word的vectors。
结论与展望
ELMO在处理一词多意的问题上是很有效的,还可以适当增加Deep来提高准确率,相比这三个model,ELMO所占内存也是最小的。BERT则是更适合用在处理文本分类的问题上,且在文本分类问题的比赛中常年霸榜。GPT是这三个model最复杂占用内存最大的,但是在这3个model中,它可以用更少的训练数据完成同样的效果,所以当训练数据不充足时,使用该model将会更准确。
这篇关于WDK李宏毅学习笔记第十二周01_ELMO,BERT,GPT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!