当前位置: 首页 > news >正文

模型系列(篇一)-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、搜索、推荐、数据挖掘算法和优化,提供面试辅导、专业知识入门到进阶辅导等定制化需求等服务,助力您顺利完成学习和求职之旅(有需要者可私信联系) 

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

http://www.dtcms.com/a/290639.html

相关文章:

  • 暑期算法训练.5
  • 分布在内侧内嗅皮层(MEC)的带状细胞对NLP中的深层语义分析有什么积极的影响和启示
  • [硬件电路-64]:模拟器件 -二极管在稳压电路中的应用
  • Facebook 开源多季节性时间序列数据预测工具:Prophet 乘性季节性 Multiplicative Seasonality
  • JS实现矩阵左右旋转90度
  • uniapp app pdf.js报错:Uncaught SyntaxError:Unexpected token ‘{‘
  • 5道挑战题writup
  • 单体VS微服务:如何选择最适合的架构?
  • 人工智能之数学基础:事件间的关系
  • Leetcode力扣解题记录--第189题(巧思数组翻转)
  • 【MySQL】Linux配置MySQL Windows远程连接
  • 客流分析核心算法 trajectory_event_analyzer数据结构
  • Python-数据库概念-pymysql-元编程-SQLAlchemy-学习笔记
  • QT6 源,七章对话框与多窗体(5) 文件对话框 QFileDialog 篇二:源码带注释
  • 【React】npm install报错npm : 无法加载文件 D:\APP\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
  • 玩转Rocky Linux 9 部署Redis指南
  • WPF实现加载初始页面后跳转到主界面并销毁初始页面资源
  • 在 WPF 启动界面中心加载 GIF 动图
  • 人工智能真的能编程吗?研究勾勒出自主软件工程的障碍
  • Next.js 知识点
  • 【c++】leetcode438 找到字符串中所有字母异位词
  • GC9112低压单通道全桥驱动器芯片解析:小封装大能量
  • uniapp扫描二维码反色处理
  • 苍穹外卖DAY10
  • 阿里云监控及运维常见问题
  • MetaGPT源码剖析(一):MetaGPT框架下的多智能体协作项目——software_company.py
  • 安科瑞:能源微电网助力工业园区“绿色”发展
  • 数字孪生赋能智慧能源电力传输管理新模式
  • 光伏电站气象监测系统:为清洁能源高效发电保驾护航
  • Android 单编 framework 相关产物输出介绍