1-of-N encoding——word class——word embedding
word embedding局限性:
一词多义怎么办?如bank的多意
Q:那我们能不能标记一词多义的形式呢?
A:不太现实,首先是词很多,而且“bank”也不止有2种意思,下面这句话:The hospital has its own blood bank.这里“bank”有人认为是第三种意思“库”,也有人认为是“银行”的延伸意思,所以也难界定到底有几种意思。
而且:使用传统的word embedding的方法,相同的单词都会对应同样的embedding
如果我们希望针对不同意思的bank,可以给出不同的embedding表示。根据上下文语境的不同,同一个单词bank我们希望能够得到不同的embedding,如果bank的意思是银行,我们期望它们之间的embedding能够相近,同时能够与河堤意思的bank相距较远。
2.1背景
ELMO模型(Embeddings from Language Model ):可以实现Contextualized Word Embedding技术。
ELMO是《芝麻街》中的一个角色。它是一个RNN-based的语言模型,其任务是学习句子中的下一个单词或者前一个单词是什么。
例如现在有一句话: “潮水 退了 就 知道 誰 沒穿 褲子”,需要找到“退了”这个词的编码,就可以根据这个词的上下文来获取。
2.2简介
它是一个双向的RNN网络,这样每一个单词都对应两个hidden state,进行拼接便可以得到单词的Embedding表示。当同一个单词上下文不一样,得到的embedding就不同。
“退了”这个词经过RNN层的输出之后得到前文对它的编码,经过反向的RNN层的输出作为下文对它的编码,之后进行连接得到“退了”这个词的整个编码。
有一个问题:
这么多层的RNN,内部每一层输出都是单词的一个表示,那我们取哪一层的输出来代表单词的embedding呢?ELMO的做法就是我全都要:
在ELMO中,一个单词会得到多个embedding,对不同的embedding进行加权求和,可以得到最后的embedding用于下游任务。要说明一个这里的embedding个数,下图中只画了两层RNN输出的hidden state,其实输入到RNN的原始embedding也是需要的,所以你会看到说右下角的图片中,包含了三个embedding。但不同的权重是基于下游任务学习出来的,
每一层都会给出一个Embedding(上图展示了两层),ELMO把这些加起来生成一个Embedding(蓝色向量),加的时候需要的参数根据模型学出来。
3.1:背景由来
Bert是Bidirectional Encoder Representations from Transformers的缩写,它也是芝麻街的人物之一。Transformer中的Encoder就是Bert预训练的架构。李宏毅老师特别提示:如果是中文的话,可以把字作为单位,而不是词。
其实就是输入一个句子进去,给你一串embedding,对应到每一个word
由于中文字太多,one-hot太大,所以如果用26个字母呢,那就不会 太大。,字母同样可以表示中文。
3.2如何训练BERT?
训练BERT的方法分为2种:
方法1和方法2的方法在BERT中是同时使用的。
1、Masked LM做法是随机把一些单词的token变为Mask:挖空,让模型去猜测盖住的地方是什么单词。假设输入里面的第二个词汇是被盖住的,把其对应的embedding输入到一个多分类模型中,来预测被盖住的单词。
2、Next Sentence Prediction
预测下一个句子,这里,先把两句话连起来,中间加一个[SEP]作为两个句子的分隔符。而在两个句子的开头,放一个[CLS]标志符,将其得到的embedding输入到二分类的模型,输出两个句子是不是接在一起的。
3.21Masked LM
在这种方法里面,会以一定的概率将一个词用[MASK]替代,把盖住的地方丢进一个classifier来预测是哪一个词汇,然后往里面填充相应的编码,如果填进去并没有违和感,则表示预测准确。
3.22Next Sentence Prediction
给出两个句子,BERT判断两个句子是否是接在一起的。
[CLS]放在句子开头,输出的embedding,丢进classifier,来看到看是否要接在一起,bert的内部不是rnn,是self attention,:特点,放在开头和结尾,影响不大,所以开头和结尾没有区别,用于存储判断的结果。
3.3 如何利用BERT?:得到一个新的整体的。
BERT论文中给出的例子是将BERT和接下来的任务一起训练的.
在ELMO中,训练好的embedding是不会参与下游训练的,下游任务会训练不同embedding对应的权重,但在Bert中,Bert是和下游任务一起训练的:
如果是分类任务,在句子前面加一个标志,将其经过Bert得到的embedding输出到二分类模型中,得到分类结果。二分类模型从头开始学,而Bert在预训练的基础上进行微调(fine-tuning)。
bert神奇到什么程度:给英文分类,自动就能学会中文文章的分类。
GPT是Generative Pre-Training 的简称,但GPT不是芝麻街的人物。GPT-2的模型非常巨大,它其实是Transformer的Decoder。
比如ELMO需要94M,BERT需要340M,但GPT就像个巨大的独角兽,1532M
GPT-2是Transformer(变压器)的Decoder(解码器)部分,输入一个句子中的上一个词,我们希望模型可以得到句子中的下一个词。根据“潮水”预测下一个词语“退了”,中间做self attension:有很多层,分别做attntion,得到一个embedding,来做预测。
由于GPT-2的模型非常巨大,它在很多任务上都达到了惊人的结果,甚至可以做到zero-shot learning(简单来说就是模型的迁移能力非常好),如阅读理解任务,不需要任何阅读理解的训练集,就可以得到很好的结果。
比如给一篇文章,然后给一个 问题,直接就给答案,
还可以做翻译,特别快。
GPT-2可以自己进行写作,写得还是不错的!
阅读理解:变现不错哦,GPT参数越高,争取率越高,自动看到A冒号就输出问题的答案
Summarization:上表现就比较差。