本文最后更新于:2020年7月3日 晚上

一、词的表示
one-hot编码:稀疏,向量之间均是正交关系,不能表示语义。
word class:将相同属性的词归为一类,但分类标准过意单一、片面。如cat、dag、bird都属于动物,但是dog、cat属于爬行动物,而bird属于飞行动物,难以区分。
word embedding:使用词向量表示词特征,相似的词、向量接近,在空间较近。但无法解决一词多义问题,即每个word只有一个词向量。
contextualized word embedding:同一个词在不同的上下文中有不同的表示。

二、LSTM概述
长短记忆神经网络——通常称作LSTM,是一种特殊的RNN,能够学习长的依赖关系。是为了避免长依赖问题而精心设计的。记住较长的历史信息实际上是他们的默认行为,而不是他们努力学习的东西。
1
2.1 标准RNN结构如下(单个tanh层)

2.2 lstm 结构图如下

2.3 lstm的4层交互结构说明:
LSTM 的4大交互模块 结构片段 说明
遗忘门
遗忘门:由sigmoid决定丢弃那些信息,输出01序列,序列作用在单元格Ct-1上,1表示全保留,0全丢弃.
输入门
分为2步:①输入门:sigmoid决定更新哪些值
② tanh:创建候选向量Ct
旧值更新操作
将Ct-1更新成Ct, 对应实际删除旧主题信息,并添加新信息
输出门
决定输出什么,sigmoid决定输出哪些部分。然后tanh+输出哪些部分 得到输出.
三、ELMO模型概述
基于RNN的语言模型,直接从句子学习,无需标注。
1
3.1 问题引入
给定句子:“潮水 退了 就 知道 谁 没穿 裤子”

问题①:红框ELMO内部究竟是啥玩意?
问题②:是直接将词输入到ELMO模型吗?
问题③:ELMO输出的h1、h2、蓝柱是什么?
3.2 ELMO的内部构造图
elmo模型是一个多层(2层)双向的LSTM组成的LM(底层lstm捕获到句法、语义方面信息,如POS,高层捕获到词义的上下文信息,如语义消歧)
1

3.3 如何得到输入词的词向量
词向量的构建是动态的过程,会随着模型参数更新而更新。对于中文,原始输入的是词语;而对于类似英文,每个单词又是由多个字母构成,中文的词语等同于英文中的单词,词语中的词等同于单词中的字母(同一粒度),本文中是针对英文而言的,中文类似

即input→词向量表示:对每个词进行字符卷积操作,从而得到词向量。(w2c系列是通过look_up_table得到词向量)

格式(batch, n_token, max_char, char_dim),batch表示同时有多少个句子(样本)并行卷积,n_token表示句子在未去重条件下的单词数,char_dim表示每个字符的特征长度,max_char表示句子中词的最大字符数量。
使用大小”高为1,宽为n_width, 通道数为char_dim”(即维度[1, n_width, char_dim])的卷积核进行卷积, 得到[n_token, max_char-n_width+1]的特征图(备注:词字符少的感觉有个填充对齐操作以达到max_char大小)
最终再对图的每行进行一个max_pooling操作,得到batch个[n_token]。如输入(8, 16, 12, 64),卷积核(1, 5, 64), 即并行计算8个句子样本,样本最多有16单词,词中最大的字符数量是12个,每个字符用64个特征表示,最终获取8个(16, 12-5+1)特征图。
即为词向量
词向量卷积过程示例
示例:假设batch为1,句子 “I like China very much” , 如何卷积的?
即初始维度:(1, n_token, max_char, char_dim),卷积核为(1, 2, char_dim), 卷积过程如下:

3.4 loss函数以及最终输出
3.4.1 loss函数
训练是使用负对数似然作为损失函数。
1

3.4.2 输出向量表示
elmo在train过程中,每个词都由 正反向LSTM中间向量、正反向结果向量和静态向量(init时向量,也会同步更细)表示,故每个词都会有2L+1个表示向量:

3.4.3 最终结果计算
ELMO考虑既考虑最后一层lstm的输出,同时兼顾静态词向量、中间词向量, 最终的结果与w2c类似,是预测位置上的可能概率分布。故输出结果表示如下:
1

3.5 ELMO事项说明
在实际任务中使用ELMO向量:
结合监督任务训练时,可冻结(如设置权重标为0不更新该参数)EMLO模型中LSTM层的参数(静态词向量、正反向lstm中的参数[指的是权重,不是api的参数项]),只训练最后一层E函数中的权重值。此时可加入dropout(随机丢掉某些层的影响)或L2正则化(使E结果更接近lstm层输出的平均值)。
结合方式有:

  1. 直接在输入层的词向量拼上elmo表示
  2. 将elmo直接作用在RNN的输出上
    改进:
  3. ELMO对输出结果采用拼接方式融合特征,‘可能’ 弱于Bert一体化的融合方式
  4. ELMO使用了LSTM作为特征抽取器,而非Transformer(研究表明Transformer特征提取能力远强于LSTM)
  5. 由RNN导致训练时间

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

leetcode50 上一篇
Task03-Haar特征描述算子-人脸监测 下一篇