IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 李宏毅BERT部分学习 -> 正文阅读

[人工智能]李宏毅BERT部分学习

BERT

BERT是Bidirectional Encoder Representation from Transformers的缩写,BERT是transformer的encoder。BERT里面只需要搜集一大堆的句子,不需要有annotation就可以把encoder给tran出来。总而言之,BERT的功能就是一个句子丢进去给BERT,然后每一个句子都会吐一个出来embedding出来就结束了。BERT的Network架构是跟transformer的encoder架构是一样的,transformer的encoder里面有self-attention layer。self-attention layer就是input一个sequence也会out一个sequence。

在这里插入图片描述

训练BERT

BERT的network有两个训练的方法,第一个方法是Nasked LM,第二个方法是Next Sentence Prediction。

Nasked LM

将输入的句子中的15%的词汇随机被置换成一个特殊的token,token叫做MASK。BERT要做的是猜测被盖住的地方到底应该是哪个词汇,BERT在训练的时候就是教她测漏字问题。

问:BERT是怎么填回来的呢?
答:假设输入句子的第二个词汇被挖空,接下来我们把每一个input token都通过BERT都会得到一个embedding。接下来把挖空的地方的embedding丢到Linear Multi-class Classifier里面,要求Classifier预测被MASK的词汇是哪一个词汇。因为Classifier是Linear的,所以能力非常弱,如果可以预测出来,那BERT这个model会很深,可能24层48层。BERT这个model一定要抽出一个很好的Representation,可以从这个Representation轻易知道现在被MASK的词汇是哪一个词汇。

如果两个词填在一个地方没有违和感,那他们就有相似的embedding

在这里插入图片描述

Next Sentence Prediction

给BERT两个句子,BERT预测给的两个句子是接在一起的还是不是接在一起的。需要引入一个特别的token代表两个句子之间的boundary:[SEP]和放在句子开头代表从这里开始做Next Sentence Prediction这件事:[CLS]。从CLS出来的embedding放到Linear Multi-class Classifier里表示这两个句子是否接在一起,是的话是yes,不是的话是no。

问:为什么CLS放在句子开头?
答:BERT内部不是RNN,是transformer encoder,也就是self-attention,self-attention的特色是两个距离不管远近的word对他来说是一样的。

在这里插入图片描述

总结

这两个方法在文献上是共同使用的,会学得最好。

如何使用BERT

案例1:输入sentence输出class(判断句子正负面,文章分类)

在开头添加CLS(代表分类的符合)得到embedding放到Linear Classifier得到class判断是正面还是负面。Linear Classifier的参数是随机初始化的,所以Linear Classifier是trained from scratch(从头开始训练)。BERT只要微调就好。

在这里插入图片描述

案例2:输入sentence输出每一个词汇都要决定它属于哪个class

例子:slot filling

input一个句子每个词都会output一个embedding,把每一个embedding都丢到Linear Classifier,决定embedding属于哪个class

在这里插入图片描述

案例3:输入两个句子输出一个class(natural language inference)

给机器一个前提和假设,根据前提和假设判断是对还是错还是不知道。给BERT两个句子,第一个句子前面加[CLS]后面加[SEP],将开头输出的embedding丢给Linear Classifier决定是对还是错还是不知道。

在这里插入图片描述

案例4:拿BERT解Extraction Question Answering,给model读一篇文章,然后问他一个问题,希望他可以正确的得到答案。但是这个答案一定会出现在文章里面。

给文章和问题,都是用token的sequence表示,假设文章D有n个token,文章Q有m个token,然后output两个整数s和e,表示现在文章的答案落在第s个token到第e个token

在这里插入图片描述

问题输进去然后给[SEP]然后再把文章输进去,文章里面每个词汇都有一个embedding。拿到两个红蓝向量,红向量与文字的每一个embedding做类似attention的动作,都会算出一个scaler,把scaler通过softmax得到一个分数,第几个得到最高的分数则s=第几,所以红色向量决定s=几。

在这里插入图片描述

蓝向量与文章每一个embedding做类似attention的动作算出分数再通过softmax看哪个分数最高就得出e

在这里插入图片描述

问:s和e矛盾了(即s比e大)怎么办?
答:没有答案了,回答此题无解。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 11:32:56  更:2021-07-10 11:33:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 9:52:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码