跟李沐学AI:BERT

什么是NLP中的迁移学习

使用预训练好的模型来抽取词、句子的特征:Word2Vec或者预训练好的语言模型。

使用预训练好的语言模型,一般不会再对语言模型进行微调,即不进行更新。

Word2Vec一般用于替代embedding层

但是Word2Vec往往忽略了时序信息,语言模型也往往只看了一个方向,不善于处理长序列。

BERT的动机

希望像CNN一样,可以有一个基于微调的NLP模型。预训练的模型以及抽取了足够多的信息,遇到新的任务只需要增加一个简单的输出层。

BERT架构

BERT是一个只有编码器的Transformer。

BERT原始提供两个版本:

Base:Block = 12, hidden_size = 768, head = 12, parameters = 110M

Large:Block = 24, hidden_size = 1024, head = 24, parameters = 340M

BERT在大规模数据上进行训练,有大于3B词。

对输入的修改

BERT训练时,每个训练样本是一个句子对:(source, target),为了区分输入句子和输出句子,输入句子使用0表示段嵌入,输出句子使用1表示段嵌入

同时,为了标识句子的开始和结束,以及区分一对句子,BERT引入了几个特殊字符:

  • CLS\]:位于每条输入序列的开头,用于分类任务。

  • MASK\]:用于替换那些在MLM任务中被随机选中遮盖的词汇。

具体修改可参考下图:

(图源:https://zh.d2l.ai/chapter_natural-language-processing-pretraining/bert.html)

预训练任务1:带掩码的语言模型

为了使BERT更加通用,BERT的预训练包括以下两个任务:掩蔽语言模型和下一句预测。

Transformer的编码器使双向的,而标准的语言模型是单向的。

为此,BERT会随机按照一定概率(15%)将句子中的词元换成掩码<mask>,要求模型预测掩码(类似完形填空)。因此,BERT在此任务中是可以观察双向信息的。

因为微调任务中不出现<mask>掩码,因此BERT在训练更换掩码时,80%将选中的词元变为掩码<mask>,10%的概率换成随机词元,10%的概率保持原有词元不更换。

预训练任务2:下一句子预测

该任务用于预测两个句子在原始文本中是否相邻。

训练样本中:50%概率选择相邻句子对。50%概率随机拼接两个句子作为句子对。

由于Transformer编码器中的自注意力,特殊词元"<cls>"的BERT表示已经对输入的两个句子进行了编码。因此该任务将<cls>对应的输出作为全连接层的输入,全连接层的输出结果代表该任务的预测结果。

微调BERT

BERT对每一个词元(包括<cls>和<sep>)返回抽取了上下文信息的特征向量。因为BERT的特征是基于TransformerBlock即Attention的,因此单个词元的特征向量页包含了上下文的所有信息。

不同的任务可以使用不同的特征

句子分类

可以将<cls>对应的向量输入到全连接层进行分类

单句分类:情感分类、测试语言可接受性

句子对:语义文本相似度(计算句子1、2的相似性得分)

文本标注

为每个词分配一个标签,如对每个词做词性标注。

命名实体识别

识别一个词元是不是命名实体,如人名、机构、位置

将每一个非特殊词元的特征放入全连接层(二分类问题?)

问题回答

给定一个问题和描述文字,找出一个片段作为回答。

输入为句子对,句子1为问题,句子2为描述文字。分类器对描述文字中的每一个词元预测是否是答案的开始或结束,或不是开始或结束(三分类问题)。

微调总结

即使下游任务有所不同,使用BERT未调试只需增加输出层即可。

不同任务,输入的表示和BERT的特征也会不同。

相关推荐
G皮T3 小时前
【人工智能】ChatGPT、DeepSeek-R1、DeepSeek-V3 辨析
人工智能·chatgpt·llm·大语言模型·deepseek·deepseek-v3·deepseek-r1
九年义务漏网鲨鱼3 小时前
【大模型学习 | MINIGPT-4原理】
人工智能·深度学习·学习·语言模型·多模态
元宇宙时间4 小时前
Playfun即将开启大型Web3线上活动,打造沉浸式GameFi体验生态
人工智能·去中心化·区块链
开发者工具分享4 小时前
文本音频违规识别工具排行榜(12选)
人工智能·音视频
产品经理独孤虾4 小时前
人工智能大模型如何助力电商产品经理打造高效的商品工业属性画像
人工智能·机器学习·ai·大模型·产品经理·商品画像·商品工业属性
老任与码4 小时前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
蹦蹦跳跳真可爱5894 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
雷羿 LexChien4 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
两棵雪松5 小时前
如何通过向量化技术比较两段文本是否相似?
人工智能
heart000_15 小时前
128K 长文本处理实战:腾讯混元 + 云函数 SCF 构建 PDF 摘要生成器
人工智能·自然语言处理·pdf