文章目录

  • Putting Words into Computers——Introduction of ELMO、BERT、GPT
    • Review
    • A word can have multiple senses.
    • Contextualized 语境化 Word Embedding
    • Embedding from Language Model(ELMO)
      • ELMO做法
    • Bidirectional Encoder Representatioins from Transformers(BERT)
      • BERT = Encoder of Transformer
      • Training of BERT
        • Approach 1:Masked LM
        • Approach 2:Next Sentence Prediction
      • How to use BERT
        • Case 1
        • Case 2
        • Case 3
        • Case 4
    • Enhance Representation through Knowledge Integration(ERNIE)
      • What does BERT learn?
      • Multilingual 多语言 BERT
    • Generative Pre-Training(GPT)
      • Generative Pre-Training(GPT)

Putting Words into Computers——Introduction of ELMO、BERT、GPT

Review

  • 1-of-N Encoding:词和词之间没有任何关联,把每个词汇当作独立的东西来看显然是不够的。
  • Word Class
  • Word Embedding:相当于soft的word class,每一个词汇用一个向量来表示,向量的每个维度可能表示了词汇的某种含义,语义相近的词汇的向量会比较接近。训练方法:通过词汇上下文来得到。


A word can have multiple senses.

下图中bank是不同的token,同样的type。
过去在word embedding时候,每一个word type有一个embedding,所以不同的token属于同一个type时,他们的embedding vector是一模一样的。


但是这样是不合理的。

Contextualized 语境化 Word Embedding

期望每一个token都有一个embedding,根据token的上下文来实现

如何根据是上下文来为word token给出不同的word embedding呢?——ELMO

Embedding from Language Model(ELMO)

  • RNN-based language models
    收集很多的句子,就可以进行训练,训练过程所做的事情就是预测下一个token是什么。
    学习之后,就可以得到Contextualized 语境化 Word Embedding,RNN中的hidden layer就是现在输入的词汇的Contextualized Word Embedding(是根据前文来预测的,所以是语境化的)

好像这样只考虑了前文,但是没有考虑后文

再训练一个反向的RNN。这样就考虑了上下文。

所以现在,要得到“退了”这个词的Contextualized Word Embedding,就要把“退了”在正向RNN与反向RNN的embedding拿出来拼接起来。

这个RNN可以是deep的,训练deep的时候,会遇到问题,有很多层,有很多层都要embedding,那么应该要用哪一层呢?同一个词汇要用哪一个embedding呢?

ELMO做法

现在每层都会给一个Contextualized Word Embedding,每个词放进去都会吐出来不止一个embedding,因为每一层RNN都会给出一个embedding,把这些embedding结合起来一起使用。

α1\alpha1α1α2\alpha2α2都是要学习的参数。
不同任务的α1\alpha1α1α2\alpha2α2是不同的。

Coref和SQuAD特别需要第一层的Contextualized Word embedding(颜色最浅,权重最大),而其他的任务就没那么需要(每一种不同的embedding的weight是比较平均的)

Bidirectional Encoder Representatioins from Transformers(BERT)

BERT = Encoder of Transformer

在BERT中,只需要收集很大数量的没有标注的文本。

虽然投影片上使用词作为单位,但是在实战中,用中文的字来作为单位更好。中文的字是有限的。

Training of BERT

Approach 1:Masked LM

给Bert的任务是把输入的句子随机有15%的词汇被置换为特殊的token——MASK。

BERT就需要对遮住的词汇进行猜测。

Approach 2:Next Sentence Prediction

让BERT做Next Sentence Prediction,给BERT两个句子,让BERT判断这两个句子是否是连接在一起的。

[SEP]代表两个句子中的边界。

[CLS] 在这个位置要输出分类结果,把他的输出传入到一个线性二元分类器中,让其输出这两个句子是否应该连接在一起。


两种方法是要同时使用的。

把BERT当作抽取feature的工具,拿产生的新的embedding去做想做的任务。

How to use BERT

在BERT论文中:把BERT模型和接下来要解决的任务一起做训练。给出了四个例子。

Case 1

  • 输入:一个单句子
  • 输入:类别
  • 例子: 文本分类,句子分析(正面/负面句子)

在训练的时候,线性分类器的参数是是随机初始化的,从头开始计算的。
BERT的参数可以跟着Fine-tune,即BERT的参数是可以和线性分类器一起学习的,线性分类器从头学,BERT只需要微调。

所以,实际上需要从头学的参数很少,多数参数都已经在BERT里训练好了。

Case 2

  • 输入:一个单句字
  • 输出:每个单词的类别
  • 例子:Slot filling,输入一个句子,得到句子中的每个词汇属于什么slot/class

BERT输入一个句子,每个词都会输出一个embedding,把每一个embedding丢入线性分类器中,输出class。

训练也是一起训练。线性分类器从头学,BERT微调。

Case 3

  • 输入:两个句子
  • 输出:类别
  • 例子:自然语言推断,给一个前提和一个假设,让机器判断是对还是错还是不知道。其实是一个只有三个类别的分类问题。

把第一个句子丢给BERT,再加入一个[SEP],再丢入第二个句子,在开头地方加入一个代表分类的符号[CLS],在开头的地方输出embedding,拿他去做分类,输入线性分类器,输出类别。

Case 4

用于解决Extraction-based Question Answering的问题。即,给模型读一篇文章,提出一个问题,希望模型得到正确答案,但是需要保证答案一定出现在文章里面。

给出文章和问题的token sequence,输出s和e两个整数,代表答案落在第s个token到第e个token之间。


输入问题,加入[SEP],再输入文章
再去另外训练两个embedding(红色和蓝色)


Enhance Representation through Knowledge Integration(ERNIE)

  • Designed for Chinese

What does BERT learn?

Multilingual 多语言 BERT

使用104种语言训练,看过中文但是没有被教中文文章分类,只是被教英文文章分类,但是可以自动学到了中文文章的分类。

Generative Pre-Training(GPT)

GPT很大
BERT是Transformer的encoder
GPT是Transformer的decoder

Generative Pre-Training(GPT)

weighted sum

GPT2很巨大,所以功能很强大!
可以做到在完全没有训练资料的情况下,做到:

  • Reading Comprehension
    Reading Comprehension指的是QA,BERT也可以做,但是需要训练资料,而GPT2可以在完全没有与QA有关的训练资料的情况下,就可以硬做Reading Comprehension,输入文章和问题,就可以强行给出答案。
  • Summarization
    给GPT2一篇文章,输入“TL;DR”符号(too long;don’t read),GPT2自动输出文章摘要
  • Translation
    输入很多英文句子,写等号,后面接法语句子,重复两次,接下来给第三个英文句子,就可以自动输出他的法语翻译句子。

在GPT2中,右边图中,左边是下一层的结果,右边是前一层要被attention的对象。
左边图,是对不同层的不同head做分析。很多不同词汇都要看第一个词汇,可能在不知道要和谁做attention或者不需要attention的时候就看第一个词,所以也许或许可以在句子里加一个特殊词汇,在不知道attend到哪里就attend(append?听不清)到这里。

GPT太强了!可以做问答,编故事,写python和C的代码!!

其实很自然 因为它预训练的任务是预测下一个可能的词汇
训练过的,但是没用过针对性的语料数据,就迁移学习的思想
GPT 语料库很大,所以training data里面有很多类似的例子…

1、GPT很强!
2、BERT可以下载下来,但是GPT2是你无法得到的人。2333333

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记相关推荐

  1. 【李宏毅机器学习】Classification_1 分类(p10) 学习笔记

    李宏毅机器学习学习笔记汇总 课程链接 文章目录 Classification Probabilistic Gernerative Model 分类:概率遗传模型 ==**如何完成这个任务?**== = ...

  2. 【李宏毅2020 ML/DL】P25 ELMO, BERT, GPT

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  3. Chapter7-3_BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, ELECTRA, and more

    文章目录 1 How to pre-train 2 Predict next token 3 Mask Input 4 seq2seq的pre-train model 5 ELECTRA 6 Sent ...

  4. Hinton机器学习与神经网络课程的第二章学习笔记

    Hinton机器学习与神经网络课程的第二章学习笔记 该笔记为自己以后方便查阅,要是有大神感觉我的笔记有哪些地方记的有误差或者不对的话也欢迎指出 文章目录 Hinton机器学习与神经网络课程的第二章学习 ...

  5. Self-Supervised Learning (ELMO, BERT, GPT, Auto-encoder)

    目录 The models become larger and larger - Self-supervised Learning ELMO (feature-based) How to repres ...

  6. 林轩田《机器学习基石》资源汇总(视频+学习笔记+书)

    来源 | AI有道(公众号ID:redstonewill) ▌课程介绍 台湾大学林轩田老师的<机器学习基石>课程由浅入深.内容全面,基本涵盖了机器学习领域的很多方面.其作为机器学习的入门和 ...

  7. 浙江大学机器学习(胡浩基)课程学习笔记一:概述与支持向量机

    一.基本概念 1.1 机器学习 机器学习:采用非显著式编程(不一步一步定义操作步骤的编程方式)的方式赋予计算机学习能力. 机器学习:一个计算机程序被称为可以学习,是指它能够针对某个任务T和某个性能指标 ...

  8. 机器学习训练营-基于XGBoost的分类预测学习笔记

    文章目录 前言 一.学习知识点概要 二.学习内容 1 XGBoost的应用及优缺点 1.1 XGBoost的应用 1.2 XGBoost的优缺点 2 基于天气数据集的XGBoost分类实战 2.1 目 ...

  9. 李宏毅DLHLP.18.BERT and its family.2/2.ELMo,BERT,GPT,XLNet,MASS,BART,UniLM,ELECTRA

    文章目录 介绍 How to pre-train Context Vector (CoVe) Self-supervised Learning Predict Next Token Predict N ...

  10. 李宏毅机器学习(七)Bert and its family

    技术前瞻 在预训练模型上训练Bert,并在我们的数据上fine-tune所需要的模型! 就像学习英文一样! 应该是通读英文文章后再去做题,而不是先做题再读懂文章! Pre-train Model Em ...

最新文章

  1. 解决ie9兼容性问题之js无法加载
  2. 【SAS NOTES】sas对中文的支持
  3. 0622 - 如何坚守自己的价值观?
  4. vlookup练习_VLOOKUP拉住她的手,数据查询不用愁
  5. 挖洞经验:通过Vimeo的文件上传功能发现其SSRF漏洞
  6. (转)OL记载Arcgis Server切片
  7. Python项目实战:爬取斗图网表情包图片
  8. 搭建html5的,HTML5 - 搭建移动Web应用
  9. stl:sort(stl快速排序)
  10. 仿美团外卖小程序源码
  11. 被炫龙DD3plus的insyde h20 bios整天了一整天分享分享解决问题经验
  12. 芯片测试的目的及原理介绍
  13. 再爆hzhost6.5虚拟主机管理系统的SQL注入漏洞
  14. Ubuntu18中调用cv2.imshow及PIL库遇到的bug “: cannot connect to X server”及display-im6.q16: unable to open X。。。
  15. vue mand-mobile ui加class不起作用的问题 css权重问题
  16. 如何用HTML和css实现简单的手风琴菜单效果,附带详细注释
  17. 通过Debugx5在电脑端调试微信页面
  18. 计算机c盘哪些可以清理,怎么清理C盘?不知道哪些可以删除?
  19. 项目中的用户鉴权是如何实现的?
  20. 逆向练习--bugku love

热门文章

  1. 【luogu3834】【POJ2104】【模板】可持久化线段树 1 [主席树]
  2. perl hash array 嵌套 push
  3. 06旋转数组的最小数字
  4. php命名规则几点内容
  5. codeforces 149E . Martian Strings kmp
  6. 开发小计之判断输入字符串类型(正则表达式)
  7. [转贴] 从零开始学C++之异常(二):程序错误、异常(语法、抛出、捕获、传播)、栈展开...
  8. 复习:顺序表——链表
  9. mysql水平拆分 hash_常用的数据库表水平拆分方案
  10. unity 自动将文件上传_unity如何存储文件夹