序列模型与注意力机制
很久以前看吴恩达老师的视频和西瓜书时用jupyter写的,今天想起来就把它转到这里,真的挺方便
基础模型:Sequence to sequence(序列)模型在机器翻译和语音识别方面都有着广泛的应用。
机器翻译:使用“编码网络(encoder network)”+“解码网络(decoder network)”两个RNN模型组合的形式来解决。encoder network将输入语句编码为一个特征向量,传递给decoder network,完成翻译。
from IPython.display import Image
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "19.png", width=600, height=100)
encoder vector代表了输入语句的编码特征。encoder network和decoder network都是RNN模型,可使用GRU或LSTM单元。
这种模型也可以应用到图像捕捉领域。图像捕捉,即捕捉图像中主体动作和行为,描述图像内容。
首先,可以将图片输入到CNN,例如使用预训练好的AlexNet,删去最后的softmax层,保留至最后的全连接层。则该全连接层就构成了一个图片的特征向量(编码向量),表征了图片特征信息。然后,将encoder vector输入至RNN,即decoder network中,进行解码翻译。
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "20.png", width=600, height=100)
Sequence to sequence machine translation模型与我们第一节课介绍的language模型有一些相似,但也存在不同之处。二者模型结构如下所示:
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "21.png", width=600, height=100)
Language model是自动生成一条完整语句,语句是随机的。而machine translation model是根据输入语句,进行翻译,生成另外一条完整语句。decoder network与language model是相似的,encoder network可以看成是language model的a<0>a^{<0>}a<0>.
也就是说,machine translation model是加了条件的Language model。
所以,machine translation的目标就是根据输入语句,作为条件,找到最佳翻译语句,使其概率最大:
maxP(y<1>,y<2>,⋯,y<Ty>∣x<1>,x<2>,⋯,x<Tx>)max P(y^{<1>},y^{<2>},⋯,y^{<Ty>}|x^{<1>},x^{<2>},⋯,x^{<Tx>})maxP(y<1>,y<2>,⋯,y<Ty>∣x<1>,x<2>,⋯,x<Tx>)
优化目标是让正确翻译对应的$ P(y{<1>},y{<2>},⋯,y{<Ty>}|x{<1>},x{<2>},⋯,x{})$ 最大。
优化方法:贪婪搜索:Greedy search根据条件,每次只寻找一个最佳单词作为翻译输出,力求把每个单词都翻译准确。缺点:每次只搜索一个单词,没有考虑该单词前后关系;运算成本较大。
Beam Search(定向搜索):优化了贪婪搜索,每次找出预测概率最大的B个单词。B为超参数。
B=1时,Beam Search就是贪婪搜索。
1.从词汇表中找出翻译的第一个单词概率最大的B个预测单词。
概率表示为:P(y^<1>∣x)P(\hat y^{<1>}|x)P(y^<1>∣x)
2.再以这B个单词为初始条件(a(0)a^{(0)}a(0))计算第二个单词的概率,选出B个预测值。
联合概率表示为:P(y^<2>∣x,y^<1>)P(\hat y^{<2>}|x,\hat y^{<1>})P(y^<2>∣x,y^<1>)
3.以开始的B个单词结合了B个预测值之后 为初始条件,继续进行
联合概率表示为:P(y^<3>∣x,y^<1>,y^<2>)P(\hat y^{<3>}|x,\hat y^{<1>},\hat y^{<2>})P(y^<3>∣x,y^<1>,y^<2>)
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "22.png", width=600, height=100)
#beam search就是对以下概率对最大化
#符号是乘积运算
beam search的改进:
长度归一化:以上式子中每一项p都是小于1的,假设要预测的序列很长,那么就会有很多P相乘,会得到很小很小的数字,导致电脑的浮点不能精确得储存。所以将上述式子变成log形式求和的模式。
argmax∑t=1TyP(y^<t>∣x,y^<1>,⋯,y^<t−1>)arg max∑_{t=1}^{T_y}P(\hat y^{<t>}|x,\hat y^{<1>},⋯,\hat y^{<t−1>})argmax∑t=1TyP(y^<t>∣x,y^<1>,⋯,y^<t−1>)
当序列很长的时候,每一项的概率值很小,那么log之后就为负,所有log项相加就会越来越负,使得模型更倾向于输出较短的句子。
解决方法:上面那个句子除以句子长度,实现长度归一化。
argmax1Ty∑t=1TyP(y^<t>∣x,y^<1>,⋯,y^<t−1>)arg max \frac 1{T_y}∑_{t=1}^{T_y}P(\hat y^{<t>}|x,\hat y^{<1>},⋯,\hat y^{<t−1>})argmaxTy1∑t=1TyP(y^<t>∣x,y^<1>,⋯,y^<t−1>)
实际应用中,会引入归一化因子α(超参数):
argmax1Tyα∑t=1TyP(y^<t>∣x,y^<1>,⋯,y^<t−1>)arg max \frac 1{T_y^α}∑_{t=1}^{T_y}P(\hat y^{<t>}|x,\hat y^{<1>},⋯,\hat y^{<t−1>})argmaxTyα1∑t=1TyP(y^<t>∣x,y^<1>,⋯,y^<t−1>)
若α=1,则完全进行长度归一化;若α=0,则不进行长度归一化。一般令α=0.7.
Error analysis in beam search:首先,为待翻译语句建立人工翻译,记为y∗y^∗y∗。在RNN模型上使用beam search算法,得到机器翻译,记为y^\hat yy^。
对于一个输入语句,分别计算输出是y∗y^∗y∗的概率P(y∗y^∗y∗|x)和y^\hat yy^的概率P(y^\hat yy^|x)。
然后比较大小:
P(y∗y^∗y∗|x)>P(y^\hat yy^|x):Beam search算法有误,可以调试参数B。
P(y∗y^∗y∗|x)<P(y^\hat yy^|x):RNN模型有误,可以增加网络层数,使用正则化,增加训练样本数目等方法来优化。
对机器翻译进行打分。以人工翻译为标准,观察机器翻译与人工翻译的符合度进行打分。
1.机器翻译的单词出现在人工翻译中的总次数除以机器翻译单词数目。
2.bleu score:1中是对一个单词进行操作,现在同时对两个连续单词进行打分。机器翻译中连续的2个单词出现在机器翻译中的次数之和除以机器翻译中连续的2个单词出现在人工翻译中的总次数。
对于机器翻译语句过短而造成的得分“虚高”的情况,引入参数因子brevity penalty,记为BP。
注意力模型:因为单纯的encoder-decoder RNN对较长语句的把握较差,因为encoder阶段要记住整句输入再传递给decoder进行翻译,于是提出“注意力机制”。
对待长语句,正确的翻译方法是将长语句分段,每次只对长语句的一部分进行翻译。即局部聚焦.
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "23.png", width=600, height=100)
#注意力模型
attention model仍由类似的编码网络(下)和解码网络(上)构成。其中,S由原语句附近单元共同决定,原则上说,离得越近,注意力权重(attention weights)越大,相当于在你当前的注意力区域有个滑动窗。
注意力模型:采用双向RNN,每个a<t′>表示:
a<t′>=(a→<t′>,a←<t′>)a^{<t′>}=(a^{→<t′>},a^{←<t′>})a<t′>=(a→<t′>,a←<t′>)
RNN编码生成特征,注意力权重用α表示,C是各个RNN神经元经过注意力权重得到的参数值。
例如,α<1,t′>α^{<1,t′>}α<1,t′>表示机器翻译的第一个单词“jane”对应的第t’个RNN神经元对应的注意力权重,C<1>C^{<1>}C<1>表示机器翻译第一个单词“jane”对应的解码网络输入参数。满足:
∑t′α<1,t′>=1∑_{t′}α^{<1,t′>}=1∑t′α<1,t′>=1
C<1>=∑t′α<1,t′>⋅a<t′>C^{<1>}=∑_{t′}α^{<1,t′>}⋅a^{<t′>}C<1>=∑t′α<1,t′>⋅a<t′>
也就是说,α<t,t′>α^{<t,t′>}α<t,t′>表示输出y^<t>\hat y^{<t>}y^<t>对RNN单元a<t′>a^{<t′>}a<t′>的注意力权重因子。
为了让α<t,t′>α^{<t,t′>}α<t,t′>之和为1,利用softamx思想,引入参数e<t,t′>e^{<t,t′>}e<t,t′>,使得:
α<t,t′>=e<t,t′>∑t′Txe<t,t′>α^{<t,t′>}=\frac {e^{<t,t′>}}{∑^{Tx}_{t′}e^{<t,t′>}}α<t,t′>=∑t′Txe<t,t′>e<t,t′>
求e<t,t′>e^{<t,t′>}e<t,t′>:建立一个简单的神经网络,如下图所示。输入是S<t−1>和a<t′>,输出是e<t,t′>S^{<t−1>}和a^{<t′>},输出是e^{<t,t′>}S<t−1>和a<t′>,输出是e<t,t′>。
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "24.png", width=600, height=100)
Attention model的一个缺点是其计算量较大,若输入句子长度为Tx,输出句子长度为Ty,则计算时间约为Tx∗Ty。但是,其性能提升很多,计算量大一些也是可以接受的。
Attention model还能有效处理很多机器翻译问题。
Speech recognition:语音识别的输入是声音,量化成时间序列。更一般地,可以把信号转化为频域信号,即声谱图(spectrogram),再进入RNN模型进行语音识别。
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "25.png", width=500, height=100)
CTC模型(Connectionist temporal classification)
语音识别的注意力模型(attention model):语音识别的输入时间序列都比较长,而翻译的语句通常很短,Tx与Ty差别很大。为了让Tx=Ty,可以把输出相应字符重复并加入空白(下划线”_“)。
没有被空白符”_“分割的重复字符将被折叠到一起,即表示一个字符。通过这样,使得Tx=Ty。
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "26.png", width=500, height=100)
触发字检测:使用RNN模型来建立,RNN检测到触发字后输出1,非触发字输出0。
模型缺点:触发字较非触发字数目少得多,即正负样本分布不均。一种解决办法是在出现一个触发字时,将其附近的RNN都输出1。
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "27.png", width=500, height=100)
libo="C:/Users/libo/Desktop/machine learning/序列模型/图片/"
Image(filename = libo + "28.png", width=500, height=100)
序列模型与注意力机制相关推荐
- 一文读懂序列建模(deeplearning.ai)之序列模型与注意力机制
https://www.toutiao.com/a6663809864260649485/ 作者:Pulkit Sharma,2019年1月21日 翻译:陈之炎 校对:丁楠雅 本文约11000字,建议 ...
- 深度学习笔记 第五门课 序列模型 第三周 序列模型和注意力机制
本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...
- 05.序列模型 W3.序列模型和注意力机制(作业:机器翻译+触发词检测)
文章目录 作业1:机器翻译 1. 日期转换 1.1 数据集 2. 用注意力模型进行机器翻译 2.1 注意力机制 3. 可视化注意力 作业2:触发词检测 1. 数据合成:创建语音数据集 1.1 听一下数 ...
- 05.序列模型 W3.序列模型和注意力机制
文章目录 1. 基础模型 2. 选择最可能的句子 3. 集束搜索(Beam Search) 4. 改进集束搜索 5. 集束搜索的误差分析 6. Bleu 得分 7. 注意力模型直观理解 8. 注意力模 ...
- 5-3 Coursera吴恩达《序列模型》 第三周课程笔记-序列模型和注意力机制
上一周的课程5-2 Coursera吴恩达<序列模型> 第二周课程笔记-自然语言处理和词嵌入介绍了自然语言处理相关内容,例如词汇表征.词嵌入.嵌入矩阵和负采样等概念,以及Word2Vec和 ...
- 吴恩达deeplearning.ai系列课程笔记+编程作业(15)序列模型(Sequence Models)-第三周 序列模型和注意力机制
第五门课 序列模型(Sequence Models) 第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 文章目录 第五门课 序列模型( ...
- 第三周 序列模型和注意力机制(Sequence models Attention mechanism)
第三周 序列模型和注意力机制(Sequence models & Attention mechanism) 文章目录 **第三周 序列模型和注意力机制(**Sequence models &a ...
- 完结篇 | 吴恩达《序列模型》精炼笔记(3)-- 序列模型和注意力机制
AI有道 不可错过的AI技术公众号 关注 1 Basic Models Sequence to sequence(序列)模型在机器翻译和语音识别方面都有着广泛的应用.下面,我们来看一个机器翻译的简单例 ...
- DLNg第三周:序列模型和注意力机制
1.基础模型 将法语翻译为英语,分为编码和解码阶段,将一个序列变为另一个序列.即序列对序列模型. 从图中识别出物体的状态,将图片转换为文字. 先使用CNN处理图片,再使用RNN将其转换为语言描述. 2 ...
最新文章
- python可抓取数据包括什么_Python对JS型数据抓取有什么特别好的方法吗,pythonjs型抓取,想写一个爬虫,但是需要抓...
- 机器学习图像源代码_使用带有代码的机器学习进行快速房地产图像分类
- Cannot modify the value of a static config: spark.sql.queryExecutionListeners
- django mysql 2059_Django mysqlclient后端生成django.db.utils。操作错误:(2059,NULL)在Windows中...
- vue如何获取div的宽度_vue获取dom元素高度的方法
- hashmap删除指定key_Java集合:HashMap底层实现和原理(源码解析)
- window10c语言软件下载,win10中文语言包下载
- java web 课程设计_javaweb期末课程设计
- 一个月通过软考中级软件设计师
- UE4/UE5 python打包Pak和Runtime加载Pak
- 我的Effective C++读书笔记
- 架构师接龙:黄冬邓毅
- Oracle RAC集群安装,从零开始
- OpenCV—Python 图像加减乘除-逻辑运算
- 计算机向u盘拷贝速度慢,U盘读写拷贝速度慢的解决措施
- matplotlib图表多曲线多纵轴绘制工具方法
- 网页占满整个屏幕_CSS网页背景图片等比例占满整个页面的解决方案
- Wolfram Alpha:下一个Cuil还是下一个Google?
- 科技周刊第五期:科学技术在发展中的作用
- IT界CICD新词-Dummy