LSTM结构与Elmo网络结构

    技术2023-12-23  97

    文章目录

    一、词的表示二、LSTM概述2.1 标准RNN结构如下(单个tanh层)2.2 lstm 结构图如下2.3 lstm的4层交互结构说明: 三、ELMO模型概述3.1 问题引入问题①:红框ELMO内部究竟是啥玩意?问题②:是直接将词输入到ELMO模型吗?问题③:ELMO输出的h1、h2、蓝柱是什么? 3.2 ELMO的内部构造图3.3 如何得到输入词的词向量词向量卷积过程示例 3.4 loss函数以及最终输出3.4.1 loss函数3.4.2 输出向量表示3.4.3 最终结果计算 3.5 ELMO事项说明

    一、词的表示

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

    二、LSTM概述

    长短记忆神经网络——通常称作LSTM,是一种特殊的RNN,能够学习长的依赖关系。是为了避免长依赖问题而精心设计的。记住较长的历史信息实际上是他们的默认行为,而不是他们努力学习的东西。

    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的语言模型,直接从句子学习,无需标注。

    3.1 问题引入

    给定句子:“潮水 退了 就 知道 谁 没穿 裤子”

    问题①:红框ELMO内部究竟是啥玩意?

    问题②:是直接将词输入到ELMO模型吗?

    问题③:ELMO输出的h1、h2、蓝柱是什么?


    3.2 ELMO的内部构造图

    elmo模型是一个多层(2层)双向的LSTM组成的LM(底层lstm捕获到句法、语义方面信息,如POS,高层捕获到词义的上下文信息,如语义消歧)

    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函数

    训练是使用负对数似然作为损失函数。

    3.4.2 输出向量表示

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

    3.4.3 最终结果计算

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

    3.5 ELMO事项说明

    在实际任务中使用ELMO向量: ​ 结合监督任务训练时,可冻结(如设置权重标为0不更新该参数)EMLO模型中LSTM层的参数(静态词向量、正反向lstm中的参数[指的是权重,不是api的参数项]),只训练最后一层E函数中的权重值。此时可加入dropout(随机丢掉某些层的影响)或L2正则化(使E结果更接近lstm层输出的平均值)。 ​ 结合方式有: 1. 直接在输入层的词向量拼上elmo表示 2. 将elmo直接作用在RNN的输出上 改进: 1. ELMO对输出结果采用拼接方式融合特征,‘可能’ 弱于Bert一体化的融合方式 2. ELMO使用了LSTM作为特征抽取器,而非Transformer(研究表明Transformer特征提取能力远强于LSTM) 3. 由RNN导致训练时间

    Processed: 0.011, SQL: 9