【DL】2 Attention入门——李宏毅机器学习课程笔记

视频链接

1. Generation

按组件生成结构化对象组件(Generating a structured object component-by-component)

  • 句子是由字符/语料库组成的——通过RNN每次生成一个字符/单词
    在这里插入图片描述

  • 图像是由像素组成的——每次用RNN生成一个像素

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    RNN可以生成图像、手写汉字、语音、文字

为什么要条件生成:

  • 我们不希望简单地生成一些随机的句子
  • 根据条件生成句子

在这里插入图片描述

  • 将输入条件表示为一个矢量,并考虑此作为RNN发生器的输入

在这里插入图片描述

  • 机器翻译/聊天机器人(Sequence-to-sequence learning)

在这里插入图片描述
这是个很好的例子:聊天时需要考虑较长的语境,例如再考虑以下对话,如果再说一次’Hi’就显得很僵硬……所以可以把很多句子放到一起进行学习
在这里插入图片描述

2. Attention

Dynamic Conditional Generation
在这里插入图片描述

  1. 有时候Encoder不能很好的把一个句子变成一个向量
  2. 让Decoder在产生’machine’的时候只需要考虑’机器’,只需要考虑相关的就好了

2.1 Attention-based model

机器翻译为例看一下Attention-based model
在这里插入图片描述
在这里插入图片描述
关于 α 1 α_1 α1的产生没有一个公认的最好的方法,你可以这样:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上的技术也可以应用到语音识别上面

在这里插入图片描述
或者图像标题生成(对图像产生一段说明)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以下亮的地方是机器的Attention所在的地方,注意到长颈鹿生成的时候是长颈鹿周围的场景,以下都是一些表现良好的场景
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上结果看起来表现非常好

2.2 Memory Network

对Memory上进行Attention
在这里插入图片描述
可以考虑把一个句子拆成两个向量

在这里插入图片描述
关于Hopping:

在这里插入图片描述

2.3 Neural Turing Machine

不只从Memory里训练出数据,他还可以根据match score修改Memory的数据

在这里插入图片描述
在这里插入图片描述
实际上由k生成attention的步骤如下所示:

在这里插入图片描述
相信没有兴趣知道它,所以跳过,接下来根据attention和e、a的值修改Memory的值

在这里插入图片描述
在这里插入图片描述

3. Tips for Generation

Training的技巧

在这里插入图片描述
训练和测试之间的不匹配
在这里插入图片描述
在这里插入图片描述
一步错,步步错:
在这里插入图片描述
修改训练过程?

使训练与测试相匹配,当我们尝试减少步骤1和步骤2的损失时…在实践中,这样的训练方式很难
在这里插入图片描述

3.1 Scheduled Sampling

在这里插入图片描述
在这里插入图片描述

3.2 Beam Search

绿色路径的分数更高,不可能检查所有的路径
在这里插入图片描述
每一步都要保持几条最佳路径
Beam size = 2
在这里插入图片描述
本例中beam的尺寸为3:

在这里插入图片描述
以下说明了为什么采样比直接把概率分布作为输入训练效果要好一些

在这里插入图片描述

3.3 强化学习

对象级(Object level)与组件级(Component level)

在这里插入图片描述
R不好进行微分,当句子和reference相同时,输出为0,调参数时结果不变,所以解决办法可以是强化学习

在这里插入图片描述
在这里插入图片描述

4. Pointer Network

在这里插入图片描述
Sequence-to-sequence?
在这里插入图片描述
在这里插入图片描述
Problem?效果不好,而且训练的长度和测试的输入长度可能不一样

在这里插入图片描述
这样输入的数量变化,输出的数量也跟着变化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更多的应用——机器翻译、聊天机器人……

在这里插入图片描述

小结

这次课Conditional Generation by RNN & Attention:

  1. 从那个聊天很僵硬知道了条件生成的目的但是具体怎么解决?就是Attention(动态条件生成)吗难道
  2. Attent原理差不多知道什么意思了,需要编程动手实践一下;Memory Network和Neural Turing Machine一知半解的
  3. Scheduled Sampling就是train到后面,不用reference用model来train,可以防止出现没有的数据集;Beam Search就是为每个路径赋予一定的值,但是不可能遍历完,所以选最大的两个;强化学习提了一下,编程实现估计不简单
  4. Pointer Network提了一下,原理感觉和Attention差不多,但不像based model那样把Attention和输入向量相乘,而是直接输出输入的这个值,应用场景了解了一下,编程实现估计也用不太到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值