Appearance
针对序列级和词元级应用微调BERT
一、概述
之前我们学了很多针对不同自然语言处理任务的模型,比如循环神经网络、卷积神经网络这些,但为每个任务都单独设计模型太麻烦了。BERT 是一个预训练好的模型,只需要做一点小改动,就能用到很多自然语言处理任务上,而且效果还很好。不过原始的 BERT 模型参数很多,有 1.1 亿和 3.4 亿两种版本,需要足够的计算资源来微调。
我们可以把自然语言处理任务分成序列级和词元级两类,序列级就是处理整个文本序列的任务,比如给文本分类;词元级就是处理文本里每个词的任务,比如给每个词标词性。微调的时候,只需要给 BERT 加一个额外的全连接层就行,这个额外层的参数是从零开始学的,而 BERT 原来的参数会在微调的时候更新。
二、单文本分类
单文本分类就是把单个文本作为输入,然后输出它的分类结果。比如情感分析,判断一段影评是好评还是差评;还有语言可接受性判断,比如判断 “I should study.” 这句话语法对不对,“I should studying.” 这句话语法就不对。
BERT 的输入里有个特殊的 “” 标记,这个标记的 BERT 表示会把整个输入文本的信息都编码进去,然后把这个表示送到一个小的多层感知机里,就能输出分类结果了。
三、文本对分类或回归
文本对分类就是给一对文本分类,比如之前学的自然语言推断,判断两个文本之间的逻辑关系。还有文本对回归任务,比如语义文本相似度,就是给一对文本打分,分数从 0 到 5,0 表示两个文本完全没关联,5 表示两个文本语义完全一样。比如 “A plane is taking off.” 和 “An air plane is taking off.” 语义几乎一样,就能打 5 分;“A woman is dancing.” 和 “A man is talking.” 完全没关联,就打 0 分。
和单文本分类不同的是,文本对分类的输入是一对文本,BERT 的输入表示会处理这两个文本,然后还是用 “” 标记的表示来送到全连接层输出结果,如果是回归任务,就输出连续的分数,用均方损失来训练。
四、文本标注
文本标注是词元级的任务,就是给文本里的每个词都分配一个标签,比如词性标注,给每个词标上是名词、动词还是形容词。比如 “John Smith‘s car is new” 这句话,每个词对应的词性标签是 “NNP(专有名词单数)、NNP、POS(所有格结尾)、NN(名词单数)、VB(动词原形)、JJ(形容词)”。
和单文本分类不同的是,文本标注是把每个词元的 BERT 表示都送到同一个额外的全连接层里,输出每个词元的标签。
五、问答
问答也是词元级的任务,比如斯坦福问答数据集里的任务,给一段阅读段落和一个问题,答案是段落里的一段文本。比如段落里说 “一些专家报告说面罩的功效是不确定的。然而,口罩制造商坚持他们的产品,如 N95 口罩,可以预防病毒。” 问题是 “谁说 N95 口罩可以预防病毒?”,答案就是 “口罩制造商”。
微调 BERT 做问答的时候,把问题作为第一个文本序列,段落作为第二个文本序列输入到 BERT 里。然后用两个额外的全连接层,一个用来预测答案在段落里开始的位置,另一个用来预测结束的位置。训练的时候,就是让模型最大化真实答案开始和结束位置的对数似然,预测的时候,找到分数最高的文本片段作为答案。
六、小结
BERT 只需要做一点小改动(加一个额外的全连接层),就能用到很多自然语言处理任务上,比如单文本分类、文本对分类或回归、文本标注、问答这些。
微调的时候,额外层的参数是从零开始训练的,BERT 原来的参数会在训练的时候更新。
(注:文档部分内容可能由 AI 生成) 源地址