system: [SYSTEM]

user: 3. ALBERT-BiLSTM-CRF模型 模型主要由三部分构成，分别为ALBERT预训练语言模型、BiLSTM层和CRF层。以ALBERT的编码输出作为BiLSTM层的输入，再在BiLSTM的隐藏层后加一层CRF层用以解码，最终得到每个字符的标注类型。具体结构如图1。 图1. ALBERT-BiLSTM-CRF模型 3.1. BERT预训练语言模型 在自然语言处理任务中，语言模型是一个重要概念，其任务是计算语言序列 w 1 ， w 2 ， ⋯ ， w n 的出现概率 p ( w 1 ， w 2 ， ⋯ ， w n ) ： p ( S ) = p ( w 1 ， w 2 ， ⋯ ， w n ) = ∏ i = 1 n p ( w | w 1 ， w 2 ， ⋯ ， w i − 1 ) (1) 传统语言模型，如神经网络语言模型，一方面由于其是单向的，无法融入上下文信息，另一方面由于训练得到的词嵌入为固定的，无法表示词的多义性。BERT的模型结构很好地解决了这两个问题。 BERT模型结构如图2所示。相比于GPT [ 19 ] 和ELMO [ 20 ]，BERT结合了二者的长处，采用双向Transformer [ 21 ] 作为编码器，一方面使用效果更好的Transformer替代了LSTM，另一方面，双向的语言模型使得BERT可以获取上下文信息，进而使词嵌入具有更丰富的语义信息。 图2. BERT预训练语言模型 Transformer编码单元结构如图3所示。Transformer主要利用的思想是注意力机制，通过自注意力获取序列内部联系： Attention ( Q ， K ， V ) = softmax ( Q K T d k ) V (2) 然后通过多头结构拼接结果： MultiHead ( Q ， K ， V ) = Concat ( head 1 ， ⋯ ， head h ) W O (3) head i = Attention ( Q W i Q ， K W i K ， V W i V ) (4) 而在Transformer编码单元中，为使网络更容易训练，引入了残差连接和层归一化： L N ( x i ) = α × x i − μ L σ L 2 + ε + β (5) F F N = max ( 0 ， x W 1 + b 1 ) W 2 + b 2 (6) 由于注意力机制本身不提取时序特征，在输入端通过添加位置嵌入引入位置信息： P E ( p o s ， 2 i ) = sin ( p o s / 10000 2 i / d model ) (7) P E ( p o s ， 2 i + 1 ) = cos ( p o s / 10000 2 i / d model ) (8) 最后，BERT将位置嵌入和词嵌入拼接起来作为模型输入。 图3. Transformer编码单元 虽然在模型结构上只是对GPT和ELMO的一种改进，但BERT创新性地提出了“Masked语言模型”和“下一句预测”两种任务。Masked语言模型随机选择语料中15%的词用[Mask]掩码代替，而这些被选择的词中有80%被正常替换，10%被替换成另外一个词，10%保持不变；下一句预测是在做语言模型预训练的时候，正样本选择同文档中顺序相连的两个句子，负样本从不同文档中随机选择句子拼到第一个句子后面。这两种任务，前者获取词间信息，后者获取句子间信息，在训练的时候融入这两种信息可以使词嵌入具有更好的全局表达效果。 3.2. ALBERT模型的改进 相比于BERT，ALBERT主要采用了三种改进方法。 3.2.1. 对嵌入的因式分解 在BERT中，词嵌入大小E与隐藏层大小H相同，总参数量为词汇表长度V乘以每个词嵌入隐藏层大小H，其复杂度为 Ο ( V × H ) 。而ALBERT认为，词级别的嵌入没有上下文依赖的表述，而隐藏层的输出包括了一些上下文信息，理论上来说隐藏层的表述包含的信息应该更多，应该让 H ≫ E 。因此ALBERT提出利用因式分解降低参数的方法，先把one-hot向量映射到一个大小为E的低维度空间，然后通过高维映射变换到隐藏层空间内，进而使参数量的复杂度变换如下： Ο ( V × H ) → Ο ( V × E + E × H ) (9) 3.2.2. 跨层参数共享 Transformer共享参数有多种方案，ALBERT采用了全连接层与注意力层都进行参数共享的策略，共享了编码器内的所有参数，即用一个自注意力层的参数共享给每个注意力头。由于全连接层与注意力层占据了总参数量中的大部分，而跨层参数共享策略直接把二者的参数减少为单头时的情况，极大地压缩了参数总量。另一方面，减少了模型复杂度的同时，也使性能有比较明显的降低。 3.2.3. 句间连贯性损失 为了弥补参数减少带来的性能损失，ALBERT采用了一系列的方法提升模型的性能，例如放宽输入序列限制，采用n-gram掩码代替单字掩码，移除dropout，而性能提升最明显的是一种新的训练任务，句间连贯性损失。ALBERT认为，相比于Masked语言模型的提升，BERT采用的下一句预测任务降低了下游任务的性能，因为该任务包含了两个子任务，主题预测与关系一致性预测，而前者比后者简单很多。在ALBERT中，采用了一种新的策略对下一句预测任务进行改进，仅保留关系一致性预测。该任务中，正样本与下一句预测任务相同，选择同文档中两个顺序相连的句子，负样本则由正样本的两个句子调换顺序获得。 3.3. BiLSTM层 对于文本序列的时序特征，神经网络模型中的RNN具有很好的效果。RNN由输入层x、隐藏层h和输出层y组成，在命名实体标注任务的上下文中，x表示输入的特征，y表示输出的标签。与前馈神经网络相比，RNN在隐藏层引入了上个隐藏状态与当前隐藏状态的连接，计算如下： h ( t ) = f ( U x ( t ) + W h ( t − 1 ) ) (10) 其中，U与W是在训练时计算的连接权重， f ( z ) 是Sigmoid激活函数。 图4. LSTM中的细胞状态结构 为了更好地获取文本中的长范围依赖信息，LSTM在隐藏层用专门构建的记忆细胞结构代替了RNN中的更新模块，如图4。其主要组成部分为输入门i、遗忘门f、输出门o和记忆细胞c，构造如下： i t = σ ( W x i x t + W h i h t − 1 + W c i c t − 1 + b i ) (11) f t = σ ( W x f x t + W h f h t − 1 + W c f c t − 1 + b f ) (12) c t = f t c t − 1 + i t tanh ( W x c x t + W h c h t − 1 + b c ) (13) o t = σ ( W x o x t + W h o h t − 1 + W c o c t + b o ) (14) 隐藏层h的更新由o与c共同决定： h t = o t tanh ( c t ) (15) BiLSTM在LSTM的基础上引入反向传递的思想，构建了两个方向相反的隐藏层。通过获取上下文信息，BiLSTM可以取得更好的语义表达效果。 3.4. CRF层 当前命名实体识别任务的解决方案实质上是一种序列标注任务，而CRF是神经网络模型之外的一种主流模型。与神经网络模型相比，CRF可解释性强，每一个特征都有可以具体解释的意义，而且CRF可以捕捉标签之间的依赖关系，通过概率转移矩阵排除非法用语的情况。 对于给定输入序列 x = ( x 1 ， x 2 ， ⋯ ， x n ) 和对应的标签序列 y = ( y 1 ， y 2 ， ⋯ ， y n ) ，CRF定义评估分数为： s ( x ， y ) = ∑ i = 1 n W y i − 1 ， y i + ∑ i = 1 n P i ， y i (16) 其中，W是转移矩阵， W y i − 1 ， y i 表示从标签 y i − 1 到标签 y i 的转移概率， P i ， y i 表示输入 x i 映射到标签 y i 的非归一化概率。 输入序列到标签序列的对应概率 p ( y | x ) 可用Softmax函数进行计算： p ( y | x ) = e s ( x ， y ) ∑ y ˜ ∈ Y x e s ( x ， y ˜ ) (17) 其中， Y x 为所有可能预测的标签序列。 在训练中，最大化 p ( y | x ) 的对数似然，可将损失函数定义为： − log ( p ( y | x ) ) = log ( ∑ y ˜ ∈ Y x e s ( x ， y ˜ ) ) − s ( x ， y ) (18) 解码时，选择 y * 作为输出预测标签序列，通过动态规划算法求得最优解： y * = arg max y ˜ ∈ Y x s ( x ， y ˜ ) (19)