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 入门

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

    • 深度学习-李宏毅

      • Regression
      • 神经网络训练不起来怎么办
      • CNN
      • Self-Attention
      • 各式各样的 Attention
      • Pointer Network
        • 1. Pointer Network
        • 2. Applications
          • 2.1 Applications - Summarization
          • 2.2 More Applications
      • 图神经网络
      • Transformer
      • 生成对抗网络 GAN
      • Self Supervised Learning
      • BERT and its family
      • Data Efficient & Parameter-Efficient Tuning
      • Auto-Encoder
      • 机器学习的可解释性
      • Adversarial Attack
      • Domain Adaptation
      • 强化学习
      • 神经网络压缩
      • Life Long Learning
      • Meta Learning
      • ChatGPT 是怎样炼成的
    • 李宏毅-2017版

    • 李宏毅-2019版

    • 预训练语言模型-邵浩2021版

    • 王树森

  • 机器学习

  • 知识图谱

  • AI
  • 深度学习
  • 深度学习-李宏毅
yubin
2022-12-04
目录

Pointer Network

# 1. Pointer Network

Pointer Network 的提出是源自于这样一个问题:给了一堆 data point,需要能够自动从中找出将哪些点连起来就可以把其余的点都包起来。如下图所示:

image-20221204213150357

如果让 Neural Network 硬 train 一发的话,NN 的 input 是一个 data point 的 coordinate ,输出是所要连接起来的点,如下图所示:

image-20221204213345156

这个 NN 的 input 是一个 sequence,output 是另一个 sequence,那这似乎可以用 seq2seq 来解,如下所示:

image-20221204214619128
  • 黄色向量代表一个 distribution,结果是从这个 distribution 中采样或 argmax 出一个结果。

但这个方法是行不通的,原因在于,input 的 data points 的个数是会变化的,而 Decoder 无法处理这种变化的情况,它输出的 distribution 是固定长度的。

怎么办呢?可以用 Attention 机制来对它做一下改造,让 Network 可以动态地决定它输出的 set 可以有多大。这是怎么做的呢?

image-20221204220621458
  • 类似于 Self-Attention,每一个输入的 data point 首先得到 query,然后每个 query 与一个 对应的 key 进行计算得到一排 attention weights 作为 distribution,接下来与以往 self-attention 不一样,只需要从这个 weights 组成的 distribution 中做 argmax 就可以得到 output 的第一项。
  • 接下来再把 所对应的 key 做上面的过程,得到 output 的第二项,之后不断重复。这个过程直到 “END” 拥有最大的 attention weights 才会结束。
  • 现在的好处就是:What decoder can output depends on the input.

所以总结一下,传统的带有注意力机制的 seq2seq 模型的运行过程是这样的,先使用 encoder 部分对输入序列进行编码,然后对编码后的向量做 attention,最后使用 decoder 部分对 attention 后的向量进行解码从而得到预测结果。但是作为 Pointer Networks,得到预测结果的方式便是输出一个概率分布,也即所谓的指针。换句话说,传统带有注意力机制的 seq2seq 模型输出的是针对输出词汇表的一个概率分布,而 Pointer Networks 输出的则是针对输入文本序列的概率分布。

其实我们可以发现,因为输出元素来自输入元素的特点,Pointer Networks 特别适合用来直接复制输入序列中的某些元素给输出序列。而事实证明,后来的许多文章也确实是以这种方式使用 Pointer Networks 的。

# 2. Applications

Pointer Network 的主要好处有:

  1. 提供了一种新视角去理解 Attention,把 Attention 作为一种求分布的手段。
  2. 对于输出字典长度不固定问题提供了一种新的解决方案。
  3. 将输入作为输出的一种补充手段,让输出部分可以更好的引入输入部分的信息。

# 2.1 Applications - Summarization

Pointer Network 还是蛮适合用在 Summarization 的任务中。

Summarization is the task of condensing a piece of text to a shorter version that contains the main information from the original.

—— See A, Liu P J, Manning C D. Get To The Point: Summarization with Pointer-Generator Networks[J]. 2017:1073-1083.

尽管这个任务可以用 seq2seq 来做,input 是一个 document,output 是 summary,但是今天在做 summary 的时候,很多 summary 里面放的词汇都是人名地名等这些专有名词,这往往做不好。

换一种思路,在做 summary 的时候,你可以想象 summary 与 document 的关系就是,从 document 中取出一些重要的词汇,然后接起来就是 summary 了。所以在产生 summary 的时候,让 machine 直接从 document 挑字出来组成 summary 就会得到不错的效果。

传统 sumarization 的做法如下(paper (opens new window)):

image-20221204222238318

可以使用 Pointer network 对它进行改进。

可以参考文章 https://blog.csdn.net/qq_44766883/article/details/111995364

# 2.2 More Applications

image-20221204222617464
编辑 (opens new window)
上次更新: 2022/12/25, 13:06:41
各式各样的 Attention
图神经网络

← 各式各样的 Attention 图神经网络→

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