跟李沐学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.rhkb.cn/news/464819.html

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

相关文章

【ArcGIS】绘制各省碳排放分布的中国地图

首先&#xff0c;准备好各省、自治区、直辖市及特别行政区&#xff08;包括九段线&#xff09;的shp文件&#xff1a; 通过百度网盘分享的文件&#xff1a;GS&#xff08;2022&#xff09;1873 链接&#xff1a;https://pan.baidu.com/s/1wq8-XM99LXG_P8q-jNgPJA 提取码&#…

Unity照片墙效果

Unity照片墙效果&#xff0c;如下效果展示 。 工程源码

开源模型应用落地-glm模型小试-glm-4-9b-chat-批量推理(二)

一、前言 GLM-4是智谱AI团队于2024年1月16日发布的基座大模型&#xff0c;旨在自动理解和规划用户的复杂指令&#xff0c;并能调用网页浏览器。其功能包括数据分析、图表创建、PPT生成等&#xff0c;支持128K的上下文窗口&#xff0c;使其在长文本处理和精度召回方面表现优异&a…

计算机网络:网络层 —— 路由信息协议 RIP

文章目录 路由选择协议动态路由协议路由信息协议 RIPRIP 的重要特点RIP的基本工作过程RIP的距离向量算法RIP存在的问题RIP版本和相关报文的封装 路由选择协议 因特网是全球最大的互联网&#xff0c;它所采取的路由选择协议具有以下三个主要特点&#xff1a; 自适应&#xff1a…

算法:图的相关算法

图的相关算法 1. 图的遍历算法1.1 深度优先搜索1.2 广度优先搜索 2. 最小生成树求解算法普里姆(Prim)算法克鲁斯卡尔(Kruskal)算法 3. 拓扑排序4. 最短路径算法 1. 图的遍历算法 图的遍历是指从某个顶点出发&#xff0c;沿着某条搜索路径对图中的所有顶点进行访问且只访问次的…

PowerCat反弹Shell

PowerCat介绍 PowerCat是一个powershell写的tcp/ip瑞士军刀&#xff0c;可以看成ncat的powershell的实现&#xff0c;然后里面也 加入了众多好用的功能&#xff0c;如文件上传&#xff0c;smb协议支持&#xff0c;中继模式&#xff0c;生成payload&#xff0c;端口扫描等等。 …

A014-基于Spring Boot的家电销售展示平台设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

蓬勃发展:移动开发——关于软件开发你需要知道些什么

一、前言 移动开发一直都是软件开发领域中最有趣的领域之一&#xff0c;这是因为&#xff1a; 1、移动开发为“只有一个人”的开发团队提供了一个非常独特的机会&#xff0c;让他可以在相对较短的时间内建立一个实际的、可用的、有意义的应用程序&#xff1b; 2、移动开发也代…

RK3568平台开发系列讲解(字符设备驱动篇)注册字符设备

🚀返回专栏总目录 文章目录 一、字符设备初始化二、字符设备的注册和注销沉淀、分享、成长,让自己和他人都能有所收获!😄 📢注册字符设备可以分为两个步骤: 字符设备初始化字符设备的添加一、字符设备初始化 字符设备初始化所用到的函数为 cdev_init(…),在对该函数讲…

软件测试面试题个人总结

前面看到了一些面试题&#xff0c;总感觉会用得到&#xff0c;但是看一遍又记不住&#xff0c;所以我把面试题都整合在一起&#xff0c;都是来自各路大佬的分享&#xff0c;为了方便以后自己需要的时候刷一刷&#xff0c;不用再到处找题&#xff0c;今天把自己整理的这些面试题…

【Java语言】继承和多态(一)

继承 继承就是实现代码的复用&#xff1b;简而言之就是重复的代码作为父类&#xff08;基类或超类&#xff09;&#xff0c;而不同的可以作为子类&#xff08;派生类&#xff09;。如果子类想要继承父类的成员就一定需要extends进行修饰&#xff08;如&#xff1a;&#xff08;…

关于我的编程语言——C/C++——第四篇(深入1)

&#xff08;叠甲&#xff1a;如有侵权请联系&#xff0c;内容都是自己学习的总结&#xff0c;一定不全面&#xff0c;仅当互相交流&#xff08;轻点骂&#xff09;我也只是站在巨人肩膀上的一个小卡拉米&#xff0c;已老实&#xff0c;求放过&#xff09; 字符类型介绍 char…

Golang | Leetcode Golang题解之第535题TinyURL的加密与解密

题目&#xff1a; 题解&#xff1a; import "math/rand"type Codec map[int]stringfunc Constructor() Codec {return Codec{} }func (c Codec) encode(longUrl string) string {for {key : rand.Int()if c[key] "" {c[key] longUrlreturn "http:/…

群控系统服务端开发模式-应用开发-业务架构逻辑开发第一轮测试

整个系统的第一个层次已经开发完毕&#xff0c;已经有简单的中控&#xff0c;登录、退出、延迟登录时长、黑名单、数据层封装、验证层封装、RSA加解密、Redis等功能&#xff0c;还缺获取个人、角色按钮权限、角色菜单权限功能。角色按钮权限以及角色菜单权限等明后天开发&#…

「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…

PySpark 本地开发环境搭建与实践

目录 一、PySpark 本地开发环境搭建 &#xff08;一&#xff09;Windows 本地 JDK 和 Hadoop 的安装 &#xff08;二&#xff09;Windows 安装 Anaconda &#xff08;三&#xff09;Anaconda 中安装 PySpark &#xff08;四&#xff09;Pycharm 中创建工程 二、编写代码 …

筋膜枪哪个牌子好?深入探索国产筋膜枪品牌的口碑之选

​双11购物狂欢节即将来临&#xff0c;面对市面上琳琅满目的筋膜枪品牌&#xff0c;是否感到无从选择&#xff1f;别担心&#xff0c;我们为你带来了倍益康X Max、有品H1、飞利浦mini小金刚、SKG F7和Artsmith AS300这五款迷你筋膜枪的全方位测评&#xff0c;帮你找到性价比最高…

java.io.FileNotFoundException: Could not locate Hadoop executable: (详细解决方案)

1&#xff0c;当你在pycharm 上运行spark代码时候出现下面这个报错。 解决方案 我们要先去hadoop的bin目录下去看看里面是否有 winutils.exe 这个错误 就是缺少winutils.exe 所以报这个错误&#xff0c;把它放到你的hadoop的bin目录下问题就解决了

Linux第三讲:环境基础开发工具使用

Linux第三讲&#xff1a;环境基础开发工具使用 1.Linux软件包管理器yum1.1什么是软件包管理器1.2操作系统生态问题1.3什么是yum源 2.vim详解2.1什么是vim2.2vim的多模式讲解2.2.1命令模式的诸多指令2.2.1.1gg和nshiftg2.2.1.2shift$和shift^2.2.1.3上、下、左、右2.2.1.4w和b2.…

数据库管理-第256期 Oracle DB 23.6新特性一览(20241031)

数据库管理256期 2024-10-31 数据库管理-第256期 Oracle DB 23.6新特性一览&#xff08;20241031&#xff09;1 AI向量搜索&#xff1a;新的向量距离度量2 混合向量索引3 分区&#xff1a;本地邻近分区向量索引4 持久邻近图向量索引5 稀疏向量6 邻居图向量索引的事务支持7 特征…