李宏毅-ELMO, BERT, GPT讲解笔记

2024-03-14 11:50

本文主要是介绍李宏毅-ELMO, BERT, GPT讲解笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景知识

NLP 中词的表示

  1. one-hot embedding(1-of-N Encoding)

缺点:词汇之间的关联没有考虑,因为不同词之间的距离都是一样的

  1. word class
  2. word embedding(word2vec)

缺点:一词多义的问题无法解决

Have you paid that money to the bank yet?

They stood on the river bank to fish.

上面两句话中的 bank 显然不是同一意思,因此用同一个 embedding 并不合适

Contextualized Word Embedding

根据上下文语境的不同,同一个单词 bank 我们希望能够得到不同的 embedding。如果 bank 的意思是银行,我们期望它们之间的 embedding 能够相近,同时能够与河堤意思的 bank 相距较远。

ELMO

ELMO 是 Embeddings from Language Model 的简称,ELMO 是《芝麻街》中的一个角色。它是一个 RNN-based 的语言模型,其任务是学习句子中的下一个单词或者前一个单词是什么。

它是一个双向的 RNN 网络,左边是顺序的 RNN 从前向后预测下一个词是什么,右边是反向的 RNN 从后向前预测上一个词是什么。这样每一个单词都对应两个 hidden state,进行拼接便可以得到单词的 Embedding 表示。当同一个单词上下文不一样,得到的 embedding 就不同。

Deep Learning 往往能学到更好的效果,当使用深层网络的时候,每一层都会输出一个单词对应的 Embedding 表示,ELMO 的做法是——我全都要。

如上图所示,采用的是两层的 RNN 结构,每一层输出的 embedding 加权求和得到最后用于表示输入词(字)的embedding。每一层的权重是跟随下游任务一起进行学习得到的。

右下角展示在不同任务上每一层 embedding 的权重大小,Token 表示原始 embedding,可以看到不同任务不同层的权重是不同的。

BERT

框架结构

Bert 是 Bidirectional Encoder Representations from Transformers 的缩写,它也是芝麻街的人物之一。Transformer 中的 Encoder 就是 Bert 预训练的架构。李宏毅老师特别提示:如果是中文的话,可以把字作为单位,而不是词。

因为中文词语过于多了,难以用向量表示,而常见的字只有几千个

BERT:不需要标注,输入 sequence,输出每个 character 对应的 Embedding

Transformer:需要标注,输入 sequence,输出 sequence

训练方法

  1. Masked LM

做法是随机把一些单词变为 Mask,让模型去猜测盖住的地方是什么单词。假设输入里面的第二个词汇是被盖住的,把其对应的 embedding 输入到一个多分类模型中,来预测被盖住的单词。这里预测出来的单词在语义上更为相近,“退了”、“退去”和“落了”放在 MASK 都可以,语义的表示十分相似。

  1. Next Sentence Prediction

选择两句话,把两句话连起来。在两个句子的开头,放一个 [CLS] 标志符表示分类。中间加一个 [SEP] 作为两个句子的分隔符。[CLS] 标志符得到的 embedding 输入到二分类的模型,输出两个句子是不是可以接在一起。

实际中,同时使用两种方法往往得到的结果最好。

BERT 和 ELMO 区别

在 ELMO 中,训练好的 embedding 是不会参与下游训练的,下游任务会训练不同 embedding 对应的权重,但在 Bert 中,Bert 是和下游任务一起训练的:

BERT 应用

  1. 文本分类

对于文本分类,在文本的前面加一个 [CLS] 分类符,把训练得到的 embedding 通过 Linear Classifier 得到分类结果。其中,Linear Classifier 的参数是从头开始训练的,而 BERT 的参数只需要微调(Fine-tune)

  1. 单词分类(词性标注)

例如 Slot filling,得到一个句子中每个词的类别(属性)。将输入的句子得到的每个词的 embedding 通过 Linear Classifier 得到每个词对应的类别。

  1. 自然语言推理任务

给定一个前提/假设,判断得到推论是否正确。输入两句话,第一句是前提,第二句是推理,训练给出推理结果是否正确。

  1. 抽取式 QA

抽取式的意思是答案一定要在原文之中

输入一个原文和问题,输出两个整数 start 和 end,代表答案在原文中的起始位置和结束位置,两个位置中间的结果就是答案。

Bert 学到了什么

通过观察 Bert 每一层 embedding 对应的权重,了解不同的任务更需要 Bert 的哪些层。右边蓝色矩形的高度表示 embedding 的权重,高度越高表示任务对于这一层的权重越大。通过图片可以看到,随着自然语言处理任务变得更为复杂,更多的依赖更为深层的 embedding 表示。

ERNIE

ERNIE 也是芝麻街的人物,而且还是 Bert 的好朋友

在 BERT 模型中,通过『哈』与『滨』的局部共现,即可判断出『尔』字,模型没有学习与『哈尔滨』相关的知识。而 ERNIE 通过学习词与实体的表达,使模型能够建模出『哈尔滨』与『黑龙江』的关系,学到『哈尔滨』是『黑龙江』的省会以及『哈尔滨』是个冰雪城市。

GPT-2

GPT 是 Generative Pre-Training 的简称,但 GPT 不是芝麻街的人物。GPT-2 的模型非常巨大,它其实是 Transformer 的 Decoder。GPT-2 的参数数量接近 BERT 的 5 倍,参数巨大。

GPT-2 是 Transformer 的 Decoder 部分,输入一个句子中的上一个词,我们希望模型可以得到句子中的下一个词。

由于 GPT-2 的模型非常巨大,它在很多任务上都达到了惊人的结果,甚至可以做到 zero-shot learning(简单来说就是模型的迁移能力非常好),如阅读理解任务,不需要任何阅读理解的训练集,就可以得到很好的结果。GPT-2 可以自己进行写作。

有人用 GPT-2 较小的模型搭建了网站,可以实现给定输入自动扩展内容的功能。

在这里插入图片描述
输入“Winter is coming”,后面的文本自动生成。

参考资料

李宏毅-ELMO, BERT, GPT讲解(视频)

李宏毅 - ELMO、BERT、GPT 视频笔记

这篇关于李宏毅-ELMO, BERT, GPT讲解笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/808334

相关文章

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi