Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
mtbookv2
Commits
9b395a80
Commit
9b395a80
authored
Jan 15, 2021
by
孟霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
17字面修改
parent
6ccd1667
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
9 行增加
和
9 行删除
+9
-9
Chapter17/chapter17.tex
+9
-9
没有找到文件。
Chapter17/chapter17.tex
查看文件 @
9b395a80
...
...
@@ -109,7 +109,7 @@
\parinterval
传统的语音识别模型和统计机器翻译相似,需要利用声学模型、语言模型和发音词典联合进行识别,系统较为复杂
\upcite
{
DBLP:journals/ftsig/GalesY07,DBLP:journals/taslp/MohamedDH12,DBLP:journals/spm/X12a
}
。而近些年来,随着神经网络的发展,基于神经网络的端到端语音识别模型逐渐受到关注,大大简化了训练流程
\upcite
{
DBLP:conf/nips/ChorowskiBSCB15,DBLP:conf/icassp/ChanJLV16
}
。目前的端到端语音识别模型主要基于序列到序列结构,编码器根据输入的声学特征进一步提取高级特征,解码器根据编码器提取的特征识别对应的文本。在后文中即将介绍的端到端语音翻译模型也是基于十分相似的结构。因此,从某种意义上说,语音识别和翻译所使用的端到端方法与神经机器翻译是一致的。
\parinterval
语音识别目前广泛使用基于Transformer的模型结构(见
{
\chaptertwelve
}
),如图
\ref
{
fig:17-5
}
所示。可以看出,相比文本翻译,模型结构上唯一的区别在于编码器的输入为声学特征,以及编码器底层会使用额外的卷积层来减小输入序列的长度。这是由于语音对应的特征序列过长,在计算注意力模型的时候,会占用大量的内存/显存,并增加训练时间。因此,一个常用的做法是在语音特征上进行两层步长为2的卷积操作,从而将输入序列的长度缩小为之前的1/4。通过大量的语音-标注平行数据对模型进行训练,可以得到高质量的语音识别模型。
\parinterval
语音识别目前广泛使用基于Transformer的模型结构(见
{
\chaptertwelve
}
),如图
\ref
{
fig:17-5
}
所示。可以看出,相比文本翻译,模型结构上唯一的区别在于编码器的输入为声学特征,以及编码器底层会使用额外的卷积层来减小输入序列的长度。这是由于语音对应的特征序列过长,在计算注意力模型的时候,会占用大量的内存/显存,并增加训练时间。因此,一个常用的做法是在语音特征上进行两层步长为2的卷积操作,从而将输入序列的长度缩小为之前的1/4。通过
使用
大量的语音-标注平行数据对模型进行训练,可以得到高质量的语音识别模型。
%----------------------------------------------------------------------------------------------------
\begin{figure}
[htp]
...
...
@@ -135,7 +135,7 @@
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
错误传播问题
}}
。级联模型导致的一个很严重的问题在于,语音识别模型得到的文本如果存在错误,这些错误很可能在翻译过程中被放大,从而使最后翻译结果出现比较大的偏差。比如识别时在句尾少生成了个“吗”,会导致翻译模型将疑问句翻译为陈述句。
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
翻译效率问题
}}
。由于语音识别模型和文本标注模型只能串行地计算,翻译效率相对较低,而实际很多场景中都需要低延时的翻译。
\item
{
\small\bfnew
{
翻译效率问题
}}
。由于语音识别模型和文本标注模型只能串行地计算,翻译效率相对较低,而实际很多场景中都需要
实现
低延时的翻译。
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
语音中的副语言信息丢失
}}
。将语音识别为文本的过程中,语音中包含的语气、情感、音调等信息会丢失,而同一句话在不同的语气中表达的意思很可能是不同的。尤其是在实际应用中,由于语音识别结果通常并不包含标点,还需要额外的后处理模型将标点还原,也会带来额外的计算代价。
\vspace
{
0.5em
}
...
...
@@ -188,7 +188,7 @@
\parinterval
一种思路是进行多任务学习,让模型在训练过程中得到更多的监督信息。使用多个任务强化主任务(机器翻译),在本书的
{
\chapterfifteen
}
和
{
\chaptersixteen
}
也有所涉及。从这个角度说,机器翻译中很多问题的解决手段都是一致的。
\parinterval
语音翻译中多任务学习主要借助语音对应的标注信息,也就是源语言文本。
{
\small\bfnew
{
连接时序分类
}}
\index
{
连接时序分类
}
(Connectionist Temporal Classification,CTC)
\index
{
Connectionist Temporal Classification
}
\upcite
{
DBLP:conf/icml/GravesFGS06
}
是语音处理中最简单有效的一种多任务学习方法
\upcite
{
DBLP:journals/jstsp/WatanabeHKHH17,DBLP:conf/icassp/KimHW17
}
,也被广泛应用于文本识别任务中
\upcite
{
DBLP:journals/pami/ShiBY17
}
。CTC可以将输入序列的每一位置都对应到标注文本中,学习语音和文字之间的软对齐关系。
比如,对于下面的音频序列,CTC可以将每个位置分别对应到同一个词。需要注意的是,CTC会额外新增一个词
$
\epsilon
$
,类似于一个空白词,表示这个位置没有声音或者没有任何对应的预测结果。在对齐完成之后,将相同且连续的词合并,去除
$
\epsilon
$
,就可以得到预测结果,如图
\ref
{
fig:17-8
}
所示
。
\parinterval
语音翻译中多任务学习主要借助语音对应的标注信息,也就是源语言文本。
{
\small\bfnew
{
连接时序分类
}}
\index
{
连接时序分类
}
(Connectionist Temporal Classification,CTC)
\index
{
Connectionist Temporal Classification
}
\upcite
{
DBLP:conf/icml/GravesFGS06
}
是语音处理中最简单有效的一种多任务学习方法
\upcite
{
DBLP:journals/jstsp/WatanabeHKHH17,DBLP:conf/icassp/KimHW17
}
,也被广泛应用于文本识别任务中
\upcite
{
DBLP:journals/pami/ShiBY17
}
。CTC可以将输入序列的每一位置都对应到标注文本中,学习语音和文字之间的软对齐关系。
如图
\ref
{
fig:17-8
}
,对于下面的音频序列,CTC可以将每个位置分别对应到同一个词。需要注意的是,CTC会额外新增一个词
$
\epsilon
$
,类似于一个空白词,表示这个位置没有声音或者没有任何对应的预测结果。在对齐完成之后,将相同且连续的词合并,去除
$
\epsilon
$
,就可以得到预测结果
。
%----------------------------------------------------------------------------------------------------
\begin{figure}
[htp]
...
...
@@ -337,9 +337,9 @@
\parinterval
基于联合模型的方法通常是把翻译任务与其他视觉任务结合,进行联合训练。这种方法也可以被看做是一种多任务学习,只不过这里仅关注翻译和视觉任务。一种常见的方法是共享模型的部分参数来学习不同任务之间相似的部分,并通过特定的模块来学习每个任务特有的部分。
\parinterval
如图
\ref
{
fig:17-14
}
所示,图中
$
y
_{
<
}$
表示当前时刻之前的单词序列,可以将多模态机器翻译任务分解为两个子任务:机器翻译和图片生成
\upcite
{
DBLP:conf/ijcnlp/ElliottK17
}
。其中机器翻译作为主任务,图片生成作为子任务。这里的图片生成指的是从一个图片描述生成对应图片,对于图片生成任务在后面还会有描述。通过单个编码器对源语言数据进行建模,然后通过两个解码器(翻译解码器和图像解码器)来学习翻译任务和图像生成任务。顶层
任务学习每个任务的独立特征,底层共享参数层
能够学习到更丰富的文本表示。
\parinterval
如图
\ref
{
fig:17-14
}
所示,图中
$
y
_{
<
}$
表示当前时刻之前的单词序列,可以将多模态机器翻译任务分解为两个子任务:机器翻译和图片生成
\upcite
{
DBLP:conf/ijcnlp/ElliottK17
}
。其中机器翻译作为主任务,图片生成作为子任务。这里的图片生成指的是从一个图片描述生成对应图片,对于图片生成任务在后面还会有描述。通过单个编码器对源语言数据进行建模,然后通过两个解码器(翻译解码器和图像解码器)来学习翻译任务和图像生成任务。顶层
学习每个任务的独立特征,底层共享参数
能够学习到更丰富的文本表示。
\parinterval
另外在视觉问答领域有研究表明,在多模态任务中,不宜引入过多层的注意力机制,因为过深的模型会导致多模态模型的过拟合
\upcite
{
DBLP:conf/nips/LuYBP16
}
。这一方面是由于深
模型本身对数据的拟合能力,另一方面也是由于多模态任务的数据普遍较小
,容易造成复杂模型的过拟合。从另一角度来说,利用多任务学习的方式,提高模型的泛化能力,也是一种有效防止过拟合现象的方式。类似的思想,也大量使用在多模态自然语言处理任务中,例如图像描述生成、视觉问答等
\upcite
{
DBLP:conf/iccv/AntolALMBZP15
}
。
\parinterval
另外在视觉问答领域有研究表明,在多模态任务中,不宜引入过多层的注意力机制,因为过深的模型会导致多模态模型的过拟合
\upcite
{
DBLP:conf/nips/LuYBP16
}
。这一方面是由于深
层模型本身对数据的拟合能力较强,另一方面也是由于多模态任务的数据普遍较少
,容易造成复杂模型的过拟合。从另一角度来说,利用多任务学习的方式,提高模型的泛化能力,也是一种有效防止过拟合现象的方式。类似的思想,也大量使用在多模态自然语言处理任务中,例如图像描述生成、视觉问答等
\upcite
{
DBLP:conf/iccv/AntolALMBZP15
}
。
%----------------------------------------------------------------------------------------------------
\begin{figure}
[htp]
...
...
@@ -367,7 +367,7 @@
\end{figure}
%----------------------------------------------------------------------------------------------------
\parinterval
传统图像描述生成有两种范式:基于检索的方法和基于模板的方法。其中图
\ref
{
fig:17-15
}
(a)展示了一个基于检索的图像描述生成实例,这种方法在图像描述的候选中选择一个描述输出。但是,弊端是所选择的句子可能会和图像很大程度上不相符。而
\ref
{
fig:17-15
}
(b)展示的是一种基于模版的方法,这种方法需要在图像上提取视觉特征,然后把内容填在实现设计好的模板当中,这种方法的缺点是生成的图像描述过于呆板,“像是在一个模子中刻出来的”说的就是这个意思。近几年来 ,受到机器翻译领域等任务的启发,图像描述生成也开始大量使用编码器-解码器框架。这里会从基础的图像描述范式编码器-解码器框架展开
\upcite
{
DBLP:conf/cvpr/VinyalsTBE15,DBLP:conf/icml/XuBKCCSZB15
}
,并从编码器的改进和解码器的改进两个方面进行介绍。
\parinterval
传统图像描述生成有两种范式:基于检索的方法和基于模板的方法。其中图
\ref
{
fig:17-15
}
(a)展示了一个基于检索的图像描述生成实例,这种方法在图像描述的候选中选择一个描述输出。但是,弊端是所选择的句子可能会和图像很大程度上不相符。而
\ref
{
fig:17-15
}
(b)展示的是一种基于模版的方法,这种方法需要在图像上提取视觉特征,然后把内容填在实现设计好的模板当中,这种方法的缺点是生成的图像描述过于呆板,“像是在一个模子中刻出来的”说的就是这个意思。近几年来 ,受到机器翻译领域等任务的启发,图像描述生成
任务
也开始大量使用编码器-解码器框架。这里会从基础的图像描述范式编码器-解码器框架展开
\upcite
{
DBLP:conf/cvpr/VinyalsTBE15,DBLP:conf/icml/XuBKCCSZB15
}
,并从编码器的改进和解码器的改进两个方面进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -375,7 +375,7 @@
\subsubsection
{
1. 基础框架
}
\parinterval
在编码器-解码器框架中,编码器将输入的图像转换为一种新的“表示”形式,这种“表示”包含了输入图像的所有信息。之后解码器把这种“表示”转换为自然语言描述。比如,可以通过卷积神经网络提取图像特征为一个向量表示。然后,利用长短时记忆网络(LSTM)解码生成文字描述,这个过程中与机器翻译的解码过程类似。这种建模方式存在与
\ref
{
sec:image-augmented-translation
}
描述一样的问题:生成的描述单词不一定需要所有的图像信息,将全局的图像信息送入模型中,可能会引入噪音。这时可以使用注意力机制来缓解该问题
\upcite
{
DBLP:conf/icml/XuBKCCSZB15
}
。
\parinterval
在编码器-解码器框架中,编码器将输入的图像转换为一种新的“表示”形式,这种“表示”包含了输入图像的所有信息。之后解码器把这种“表示”转换为自然语言描述。比如,可以通过卷积神经网络提取图像特征为一个向量表示。然后,利用长短时记忆网络(LSTM
s
)解码生成文字描述,这个过程中与机器翻译的解码过程类似。这种建模方式存在与
\ref
{
sec:image-augmented-translation
}
描述一样的问题:生成的描述单词不一定需要所有的图像信息,将全局的图像信息送入模型中,可能会引入噪音。这时可以使用注意力机制来缓解该问题
\upcite
{
DBLP:conf/icml/XuBKCCSZB15
}
。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -396,7 +396,7 @@
\end{figure}
%----------------------------------------------------------------------------------------------------
\parinterval
以上的方法大都是将图像中的实体、属性、场景等映射到文字上,并把这些信息显式地
添加
到编码器中。另一种方式,把图像中的语义特征隐式地引入编码中
\upcite
{
DBLP:conf/cvpr/ChenZXNSLC17
}
。例如,图像数据可以分解为三个通道(红、绿、蓝),简单来说,就是将图像的每一个像素点按照红色、绿色、蓝色分成三个部分,这样就将图像分成了三个通道。在很多图像中,不同通道伴随的特征是不一样的,可以将其作用于编码器。另一种方法是基于位置信息的编码增强。位置信息指的是图像中对象(物体)的位置。利用目标检测技术检测系统获得图中的对象和对应的特征,这样就确定了图中的对象位置。显然,这些信息可以加强编码器的表示能力
\upcite
{
DBLP:conf/eccv/YaoPLM18
}
。
\parinterval
以上的方法大都是将图像中的实体、属性、场景等映射到文字上,并把这些信息显式地
输入
到编码器中。另一种方式,把图像中的语义特征隐式地引入编码中
\upcite
{
DBLP:conf/cvpr/ChenZXNSLC17
}
。例如,图像数据可以分解为三个通道(红、绿、蓝),简单来说,就是将图像的每一个像素点按照红色、绿色、蓝色分成三个部分,这样就将图像分成了三个通道。在很多图像中,不同通道伴随的特征是不一样的,可以将其作用于编码器。另一种方法是基于位置信息的编码增强。位置信息指的是图像中对象(物体)的位置。利用目标检测技术检测系统获得图中的对象和对应的特征,这样就确定了图中的对象位置。显然,这些信息可以加强编码器的表示能力
\upcite
{
DBLP:conf/eccv/YaoPLM18
}
。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -418,7 +418,7 @@
\parinterval
在计算机视觉中,图像风格变换、图像超分辨率重建等任务,都可以被视为
{
\small\bfnew
{
图像到图像的翻译
}}
\index
{
图像到图像的翻译
}
(Image-to-Image Translation)
\index
{
Image-to-Image Translation
}
问题。与机器翻译类似,这些问题的共同目标是学习从一个对象到另一个对象的映射,只不过这里的对象是指图像,而非机器翻译中的文字。例如,给定物体的轮廓生成真实物体图片,或者给定白天照片生成夜晚的照片等。图像到图像的翻译有广阔的应用场景,如图片补全、风格迁移等。
{
\small\bfnew
{
文本到图像的翻译
}}
\index
{
文本到图像的翻译
}
(Text-to-Image Translation)
\index
{
Text-to-Image Translation
}
是指给定描述物体颜色和形状等细节的自然语言文字,生成对应的图像。该任务也可以看作是图像描述生成的逆任务。
\parinterval
无论是图像到图像的生成,还是文本到图像的生成,
也
可直接使用编码器-解码器框架进行实现。比如,在文本到图像生成中,可以使用机器翻译中的编码器对输入文本进行编码,之后用反卷积神经网络将编码结果转化为图像。近些年,图像生成类任务也取得了很大的进展,这主要得益于生成对抗网络的使用
\upcite
{
DBLP:conf/nips/GoodfellowPMXWOCB14,DBLP:journals/corr/abs-1908-06616,DBLP:conf/icml/ReedAYLSL16,DBLP:journals/corr/DashGALA17
}
。在
{
\chapterthirteen
}
已经介绍了生成对抗网络,而且图像生成也不是本书的重点,感兴趣的读者可以参考
{
\chapterthirteen
}
的内容或者自行查阅相关文献进行了解。
\parinterval
无论是图像到图像的生成,还是文本到图像的生成,
均
可直接使用编码器-解码器框架进行实现。比如,在文本到图像生成中,可以使用机器翻译中的编码器对输入文本进行编码,之后用反卷积神经网络将编码结果转化为图像。近些年,图像生成类任务也取得了很大的进展,这主要得益于生成对抗网络的使用
\upcite
{
DBLP:conf/nips/GoodfellowPMXWOCB14,DBLP:journals/corr/abs-1908-06616,DBLP:conf/icml/ReedAYLSL16,DBLP:journals/corr/DashGALA17
}
。在
{
\chapterthirteen
}
已经介绍了生成对抗网络,而且图像生成也不是本书的重点,感兴趣的读者可以参考
{
\chapterthirteen
}
的内容或者自行查阅相关文献进行了解。
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论