实用机器学习笔记二十九:NLP 中的微调
前言:
本文是个人在 B 站自学李沐老师的实用机器学习课程【斯坦福 2021 秋季中文同步】的学习笔记,感觉沐神讲解的非常棒 yyds。
NLP 模型的现状:
没有大量标注的 NLP 数据集
大量高质量的无标注的文档
维基百科,电子书,网页等
通常使用自监督预训练来训练 NLP 模型
产生“伪标号”并使用自监督学习任务来进行预训练
NLP 中常见生成“伪标号”的任务
语言模型(LM):根据前面的词来预测下一个词。比如:I like your (hat)
带掩码的语言模型(MLM):在一个句子中,随机扣掉一些词,然后去预测这些词,就像完形填空。比如:I like (your)hat
常见的预训练模型:
词嵌入:对于每一个词 w 学习两个词嵌入和。所谓词嵌入就是一个向量。
在一个句子中或者一个文档中,盖住一个词然后根据这个词的前后的词来预测这个词,其中表示窗口的大小,根据实际情况定,也就是要用前后多少个词来预测。
从上面的公式可知:对于要被预测的词用词向量 u 表示,前后上下文的词用词向量 v 表示。所有的 v 加起来然后和 u 做内积,并使其最大。这样的话,学习到的 u 就包含了和其他词上下文的的语义关 系,内积越大,关系就越相近。
学习到词向量后,在做预测任务时,就在词典中找到一个使得上式最大的词,这个词就是要预测的词。
在词嵌入中,还有一些其他方式,比如用中心词去预测周围的词,本文讲解的是用周围的词预测中心词。
基于 transformer 的预训练模型:
BERT:实际上是一个 transformer 的编码器,适合做带掩码的语言模型,既可以从左到右,也可以从右到左
GPT:一个 transformer 的解码器,是一个从左到右的过程。可以预测下一个词
T5:基于编码器-解码器架构的 transformer。
使用 BERT 做微调:
在训练好预训练模型之后,既就可以在自己的任务上做微调了。一般是把预训练模型的最后一层拿掉,根据自己的任务构建最后一层,然后进行微调。
随机初始化最后一层,使用小的学习率进行训练
下游任务调参
预训练模型库
HuggingFace:一个收集 tensorflow 和 pytorch 版本的预训练 transformer 模型库
应用:
BERT:
bert 在 11 个自然语言任务中取得了最好的成绩:
判断句子是否语法正确
判断电影评论是否是正面评论
判断两个句子是否在语义上等价
假设和结论都否匹配
T5:
输入文章,输出摘要
知识问答
总结:
在 NLP 中,预训练模型通常是通过自监督学习来训练的
作用就是做语言模型
BERT 是一个非常大的 transformer 编码器
做下游任务时,通常通过微调,单独构造最后一层
版权声明: 本文为 InfoQ 作者【打工人!】的原创文章。
原文链接:【http://xie.infoq.cn/article/ef4e3481b1abd34333cb5d7e1】。文章转载请联系作者。
评论