【李宏毅2020 ML/DL】P25 ELMO, BERT, GPT
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes
本节内容综述
- 首先概略地复习一下,在有
ELMO, BERT, GPT
这些技术前,我们如何做NLP:对词独热编码;之后考虑了Word Class
,Word Embedding
技术。 - 但是,一个词汇可能有不同的意义,传统来讲:
In typical word embedding, each word type has an embedding
。因此,我们不考虑word type
,而是word token
对嵌入。见[小细节](#Contextualized Word Embedding) - 如何做到Contextualized Word Embedding呢?使用
Embeddings from Language Model (ELMO)
。 - 之后,介绍了
Bidirectional Encoder Representations from Transformers (BERT)
。包括BERT的训练与用法。 - BERT在NLP领域的比赛基本屠榜。
- 接下来介绍了
Enhanced Representation through Knowledge Intergration (ERNIE)
。 - What does BERT learn?
- 接着介绍了 Multilingual BERT。
- 接下来进入
Generative Pre-Training (GPT)
部分。体积巨大,BERT是Transformer的Encoder,而GPT是Transformer的Decoder。 - GPT很有趣,能做很多有趣的事,且无需额外训练。
文章目录
- 本节内容综述
- 小细节
- Contextualized Word Embedding
- Embeddings from Language Model
- Bidirectional Encoder Representations from Transformers
- Training of BERT
- How to use BERT
- Enhanced Representation through Knowledge Intergration
- What does BERT learn?
- Multilingual BERT
- Generative Pre-Training
- GPT做的神奇的事
- Zero-shot Learning?
- Visualization
- 自动写文章
小细节
Contextualized Word Embedding
如图,对有颜色的输出,是对 bank 进行 embedding。如果语意相近,比如下面的两个句子,那么其bank输出对应的embed向量就会是相近的。
Embeddings from Language Model
如上,ELMO是一种基于RNN的技术:
- 在训练时,输入第i个词,输出为第i+1个词;
- 这样,把隐层的值拿出来,就是输出那个词的embedding向量;
- 值得注意的是,为什么叫做
Contextualized
:因为如上,同样都是输出“退了”,但是前文却不同。
但是,这样,只考虑到了前文,没有后文。因此,我们再来一个返向的RNN。
如上,正向反向、不同层都会对同一个词产生Embedding`,ELMO这篇文章就选择了“我全都要”的思路。
如上,将不同层的嵌入向量求加权,其中权重alphaalphaalpha是通过任务的表现学出来的。
Bidirectional Encoder Representations from Transformers
- BERT = Encoder of Transformer
- Learned from a large amount of text without annotation
如上,李老师提醒我们:
- 中文的词太多了,几乎无法穷举;
- 因此我们把常用的 4000 + 的中文的“字”做embedding更为合适。
Training of BERT
Approach 1: Masked LM
如上,给某一个词盖上MASK,接着将其由BERT产生的向量取出,放入线性分类器
中:
- 线性分类器能力较弱,如果线性分类器都能很好好得区分,说明词嵌入做得好;
- 这样得效果就是,如果两个词放在同一地方没有违和感,那么它们就有类似的embedding。
Approach 2: Next Sentence Prediction
如上,我们有两个句子,将其以[SEP]
作为中介进行拼接,在开头放置一个[CLS]
,其对应的输出放入一个线性二分器,对应“两个是拼接在一起的
”,或“不是拼接在一起的
”,以此进行训练:
- [CLS]放在哪里都没关系,因为 Transformer 中的 Self-attention 是“天涯若比邻”的。
在 BERT 文章中,两个方法一起训练。
How to use BERT
文章中有四个BERT应用示例。
Case 1
如上,可用于对句子的情感进行分类:
- [CLS]对应的输出,放入线性分类器中,作为最终的类别;
- BERT中的参数只需要跟着任务训练微调就好。
Case 2
如图,BERT也可用来做 Slot filling ,为句子中的每个词确定成份与类别。
Case 3
如图,输入两个句子(比如一个前提,一个假设),输出这个假设是否成立或是不确定。
Case 4
如上图,进行阅读理解并回答。但是这里放了个水:答案一定出现在文章里
。
输入一个文章(以 token 形式),输入一个问题;输出两个整数:
- s代表答案的第一个token在文章中的起始索引;
- e则代表结束索引。
BERT在其中起的作用如上。其中:
- 如果s大于e,那说明机器认为这个问题是不可回答的;
- BERT只要搬过来就好,而红色和蓝色代表的向量是从文章中学来的。
Enhanced Representation through Knowledge Intergration
特别为了中文设计的。
其将由字组成的词汇盖住,让机器进行推测。
What does BERT learn?
BERT接近输入的层,进行了与文法有关的任务;在输出附近的层,进行的会是比较困难的任务。
可以通过下面的实验看出。
BERT有24层,因此每个词汇可以抽出 24 个向量,把这 24 个向量做统计(叫 weight sum),见https://arxiv.org/abs/1905.05950。
我们就会值得,这些任务特别需要 BERT 中的哪些层。
对于 POS (词性标记)这个任务,把第 11-13 层的word embedding抽出来,更为合适。
如果比较困难的任务,则抽出后面的层作为embedding更为合适。
Multilingual BERT
谷歌自动爬了 104 种语言的文章。
这个 BERT 可以做到说:教它英文文章分类,其会学到中文文章的分类。
Generative Pre-Training
如图,GPT-2多达 1542M 个参数,体积巨大。
但是 GPT 不是芝麻街人物…
BERT是Transformer的Encoder,而GPT是Transformer的Decoder。
如上,依次输入句子元素,进行预测。
GPT做的神奇的事
Zero-shot Learning?
如上,GPT在输入A:
后会自动输出答案,原因可能为其训练数据种出现过问答的句子。其表现在参数量大时也是较为可观的。但是对于 Summarization 与 Translation 这两个问题,表现则没有那么好。
Visualization
如图,很多次都要倾向于attend到第一个词汇;第一个词没有特别的地方,当不需要attention时,机器可能学到,自己找第一个词汇。
自动写文章
OpenAI输入一段文字,GPT-2自动输出了一段话。
OpenAI没有开放参数最多的版本,但是参数较小的版本已经有了Demo:
- https://talktotransformer.com/
- 目前已经用不了了…因为运营成本太高
甚至程序都能写。
这个图有两个意思:
- GPT-2 很有趣,甚至比 BERT 有趣;
- 但是你难以得到 GPT-2 。
【李宏毅2020 ML/DL】P25 ELMO, BERT, GPT相关推荐
- 【李宏毅2020 ML/DL】P1 introduction
[李宏毅2020 ML/DL]P1 introduction 本节主要介绍了 DL 的15个作业 英文大意 Regression: 回归分析 Classification: 分类 RNN: 循环神经网 ...
- 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...
- 【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P15 Why Deep-
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 李宏毅svm_李宏毅2020 ML/DL补充Structured Learning Structured SVM
李宏毅2020 ML/DL补充Structured Learning Structured SVM [李宏毅2020 ML/DL]补充:Structured Learning: Structured ...
- 【李宏毅2020 ML/DL】P66 Self-supervised Learning
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课四十分钟,由助教 Chi-Liang Liu 讲解 Self-Supervised Lea ...
- 【李宏毅2020 ML/DL】P8-9 Optimization for Deep Learnin | 优化器技术总结,SGDM 与 Adam 对比与使用建议
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
最新文章
- 使用proc文件系统
- exec 执行结果_php执行系统外部命令的4种方法
- svn 建子项目的方法
- 中修改环境变量_Golang入门(1):安装与配置环境变量的意义
- Java笔记-DH密钥交换获取密钥及AES加解密
- 数字货币交易所数据安全随笔
- centos7部署posgresql和kong总结
- 好奇怪呀后面加什么标点_沙发位后面是窗户有什么好的方案?
- 设计模式-关于模式的一些很基本的知识点
- 数据分析-回归-案例-波士顿房价数据集
- 打破定制化语音技术落地怪圈?从讲一口标准英音的语音助手说起
- locust 性能测试工具(V2.8.6)
- DDNS的NAT穿越问题
- 微信小程序底部菜单详解
- MySQL 数据库下载(windows)
- 【红宝书笔记精简版】第十二章 BOM
- 四川师范大学区域规划(3-区域发展的经济社会背景分析)90分以上版本
- 馈线自动化的主要采用计算机技术,配电及馈线自动化技术探讨
- Linux 监控命令
- Leetcode题解(超赞!!!)
热门文章
- 关于数据库中的char与varchar
- sqlserver 事务日志过大 收缩方法解决方案
- 一个简单的解决方法:word文档打不开,错误提示mso.dll模块错误。
- 解决 Electron 5.0 版本出现 require is not defined 的问题
- bash:pip:找不到命令
- Gitlab管理Create Merge Request,new Merge Request创建合并请求
- 复选框 checkbox获取值
- 计算机不能代替人类英语,英语作文 谈谈计算机1我们已进入了计算机时代2计算机有许多优点3计算机不能代替人类...
- mysql查询m到n条数据库,对查询数据库中第M到N条记录的思考
- 获取textarea每一行的内容_PLC编程的基本原则和方法,64页内容介绍PLC编程,值得收藏...