跟李沐学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表示段嵌入e_A,输出句子使用1表示段嵌入e_B

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

  • [CLS]:位于每条输入序列的开头,用于分类任务。
  • [SEP]:用来分隔一对句子,或者标志单个句子的结束。
  • [MASK]:用于替换那些在MLM任务中被随机选中遮盖的词汇。

BERT的位置编码为可学习参数。

具体修改可参考下图:

(图源: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的特征也会不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/59399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单元/集成测试解决方案

在项目开发的前期针对软件单元/模块功能开展单元/集成测试&#xff0c;可以尽早地发现软件Bug&#xff0c;避免将Bug带入系统测试阶段&#xff0c;有效地降低HIL测试的测试周期&#xff0c;也能有效降低开发成本。单元/集成测试旨在证明被测软件实现其单元/架构设计规范、证明被…

C语言复习第9章 字符串/字符/内存函数

目录 一、字符串函数1.1 读取字符串gets函数原型Example 1.2 字符串拷贝strcpy函数原型模拟实现官方源码 1.3 求字符串长度strlen函数原型关于返回值size_与算术转换的一个易错点模拟实现:递归模拟实现:指针-指针模拟实现:暴力官方源码 1.4 字符串追加strcat函数原型注意自己给…

WPF 特性------Binding

工业控制中&#xff0c;经常会需要把一个bool 型输入信号的状态显示在面板上&#xff0c;使用wpf 绑定的办法&#xff0c;可简洁实现&#xff1a; 实现步骤&#xff1a; 1&#xff0c;定义类&#xff1a; using System; using System.Collections.Generic; using System.Com…

【MySQL】深层理解索引及特性(重点)--下(12)

索引&#xff08;重点&#xff09; 1. 索引的作用2. 索引操作2.1 主键索引2.1.1 主键索引的特点2.1.2 创建主键索引 2.2 唯一键索引2.2.1 唯一键索引的特点2.2.2 唯一索引的创建 2.3 普通索引2.3.1 普通索引的特点2.3.2 普通索引的创建 2.4 全文索引2.4.1 全文索引的作用2.4.2 …

基于SpringBoot+微信小程序+协同过滤算法+二维码订单位置跟踪的农产品销售平台-新

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; “农产品商城”小程序…

C++ | Leetcode C++题解之第541题反转字符串II

题目&#xff1a; 题解&#xff1a; class Solution { public:string reverseStr(string s, int k) {int n s.length();for (int i 0; i < n; i 2 * k) {reverse(s.begin() i, s.begin() min(i k, n));}return s;} };

一个由Deno和React驱动的静态网站生成器

大家好&#xff0c;今天给大家分享一个由 Deno React 驱动的静态网站生成器Pagic。 项目介绍 Pagic 是一个由 Deno React 驱动的静态网站生成器。它配置简单&#xff0c;支持将 md/tsx 文件渲染成静态页面&#xff0c;而且还有大量的官方或第三方主题和插件可供扩展。 核心…

如何才能实时监测Mac的运行状态

实时监测Mac的运行状态&#xff0c;能够让我们更好的了解Mac的情况&#xff0c;因此如何才能监测Mac的运行状态很重要 State&#xff0c;实时监测你的Mac运行状态&#xff0c;能够直观的展示当前Mac的CPU、内存、硬盘、温度、风扇、网络信息以及开机时间等重要信息 除此之外&a…

python之正则表达式总结

正则表达式 对于正则表达式的学习&#xff0c;我整理了网上的一些资料&#xff0c;希望可以帮助到各位&#xff01;&#xff01;&#xff01; 我们可以使用正则表达式来定义字符串的匹配模式&#xff0c;即如何检查一个字符串是否有跟某种模式匹配的部分或者从一个字符串中将与…

练习LabVIEW第三十八题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第三十八题&#xff1a; 创建一个VI&#xff0c;实现对按钮状态的指示和按钮“按下”持续时间简单计算功能&#xff0c;按…

众测遇到的一些案列漏洞

文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行…

C#:强大而优雅的编程语言

在当今的软件开发领域&#xff0c;C#作为一种广泛应用的编程语言&#xff0c;以其强大的功能、优雅的语法和丰富的生态系统&#xff0c;受到了众多开发者的喜爱。本文将深入探讨 C#的各个方面&#xff0c;展示它的魅力和优势。 一、C#的历史与发展 C#是由微软公司开发的一种面…

【OJ题解】在字符串中查找第一个不重复字符的索引

&#x1f4b5;个人主页: 起名字真南 &#x1f4b5;个人专栏:【数据结构初阶】 【C语言】 【C】 【OJ题解】 目录 1. 引言2. 题目分析示例&#xff1a; 3. 解题思路思路一&#xff1a;双重循环思路二&#xff1a;哈希表 4. C代码实现5. 代码详解6. 时间和空间复杂度分析7. 优化方…

el-date-picker日期选择器动态设置日期

需求&#xff1a;选择开始时间&#xff0c;或者在开始时间已存在的情况下&#xff1b;结束时间下拉日期选择框展示从开始日期展示&#xff1b;而不是当前日期&#xff0c;并且结束时间下拉框日期要禁用开始时间之前的日期。 <el-form-item label"开始时间" prop&q…

「C/C++」C/C++的区别

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

Redis-基本了解

一、Redis 初识 Redis 是⼀种基于键值对&#xff08;key-value&#xff09;的NoSQL数据库&#xff0c;与很多键值对数据库不同的是&#xff0c;Redis 中的值可以是由string&#xff08;字符串&#xff09;、hash&#xff08;哈希&#xff09;、list&#xff08;列表&#xff09…

大模型面试题持续更新_Moe(2024-10-30)

获取更多面试真题的集合&#xff0c;请移步至 https://i.afbcs.cn/naPbNYhttps://pica.zhimg.com/80/v2-7fd6e77f69aa02c34ca8c334870b3bcd_720w.webp?sourced16d100b Moe和集成学习方法有什么异同&#xff1f; MoE和集成学习的思想异曲同工&#xff0c;都是集成了多个模型的…

配置深度学习环境

先前已经配置好了 1在新建一个项目时 2.打开文件&#xff0c;找到设置 3.点开设置 如图1.2.3所示

PHP不良事件上报系统源码,医院安全不良事件管理系统,基于 vue2+element+ laravel框架开发

不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”&#xff0c;结合预存上百套已正在使用的模板&#xff0c;帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件、意…

Rust 力扣 - 2461. 长度为 K 子数组中的最大和

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历长度为k的窗口&#xff0c;用一个哈希表记录窗口内的所有元素&#xff08;用来对窗口内元素去重&#xff09;&#xff0c;我们取哈希表中元素数量等于k的窗口总和的最大值 题解代码 use std::collecti…