[吴恩达深度学习笔记]L5W3 序列模型和注意力机制(Sequence models & Attention mechanism)

这是一篇个人向的笔记。
推荐学习顺序:

  1. (可选)最好掌握线性代数、微积分、概率论的一些基本知识
  2. 学习吴恩达机器学习课程
  3. 学习吴恩达深度学习的前4课(也可以选择性学习部分内容)即第五课第一二周
  4. 然后可以学习本课,即吴恩达深度学习第五课的第三周内容
    本课程视频
    本课程文字版

3.1 基础模型(Basic Models)

Seq2Seq网络:

一句话概括:编码器输出一个向量,解码器输入向量,输出序列。
例子一: 英语句子翻译为法语
在这里插入图片描述
分为编码网络(左黑)和解码网络(右蓝)

  • 编码网络:一个RNN网络,单元可以是LSTM或其他。依次输入每个单词,最终输出一个向量
  • 解码网络:输入刚才的向量,一次输出一个单词,直到句尾标志。

Image2Seq网络

例子二:输入图片,输出其一句话描述:
在这里插入图片描述
编码器:AlexNet网络输出一个向量作为图片的特征
解码器:同上文的语言翻译例子。

3.2 选择最可能的句子(Picking the most likely sentence)

在这里插入图片描述

注意,输出的是概率。
如果我们采用采样的方式来获得最终翻译的句子,那就带有一定的随机性,比如可能得到上图中的任意句子;
我们想输出的是条件概率 P ( y < 1 > , . . . , y < T y > ∣ x ) P(y^{<1>},...,y^{<T_y>} | x ) P(y<1>,...,y<Ty>x) 最大的句子
常用的方法是集束搜索(Beam Search)
为什么不用贪心搜索呢(greedy search):得不到全局最优

3.3 集束搜索(Beam Search)

beam search算法是为了选择一个最好的序列结果,其步骤如下:
(每次从所有结果中选择最好的B个)

  • 有一个参数B,叫做集束宽(beam width)(假设为3)
  • 首先考察整个单词表(假设大小为10000个单词),选出作为首词概率最高的B个单词 w11,w12,… , w1b
  • 然后考察整个单词表,考察前两个词为w1k,w2 的概率。由于w1k有B个, w2有10000个,故最后有B * 10000个概率值。
  • 该概率是第一个单词的概率乘第二个单词的概率(独立同分布的条件概率)
  • B * 10000个结果中,选出其中最大的B个。
  • 重复以上步骤(需要维护B个网络副本)

注意,这仍不是全局最优,但比贪婪算法好一点。
贪婪算法其实是B=1的beam search.

3.4 改进集束搜索(Refinements to Beam Search)

这里都是对目标函数做的改进。
这套方法叫作lentgh normalization (这个名字主要指第二步)

1. 通过对概率乘log来防止舍入误差

  • 我们每个词都要把它的概率和前面的序列概率相乘,这样最后结果会远小于1,造成数值下溢
  • 数值下溢 numerical underflow 就是数值太小了,导致电脑的浮点表示不能精确地储存,有舍入误差(rounding errors)
  • 解决办法是,instead of 概率的乘积,我们使用对数的和

2. 通过除以单词个数来归一化,防止倾向于较短的句子

  • 由于概率是乘法,句子越长结果通常越小,所以如果不加改进,算法会倾向于选择较短的句子。
  • 解决方法是归一化,通过除以翻译结果的单词数量(normalize this by the number of words in your translation)。这样就是取每个单词的概率对数值的平均了,这样很明显地减少了对输出长的结果的惩罚(this significantly reduces the penalty for outputting longer translations.)。
  • 在实践中,有一种效果好但没啥理论依据的方法。就是不除以单词数,而是除以单词数的 α \alpha α次幂。
    • α \alpha α=0就是没归一化
    • α \alpha α=1就是归一化了
    • 0< α \alpha α<1,就是,归了但没完全归
    • α \alpha α可以作为超参数

最终这个目标函数叫
归一化的对数似然目标函数(a normalized log likelihood objective)。

关于束宽B的选择

  • 需要权衡,束宽越大,结果越好,效率越低
  • 例子是3,对产品来说可能有点小
  • 产品可以取10左右
  • 科研工作者通常弄的很大,比如1000或者3000.

束搜索和其他搜索的对比

深度优先和广度优先都是精确的搜索,可以得到全局最优;
束搜索不能得到全局最优,但他更快

3.5 集束搜索的误差分析(Error analysis in beam search)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值