ELMO,BERT和GPT的原理和应用总结(李宏毅视频课整理和总结)_bert 视频课

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

所以我们希望机器可以依据不同的token给出不同的embedding。如果固定bank的type有两个embedding,如果有第三种意思出现,那么embedding就不够用了。
在这里插入图片描述
很多词汇和对象并不是严格对应的,比如说这两个角色,在角色设定上是一样的,但是实际上一个是真人真物,一个是动漫角色。你可以说是一样的,也不一样的。
在这里插入图片描述

1.2 Contextualized Word Embedding

我们期望是机器做到每一个word token都有一个embedding。我们考虑上下文越相近的token,可能有相同的embedding,这个技术叫做:Contextualized word embedding。如下图,后面两个bank可能是相近的,而前面一个带有river的bank可能有不同的embedding。
在这里插入图片描述

2 Embeddings from Language Model (ELMO)

ELMO是一个基于RNN的语言模型。给RNN很多句子,RNN学习并预测下一个token是什么,输入BOS表示开始就输出潮水,输入潮水,就输出退了等等。如果是单向的RNN,中间hidden layer的就是输入词汇的embedding;如果是双向的RNN,就将正向逆向的embedding接起来作为最终的embedding,双向RNN的好处是前后文的信息都可以使用到:
在这里插入图片描述
即使输入同一个词汇,比如“退了”,根据不同的上下文,下一个输出的词汇也不一样了。那么意味着“退了”就有了不同的embedding:
在这里插入图片描述
RNN可以是deep的,多加几层。但是这样会产生很多个embedding,所以应该用哪一层的embedding?ELMO的做法是全都要。
在这里插入图片描述
具体做法很简单,就是将RNN的每一层的embedding都做weight sum,而如下图的

a

1

a_1

a1​和

a

2

a_2

a2​这些权值也是根据具体的任务学习出来的。
在这里插入图片描述

3 Bidirectional Encoder Representations from Transformers (BERT)

3.1 Base Idea

BERT是transformer的encoder,网络架构是一致的。训练transformer需要输出,但是训练BERT只需要收集句子的数据集,不需要annotation(释文),就可以把这个encoder训练出来。BERT实际做的就是给一个句子,然后每一个词汇给一个embedding。

虽然下图使用的中文的词为单位,但是实际上中文用字要更合适。如果输入要表示为独热码,用词为单位这个独热码的维度几乎是无穷尽的,因为词的组合太多了,而如果用字来表示则会好很多。
在这里插入图片描述

3.2 Training of BERT

BERT是怎么训练呢?

  1. Masked LM: 第一个训练的方法 随机把一定比例的,比如15%的词汇遮盖住,输入到网络中。而BERT就是去猜测这些词汇,做一个测漏字的问题,要BERT填回来。假设第二个词汇是挖空了的(MASK),把挖空词汇的对应embedding丢入一个线性的分类器,要求这个分类器预测这个MASK的词汇是什么。因为这个分类器的能力很差,所以如果用这种分类器都能预测正确,就说明这个embedding比较合适。此时如果有两个词在MASK这一个地方都没有违和感,那么就说有一样的embedding。比如MASK这里用“退了”和“落了”都可以,因为语义是类似的。
    在这里插入图片描述

  2. Next Sentence Prediction
    给两个句子,比如“醒醒吧”和“你没有妹妹”,这两个句子是接在一起的,期望BERT能预测两个语句是接在一起的。使用SEP作为两个句子之间的分界符。使用CLS标识要做分类的位置,就是预测这两个句子是否相接的结果,将CLS的embedding丢入一个二分类的线性分类器,可以输出yes或者no。

那么为什么CLS不放在后面呢?不是最后才更合理吗?如果是单向的RNN,那么确实是需要从左读到右,最后才能做分类。但是BERT内部不是RNN,而是transformer,transformer使用的是self-attention的结构,这使得CLS放在开头和结尾是没有区别的。这些都是一起被训练的。在文献上,这两个方法是同时使用的。
在这里插入图片描述

3.3 Applications of BERT

问题是怎么使用BERT呢?最简单的是将BERT当作一个抽取特征的工具,就像是ELMO一样,训练新的embedding。但是原文不是只有这样,而是将BERT模型和你的要解的任务一起做训练,怎么结合呢?文中举了4种不同的例子。

3.3.1 Case 1

第一个例子是假设输入句子,输出句子的类别。比如判断这个句子是正面的还是负面的,或者输入新闻,判断是什么领域的。如下图,这个句子放进模型,然后在前面加CLS,CLS对应位置的embedding丢入一个线性分类器,分类器输出就是类别。BERT的参数和分类器的参数可以一起学,线性分类器需要从头学,而BERT的参数只需要微调即可。
在这里插入图片描述

3.3.2 Case 2

第二个任务是输入句子,输出句子的每一个词汇的类别。比如slot filing这类的任务,具体做法也是在第一位置放置CLS,但这里是将CLS之外的每一个词汇对应的embedding丢入线性分类器,分类器输出类别。
在这里插入图片描述

3.3.3. Case 3

输入两个句子,输出一个类别。比如Natural Language Inference任务,要机器根据一个前提,推论下一个句子的假设是对还是错,还是不知道。具体解法如下和Case 1差不多。在这里插入图片描述

3.3.4 Case 4

第四个例子是解基于抽取的QA问题,即给模型读一篇文章,然后提出一个问题,模型能给答案,而答案本身一定能在文章中找到。给出文章D和问题Q,包含有不同的一些token,输出到模型中,模型可以输出s和e两个整数,则代表答案是第s到第e个token。举例说明的话,如果答案是“within a cloud”,那么输出s=77,e=79,即文中的第77-79的词汇就是答案。
在这里插入图片描述
那么怎么用BERT来搭建这个QA的模型呢?

将问题

q

1

q_1

q1​,

q

2

q_2

q2​…输进去,再把文章

d

1

,

d

2

,

d

3

.

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-a8YwccjI-1713663806203)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值