【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN Attention Pointer Network Recursive
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes
本节内容综述
- 本节内容将介绍:
Generation
,Attention
,Tips for Generation
,Pointer Network
。 - 第一步是 Generation ,具体来讲,是如何产生一个 structured object 。提到了
Seq 2 seq
。 - 接下来的部分是 Attention 。提及了图片生成句子等有趣技术。
- 课程过半,进入
Tips for Generation
部分。提到了许多新技术,或者说容易遇到的问题、偏差,并由此介绍了相应的解决方案。 - 接下是 Pointer Network。Pointer Network可以有效利用输入中的人名地名等等。
- 最后穿插一点内容,RNN的变体,Recursive Network。
文章目录
- 本节内容综述
- 小细节
- Generation
- Conditional Generation
- Attention
- Speech Recognition
- Image Caption Generation
- Memory Network
- Neural Turing Machine
- Tips for Generation
- Good & Bad Attention
- Mismatch between Train and Test
- Modifying Training Process?
- Scheduled Sampling
- Beam Search
- Object level v.s. Component level
- Pointer Network
- Applications - Summarization
- Applications - Machine Translation
- Recursive Network
- Application: Sentiment Analysis
- Recursive Model
- Recursive Neural Tensor Network
- Experiment
- Matrix-Vector Recursive Network
- Tree LSTM
- More Application
小细节
Generation
如上,我们如何让机器产生一段句子呢?这个我们已经清楚了。使用 RNN 把 word 或者说 character 一个一个产生出来。
此外,如上,还可以把图形拆分成像素,使用 RNN 生成。
但是,如上,我们应该让就近的像素对生成的像素进行影响,而非按行来。可以进行 filter + 3维记忆空间 的方法。
Conditional Generation
但是,使用RNN存在一些问题,如上图,我们希望根据不同情况给出信息。
如上,一般来讲,RNN产生的话是随机的。我们可以对图片进行处理,比如用CNN获得一个向量,然后输入RNN中。可以在每个时间点都把图片输入,防止机器“忘记”自己在说什么。
对于机器翻译,同理。如上,先在Encoder
中,对句子的每个成分按照时间点挨个输入。这样最后得到的向量,就包含了句子的全部信息。将这个输入到Decoder
,就可以得到翻译。
这就是 Seq2seq
。
此外,在聊天机器人中,我们需要让之前的信息也输入到模型中,防止说重复的内容。
Attention
如上,我们将 z0z^0z0 与 各个hhh 进行 match 函数计算,得到各个 hhh 对应的 α\alphaα 。这个 match 函数中的参数也是训练出来。
之后,经过一个 softmax ,然后求和得到 ccc ,此时,ccc 就是Decoder input 。此外,可以得到心得 zzz 。
之后继续进行该内容。
Speech Recognition
如上,颜色深度代表 match score 。
Image Caption Generation
如上,可以把每个区域的向量与$z_0$进行运算
得到,之后,进行 weighted sum,再交给 Decoder ,以此得到输出。
如上,在产生划线词汇
是,其Attention
也是集中在图片的相应位置的。
此外,还有些失败的地方,我们可以通过 Attention
进行分析,为什么出错了。
此外,机器还可以看视频说话。如上。
“我们的作业二就是做这个。”很有趣。
Memory Network
如上,也可以进行利用注意力做问答。
此外,Memory Network 也有更复杂的版本。
如上,有两组vector分别为xxx与hhh来表示Document,qqq与xxx做match得到α\alphaα,但是Extracted Information时,使用hhh与α\alphaα进行结合。
而得到的新向量,可以与 q 进行运算,表示机器在反复“思考”。这个过程叫做 Hopping 。
Neural Turing Machine
Neural Turing Machine 不仅可以读记忆,还可以改变记忆。
如上,实际上,k与memory产生四个新值其实有5个步骤。如下。
李老师:“我相信你一定没有兴趣知道他,所以我们把他跳过。”
如上,eee与aaa用于修改旧的 memory 。
总的计算框架如上。
Tips for Generation
Good & Bad Attention
如上,一个Bad Attention就是,可能α\alphaα过于不均衡,导致机器只注意到了视频的主体。
我们可以用一个正则化的方法,让各个输入的部分都有近似的 attention weight 。如上图中的公式(这只是最简单的一种方法)。
Mismatch between Train and Test
如上,每次你的 RNN 的 input 其实来自于“正确的解答”。但这是训练时的状态
。
如上,在实际使用时,在每次的 input 都来自自己上次的解答。
这将带来Exposure Bias
。
如上,如果机器没有在一开始时正确地选择“A”,这将让接下来所有的生成都受影响。
Modifying Training Process?
那么,在训练时,就将 input 改为“自己生成”的答案呢?
但实际上,这将让我们的网络十分难以训练。
Scheduled Sampling
如上,我们用综合的想法来训练。
在输入时,我们随机地选择将 model输出
或者是 训练数据
进行作为输出。
要注意的是,我们在训练了一定步骤后,才考虑把 model输出
作为输入。随机选择的几率如上图中的表。
如上图,如果使用Scheduled Sampling,效果好很多。
Beam Search
如上,如果我们“贪婪地”每次都选择最好的那个输出,但是其最后的总的概率值(累成起来),未必是最高的。如上图中,绿色分支的分数是要高于粉色分数的。
因此,提出 Beam Search 。
如上,我们可以只选分数最高的 2 个,探索几步,看哪个分高。
如上,发现X、Y、W分数都高,因此,都在下一段时间输入。然后取分数最高的那个,最为下一时间的输入。
Object level v.s. Component level
如上,在有细微错误时,其与正确答案的Loss值差别并不大。
因此,我们考虑使用object-level criterion
(假设有这样一个评估函数RRR,评估句子语法),可行吗?
不可行,因为很可能无法做微分。
可以使用强化学习的方法。
把 generation 这件事,当成 reinforcement learning 来做。
在结束后,通过RRR函数判断奖励值。
如上,MIXER是使用了强化学习与传统方法相结合的方法。
Pointer Network
如图,Pointer Network中可以解决如同的演算的内容。
如何转换为 Seq 2 seq 的模型呢?
如上,如果只是用 Encoder-Decoder 当然是不 work 的。当然,如果加入注意力是可以的。
如上,attention做了一点改善,不用 softmax 层,而使用 argmax 筛选输出。
这种方法,可以做到 100 个点规模都正确。
Applications - Summarization
如上,使用 Pointer Network 可以有效利用文章中的人名地名,而且将文章中的词接起来一般来讲就可以得到 Summary 。
Applications - Machine Translation
此外,还可以用在机器翻译上。
Recursive Network
Application: Sentiment Analysis
如上,对于Recursive,我们需要决定各个输入之间的关系。将某些输入值放在一起,输入到模型中。
Recursive Model
如上,我们可以考虑用文法结构的顺序进行输入。
这个 f ,不能用一个简单的函数。因此需要一个 network。
如上,对于 g 与 f 函数,我们都要训练。
Recursive Neural Tensor Network
如上,作为 f 的输入,将两个输入简单的拼接并不是首选。我们考虑线性代数的输入方法(上面的矩阵运算计算了两次)。
Experiment
如上,有一些实验,进行了检验。
Matrix-Vector Recursive Network
尽管这篇文献的表现较差,但是李老师介绍了其中思想。
如上,我们“玄学地”将输入分离,分为aaa与AAA。之后交叉地进行相乘。
Tree LSTM
如上,基于 Recursive ,可以构建一个 Tree LSTM 。
More Application
比如 Sentence relatedness 。
【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN Attention Pointer Network Recursive相关推荐
- 【李宏毅2020 ML/DL】P1 introduction
[李宏毅2020 ML/DL]P1 introduction 本节主要介绍了 DL 的15个作业 英文大意 Regression: 回归分析 Classification: 分类 RNN: 循环神经网 ...
- 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...
- 【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P15 Why Deep-
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 李宏毅svm_李宏毅2020 ML/DL补充Structured Learning Structured SVM
李宏毅2020 ML/DL补充Structured Learning Structured SVM [李宏毅2020 ML/DL]补充:Structured Learning: Structured ...
- 【李宏毅2020 ML/DL】P76 Generative Adversarial Network | Unsupervised Conditional Generation
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 这是我的李宏毅老师 GAN 系列第3篇笔记,GAN 系列: 1:Basic Idea 2:Conditiona ...
- 【李宏毅2020 ML/DL】P82 Generative Adversarial Network | Improving Sequence Generation by GAN
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 这是我的李宏毅老师 GAN 系列第9篇笔记,GAN 系列: 1:Basic Idea 2:Conditiona ...
最新文章
- fread读结构体返回值是0无错误_嵌入式C编程之错误处理(附代码例子)!
- Sonar 质量扫描的输出日志--对应源码的跟踪(一){源码解析sonar-scanner-maven3.2}
- 《Python Cookbook 3rd》笔记(1.19):转换并同时计算数据
- dedecms 漏洞_dedescan一款织梦漏洞扫描器
- caioj1495: [视频]基于连通性状态压缩的动态规划问题:Formula 2
- comsol分析时总位移代表什么_基于COMSOL的气动软体执行器仿真
- python调用hive与java调用区别_python3.6.5基于kerberos认证的hive和hdfs连接调用方式
- python题目-奇偶数调用函数
- 该死的clear 根本不释放内存,怎么才能释放泛型LIST的内存?
- fabio docker
- OGG-01008 Extract displays Discarding bad record (discard recs=1) when using filter or where clause
- matlab sskf,[转载]fortran语言常用函数
- 「找一找」考你眼力的时候到了!
- HDU 2047 [阿牛的EOF牛肉串] 递推
- 2020中国高校计算机大赛网络技术挑战赛,【科研竞赛】2020年度“中国高校计算机大赛-网络技术挑战赛”...
- 各个段位 毕业要准备几篇论文,毕业太难了。
- PHP开发微信公众号,实现上传永久素材
- OpenMv学习总结
- PS教程---如何绘制噪点插画
- 技巧分享|教你如何编写桌面快捷方式文件
热门文章
- 成绩单表格html,【Web前端HTML5CSS3】15-表格
- R语言-异常数据处理3
- VS 2005部署应用程序提示“应用程序无法正常启动( 0x0150002)” 解决方案
- nginx 反向代理时丢失端口的解决方案(转)
- FutureTask的get()方法之异常处理
- 解决 sublime text3 运行python文件无法input的问题
- Spring MVC异常处理详解
- RabbitMQ的工作模式Routing 路由,test测试代
- python中关于命名的例子_Python()-类命名空间和对象/实例命名空间
- Android:使用SharedPreferences进行数据存储