notebook notebook
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)

学习笔记

啦啦啦,向太阳~
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)
  • 深度学习

    • Posts

    • PyTorch 入门

    • 鱼书进阶-自然语言处理

    • 深度学习-李宏毅

    • 李宏毅-2017版

    • 李宏毅-2019版

      • ELMo
        • 1. Contextualized Word Embedding
        • 2. ELMo
      • Anomaly Detection
    • 预训练语言模型-邵浩2021版

    • 王树森

  • 机器学习

  • 知识图谱

  • AI
  • 深度学习
  • 李宏毅-2019版
yubin
2022-12-11
目录

ELMo

# 1. Contextualized Word Embedding

很多词存在一词多义的情况,为了应对这种情况,出现了 Contextualized Word Embedding,它期待说:

  • Each word token has its own embedding (even though it has the same word type)
  • The embeddings of word tokens also depend on its context.
image-20221215201656060
  • 比如说,下面两个句子中的 bank 的含义可能比较相近,他们的 Embedding 也会很相近;但是右边上下的两个句子的 bank 的含义可能就不太一样了,这时他们的 Embedding 也会差距很大。

# 2. ELMo

ELMo 是一个 RNN-based 的 Language Model。什么是 RNN-based language model:它是从大量 sentences 中训练出来的。比如你有一句话“潮水 退了 就 知道 谁 没穿 裤子”,那么就要教给它如果看到一个 begin token <BOS>,那就要输出“潮水”:

image-20221215202145192

接下来再输入“潮水”这个 token,你就要输出“退了”这个 token:

image-20221215202244126

看到“潮水”和“退了”这两个 token,就要输出“就”….. 然后一直重复下去:

image-20221215202345374

这样用很多 sentences 学完之后,你就有 Contextualized Word Embedding 了!你可以直接把 RNN 的 hidden layer 拿出来,说它就是当前输入的那个 token 的 Contextualized Word Embedding,比如下图输入“退了”之后,标红的那一部分:

image-20221215202631556

为什么说它是 Contextualized 呢?因为如果你给它不同的 context 的句子,那它输出的 embedding 是不同的。

以上就是 ELMo 的基本概念。但上面这种方式只考虑了每个 token 的前文,没有考虑到后文,这时只需要再训练一个反向的 RNN 就好了:

image-20221215202951749

现在我们为了得到“退了”这个 token 的 embedding,就要把两个方向的 RNN 的 hidden layer 都拿出来:

image-20221215203137422

现在很多模型都是 Deep 的,ELMo 也是 deep 的,它有很多层的 RNN:

image-20221215203239976

但现在遇到的问题是,它有这么多层 RNN,每一层都有一个 embedding,那到底应该用哪一层的呢?ELMo 给出的 solution 就是:“我全都要!”

每次给 ELMo 一个 token,它会得到好多个 contextualized word embedding(每一层 RNN 都会得到),这时怎么办呢?就可以把每一个 embedding 统统加起来一起用,ELMo 具体的做法是 weighted sum:

image-20221215203700162
  • 黄色和绿色代表同一个 token 的不同 contextualized word embedding,ELMo 通过 和 把他们 weighted sum 起来,得到这个 token 的最终的 embedding,也就是蓝色的 vector,这时你就可以那这个蓝色的最终的 embedding 用到 downstream tasks 中。
  • 这里的 weights 是通过 downstream task 中 learn 出来的。所以说你要实现先决定好要做哪个 task(比如 QA),然后再把这些参数与接下来的 task 一起 learn 出来。

所以这里不同的 downstream tasks 用到的 weights 是不一样的。

原论文展示了一下训练结果:

image-20221215204531266
  • 横轴代表不同的 task,纵轴是不同层的 的大小。可以看出 SQuAD 这个 task 就特别需要重视 LSTM 1 中的 embedding。
编辑 (opens new window)
上次更新: 2022/12/15, 13:02:14
Deep Reinforcement Learning
Anomaly Detection

← Deep Reinforcement Learning Anomaly Detection→

最近更新
01
Deep Reinforcement Learning
10-03
02
误删数据后怎么办
04-06
03
MySQL 一主多从
03-22
更多文章>
Theme by Vdoing | Copyright © 2021-2024 yubincloud | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×