(四十四)通俗易懂理解 | 您所在的位置:网站首页 › 隐函数定义怎么理解 › (四十四)通俗易懂理解 |
自然语言这几年也可以说是飞速发展,不过好长一段时间没有接触了,最近偶然有机会了解一下,特此补充相关知识点。 关于BiLSTM尚不太理解的可以看之前的内容: 梦里寻梦:(五)通俗易懂理解——双向LSTM关于BiLSTM-CRF,网上内容也很多,个人而言就该篇解析的比较透彻,耐心看下去绝对能通俗易懂理解,真看不懂了,那就再多看几遍,哈哈哈。 概要此系列博文将会包含以下内容: 引言-命名实体识别任务中,Bilstm-CRF模型中CRF层的基本概念和思想; 示例-解释CRF层是如何一步一步工作的小例子; 实现-CRF层的链式实现算法。 文章读者 读者目标:学习NLP的新手或者AI相关的人员,我希望您能从该博文中学到您想学的知识。 先验知识 在阅读本博文之前,您唯一需要了解的就是什么是命名实体识别。如果您不了解神经网络、CRF或者其他相关概念,请不要担心,我会尽可能地将这些讲的通俗易懂。 1.引言 对于命名实体识别来讲,目前比较流行的方法是基于神经网络,例如,论文[1]提出了基于BiLSTM-CRF的命名实体识别模型,该模型采用word embedding和character embedding(在英文中,word embedding对应于单词嵌入式表达,character embedding对应于字母嵌入式表达;在中文中,word embedding对应于词嵌入式表达,character embedding对应于字嵌入式表达;接下来的示例中我们都假设是英文的场景),我将用该模型作为示例来解释CRF层的工作原理。 1.1 参数定义假设,我们的数据集中有两种实体类型:人名和机构名,因此,在我们的数据集中有5种实体标签: B-PersonI- PersonB-OrganizationI-OrganizationO假设x是一个句子,该句子由5个单词组成:w0,w1,w2,w3,w4,而且在句子x中,[w0,w1]组成一个人名,[w3]为一个机构名,其他单词标签都是“O”。 1.2 BiLSTM-CRF模型接下来,简明介绍一下该模型。 示意图如下所示: 首先,句子x中的每个单词表达成一个向量,该向量包含了上述的word embedding和character embedding,其中character embedding随机初始化,word embedding通常采用预训练模型初始化。所有的embeddings 将在训练过程中进行微调。 其次,BiLSTM-CRF模型的的输入是上述的embeddings,输出是该句子xxx中每个单词的预测标签。 尽管,我们讲的是CRF层,不必了解BiLSTM层的细节,但是为了便于了解CRF层,我们必须知道BiLSTM层输出的意义。 从上图可以看出,BiLSTM层的输出是每个标签的得分,如单词w0,BiLSTM的输出为1.5(B-Person),0.9(I-Person),0.1(B-Organization), 0.08 (I-Organization) and 0.05 (O),这些得分就是CRF层的输入。 将BiLSTM层预测的得分喂进CRF层,具有最高得分的标签序列将是模型预测的最好结果。 如果没有CRF层将如何根据上文,能够发现,如果没有CRF层,即我们用下图所示训练BiLSTM命名实体识别模型: 因为BiLSTM针对每个单词的输出是标签得分,对于每个单词,我们可以选择最高得分的标签作为预测结果。 例如,对于w0 ,“B-Person"得分最高(1.5),因此我们可以选择“B-Person”最为其预测标签;同样的,w1的标签为"I-Person”,w2的为"O", w3的标签为"B-Organization",w4的标签为"O"。 按照上述方法,对于x虽然我们得到了正确的标签,但是大多数情况下是不能获得正确标签的,例如下图的例子: 1.3 CRF能够从训练数据中学习到约束条件CRF层可以对最终的约束标签添加一些约束条件,从而保证预测标签的有效性。而这些约束条件是CRF层自动从训练数据中学到。 约束可能是: 一句话中第一个单词的标签应该是“B-“ or “O”,而不能是"I-"; “B-label1 I-label2 I-label3 I-…”中,label1, label2, label3 …应该是相同的命名实体标签。如“B-Person I-Person”是有效的,而“B-Person I-Organization” 是无效的; “O I-label” 是无效的。一个命名实体的第一个标签应该以 “B-“ 开头,而不能以“I-“开头,换句话说, 应该是“O B-label”这种模式; … 有了这些约束条件,无效的预测标签序列将急剧减少。 CRF层在CRF层的损失函数中,有两种类型的得分,这两种类型的得分是CRF层的关键概念。 2.1 发射得分第一个得分为发射得分,该得分可以从BiLSTM层获得。如图2.1所示,w0标记为B-Person的得分是1.5。 为了后续叙述方便,我们将给每个标签一个索引,如下表所示: 2.2 转移得分为了使转移得分矩阵的鲁棒性更好,我们将额外再加两个标签:START和END,START表示一句话的开始,注意这不是指该句话的第一个单词,START后才是第一个单词,同样的,END代表着这句话的结束。 下表就是一个转移得分矩阵的示例,该示例包含了START和END标签。 如上表所示,我们能够发现转移矩阵已经学习到了某些有用的约束条件。 句子中第一个单词的标签应该是以“B-”或者"O"开头,而不能以"I-"开头(转移得分中,从START到I-Person 和 I-Organization的得分都很低);模式“B-label1 I-label2 I-label3 I-…”中,label1, label2, label3 … 应该是相同的命名实体,例如“B-Person I-Person”是有效的,而 “B-Person I-Organization”是无效的。(该性质在转移得分矩阵中的表现为,从B-Organization到I-Person的得分仅有0.0003);“O I-label”是无效的,命名实体的第一个标签应该是以“B-“ 开头的而不该是以“I-“开头的,换而言之,有效的标签模式应该是“O B-label” (该性质在转移得分矩阵中的表现是,得分tO,I−Persont_{O,I-Person}tO,I−Person是很低的。)…现在,你可能比较关心的问题是:怎么得到该转移矩阵?其实,该矩阵是BiLSTM-CRF模型的一个参数,在训练模型之前,可以随机初始化该转移得分矩阵,在训练过程中,这个矩阵中的所有随机得分将得到更新,换而言之,CRF层可以自己学习这些约束条件,而无需人为构建该矩阵。随着不断的训练,这些得分会越来越合理。 2.3 CRF损失函数CRF损失函数包含了真实路径得分和所有可能路径的总得分,如果预测对的情况下,真实路径在所有可能路径中得分应该是最高的。 举个栗子,假设我们数据的标签如下表所示: 我们有一个含有5个单词的句子,可能的路径为: 1)START B-Person B-Person B-Person B-Person B-Person END 2)START B-Person I-Person B-Person B-Person B-Person END … 10)START B-Person I-Person O B-Organization O END … N) O O O O O O O 现在要解决的问题就是:1)如何定义一个路径的得分;2)如何计算所有可能路径的总得分;3)当我们计算总得分时,我们需要列出所有可能路径吗(提前回答:当然不需要列出所有可能路径) 接下来,我们将介绍如何解决上述问题。 2.4 真实路径得分发射得分 2.5 所有路径的总得分计算总得分最简单的方法就是:枚举所有可能的路径,然后将每条路径的得分加起来,这样虽然能实现目标,但是该方式是非常低效的,训练可能需要很久很久… 在学习下边的内容前,强烈建议你拿出草稿纸和笔,跟着示例步骤,一步一步往下走,用这种方式肯定能帮助你更好地理解算法细节,从而,你可以使用你喜欢的编程语言进行实现。 Step 1:回顾CRF损失函数 Step2:回顾发射和转移得分 Step3:计算 2.6 预测标签在之前的章节中,我们详细地介绍了BiLSTM-CRF模型和CRF损失函数的细节,大家可以采用开源工具(Keras, Chainer, TensorFlow等)完成自己的BiLSTM-CRF模型。模型搭建过程中,非常重要的是反向传播的实现,不要担心,这些框架在训练过程中可以自动的完成反向传播(即,计算梯度、更新模型参数)。而且,有一些框架已经完成的CRF层,此时,添加CRF层就只是一行代码的工作量了。 这节,我们将介绍,当我们的模型已经训练好时,如何预测一句话的标签。 Step1:BiLSTM-CRF的发射和转移得分 依然,假设我们有只有3个单词组成的一句话: x=[w0,w1,w2]。 而且,我们已经从BiLSTM层获得了发射得分矩阵,从CRF层得到的转移得分矩阵,其示例如下表所示: 开始预测: 如果你对维特比算法比较了解的话,这部分内容就很简单,如果不知道该算法,也不要担心,这里将一步一步地解释该算法,如下所示,我们将对这句话从左向右进行最终的标签预测: w0 w0→ w1 w0→ w1→ w2 这里,会有两个变量obs 和 previous,previous表示前面所有步骤的结果,obs表示当前单词的信息。 alpha0记录最高历史得分,alpha1对应着相应的索引,这两个变量的细节之后会慢慢讲解。现在,请看下图:当一条小狗前往森林时,会在沿途做一些“标记”,上述两个变量就可以看作这些“标记”,这些“标记”的作用就是帮助狗狗返回。 [示例:START] 代码https://github.com/createmomo/CRF-Layer-on-the-Top-of-BiLSTM 文章来源:https://blog.csdn.net/Suan2014/article/details/89419283?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task 原英文链接:通俗理解BiLSTM-CRF命名实体识别模型中的CRF层 - createMoMo - 博客园 NLP从业必备书籍: |
CopyRight 2018-2019 实验室设备网 版权所有 |