Sequence models & Attention mechanism
1 多种多样的序列架构
1.1 基础模型:Seq2Seq
Seq2Seq模型: 输入序列,生成序列。
例1:机器翻译
例2:图片标注
1.2 选择最有可能的句子
语言模型: 可以估算一个句子的概率,也可以用它来产生新的句子。输入为全零向量,输出为随机采样的词序列。
机器翻译模型: 由编码网络(绿色)和解码网络(紫色)组成,解码网络与语言模型相似。但它不总是以全零向量开始,而是输入为一个语句,然后由一个编码的网络来处理输入语句,最后由解码网络输出对应的另一种语言的句子。所以也被称为有条件的语言模型,例如,它估算的是在输入法语句子的情况下,输出英语翻译句子的概率。
也就是说,机器翻译就是选择最有可能的句子,即条件概率 P 最大的句子。
贪婪搜索机制 (greedy search): 在机器翻译模型输出时,选择了第一个单词之后,然后挑出可能性最高的第二个单词,接着选出可能性最高的第三个单词,一直到完成整个句子的输出。
事实证明,贪婪搜索这种方法在机器翻译上不太可行。 为了证明这一点,看看以下两个翻译。
如果算法选择了"jane is"作为前两个字, 因为"going"是一个更常见的英语单词,所以 “jane is going” 的概率要高于 “Jane is visiting” 。也就是说贪婪搜索最后很有可能会选择第二个翻译,但这最终会得出一个不太理想的句子,因为它太罗嗦了。
其次,若使用贪婪搜索,英语句子中的单词组合总数是指数级别的。 所以,如果你只有 10000 个词的词典,然后你并且要进行长达 10 个单词的翻译,那么就有 1000 0 10 10000^{^{10}} 1000010 个可能的句子。对所有可能句子进行一个评估,是不可能的。
这就是为什么我们要使用近似搜索。 而近似搜索算法所做的是,它会尝试选择使条件概率最大化的句子 y,虽然不会总是成功,但它通常表现不错。
1.3 集束搜索 (Beam Search)
给定法语输入句子 x 相对于贪心法搜索会 只找到一个最可能的单词然后继续下一个, 集束搜索会考虑多个可能的选择。 集束搜索有一个参数
B
B
B,代表集束宽度,在这里我们把它设为
B
=
n
B=n
B=n. 表示集束搜索每次会不仅仅考虑 1 个, 而是
n
n
n 个可能的选择。
举例来说,
第一步:在估计第一个单词时,集束宽度设为 3,则代表将词典中 10000 个单词中概率最高的 3 个单词选中,比如分别是 “in”、“Jane” 、“September”,集束搜索算法会将这3个候选答案都存在内存中以便都进行尝试。
第二步:现在考虑这三种选择中的每一项后面的第二个词应该是什么,继续使用集束宽度 3 则有 30000 种可能性,在这 30000 中可能中,根据前两个词然后挑出概率最高的三种可能。比如结果为 “in September”、“Jane is”、“jane visit”。
……
一直这样下去,每一步选择可能性最高的 3 个单词,直到输出终止符为止。
1.4 集束算法的改进
长度归一化:
集束宽度的选择:
1.5 集束搜索中的误差分析
放机器翻译结果不是很理想时,根据以下的过程分析是 Beam 搜索出了问题,还是 RNN 模型本身出了问题?
1.6 Blue Score
1.7 Attention Model Intuition
1.8 Attention Model
2 语音识别 - 音频数据
2.1 语音识别 (Speech recognition)
语音识别:音频序列 ==》词序列