2020李宏毅学习笔记——39.Pointer Network

    技术2025-01-08  16

    1.概念

    Pointer network 主要用在解决组合优化类问题(TSP, Convex Hull等等),实际上是Sequence to Sequence learning中encoder RNN和decoder RNN的扩展,主要解决的问题是输出的字典长度不固定问题(输出字典的长度等于输入序列的长度)。 本质是:对Attention Mechanism的简化 还不明白? 传统的seq2seq模型是无法解决输出序列的词汇表会随着输入序列长度的改变而改变的问题的,如寻找凸包等。因为对于这类问题,输出往往是输入集合的子集。基于这种特点,作者考虑能不能找到一种结构类似编程语言中的指针,每个指针对应输入序列的一个元素,从而我们可以直接操作输入序列而不需要特意设定输出词汇表。作者给出的答案是指针网络(Pointer Networks)

    本质在:如何解决输出字典维度可变的问题?Pointer network的关键点在于它的公式公式:

    2.先回顾一下背景,也就是上节课讲的内容

    提到RNN,首先想到的就是seq2seq模型吧,实现类了把一个序列转换成另一个序列,关键还有对照,而且还不要求输入输出等长,所以以后碰到有碰到需要处理时序序列时用RNN, 然后attention,说白了就是干嘛呢,who are you ?你是谁,当遇到who时,就给谁的权重大一些。

    3.李老师给的例子讲解

    4个点,找到最外围; 输入:4个点的x,y坐标 输出:期待是3个点 encoder:三个点后得到个红色 decoder:distribution后决定输出token1,下一个结点决定输出token4,2 因为decoder的输出是提前设定好几个的,所以不适应变化。

    解决: 先有一个z0,做attention,后产生一个attention weight,不同的是,得到的结果不做加权求和,而是直接做归一化,然后去概率最大的那个。例如,上图中1号点概率为0.5最大。然后把1号点作为输入生成z1,然后做attention并求分布最大值,得到4号点

    可以利用注意力机制(Attention Model)来解这个问题。 输入的部份加入了END,不同于之前课程所说的Attention Model,计算出Attention Weight之后不做加总,而是取最大值(第k个向量的最大值放到位置k),而我们希望输出的值跟我们的目标点愈接近接好,这可以利用Cross-entropy来最佳化。现在这样做的好处是,Decoder的长度是取决于Input,输入100个点,就有100个选择,模型会不断输出,直到END的机率最大才停止。

    4.应用

    Summarization 输入一篇文章之后输出这篇文章的Summary。但是文章内可能很多的人名、地名是我们词汇表内所没有的,这时候可以直接输出unkonw。 直观来看,将输入文章取出重要文字就是在做Summary,概念上跟上面所说的Point Network非常相似(凸包)。 翻译: 在翻译的过程中,经常会遇到专有名词,例如人名、地名。可以用Pointer Network直接把对应原文的名词抽取出来,直接贴过去。 可以在network里面加入pointer机制,这时候就可以直接从input里面选择词汇,直接粘贴 还有 嘛应用呢?Chat-bot

    Processed: 0.009, SQL: 9