模型系列(篇一)-Bert

简介

Devlin在2018年提出BERT(Bidirectional Encoder Representation from Transformer),是自编码的语言建模方法。

模型详细介绍

结构

BERT由12层Transformer组成

输入

BERT的输入形式:[CLS] 文本1 [SEP] 文本2 [SEP] 。采用这种形式的原因:MLM对于输入形式没有要求,但是NSP要求模型的输入是两段文本,因为在预训练阶段输入形式统一为两段文本拼接的形式。

输入表示:由词向量(Token Embeddings)、块向量(Segment Embeddings)、位置向量(Position Embeddings)之和组成。

  • 词向量:输入序列的独热编码+可训练的词向量矩阵=>词向量。[CLS] 、[SEP] 也有词向量

  • 块向量:等于当前词所在块的编号(从0开始计数)。注:[CLS] 、第一个块结尾处的[SEP] 的块向量为0,其余的[SEP]顺次编码。

  • 位置向量:绝对位置的独热编码+可训练的词向量矩阵 => 位置向量。注:[CLS] 、[SEP]也均按照绝对位置的独热编码+可训练的词向量矩阵得到。

训练

包含两个预训练任务:掩码语言模型(MLM)、下一个句子预测(NSP)。

掩码语言模型(MLM)

即类似完形填空(Cloze)的做法:

  • 采用15%的掩码比例,即输入序列中15%的WordPieces子词被掩码(使用[MASK]标记替换原单词)。问题:造成预训练阶段、下游任务精调阶段不一致,因为人为引入的[MASK]标记不会在下游任务中出现。

  • 解决方案:不总是替换成[MASK]标记,按照概率选择如下三种中的一种:

    • 10%的概率不替换

    • 10%的概率替换成词表中的任何一个随机词;

    • 80%的概率替换成[MASK]标记;

  • 训练

    • 输入层:[CLS] x1 x2 ... xn [SEP]。

      • 输入文本长度小于BERT最大序列长度N:则需要补齐标记(Padding Token,PAD)补在文本后面,直到达到N。

      • 输入文本长度大于BERT最大序列长度N:则需要截断至N。

    • 编码层:Transformer

    • 输出层:预测掩码位置,softmax+交叉熵损失学习模型参数

下一个句子预测(NSP):

  • 方案:构建二分类任务。正负样本:正样本是文本中相邻的两个句子A和B,负样本是把B替换成语料库中的任意一个其余句子。正负样本比例在1:1。

  • 解决问题:阅读理解、文本蕴含需两段输入文本,MLM无法显式学习两段文本的关联关系。

  • 训练

    • 输入层:[CLS] x11 x21 ... xn1 [SEP] x12 x22... xn2 [SEP]

    • 编码层:Transformer

    • 输出层:使用[CLS]的隐含层表示进行分类预测,因为表示上下文语义表示的首个分量。softmax+交叉熵损失学习模型参数

进阶预训练任务

  • 整词掩码(Whole Word Masking,WWM)

    • 解决问题:只掩码WordPieces子词带来信息泄露。比如:苹果只掩码了果

    • 解决方案:**掩码词汇的所有子词。**如:单词为philammon,所有子词phil、##am、##mon都会被掩码。除此之外,和MLM一致。

    • 注:掩码的概念不止局限于MASK,还包含替换为随机词、保留原词

  • N-gram掩码(N-gram Masking,NM)

    • 解决问题:挖掘模型对连续空缺文本的还原能力

    • 解决方案:将经过WordPieces分词后的序列的连续N-gram文本掩码

    • 流程:

      • 根据掩码概率判断当前标记(Token)是否应该被掩码;

      • 需要掩码时,判断N-gram的掩码概率。为避免连续N-gram短语被掩码导致过长文本缺失,选择对于低N-gram采用高概率,高N-gram采用低概率抽取

      • 对该标记后的N-1个标记进行掩码。不足N-1,则以词边界截断。

      • 掩码完成后跳出N-gram,对下一个候选标记进行掩码判断。

  • 说明:上述两种掩码和MLM只影响模型预训练阶段,对于下游任务是透明的,下游都是采用经过WordPieces分词得到的输入序列

结尾

亲爱的读者朋友:感谢您在繁忙中驻足阅读本期内容!您的到来是对我们最大的支持❤️

正如古语所言:"当局者迷,旁观者清"。您独到的见解与客观评价,恰似一盏明灯💡,能帮助我们照亮内容盲区,让未来的创作更加贴近您的需求。

若此文给您带来启发或收获,不妨通过以下方式为彼此搭建一座桥梁: ✨ 点击右上角【点赞】图标,让好内容被更多人看见 ✨ 滑动屏幕【收藏】本篇,便于随时查阅回味 ✨ 在评论区留下您的真知灼见,让我们共同碰撞思维的火花

我始终秉持匠心精神,以键盘为犁铧深耕知识沃土💻,用每一次敲击传递专业价值,不断优化内容呈现形式,力求为您打造沉浸式的阅读盛宴📚。

有任何疑问或建议?评论区就是我们的连心桥!您的每一条留言我都将认真研读,并在24小时内回复解答📝。

愿我们携手同行,在知识的雨林中茁壮成长🌳,共享思想绽放的甘甜果实。下期相遇时,期待看到您智慧的评论与闪亮的点赞身影✨!

万分感谢🙏🙏您的点赞👍👍、收藏⭐🌟、评论💬🗯️、关注❤️💚~


自我介绍:一线互联网大厂资深算法研发(工作6年+),4年以上招聘面试官经验(一二面面试官,面试候选人400+),深谙岗位专业知识、技能雷达图,已累计辅导15+求职者顺利入职大中型互联网公司。熟练掌握大模型、NLP、搜索、推荐、数据挖掘算法和优化,提供面试辅导、专业知识入门到进阶辅导等定制化需求等服务,助力您顺利完成学习和求职之旅(有需要者可私信联系)

友友们,自己的知乎账号为**"快乐星球"**,定期更新技术文章,敬请关注!

相关推荐
NAGNIP11 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab12 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab12 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP16 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年16 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼16 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS16 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
warm3snow17 小时前
Claude Code 黑客马拉松:5 个获奖项目,没有一个是"纯码农"做的
ai·大模型·llm·agent·skill·mcp
天翼云开发者社区17 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈18 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能