赞
踩
1.重点归纳
1)基础模型
(1)Sequence to sequence翻译模型
(2)Image to sequence图像描述模型:输入一张图片,它能自动地输出图片的描述
2)机器翻译
(1)机器翻译是建立一个条件语音模型
(2)翻译模型将法语翻译成英语,输入法语句子,模型会告诉你各种英语翻译所对应的可能性,要找到一个英语句子y使得条件概率最大化。
3)定向搜索/束搜索(Beam Search)
(1)Beam Search算法首先挑选出输出的英语翻译中的第一个单词,保留概率最大的前B个单词及其概率。
(2)把前面得到的概率值最大的B个单词逐一输入解码网络的下一个时间步,再分别获取这个时间步输出单词的概率,保留py<1>,y<2>X概率最大的前B个两个单词对。注意,前面得到的B个单词的某些单词在此步有可能被排除。
(3)当B=1时,Beam search算法退化成贪婪算法。
4)改进定向搜索
(1)目标函数取log值来解决数据下溢的问题
(2)对beam search算法进行长度归一化
(3)束宽B选择
5)定向搜索误差分析
(1)模型有两个主要部分
(2)误差分析是为了找出翻译不好的原因是RNN模型还是束搜索算法的问题。
(3)误差分析方法:用这个模型来计算真实值的概率Py*x,同时也用你的RNN模型来计算预测值的概率P(y|x),然后比较Py*x和P(y|x)两个值哪个更大,再根据这个比较结果来定位是RNN还是束搜索算法的问题更大。此处忽略长度归一化这种情况,如果使用了某种长度归一化,那么要做的就是比较长度归一化后的最优化目标函数值。
(4)此处忽略长度归一化这种情况,如果使用了某种长度归一化,那么要做的就是比较长度归一化后的最优化目标函数值。
(5)误差分析步骤
6)注意力模型
(1)普通RNN翻译模型翻译一个很长的句子,编码器会读取整个句子,然后记忆整个句子,再传递给解码器,解码器再生成英语翻译。人工翻译会读取句子的一小部分,然后翻译一部分,接着再读取并翻译下一部分。
(2)普通RNN翻译模型对短句子效果非常好,Bleu得分比较高,但随着句子长度加大得分变小。而注意力模型不会随着句子长度边长而得分变小。
(3)注意力翻译模型
(4)解码器RNN向前进一次生成一个词,直到最终生成EOS。每一步的注意力权重α<t,t>告诉你当你尝试生成第T个英文单词时,它应该花多少注意力在第t个法语输入单词上面。当生成一个特定的英文单词时,这允许它在每个时间步去看周围词距内的法语输入单词要花多少注意力。
7)注意力模型
(1)解码器第一个单词输出对应的上下文c<1>取决于注意力参数α<1,1>、α<1,2>和α<1,3>等,α参数告诉我们上下文有多少取决于我们得到的特征,或者我们从不同时间步中得到的激活值。
(2)定义上下文的方式实际上来源于被注意力权重加权不同时间步中的特征值
α<t,t'>是在t'时花在a<t'>上的注意力大小,t为输出时间步,t'为输入时间步。即:当你生成t处生成输出词,你应该花多少注意力在第t'个输入词上面。
(3)注意力权重α<t,t'>
(4)注意力机制也被应用到了其他的很多问题上,如给图片加标题,当你在写图片标题的时候,一次只花注意力在一部分的图片上面。
8)语音识别
(1)语音识别问题:输入一个音频片段x,自动生成文本y。
(2)注意力模型来做语音识别:在输入音频不同时间帧上使用一个注意力模型来输出文本描述,输出每个字符来组成句子。
(3)用CTC损失函数来做语音识别
(1)把音频片段计算出它的声谱特征x1, x2,x3,…,然后把它放到RNN中。
(2)然后定义输出类标y
(3)这是一个很不平衡的训练集,0比1多太多了,改进方案:
2. 基础模型
1)Sequence to sequence翻译模型
(1)先构建一个编码网络,它是一个RNN(GRU或LSTM)网络。逐一输入待翻译句子的每个单词,当是网络不进行预测。
(2)然后构建一个解码网络,编码网络的输出值a(以及c)输入到解码网络中,并进行预测输出,直至输出翻译后的完整句子才结束。
2)Image to sequence图像描述模型
(1)输入一张图片(如这张猫的图片),它能自动地输出图片的描述:一只猫坐在椅子上。
(2)将图片输入到卷积神经网络中,比如一个预训练的AlexNet结构,然后让其学习图片的编码。编码网络:删除softmax层,保留至最后一层全连接层,这个全连接层的数值就是一个n维(图中为4096维)的向量来表示图片。
(3)把这个向量输入到RNN中,RNN要做的就是生成图像的描述,类似翻译模型中的解码网络。
(4)该方法在图像描述领域相当有效,特别是当你想生成的描述不是特别长时更有效。
3. 选择最可能的句子
1)可以把机器翻译想成是建立一个条件语音模型
(1)在语言模型中,可以让你能够估计句子的可能性,也可以将它用于生成一个新的句子。
(2)机器翻译模型则包含encode网络和decode网络,decode网络和语言模型的网络几乎一样。机器翻译模型与语言模型非常相似,不同的是语言模型总是以零向量开始,而机器翻译模型以encode网络计算出的一系列向量来表示输入句子,并以这个向量开始decode网络。
(3)相比语言模型输出任意句子的概率,翻译模型会输出句子的翻译(如英语),这取决于输入的句子(如法语),换句话来说就是将估计一个英文翻译的概率,所以它是一个条件语言模型。
2)通过翻译模型将法语翻译成英语,输入法语句子,模型会告诉你各种英语翻译所对应的可能性
(1)并不是从得到的分布中进行随机采样,而是要找到一个英语句子y使得条件概率最大化
(2)在开发机器翻译系统时,想出一个算法来找出合适的y值,使得arg maxy<1>,…,y<T>P(y<1>,…,y<T>|x)最大化,解决这个问题的通用方法就是Beam Search(束搜索)。
(3)为什么不使用贪心搜索?
(4)例子:以下两个句子中第一个句子翻译得更好,第二句太啰嗦。如果使用贪心搜索,在英语中going更加常见,“Jane is going”比“Jane is visiting”概率更大
3)这个翻译模型和之前的语言模型的一个主要区别就是相比之前随机地生成句子,在该模型中,你要找到最有可能的英语翻译,但是可能的句子组合数量过于巨大,无法一一列举,所以我们需要一种合适的搜索算法(如Beam search算法)。
4. 定向搜索/束搜索—Beam Search
1)在机器翻译模型中,我们不想要输出一个随机的翻译结果,而是想要得到最有可能的翻译结果。对于语音识别也一样,给定一个输入的语音片段,我们不希望得到一个随机的文本翻译结果,而是希望得到最好的翻译结果。解决这个问题的常用方法是Beam Search。
2)例子:翻译句子:Jane is visiting Africa in September
(1)Beam Search算法首先挑选出输出的英语翻译中的第一个单词:用以下网络(绿色为编码网络,紫色为解码网络)来评估第一个单词的概率值,即给定序列X条件下第一个输出y的概率。
(2)把前面得到的概率值最大的B个单词逐一输入解码网络的下一个时间步,再分别获取这个时间步输出单词的概率,保留概率最大的前B个两个单词对。注意,前面得到的B个单词的某些单词在此步有可能被排除。
(3)继续第3个单词
3)当B=1时,Beam search算法退化成贪婪算法。
5. 改进定向搜索
1)长度归一化就是对beam search算法稍作调整的一种方式,帮助你得到更好的结果。
(1)beam search算法就是最大化这个概率:。由于这个连乘里面的每个概率都小于1(通常远小于1),很多小于1的树乘起来会造成数据下溢。
(2)实践中一般计算上面公式的log值来解决数据向下溢出的问题,因为log单调递增函数,所以求log后的最大值与求原来概率的最大值等价。
(3)如果句子很长,那么句子的概率会很低,所以这个目标函数有一个缺点,它可能不自然地倾向于简短的翻译结果。因为短句子的概率是由更少数量的小于1的数字乘积得到的,所以概率值更大。
(4)概率的log值通常小于等于1,所以加起来越的项越多,得到的结果就越负(越小)。
(5)对算法的另一个改进就是:把目标函数进行长度归一化
2)束宽B选择
(1)B越大,选择越多,你找到的句子可能越好。但同时,算法的计算代价越大,内存占用也会增大,因为需要把很多的选择保存起来。
(2)如果使用很小的B值,结果会没有那么好,因为在算法运行中保存的选择更少,但算法运行速度很快,内存占用也小。
(3)在实际应用中,可以把束宽设为10。对于产品系统来说束宽等于100很大,这也取决于不同的应用。但对科研而言,人们想压榨出全部性能,这样有个最好的结果用来发论文,所以也经常看到大家使用束宽为1000或3000。
(4)在实现应用时,尝试不同的束宽值。当B很大的时候,性能提高会越来越少。对于很多应用来说,从束宽为1开始慢慢增大到一个很大的束宽,也就是贪心算法。
6. 定向搜索的误差分析
1)束搜索算法是一种近似搜索算法,也被称为启发式搜索算法,它不总是输出可能性最大的句子,它仅记录着前3/10/100(取决于B值)种可能,所以需要进行误差分析。
2)对束搜索算法进行误差分析例子
待翻译句子:Jane visite I'Afrique en septembre.
(1)假设在机器人已的dev集中,人工翻译为:Jane visit Africa in September.
(2)当使用已经训练好的RNN模型进行翻译时得到的结果是:Jane visited Africa last September.
(3)模型有两个主要部分
(4)找出这个不太好的翻译的原因是上面两部分中的哪一个,是RNN模型还是束搜索算法?
(1)RNN它会计算P(y|x)
(2)然后比较和两个值哪个更大,再根据这个比较结果来定位是RNN还是束搜索算法的问题更大。
情况一:
情况二:
(3)此处忽略长度归一化这种情况,如果使用了某种长度归一化,那么要做的就是比较长度归一化后的最优化目标函数值。
4)误差分析过程
(1)先遍历验证集,找出算法预测错误的样本。
(2)逐一计算预测值以及label值的概率,并根据上面的两者情况判断是RNN出问题还是束搜索出问题,把结果记录在表格中
(3)通过上面的过程就能够执行误差分析,得出束搜索算法和RNN模型出错的比例是多少,通过这个能够发现这两部分中哪个是产生更多错误的原因。
7. Bleu得分(选修)
8. 注意力模型直观理解
1)注意力模型这种思想已经成为深度学习中的最重要的思想之一
(1)像例子中需要翻译这么长的一个法语句子,编码器会读取整个句子,然后记忆整个句子,再传递给解码器,解码器再生成英语翻译。
(2)人工翻译
(3)编码解码器对不同的句子长度的Bleu得分
(4)使用注意力模型进行翻译时,我们看到不同长度的句子都能得到不错的Bleu得分
2)虽然注意力模型源于机器翻译,但它推广到了其他应用领域。
3)注意力模型例子
假设要翻译句子Jane visite I'Afrique en septembre.
(1)使用双向RNN模型,为了计算每个输入单词的特征集,图片中的输出y<1>,y<2>,y<4>,y<4>,y<5>并不是只翻译一个单词。对于句子里的每5个单词,计算一个句子中单词的特征集,也可能是周围的词。
(2)使用另外一个RNN来生成英文翻译
(3)直观来想就是,解码器RNN向前进一次生成一个词,直到最终生成EOS。每一步的注意力权重α<t,t>告诉你当你尝试生成第T个英文单词时,它应该花多少注意力在第t个法语输入单词上面。当生成一个特定的英文单词时,这允许它在每个时间步去看周围词距内的法语输入单词要花多少注意力。
9. 注意力模型
1)使用双向RNN(GRU或LSTM)计算每个词的特征
(1)代表正向和方向传播RNN时间步t的隐藏状态
(2)解码器第一个单词输出对应的上下文c<1>取决于注意力参数α<1,1>、α<1,2>和α<1,3>等,α参数告诉我们上下文有多少取决于我们得到的特征,或者我们从不同时间步中得到的激活值。
(3)定义上下文的方式实际上来源于被注意力权重加权不同时间步中的特征值
(4)解码器是标准的RNN序列,这里有着上下文向量作为输出,可以一次一个词地生成翻译。
2)计算注意力权重α<t,t'>
(1)α<t,t'>等于当第t个输出的翻译词y<t>应该放到a<t'>注意力的数量。
,关键是使用了softmax来确保这些权重加起来等于1。
(2)使用一个很小的神经网络来计算e<t,t'>,s<t-1>是解码器在上个时间步的状态,a<t'>是输入时间步t'的特征。
(3)这个算法的一个缺点就是它要花费三次方的时间(时间复杂度为)。
3)注意力机制也被应用到了其他的很多问题上,如给图片加标题
(1)图片加标题就是看一张图片,写下这张图片的标题。
(2)你可以有一个与上面非常类似的结构,看图片然后,当你在写图片标题的时候,一次只花注意力在一部分的图片上面。
4)注意力例子
(1)因为机器翻译是一个非常复杂的问题,在之前的练习中,你应该关注日期标准化的问题上面。
(2)可以训练一个神经网络(序列模型)输入任何形式的日期,然后使用注意力模型生成标准化的日期形式。
(3)一个有意思的事情就是看看可视化注意力权重,这里不同的权重被画上了不同的颜色。你可以发现对应的输入输出词注意力权重会变高,因此这里显示了当它生成特定的输出词时,通常会花注意力在输入的正确的词上面,包括学习花注意力在哪。
10. 语音辨识
1)语音识别问题
(1)输入一个音频片段x,自动生成文本y。
(2)下图是气压随着时间而变化的音频片段,横轴是时间,麦克风的作用是测量出微小的气压变化。人之所以能听到声音,是因为耳朵能够探测到这些微小的气压变化。
(3)人的耳朵并不会处理声音的原始波形,而是通过一种特殊的物理结构来测量这些不同频率和强度的声波。
(4)曾经有一段时间,语音识别系统用音位来构建
(5)在end-to-end模型中,我们发现这种音位表示法已经不再必要了,而是可以构建一个系统,通过向系统中输入音频片段,然后直接输出音频的文本,而不需要使用这种人工设计的表示方法。
2)用注意力模型来做语音识别
(1)在输入音频不同时间帧上使用一个注意力模型来输出文本描述。
(2)输出每个字符来组成句子。
3)用CTC损失函数来做语音识别
(1)CTC:Connectionist Temporal Classification
(2)假设语音片段内容是某人说“the quick brown fox”,这时我们使用一个新的网络,输入x和输出y的数量都是一样的。图片中使用了单向的RNN,实际可以使用双向LSTM或双向GRU,并且通常是很深的模型。
(3)时间步的数量是非常大的。
(4)CTC损失函数运行RNN生成这样的输出:ttt_h_eee___ ___qqq__。
11. 触发字检测
1)随着语音识别的发展,越来越多的设备可以通过你的声音来唤醒,这叫做触发字检测系统。
2)例子
Amazon Echo通过“Alexa”触发字来唤醒系统。
3)触发字检测系统的文献还处于发展状态,对于触发字检测最好的算法是什么,目前还没有一个广泛的定论。
4)其中一种触发字检测系统
(1)把音频片段计算出它的声谱特征x1, x2,x3,…,然后把它放到RNN中。
(2)然后定义输出类标y
(3)这样的标签方案可行,不过有一个明显的缺点,就是它构建了一个很不平衡的训练集,0比1多太多了。改进方案:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。