未来一段时间内,我会讲这些按照顺序去挨个发文,谢谢大家支持!!
目录
ELMO语言模型介绍
优点:
缺点:
ELMO 采用了典型的两阶段过程:
下游任务的使用:
elmo模型结构
ELMO语言模型介绍
下面继续开始昨天的介绍,昨天也就是介绍了这一张表的大概意思。今天呢也就开始研究第一个ELMO模型了。
ELMO是“Embedding from Language Models”的简称,其实这个名字并没有反应它的本质思想,提出ELMO的论文题目:“Deep contextualized word representation”更能体现其精髓,而精髓在哪里?在deep contextualized这个短语,一个是deep,一个context,其中context更关键。在此之前的Word Embedding本质上是个静态的方式,所谓静态指的是训练好之后每个单词的表达就固定住了,以后使用的时候,不论新句子上下文单词是什么,这个单词的Word Embedding不会跟着上下文场景的变化而改变,所以对于比如Bank这个词,它事先学好的Word Embedding中混合了几种语义 ,在应用中来了个新句子,即使从上下文中(比如句子包含money等词)明显可以看出它代表的是“银行”的含义,但是对应的Word Embedding内容也不会变,它还是混合了多种语义。这是为何说它是静态的,这也是问题所在。ELMO的本质思想是:我事先用语言模型学好一个单词的Word Embedding,此时多义词无法区分,不过这没关系。在我实际使用Word Embedding的时候,单词已经具备了特定的上下文了,这个时候我可以根据上下文单词的语义去调整单词的Word Embedding表示,这样经过调整后的Word Embedding更能表达在这个上下文中的具体含义,自然也就解决了多义词的问题了。所以ELMO本身是个根据当前上下文对Word Embedding动态调整的思路。
ELMo模型的优缺点
优点:
效果好,在大部分任务上都较传统模型有提升。实验证实ELMo相比于词向量,可以更好地捕捉到语法和语义层面的信息。
传统的预训练词向量只能提供一层表征,而且词汇量受到限制。ELMo所提供的是character-level的表征,对词汇量没有限制。缺点:速度较慢,对每个token编码都要通过language model计算得出。
- 适用任务
Question Answering问题回答
Textual entailment文本蕴涵
Semantic role labeling语义角色标注
Coreference resolution指代消解
Named entity extraction命名实体提取
Sentiment analysis情感分析
ELMO 采用了典型的两阶段过程:
第一阶段:利用语言模型进行预训练;
第二阶段:在做下游任务时,从预训练网络中提取对应单词的网络各层的 Word Embedding 作为新特征补充到下游任务中。
网络结构:
上图展示的是其预训练过程,它的网络结构采用了BiLSTM双层双向,目前语言模型训练的任务目标是根据单词W的上下文去正确预测单词W, W之前的单词序列 Context-before称为上文,之后的单词序列 Context-after称为下文。
图中左端的前向双层LSTM代表正方向编码器,输入的是从左到右顺序的除了预测单词W外的上文Context-before;右端的逆向双层 LSTM 代表反方向编码器,输入的是从右到左的逆序的句子下文Context-after;每个编码器的深度都是两层 LSTM 叠加。
这个网络结构其实在 NLP 中是很常用的。使用这个网络结构利用大量语料做语言模型任务就能预先训练好这个网络,
如果训练好这个网络后,输入一个新句子Snew,句子中每个单词都能得到对应的三个Embedding:最底层是单词的Word Embedding,往上走是第一层双向LSTM中对应单词位置的Embedding,这层编码单词的句法信息更多一些;再往上走是第二层LSTM中对应单词位置的
Embedding,这层编码单词的语义信息更多一些。也就是说,ELMO 的预训练过程不仅仅学会单词的 Word
Embedding,还学会了一个双层双向的LSTM网络结构,而这两者后面都有用。
下游任务的使用:
我们可以先将句子X作为预训练好的ELMO网络的输入,这样句子X中每个单词在ELMO网络中都能获得对应的三个Embedding,之后给予这三个Embedding
中的每一个Embedding一个权重a,这个权重可以学习得来,根据各自权重累加求和,将三个Embedding整合成一个。
然后将整合后的这个Embedding作为X句在自己任务的那个网络结构中对应单词的输入,以此作为补充的新特征给下游任务使用
elmo模型结构
2层biLSTM;
biLSTM层向量维度4096维;
投影层词向量维度:512维。
从最底层词嵌入层到第一层biLSTM输出层之间还有一个残差连接。
1、网络结构
一个输入层、一个卷积层、一个池化层。
2、原始输入
单个词的字符表示
(embedding_dimension, num——character)即(特征维度,字符数量)
图片所示为(4,9)。
elmo中使用的是(16,50),即一个词的最大长度为50,每一个字符用16维表示。
3、卷积
图中,卷积核大小为(4,3)的有4个(每一行代表一个卷积核卷积后得到的结果),大小为(4,2)的有3个,大小为(4,4)的有5个。
elmo中使用的卷积核的个数是2048个,分别是[1, 32], [2, 32], [3, 64], [4, 128], [5, 256], [6, 512], [7, 1024](第一维代表宽度,第二维代表个数)。
4、池化
对每一行进行最大池化,将池化结果拼接起来,形成维度为卷积核个数的词向量。
所以,elmo中的初始词向量是2048维,然后经过线性变化转化为512维。