本文主要是介绍WDK李宏毅学习笔记第八周01_Point Network,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 摘要
- 一、Pointer Network
- 1.1 目的
- 1.2 原理
- 1.3 优点
- 二、Applications-Summarization
- 2.1 原理
- 2.2 优点
- 三、Applications - Translation and Chat-bot
- 方法
- 结论
摘要
本章讲的是Pointer Network的基本原理,并用其解决Convex Hull问题,但是解决Convex Hull问题实际意义并不大,所以又讲述了如何用Pointer Network改进Summarization、Translation and Chat-bot model。一、Pointer Network
1.1 目的
Pointer Network 主要是用在解组合优化类问题(TSP, Convex Hull等等),下面是用Pointer Network解Convex Hull来举例子,Convex Hull问题就是输入点的数据,然后再输出一些点且这些点连起来可以将输入点全部包起来。
1.2 原理
如下图,首先输入多个点的data,根据z0(key)得到几率最大的点(x1,y1),(key是由计算机自己学到的),根据得到点和z0得到z1。
将z1作为下一个key,得到几率最大的点(x4,y4),得到z2,依次类推,直到end标记点(x0,y0)几率最大,就结束运行。这样做可以将所有
1.3 优点
该做法可以根据输入点的数量变化输出点的数量,解决了Sequence-to-Sequence输出点固定的问题。
二、Applications-Summarization
2.1 原理
- 传统的做法:input一个document,将encoder得到的output丢给decoder,那decoder每次都会输出一个word,把所有的word结合起来就得到了summary。该方法的缺点是如果正确答案的词汇不在machine的lexicon时,那么这个词汇的几率就永远是0,
下图右边就是用传统方法得到的words。 - 加入Point Network的做法:从输入的attention distribution直接做sample,得到输出words的distribution,然后再learn一个weight为Pgen,这个pgen决定了我们要用多少传统的方法(下图右边)和多少Point Network(下图左边)的方法相加。
2.2 优点
加入Point Network的方法让machine可以直接从输入document中提取word,解决了不在machine的lexicon的words几率永远是0导致总结的结果不够正确的问题。
三、Applications - Translation and Chat-bot
- 在翻译的时候,有一些词汇是不需要翻译或者翻译不出来的,如人名地名,这时候可以在model中加入Point Network,让机器可以直接从input的句子里选取词汇。
- 在Chat-bot的model里,也可以加入Point Network,例如user说“X宝你好,我是库洛洛”,然后希望机器回答“库洛洛你好,很高兴认识你”,这时machine的lexicon可能都没有库洛洛,就没办法回答正确,但是如果使用Point Network,机器就可以从input中选取一些词汇直接复制到输出中,实现正确的回答。
方法
Point Network:首先是输入经过RNN转换得到vector,然后learn一个初始的key(z0)用key对输入做attention,对每一个input都产生一个weight,然后取argmax,得到几率最大的word vector,通过该vector得到z,依此类推,直到结束标记(x0,y0)的几率最大时停止。
结论
Point Network可以解决输出固定的问题,让machine可以根据输入量自己选择合适的输出量。Point Network一般不单独使用,而是和其他model配合使用,改进和优化其他的Model。
这篇关于WDK李宏毅学习笔记第八周01_Point Network的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!