WDK李宏毅学习笔记第十二周01_ELMO,BERT,GPT

2023-10-26

ELMO,BERT,GPT


摘要

在实际生活中,一个word往往有多个意思,光靠一个vector是没法完全代表一个word的,所有说,前面word embedding的方法都是不够好的,本章讲的就是解决一词多意问题的方法—ELMO,BERT,GPT,它们的目的是用多个vector表示同一个word的多个意思,以此解决对应问题。

1、Contextualized Word Embedding

Contextualized Word Embedding是根据语义对word进行编码,同样的word可以对应不同的word,以解决一次多用的问题。
在这里插入图片描述

2、Embeddings from Language Model(ELMO)

ELMO是一个RNN-base的model,它是train一个正向的RNN和一个反向的RNN,再将其得到的结果接起来,就可以得到词汇的Embedding,该Embedding不仅考虑了前文意思,也考虑了后文意思。同样的word,要是前后文意思不同,得到的Embedding也不同,从而实现一词多译。
在这里插入图片描述
当我们的RNN是Deep的时候,对于同一个词汇,每一层都会输出一个Embedding,这样该如何选择?
在这里插入图片描述
ELMO的做法是全都要,如下图右上角所示,将每一层的的两个Embedding都加权求和,得到代表能够每一层的Embedding,权重的值是learning到的。在这里插入图片描述

3、Bidirectional Encoder Representations from Transformers(BERT)

BERT做的事情是输入word,然后输出word对应的Embedding。
在这里插入图片描述
训练BERT的方法有俩个。

  1. Masked LM。它就是随机的将句子中间的词用[Mask]替代,然后让machine去找合适的词填好。这样如果是多个词填在一起没有违和感时,那么它们就会有非常接近的Embedding。
    在这里插入图片描述
  2. Next Sentence Prediction。它做的事情是,给machine两个句子,在句子开头,输入标志符[CLS],句子间用标志符[SEP]表示两个句子的分隔符,[CLS]标志符得到的Embedding会送给一个二分类model,该model判断这两个句子该不该连在一块。
    在这里插入图片描述

3.1 How to use BERT-Case 1

它是进行语义识别的,如下图所示,像BERT输入一些句子,和分类标志符[CLS],将分类标志符的对应位置的Embedding丢给Linear Classifier,Linear Classifier再输出语义是好还是不好。
在这里插入图片描述

3.2 How to use BERT-Case 2

向BERT输入word和分类标志符[CLS],将每个word对应的输出丢给分类器,分类器输出每个word对应的类别,可以用来解决词性分类的问题。
在这里插入图片描述

3.3 How to use BERT-Case 3

Natural Language Inference(给machine一个前提和假设,machine判断根据前期假设是否成立,它的做法是输入多个句子和分类标志符[CLS],句子间用标志符[SEP]隔开,分类器输出假设是否成立。
在这里插入图片描述

3.4 How to use BERT-Case 4

Extraction-based Question Answering(给machine读文章,希望问它问题可以正确的回答),它的做法是给machine输入问题和文章,再learned两个vector,一个vector和文章word的embedding做点积,将得到的值做Softmax,得到最大值位置,作为答案的起始点,另一个word也是同样的做法,它输出的最大值位置作为文章结束点。
在这里插入图片描述

4、Generative Pre-Training(GPT)

GPT就是如下图所示的model,它其实就是Transformer 的 Decoder ,它做的事情是自动填词。GPT是最复杂的,但是它也是很有效,相比其他model,它可以用很少的training data就可以做到相同的事情。
在这里插入图片描述

方法

  1. ELMO的做法是training一个正向的RNN和反向的RNN,两者组合作为word的Embedding,这样word Embedding不仅考虑了前文语境思,也考虑了后文语境,且不同语境得到的word也都是不同的。
  2. BERT是Transformer的Encoder,它常用的训练方法有两个,一个是将句子中的某些word用标志符[mask]代替,让machine去猜被代替的词是什么,如此就可以找到每个word的Embedding。另一个是输入分类标志符和句子间的分隔标志符,然后输入句子是否是可以连在一块的,让machine知道句子间的联系及含义。
  3. GPT是Transformer的Dncoder,它是将每一个word分为3个vector,每一层的输出作为下一次的输入,将联系一层一层传递下去,然后training出所有word的vectors。

结论与展望

ELMO在处理一词多意的问题上是很有效的,还可以适当增加Deep来提高准确率,相比这三个model,ELMO所占内存也是最小的。BERT则是更适合用在处理文本分类的问题上,且在文本分类问题的比赛中常年霸榜。GPT是这三个model最复杂占用内存最大的,但是在这3个model中,它可以用更少的训练数据完成同样的效果,所以当训练数据不充足时,使用该model将会更准确。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WDK李宏毅学习笔记第十二周01_ELMO,BERT,GPT 的相关文章

  • 解决easyUI 1.2.6 + datagrid在 IE浏览器下无法重新加载、查询

    I easyUI 1 2 6 datagrid在 IE浏览器目前存在的问题 1 无法重新加载 查询 var row dg user table datagrid getSelected dg userPri table datagrid m
  • C++写的encodeURIComponent

    最近在用c 找了几个库没有找到与javascript的URI编码相对应的函数 自己写一个 只写了编码 测试可以在javascript里用decodeURIComponent正常解码 uri编码字符串 param in 必须是utf 8编码的
  • 彻底解决电脑自动更新问题

    是不是隔几天电脑关机 重启的时候那会出现更新后再关机或者更新后再重启 没有立刻关机或重启是不是很烦 去设置那里的更新只能是短暂的暂停更新七天而已 这种方法没什么用的 治表不治本 只能推迟而已 如果windows推送一下小升级七天后你又得更新
  • 什么是JWT?(细致讲解)

    什么是JWT 转自 java技术爱好者 链接 https www zhihu com question 485758060 answer 2257869896 来源 知乎 起源 需要了解一门技术 首先从为什么产生开始说起是最好的 JWT 主
  • 状态设计模式

    目录 前言 状态机原理 状态机的实现方式一 分支逻辑法 状态机实现方式二 查表法 状态机实现方式三 状态模式 总结 参考资料 前言 在实际的软件开发中 状态模式并不是很常见 但是在能够用到的场景里 可以发挥比较大的作用 状态模式一般用来实现
  • HTTPSHandler & SSL Error

    我在服务器ubuntu中 尝试使用pip3 但是出现下面的报错 ImportError cannot import name HTTPSHandler 通过查询资料 发现报错的原因是 该pip3 5中没有安装好openssl 我尝试在pyt

随机推荐

  • python的安装过程

    python的安装 进入官网 点击进入官方链接 点击官方后 进入该页面 可以英译中 点击 Downloads即下载 选择适合自己的系统 windows系统即选择windows 苹果系统即选择macOS 进入下载页面后 选择python的版本
  • 2023面试自动化测试面试题【含答案】

    1 你做了几年的测试 自动化测试 说一下 selenium 的原理是什么 我做了五年的测试 1年的自动化测试 selenium 它是用 http 协议来连接 webdriver 客户端可以使用 Java 或者 Python 各种编程语言来实
  • flask中的Flask、request、render_temple、redirect和url_for

    学flask也有一个多星期了 对这个web框架也有了一点的了解 梳理一些基础的知识点 还是小白一只 代码写得比较low 若文章有错误的地方欢迎大佬随时指正 代码中被注释掉的代码是关于预防csrf 无视即可 主程序脚本 1 from flas
  • 01.Vuepress2.x 创建自己的技术文档站

    目录 一 简介 二 安装 三 配置 四 启动 五 效果图 六 编译 一 简介 Vuepress2 x 英文官网 Vuepress2 x 中文官网 二 安装 参考 步骤1 新建一个文件夹 如 Doc2 0 步骤2 进入文件夹目录 新建 pac
  • Anaconda对python环境管理常用命令

    创建环境 n 为指定环境名称 python 未指定python的版本 conda create n env name python 3 6 删除环境 conda remove n env name all 删除环境的包 conda remo
  • LordOfTheRoot_1.0.1靶机入侵

    LordOfTheRoot 1 0 1靶机入侵 1 环境搭建 下载地址 https www vulnhub com entry lord of the root 101 129 下载后用 VMware 或者 VirtualBox 打开 并配
  • ocr文字识别环境部署

    一 Linux环境下部署1 环境要求操作系统 CenterOS7 主要软件环境 python3 9X64 opencv4 5 5 PaddleOCR2 5 paddlepaddle2 2 1 python运行环境建议3 6 3 91 环境安
  • 初级学习01

    打开cmd的方式 1 管理员方式进行 2 Win R 输入cmd 3 在任意文件夹下面 shift 鼠标右键 4 资源管理器的地址栏前 cmd路径 常用的Dos命令 1 盘符切换 C D F 2 查看当前目录下的所有文件 dir 3 切换目
  • ionic2 打包android包时报'C:\Users\Administrator\AppData\Local\Android\sdk' does not exist.

    写在前面 为了能及时的将自己踩到的前端坑 包括ionic angular ReactNative 小程序 APICloud 分享给大家 以后会逐渐将文章转移到微信公众号 前端e家 front e family 可直接扫码关注 公众号会不定期
  • 解析@EnableWebMvc 、WebMvcConfigurationSupport和WebMvcConfigurationAdapter

    在spring boot spring mvc 的项目中 有些时候我们需要自己配置一些项目的设置 就会涉及到这三个 那么 他们之间有什么关系呢 首先 EnableWebMvc WebMvcConfigurationSupport 使用了 E
  • 设置button的边框颜色和宽度

    UIButton button UIButton buttonWithType UIButtonTypeCustom button frame CGRectMake 100 100 100 100 button layer cornerRa
  • Flutter图片选择 image_picker(官方)插件使用详解

    Flutter图片选择 image picker 官方 插件使用详解 IOS自测 image picker GitHub最新版本查看 https github com flutter plugins 下滑找到image picker可以看到
  • apipost-一键压测

    apipost新功能可实现一键压测 接口压测实践 使用场景 对指定接口进行性能测试 实现方式 为实现高性能的并发需求 使用自研的压测引擎 可以实现一万以上并发 项目已经开源 github地址 https github com Apipost
  • STM32 GPIO: pull up, pull down, no pull

    gpio 有3种状态 上拉 下拉 不拉 首先 确定GPIO口的输入和输出 当GPIO处于output模式 一般选择no pull 引脚能够正确地输出目标值 当GPIO处于input模式 需要根据默认的输入值来确定配置模式 如果默认输入的值为
  • C语言小游戏——推箱子(一次性版本)

    目录 思路 1 游戏的开始和地图设定 2 地图场景设置和人物的四项移动 3 分析人物的移动 4 判断结束条件 思路 l 分析 编写代码实现 控制游戏角色 在地图上 避开障碍物 将箱子推到目标点 游戏元素 角色 控制移动 地图 游戏场所 空地
  • JavaScript 的初识

    JavaScript 是 Web 的编程语言 是一种轻量级的编程语言 是可插入 HTML 页面的编程代码 插入 HTML 页面后 可由所有的现代浏览器执行 且JavaScript 非常容易学 文章目录 一 认识JavaScript 二 Ja
  • Git基本命令使用

    Git基本命令使用 分支操作 显示所有本地分支 git branch 显示所有远程分支 git branch r 新建一个分支 git branch branch name 切换到指定的分支 git checkout b branch na
  • Spring框架——IOC和AOP以及DI

    一 IOC原理 1 控制反转 IOC 将创建管理对象的工作交给容器来做 在容器初始化 或在某个时间节点 通过反射机制创建好对象 在使用时直接从容器中获取 控制反转 将对象的控制权反过来交给容器管理 依赖注入 DI 将对象依赖写入配置文件 在
  • Python实现基本Socket服务端与客户端通信

    该文章使用 python 实现基本的 socket 服务端与客户端通信 分步详解与完整代码都有 按需所求即可 一 服务端代码 1 引入自带的socket模块 并创建一个socket实例 服务端需要使用 bind 将该实例绑定到指定域名与端口
  • WDK李宏毅学习笔记第十二周01_ELMO,BERT,GPT

    ELMO BERT GPT 文章目录 ELMO BERT GPT 摘要 1 Contextualized Word Embedding 2 Embeddings from Language Model ELMO 3 Bidirectiona