Commit 5e1bdbd4 by 曹润柘

合并分支 'master' 到 'caorunzhe'

Master

查看合并请求 !811
parents 40f9e93d b2f1d7cc
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
\node[anchor=south,font=\footnotesize,inner sep=0pt] at ([yshift=0.1em]key.north){key}; \node[anchor=south,font=\footnotesize,inner sep=0pt] at ([yshift=0.1em]key.north){key};
\node[anchor=south,font=\footnotesize,inner sep=0pt] at ([yshift=0.2em]value.north){value}; \node[anchor=south,font=\footnotesize,inner sep=0pt] at ([yshift=0.2em]value.north){value};
\node[anchor=south,font=\footnotesize,inner sep=0pt] (cache)at ([yshift=2em,xshift=1.5em]key.north){\small\bfnew{Cache}}; \node[anchor=south,font=\footnotesize,inner sep=0pt] (cache)at ([yshift=2em,xshift=1.5em]key.north){\small\bfnew{缓存}};
\node[draw,anchor=east,minimum size=1.8em,fill=orange!15] (dt) at ([yshift=2.1em,xshift=-4em]key.west){${\mathbi{d}}_{t}$}; \node[draw,anchor=east,minimum size=1.8em,fill=orange!15] (dt) at ([yshift=2.1em,xshift=-4em]key.west){${\mathbi{d}}_{t}$};
\node[anchor=north,font=\footnotesize] (readlab) at ([xshift=2.8em,yshift=0.3em]dt.north){\red{读取}}; \node[anchor=north,font=\footnotesize] (readlab) at ([xshift=2.8em,yshift=0.3em]dt.north){\red{读取}};
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
\foreach \x in {1,2,3,4} \foreach \x in {1,2,3,4}
\node[draw,inner sep=0pt,minimum height=1em,minimum width=1.6em,fill=red!30,rounded corners=1pt] (c1_\x) at (0em+2em*\x, 0em){}; \node[draw,inner sep=0pt,minimum height=1em,minimum width=1.6em,fill=red!30,rounded corners=1pt] (c1_\x) at (0em+2em*\x, 0em){};
\node[anchor=north] (hpre) at ([yshift=1.8em]c1_1.north) {${\mathbi{h}}^ {\textrm{pre}j}$}; \node[anchor=north] (hpre) at ([yshift=1.8em]c1_1.north) {${\mathbi{h}}^ {\textrm{pre}k}$};
\foreach \x in {1,2,3} \foreach \x in {1,2,3}
\node[draw,inner sep=0pt,minimum height=1em,minimum width=1.6em,fill=red!30,rounded corners=1pt] (c2_\x) at (11em+2em*\x, 0em){}; \node[draw,inner sep=0pt,minimum height=1em,minimum width=1.6em,fill=red!30,rounded corners=1pt] (c2_\x) at (11em+2em*\x, 0em){};
\node[anchor=north] (hpre) at ([yshift=1.8em]c2_1.north) {${\mathbi{h}}^ {\textrm{pre}1}$}; \node[anchor=north] (hpre) at ([yshift=1.8em]c2_1.north) {${\mathbi{h}}^ {\textrm{pre}1}$};
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
\node[draw,fill=orange!30,inner sep=0pt, minimum size=1.2em, circle] (add3) at (10em, 5.2em){}; \node[draw,fill=orange!30,inner sep=0pt, minimum size=1.2em, circle] (add3) at (10em, 5.2em){};
\node[anchor=north] (cond) at ([xshift=-1em,yshift=0.5em]add3.north) {${\mathbi{d}}$}; \node[anchor=north] (cond) at ([xshift=-1em,yshift=0.5em]add3.north) {${\mathbi{d}}$};
\node[anchor=north] (cons1) at ([xshift=-1em,yshift=0.5em]add2.north) {${\mathbi{s}}^1$}; \node[anchor=north] (cons1) at ([xshift=-1em,yshift=0.5em]add2.north) {${\mathbi{s}}^1$};
\node[anchor=north] (consj) at ([xshift=-1em,yshift=0.5em]add1.north) {${\mathbi{s}}^j$}; \node[anchor=north] (consj) at ([xshift=-1em,yshift=0.5em]add1.north) {${\mathbi{s}}^k$};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\node[draw,rounded corners=2pt,drop shadow,fill=white, minimum width=8.3em][fit=(c1_1)(c1_4)](box1){}; \node[draw,rounded corners=2pt,drop shadow,fill=white, minimum width=8.3em][fit=(c1_1)(c1_4)](box1){};
\node[draw,rounded corners=2pt,drop shadow,fill=white,minimum width=6.4em][fit=(c2_1)(c2_3)](box2){}; \node[draw,rounded corners=2pt,drop shadow,fill=white,minimum width=6.4em][fit=(c2_1)(c2_3)](box2){};
...@@ -67,8 +67,8 @@ ...@@ -67,8 +67,8 @@
\draw[->,thick] ([yshift=0.1em]sigma.90) -- ([yshift=-0.1em]n2.-90); \draw[->,thick] ([yshift=0.1em]sigma.90) -- ([yshift=-0.1em]n2.-90);
\draw[->,thick] ([yshift=0.1em]n2.90) -- node[right]{$ \widetilde{\mathbi{h}}_{\textrm{t}}$}([yshift=2em]n2.90); \draw[->,thick] ([yshift=0.1em]n2.90) -- node[right]{$ \widetilde{\mathbi{h}}_{\textrm{t}}$}([yshift=2em]n2.90);
\draw[decorate,decoration={brace, mirror},gray, thick] ([yshift=-2em]hh.-180) -- node[font=\scriptsize,text=black,below]{前几}([yshift=-2em]box2.0); \draw[decorate,decoration={brace, mirror},gray, thick] ([yshift=-2em]hh.-180) -- node[font=\scriptsize,text=black,below]{前几个句子}([yshift=-2em]box2.0);
\draw[decorate,decoration={brace, mirror},gray, thick] ([yshift=-2em]box3.-180) -- node[font=\scriptsize,text=black,below]{当前句}([yshift=-2em]box3.0); \draw[decorate,decoration={brace, mirror},gray, thick] ([yshift=-2em]box3.-180) -- node[font=\scriptsize,text=black,below]{当前句}([yshift=-2em]box3.0);
\draw[->, thick, rounded corners=2pt] ([yshift=0.1em]add3.90) -- ([yshift=2.1em]add3.90) -- ([xshift=-0.1em]sigma.180); \draw[->, thick, rounded corners=2pt] ([yshift=0.1em]add3.90) -- ([yshift=2.1em]add3.90) -- ([xshift=-0.1em]sigma.180);
......
...@@ -6,21 +6,22 @@ ...@@ -6,21 +6,22 @@
\tikzstyle{every node}=[scale=0.7] \tikzstyle{every node}=[scale=0.7]
\node(encoder_c)[coder]{\large{编码器}}; \node(encoder_c)[coder]{\large{编码器}};
\node(encoder_s)[coder, right of = encoder_c, xshift=3.5cm, fill=red!25]{\large{编码器}}; \node(encoder_s)[coder, right of = encoder_c, xshift=3.5cm, fill=red!25]{\large{编码器}};
\node(h_pre)[above of = encoder_c, yshift=1.3cm,scale=1.3]{${\mathbi{h}}_{pre}$}; \node(h_pre)[above of = encoder_c, yshift=1.3cm,scale=1.3]{${\mathbi{h}}_{\rm pre}$};
\node(h)[above of = encoder_s, yshift=1.3cm,scale=1.3]{$\mathbi{h}$}; \node(h)[above of = encoder_s, yshift=1.3cm,scale=1.3]{$\mathbi{h}$};
\node(cir)[circle,very thick, right of = h, draw=black!90,minimum width=0.5cm,xshift=1.1cm]{}; \node(cir)[circle,very thick, right of = h, draw=black!90,minimum width=0.5cm,xshift=1.1cm]{};
\draw[-,very thick,draw=black!90]([xshift=0.04cm]cir.west)--([xshift=-0.04cm]cir.east); \draw[-,very thick,draw=black!90]([xshift=0.04cm]cir.west)--([xshift=-0.04cm]cir.east);
\draw[-,very thick,draw=black!90]([yshift=-0.04cm]cir.north)--([yshift=0.04cm]cir.south); \draw[-,very thick,draw=black!90]([yshift=-0.04cm]cir.north)--([yshift=0.04cm]cir.south);
\node(last)[below of = encoder_c, yshift=-1.3cm]{\large{前一}}; \node(last)[below of = encoder_c, yshift=-1.3cm]{\large{前一个句子}};
\node(current)[below of = encoder_s, yshift=-1.3cm]{\large{当前句}}; \node(current)[below of = encoder_s, yshift=-1.3cm]{\large{当前句}};
\node(attention_left)[attention, above of = encoder_c, xshift=2.4cm,yshift=3.1cm]{\large{注意力机制}}; \node(attention_left)[attention, above of = encoder_c, xshift=2.4cm,yshift=3.1cm]{\large{注意力机制}};
\node(d)[above of = attention_left, yshift=1.1cm,scale=1.3]{$\mathbi{d}$}; \node(d)[above of = attention_left, yshift=1.1cm,scale=1.3]{$\mathbi{d}$};
\node(ground)[rectangle, thick, rounded corners, minimum width=5cm, minimum height=5.5cm, right of = encoder_s, xshift=4.4cm,yshift=2.2cm, draw=black!70, fill=gray!10]{}; \node(ground)[rectangle, thick, rounded corners, minimum width=5cm, minimum height=5.5cm, right of = encoder_s, xshift=4.4cm,yshift=2.2cm, draw=black!70, fill=gray!10]{};
\node(decoder)[above of = encoder_s, xshift=3.1cm]{\large{解码器}}; \node(decoder)[above of = encoder_s, xshift=3.1cm]{\large{解码器}};
\node(attention_right)[attention, right of = attention_left, xshift=5.4cm,yshift=-0.4cm]{\large{注意力机制}}; \node(attention_right)[attention, right of = attention_left, xshift=5.4cm,yshift=-0.4cm]{\large{注意力机制}};
\node(target)[right of = current, xshift=5.3cm]{\large{目标}}; \node(target)[right of = current, xshift=5.3cm]{\large{目标语言句子(位置$j$之前)}};
\node(point_below)[right of = encoder_s, xshift=5.3cm]{\Huge{...}}; \node(point_below)[right of = encoder_s, xshift=5.3cm]{\Huge{...}};
\node(point_above)[above of = attention_right, yshift=1.8cm]{\Huge{...}}; \node(point_above)[above of = attention_right, yshift=1.8cm]{\Huge{...}};
\node(target_above)[above of = attention_right, yshift=3.3cm]{\large{目标语言句子}};
\draw[->, very thick](last)to([yshift=-0.05cm]encoder_c.south); \draw[->, very thick](last)to([yshift=-0.05cm]encoder_c.south);
\draw[->, very thick](current)to([yshift=-0.05cm]encoder_s.south); \draw[->, very thick](current)to([yshift=-0.05cm]encoder_s.south);
......
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
\node(tree)[word, below of = sky, yshift=-0.75cm, fill=blue!15]{tree}; \node(tree)[word, below of = sky, yshift=-0.75cm, fill=blue!15]{tree};
\node(cir)[circle,thick, minimum width=0.6cm, xshift=8cm, draw=black]{}; \node(cir)[circle,thick, minimum width=0.6cm, xshift=8cm, draw=black]{};
\node(decoder)[rectangle, rounded corners, minimum height=2.2em,minimum width=4.3em, right of = cir,xshift=3cm, draw=black, fill=blue!25]{\large{解码器}}; \node(decoder)[rectangle, rounded corners, minimum height=2.2em,minimum width=4.3em, right of = cir,xshift=3cm, draw=black, fill=blue!25]{\large{解码器}};
\node(yn_1)[below of = decoder,yshift=-2cm,scale=1.2]{$\rm y_{{<}_{n-1}}$}; \node(yn_1)[below of = decoder,yshift=-2cm,scale=1.2]{$y_{<j}$};
\node(yn_2)[above of = decoder,yshift=2cm,scale=1.2]{$\rm y_{n-1}$(bank)}; \node(yn_2)[above of = decoder,yshift=2cm,scale=1.2]{$y_{j}$};
\draw[->, thick]([xshift=0.1cm]figure.east)to([xshift=2cm]figure.east); \draw[->, thick]([xshift=0.1cm]figure.east)to([xshift=2cm]figure.east);
\draw[-,thick]([xshift=-0.03cm]cir.east)to([xshift=0.03cm]cir.west); \draw[-,thick]([xshift=-0.03cm]cir.east)to([xshift=0.03cm]cir.west);
......
...@@ -9,17 +9,17 @@ ...@@ -9,17 +9,17 @@
\node(encoder_left)[encoder, above of = decoder_left, yshift=1.6cm]{\normalsize{编码器}}; \node(encoder_left)[encoder, above of = decoder_left, yshift=1.6cm]{\normalsize{编码器}};
\node(encoder_right)[encoder, above of = decoder_right, yshift=1.6cm]{\normalsize{编码器}}; \node(encoder_right)[encoder, above of = decoder_right, yshift=1.6cm]{\normalsize{编码器}};
\node(text_left)[below of = encoder_left, yshift=1.5cm]{\normalsize{前文}}; \node(text_left)[below of = encoder_left, yshift=1.5cm]{\normalsize{前文}};
\node(text_right)[below of = encoder_right, yshift=1.5cm]{\normalsize{源语}}; \node(text_right)[below of = encoder_right, yshift=1.5cm]{\normalsize{源语言句子}};
\node(text_top)[above of = decoder_right, yshift=-1.6cm]{\normalsize{句子级翻译结果}}; \node(text_top)[above of = decoder_right, yshift=-1.6cm]{\normalsize{句子级翻译结果}};
\node(title_1)[above of = text_left, xshift=1.1cm, yshift=3cm]{\large\bfnew{一阶段解码}}; \node(title_1)[above of = text_left, xshift=1.1cm, yshift=3cm]{\large\bfnew{一阶段翻译}};
\node(ground2)[rectangle,very thick,rounded corners,minimum width=5cm,minimum height=5.8cm,right of = decoder_right,xshift=5.3cm,yshift=1.6cm,draw=black,dashed]{}; \node(ground2)[rectangle,very thick,rounded corners,minimum width=5cm,minimum height=5.8cm,right of = decoder_right,xshift=5.3cm,yshift=1.6cm,draw=black,dashed]{};
\node(ground1)[rectangle,thick,rounded corners,minimum width=3.3cm,minimum height=5cm,right of = decoder_right,xshift=4.8cm,yshift=1.58cm,draw=black,fill=yellow!15]{}; \node(ground1)[rectangle,thick,rounded corners,minimum width=3.3cm,minimum height=5cm,right of = decoder_right,xshift=4.8cm,yshift=1.58cm,draw=black,fill=yellow!15]{};
\node(attention_below)[attention, right of = decoder_right, xshift=4.8cm]{\normalsize{注意力机制}}; \node(attention_below)[attention, right of = decoder_right, xshift=4.8cm]{\normalsize{注意力机制}};
\node(attention_above)[attention, above of = attention_below, yshift=1.6cm]{\normalsize{注意力机制}}; \node(attention_above)[attention, above of = attention_below, yshift=1.6cm]{\normalsize{注意力机制}};
\node(ffn)[attention, above of = attention_above, yshift=1.6cm, fill=blue!8]{\normalsize{前馈神经网络}}; \node(ffn)[attention, above of = attention_above, yshift=1.6cm, fill=blue!8]{\normalsize{前馈神经网络}};
\node(n)[right of = attention_above, xshift=2.4cm,scale=1.5]{$\times N$}; \node(n)[right of = attention_above, xshift=2.4cm,scale=1.5]{$\times N$};
\node(text_2)[above of = ffn, yshift=1.9cm]{\normalsize{上下文修正结果}}; \node(text_2)[above of = ffn, yshift=1.9cm]{\normalsize{基于上下文的修正结果}};
\node(title_2)[right of = title_1, xshift=6.3cm]{\large\bfnew{二阶段解码}}; \node(title_2)[right of = title_1, xshift=6.3cm]{\large\bfnew{二阶段翻译}};
%\node(text_rright)[right of = text_right, xshift=5.5cm]{\normalsize{句子级翻译结果}}; %\node(text_rright)[right of = text_right, xshift=5.5cm]{\normalsize{句子级翻译结果}};
\draw[->,very thick]([yshift=-0.1cm]text_left.south)to(encoder_left.north); \draw[->,very thick]([yshift=-0.1cm]text_left.south)to(encoder_left.north);
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\section{语音翻译} \section{语音翻译}
\parinterval 语音,是人类交流中最常用的一种信息载体。从日常聊天、出国旅游,到国际会议、跨国合作,对于语音进行翻译的需求不断增加。甚至在有些场景下,用语音进行交互要比用文本进行交互频繁得多。因此,{\small\bfnew{语音翻译}}\index{语音翻译}(Speech Translation)\index{Speech Translation}也成为了语音处理和机器翻译相结合的重要产物。根据目标语言的载体类型,可以将语音翻译分为{\small\bfnew{语音到文本翻译}}\index{语音到文本翻译}(Speech-to-Text Translation)\index{Speech-to-Text Translation}{\small\bfnew{语音到语音翻译}}\index{语音到语音翻译}(Speech-to-Speech Translation)\index{Speech-to-Speech Translation};基于翻译的实时性,还可以分为{\small\bfnew{实时语音翻译}}\index{实时语音翻译}(即同声传译,Simultaneous Translation)\index{Simultaneous Translation}{\small\bfnew{离线语音翻译}}(Offline Speech Translation)\index{离线语音翻译}\index{Offline Speech Translation}。本节主要关注离线语音到文本翻译方法(简称为语音翻译),分别从音频处理、级联语音翻译和端到端语音翻译几个角度开展介绍 \parinterval 语音,是人类交流中最常用的一种信息载体。从日常聊天、出国旅游,到国际会议、跨国合作,对于语音进行翻译的需求不断增加。甚至在有些场景下,用语音进行交互要比用文本进行交互频繁得多。因此,{\small\bfnew{语音翻译}}\index{语音翻译}(Speech Translation)\index{Speech Translation}也成为了语音处理和机器翻译相结合的重要产物。根据目标语言的载体类型,可以将语音翻译分为{\small\bfnew{语音到文本翻译}}\index{语音到文本翻译}(Speech-to-Text Translation)\index{Speech-to-Text Translation}{\small\bfnew{语音到语音翻译}}\index{语音到语音翻译}(Speech-to-Speech Translation)\index{Speech-to-Speech Translation};基于翻译的实时性,还可以分为{\small\bfnew{实时语音翻译}}\index{实时语音翻译}(即同声传译,Simultaneous Translation)\index{Simultaneous Translation}{\small\bfnew{离线语音翻译}}(Offline Speech Translation)\index{离线语音翻译}\index{Offline Speech Translation}。本节主要关注离线语音到文本翻译方法(简称为语音翻译),分别从音频处理、级联语音翻译和端到端语音翻译几个角度开展讨论
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
\subsection{音频处理} \subsection{音频处理}
\parinterval 为了保证对相关内容描述的完整性,这里对语音处理的基本知识作简要介绍。不同于文本,音频本质上是经过若干信号处理之后的{\small\bfnew{波形}}(Waveform)\index{Waveform}。具体来说,声音是一种空气的震动,因此可以被转换为模拟信号。模拟信号是一段连续的信号,经过采样变为离散数字信号。采样是每隔固定的时间记录一下声音的振幅,采样率表示每秒的采样点数,单位是赫兹(Hz)。采样率越高,结果的损失则越小。通常来说,采样的标准是能够通过离散化的数字信号重现原始语音。我们日常生活中使用的手机和电脑设备的采样率一般为16kHz,表示每秒16000个采样点;而音频CD的采样率可以达到44.1kHz。 经过进一步的量化,将采样点的值转换为整型数值保存,从而减少占用的存储空间,通常采用的是16位量化。将采样率和量化位数相乘,就可以得到{\small\bfnew{比特率}}\index{比特率}(Bits Per Second,BPS)\index{Bits Per Second},表示音频每秒占用的位数。例如,16kHz采样率和16位量化的音频,比特率为256kb/s。音频处理的整体流程如图\ref{fig:17-2}所示\upcite{洪青阳2020语音识别原理与应用,陈果果2020语音识别实战} \parinterval 为了保证对相关内容描述的完整性,这里对语音处理的基本知识作简要介绍。不同于文本,音频本质上是经过若干信号处理之后的{\small\bfnew{波形}}(Waveform)\index{Waveform}。具体来说,声音是一种空气的震动,因此可以被转换为模拟信号。模拟信号是一段连续的信号,经过采样变为离散数字信号。采样是每隔固定的时间记录一下声音的振幅,采样率表示每秒的采样点数,单位是赫兹(Hz)。采样率越高,结果的损失则越小。通常来说,采样的标准是能够通过离散化的数字信号重现原始语音。我们日常生活中使用的手机和电脑设备的采样率一般为16kHz,表示每秒16000个采样点;而音频CD的采样率可以达到44.1kHz。 经过进一步的量化,将采样点的值转换为整型数值保存,从而减少占用的存储空间,通常采用的是16位量化。将采样率和量化位数相乘,就可以得到{\small\bfnew{比特率}}\index{比特率}(Bits Per Second,BPS)\index{Bits Per Second},表示音频每秒占用的位数。例如,16kHz采样率和16位量化的音频,比特率为256kb/s。音频处理的整体流程如图\ref{fig:17-2}所示\upcite{洪青阳2020语音识别原理与应用,陈果果2020语音识别实战}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
\end{figure} \end{figure}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\parinterval 经过上面的描述可以看出,音频的表示实际上是一个非常长的采样点序列,这导致了直接使用现有的深度学习技术处理音频序列较为困难。并且,原始的音频信号中可能包含着较多的噪声、环境声或冗余信息,也会对模型产生干扰。因此,一般会对音频序列进行处理来提取声学特征,具体为将长序列的采样点序列转换为短序列的特征向量序列,再用于下游系统模块。虽然已有一些工作不依赖特征提取,直接在原始的采样点序列上进行声学建模和模型训练\upcite{DBLP:conf/interspeech/SainathWSWV15},但目前的主流方法仍然是基于声学特征进行建模\upcite{DBLP:conf/icassp/MohamedHP12} \parinterval 经过上面的描述可以看出,音频的表示实际上是一个非常长的采样点序列,这导致了直接使用现有的深度学习技术处理音频序列较为困难。并且,原始的音频信号中可能包含着较多的噪声、环境声或冗余信息,也会对模型产生干扰。因此,一般会对音频序列进行处理来提取声学特征,具体为将长序列的采样点序列转换为短序列的特征向量序列,再用于下游系统。虽然已有一些工作不依赖特征提取,直接在原始的采样点序列上进行声学建模和模型训练\upcite{DBLP:conf/interspeech/SainathWSWV15},但目前的主流方法仍然是基于声学特征进行建模\upcite{DBLP:conf/icassp/MohamedHP12}
\parinterval 声学特征提取的第一步是预处理。其流程主要是对音频进行预加重、分帧和加窗。预加重用来提升音频信号中的高频部分,目的是使频谱更加平滑。分帧(原理如图\ref{fig:17-3}所示)是基于短时平稳假设,即根据生物学特征,语音信号是一个缓慢变化的过程,10ms$\thicksim$30ms的信号片段是相对平稳的。基于这个假设,一般将每25ms作为一帧来提取特征,这个时间称为{\small\bfnew{帧长}}\index{帧长}(Frame Length)\index{Frame Length}。同时,为了保证不同帧之间的信号平滑性,使每两个相邻帧之间存在一定的重合部分。一般每隔10ms取一帧,这个时长称为{\small\bfnew{帧移}}\index{帧移}(Frame Shift)\index{Frame Shift}。为了缓解分帧带来的频谱泄漏,对每帧的信号进行加窗处理使其幅度在两段渐变到0,一般采用的是{\small\bfnew{汉明窗}}\index{汉明窗}(Hamming)\index{Hamming}\upcite{洪青阳2020语音识别原理与应用} \parinterval 声学特征提取的第一步是预处理。其流程主要是对音频进行预加重、分帧和加窗。预加重用来提升音频信号中的高频部分,目的是使频谱更加平滑。分帧(原理如图\ref{fig:17-3}所示)是基于短时平稳假设,即根据生物学特征,语音信号是一个缓慢变化的过程,10ms$\thicksim$30ms的信号片段是相对平稳的。基于这个假设,一般将每25ms作为一帧来提取特征,这个时间称为{\small\bfnew{帧长}}\index{帧长}(Frame Length)\index{Frame Length}。同时,为了保证不同帧之间的信号平滑性,使每两个相邻帧之间存在一定的重合部分。一般每隔10ms取一帧,这个时长称为{\small\bfnew{帧移}}\index{帧移}(Frame Shift)\index{Frame Shift}。为了缓解分帧带来的频谱泄漏,对每帧的信号进行加窗处理使其幅度在两段渐变到0,一般采用的是{\small\bfnew{汉明窗}}\index{汉明窗}(Hamming)\index{Hamming}\upcite{洪青阳2020语音识别原理与应用}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
\parinterval 经过了上述的预处理操作,可以得到音频对应的帧序列,之后通过不同的操作来提取不同类型的声学特征。常用的声学特征包括{\small\bfnew{Mel频率倒谱系数}}\index{Mel频率倒谱系数}(Mel-Frequency Cepstral Coefficient,MFCC)\index{Mel-Frequency Cepstral Coefficient}{\small\bfnew{感知线性预测系数}}\index{感知线性预测系数}(Perceptual Lienar Predictive,PLP)\index{Perceptual Lienar Predictive}{\small\bfnew{滤波器组}}\index{滤波器组}(Filter-bank,Fbank)\index{Filter-bank}等。MFCC、PLP和Fbank特征都需要对预处理后的音频做{\small\bfnew{短时傅里叶变换}}\index{短时傅里叶变换}(Short-time Fourier Tranform,STFT)\index{Short-time Fourier Tranform},得到具有规律的线性分辨率。之后再经过特定的操作,得到各种声学特征。不同声学特征的特点是不同的,MFCC去相关性较好,PLP抗噪性强,FBank可以保留更多的语音原始特征。在语音翻译中,比较常用的声学特征为FBank或MFCC\upcite{洪青阳2020语音识别原理与应用} \parinterval 经过了上述的预处理操作,可以得到音频对应的帧序列,之后通过不同的操作来提取不同类型的声学特征。常用的声学特征包括{\small\bfnew{Mel频率倒谱系数}}\index{Mel频率倒谱系数}(Mel-Frequency Cepstral Coefficient,MFCC)\index{Mel-Frequency Cepstral Coefficient}{\small\bfnew{感知线性预测系数}}\index{感知线性预测系数}(Perceptual Lienar Predictive,PLP)\index{Perceptual Lienar Predictive}{\small\bfnew{滤波器组}}\index{滤波器组}(Filter-bank,Fbank)\index{Filter-bank}等。MFCC、PLP和Fbank特征都需要对预处理后的音频做{\small\bfnew{短时傅里叶变换}}\index{短时傅里叶变换}(Short-time Fourier Tranform,STFT)\index{Short-time Fourier Tranform},得到具有规律的线性分辨率。之后再经过特定的操作,得到各种声学特征。不同声学特征的特点是不同的,MFCC去相关性较好,PLP抗噪性强,FBank可以保留更多的语音原始特征。在语音翻译中,比较常用的声学特征为FBank或MFCC\upcite{洪青阳2020语音识别原理与应用}
\parinterval 某种程度上讲,提取到的声学特征可以类比于计算机视觉中的像素特征,或者自然语言处理中的词嵌入表示。不同之处在于,声学特征更加复杂多变,可能存在着较多的噪声和冗余信息。此外,相比对应的文字序列,音频提取到的特征序列长度要大十倍以上。比如,人类正常交流中每秒钟一般可以说2-3个字,而每秒钟的语音可以提取得到100帧的特征序列。巨大的长度比差异也为语音翻译中对声学特征建模带来了困难 \parinterval 实际上,提取到的声学特征可以类比于计算机视觉中的像素特征,或者自然语言处理中的词嵌入表示。不同之处在于,声学特征更加复杂多变,可能存在着较多的噪声和冗余信息。此外,相比对应的文字序列,音频提取到的特征序列长度要大十倍以上。比如,人类正常交流中每秒钟一般可以说2-3个字,而每秒钟的语音可以提取得到100帧的特征序列。巨大的长度比差异也为声学特征建模带来了挑战
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
...@@ -115,9 +115,9 @@ ...@@ -115,9 +115,9 @@
\subsubsection{1. 语音识别方法} \subsubsection{1. 语音识别方法}
\parinterval 传统的语音识别模型和统计机器翻译相似,需要利用声学模型、语言模型和发音词典联合进行识别,系统较为复杂\upcite{DBLP:journals/ftsig/GalesY07,DBLP:journals/taslp/MohamedDH12,DBLP:journals/spm/X12a}。而近些年来,随着神经网络的发展,基于神经网络的端到端语音识别模型逐渐受到关注,大大简化了训练流程\upcite{DBLP:conf/nips/ChorowskiBSCB15,DBLP:conf/icassp/ChanJLV16}。目前的端到端语音识别模型主要基于序列到序列结构,编码器根据输入的声学特征进一步提取高级特征,解码器根据编码器提取的特征识别对应的文本。在后文中即将介绍的端到端语音翻译模型也是基于十分相似的结构。因此,从某种意义上说,语音识别和翻译的端到端方法与神经机器翻译是一致的。 \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] \begin{figure}[htp]
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
\subsubsection{2. 语音识别结果的表示} \subsubsection{2. 语音识别结果的表示}
\parinterval 级联语音翻译模型利用翻译模型将语音识别结果翻译为目标语言文本,但存在的一个问题是语音识别模型只输出One-best,其中可能存在一些识别错误,这些错误在翻译过程中会被放大,导致最终翻译结果偏离原本意思,也就是错误传播问题。传统级联语音模型的一个主要方向是丰富语音识别模型的预测结果,为翻译模型提供更多的信息,具体做法是在语音识别模型中,声学模型解码得到词格来取代One-best识别结果。词格是一种有向无环图,包含单个起点和终点,图中的每条边记录了每个词和对应的转移概率信息,如图\ref{fig:17-6}所示。 \parinterval 级联语音翻译模型利用翻译模型将语音识别结果翻译为目标语言文本,但存在的一个问题是语音识别模型只输出One-best,其中可能存在一些识别错误,这些错误在翻译过程中会被放大,也就是错误传播问题。传统级联语音模型的一个主要方向是丰富语音识别模型的预测结果,为翻译模型提供更多的信息,具体做法是在语音识别模型中,声学模型解码得到词格来取代One-best 识别结果。词格是一种有向无环图,包含单个起点和终点,图中的每条边记录了每个词和对应的转移概率,如图\ref{fig:17-6}所示。
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -145,9 +145,9 @@ ...@@ -145,9 +145,9 @@
\end{figure} \end{figure}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\parinterval 可以看出,词格可以保存多条搜索路径,路径中保存了输入序列的时间信息以及解码过程,翻译模型基于更丰富的词格信息进行翻译,可以降低语音识别模型带来的误差\upcite{DBLP:conf/acl/ZhangGCF19,DBLP:conf/acl/SperberNPW19}。但在端到端语音识别模型中,一般基于束搜索方法进行解码,且解码序列的长度与输入序列并不匹配,相比传统声学模型解码丢失了语音的时间信息,因此这种基于词格的方法主要集中在传统语音识别模型上和端到端文本翻译模型上。 \parinterval 可以看出,词格可以保存多条搜索路径,路径中保存了输入序列的时间信息以及解码过程。翻译模型基于词格进行翻译,可以降低语音识别模型带来的误差\upcite{DBLP:conf/acl/ZhangGCF19,DBLP:conf/acl/SperberNPW19}。但在端到端语音识别模型中,一般基于束搜索方法进行解码,且解码序列的长度与输入序列并不匹配,相比传统声学模型解码丢失了语音的时间信息,因此这种基于词格的方法主要集中在传统语音识别系统上。
\parinterval 为了降低错误传播问题带来的影响,一种思路是通过一个后处理模型修正识别结果中的错误,再送给文本翻译模型进行翻译。也可以进一步对文本做{\small\bfnew{顺滑}}\index{顺滑}(Disfluency Detection\index{Disfluency Detection}),使得送给翻译系统的文本更加干净、流畅,比如除去一些导致停顿的语气词。这一做法在工业界得到了广泛应用,但由于每个模型只能串行地计算,也会带来额外的计算代价以及运算时间。另外一种思路是训练更加健壮的文本翻译模型,使其可以处理输入中存在的噪声或误差\upcite{DBLP:conf/acl/LiuTMCZ18}随着技术的不断发展,如何利用单个模型实现语音翻译成为了人们关注的热点,也就是端到端语音翻译,在下一节将进行重点介绍。 \parinterval 为了降低错误传播问题带来的影响,一种思路是通过一个后处理模型修正识别结果中的错误,再送给文本翻译模型进行翻译。也可以进一步对文本做{\small\bfnew{顺滑}}\index{顺滑}(Disfluency Detection\index{Disfluency Detection}),使得送给翻译系统的文本更加干净、流畅,比如除去一些导致停顿的语气词。这一做法在工业界得到了广泛应用,但由于每个模型只能串行地计算,也会带来额外的计算代价以及运算时间。另外一种思路是训练更加健壮的文本翻译模型,使其可以处理输入中存在的噪声或误差\upcite{DBLP:conf/acl/LiuTMCZ18}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
...@@ -155,7 +155,7 @@ ...@@ -155,7 +155,7 @@
\subsection{端到端语音翻译} \subsection{端到端语音翻译}
\parinterval 尽管级联语音翻译模型可以利用语音识别和文本翻译模型来得到语音对应的翻译结果,但不可避免地存在一些缺陷: \parinterval 级联语音翻译模型结构简单、易于实现,但不可避免地存在一些缺陷:
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{itemize} \begin{itemize}
...@@ -164,7 +164,7 @@ ...@@ -164,7 +164,7 @@
\vspace{0.5em} \vspace{0.5em}
\item 翻译效率问题。由于需要语音识别模型和文本标注模型只能串行地计算,翻译效率相对较低,而实际很多场景中都需要达到低延时的翻译。 \item 翻译效率问题。由于需要语音识别模型和文本标注模型只能串行地计算,翻译效率相对较低,而实际很多场景中都需要达到低延时的翻译。
\vspace{0.5em} \vspace{0.5em}
\item 语音中的副语言信息丢失。将语音识别为文本的过程中,语音中包含的语气、情感、音调等信息会丢失,而同一句话在不同的语气中表达的意思很可能是不同的。尤其是在实际中,由于语音识别结果通常并不包含标点,还需要额外的后处理模型将标点还原,也会带来额外的计算代价。 \item 语音中的副语言信息丢失。将语音识别为文本的过程中,语音中包含的语气、情感、音调等信息会丢失,而同一句话在不同的语气中表达的意思很可能是不同的。尤其是在实际应用中,由于语音识别结果通常并不包含标点,还需要额外的后处理模型将标点还原,也会带来额外的计算代价。
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
...@@ -174,9 +174,9 @@ ...@@ -174,9 +174,9 @@
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item 端到端模型不需要多阶段的生成,因此避免了错误传播问题。 \item 端到端模型不需要多阶段的处理,因此避免了错误传播问题。
\vspace{0.5em} \vspace{0.5em}
\item 同样地,端到端模型相比级联模型可以减少将近一半的模型参数,翻译效率可以得到明显提升 \item 同样地,端到端模型所涉及的模块更少,容易控制模型体积
\vspace{0.5em} \vspace{0.5em}
\item 由于端到端模型语音信号可以直接作用于翻译过程,因此可以使得副语言信息得以体现。 \item 由于端到端模型语音信号可以直接作用于翻译过程,因此可以使得副语言信息得以体现。
\vspace{0.5em} \vspace{0.5em}
...@@ -206,14 +206,14 @@ ...@@ -206,14 +206,14 @@
\end{itemize} \end{itemize}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\parinterval 针对这两个问题,研究人员们也提出了很多方法进行缓解,包括多任务学习、迁移学习等,主要思想都是利用语音识别或文本翻译数据来指导模型的学习。并且,文本翻译中的很多方法和思想都对语音翻译技术的发展提供了思路。如何将其他领域现有的工作在语音翻译任务上验证,并针对语音这一信息载体进行特定的建模适应,是语音翻译研究当前的重点\upcite{DBLP:conf/mtsummit/GangiNCDT19} \parinterval 针对这两个问题,研究人员们也提出了很多方法进行缓解,包括多任务学习、迁移学习等,主要思想都是利用语音识别或文本翻译数据来指导模型的学习。并且,文本翻译的很多方法对语音翻译技术的发展提供了思路。如何将其他领域现有的工作在语音翻译任务上验证,也是语音翻译研究当前所关注的\upcite{DBLP:conf/mtsummit/GangiNCDT19}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{1. 多任务学习} \subsubsection{1. 多任务学习}
\parinterval 一种常用的改进语言翻译的思路是进行多任务学习,让模型在训练过程中得到更多的监督信息。使用多个任务强化主任务(机器翻译),在本书的{\chapterfifteen}{\chaptersixteen}也有所涉及。从这个角度说,机器翻译中很多问题的解决手段都是一致的。 \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可以将输入序列的每一位置都对应到标注文本中,学习语音和文字之间的软对齐关系。比如,对于下面的音频序列,CTC可以将每个位置分别对应到同一个词。需要注意的是,CTC会额外新增一个词$\epsilon$,类似于一个空白词,表示这个位置没有声音或者没有任何对应的预测结果。然后,将相同且连续的词合并,去除$\epsilon$,就可以得到预测结果,如图\ref{fig:17-8} 所示。
...@@ -231,14 +231,14 @@ ...@@ -231,14 +231,14 @@
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{itemize} \begin{itemize}
\vspace{0.5em} \vspace{0.5em}
\item 输入输出之间的对齐是单调的。也就是后面的输入只会预测与前面的序列相同或后面的输出内容。比如对于图\ref{fig:17-8}中的例子,如果输入的位置t已经预测了字符l,那么t之后的位置不会再预测前面的字符h和e。 \item 输入输出之间的对齐是单调的。也就是后面的输入只会预测与前面的序列相同或后面的输出内容。比如对于图\ref{fig:17-8}中的例子,如果输入的位置t已经预测了字符l,那么t之后的位置不会再预测前面的字符h和e。
\vspace{0.5em} \vspace{0.5em}
\item 输入和输出之间是多对一的关系。也就是多个输入会对应到同一个输出上。这对于语音序列来说是非常自然的一件事情,由于输入的每个位置只包含非常短的语音特征,因此多个输入才可以对应到一个输出字符。 \item 输入和输出之间是多对一的关系。也就是多个输入会对应到同一个输出上。这对于语音序列来说是非常自然的一件事情,由于输入的每个位置只包含非常短的语音特征,因此多个输入才可以对应到一个输出字符。
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\parinterval 将CTC应用到语音翻译中的方法非常简单,只需要在编码器的顶层加上一个额外的输出层即可(图\ref{fig:17-9})。通过这种方式,不需要增加过多的额外参数,就可以给模型加入一个较强的监督信息。 \parinterval 将CTC应用到语音翻译中的方法非常简单,只需要在编码器的顶层加上一个额外的输出层即可(图\ref{fig:17-9})。通过这种方式,不需要增加过多的参数,就可以给模型加入一个较强的监督信息。
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -254,7 +254,7 @@ ...@@ -254,7 +254,7 @@
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
\input{./Chapter17/Figures/figure-three-ways-of-dual-decoder-speech-translation} \input{./Chapter17/Figures/figure-three-ways-of-dual-decoder-speech-translation}
\caption{双解码器语音翻译的三种方式} \caption{双解码器进行语音翻译的三种方式}
\label{fig:17-10} \label{fig:17-10}
\end{figure} \end{figure}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
...@@ -264,14 +264,14 @@ ...@@ -264,14 +264,14 @@
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{2. 迁移学习} \subsubsection{2. 迁移学习}
\parinterval 相比语音识别和文本翻译,端到端语音翻译的训练数据量要小很多,因此,如何利用其它数据来增加可用的数据量是语音翻译的一个重要方向。和文本翻译中的方法相似,一种思路是利用迁移学习或预训练,利用其他语言的双语数据预训练模型参数,然后迁移到生成目标语言的任务上\upcite{DBLP:conf/naacl/BansalKLLG19},或者是利用语音识别数据或文本翻译数据,分别预训练编码器和解码器的参数,用于初始化语音翻译模型的参数\upcite{DBLP:conf/icassp/BerardBKP18}。预训练的编码器对语音翻译模型的学习尤为重要\upcite{DBLP:conf/naacl/BansalKLLG19},相比文本数据,语音数据的复杂性更高,仅使用小规模语音翻译数据很难学习充分。此外,模型对声学特征的学习与语言并不是强相关的,其他语种预训练的编码器对模型学习也是有帮助的。 \parinterval 相比语音识别和文本翻译,端到端语音翻译的训练数据量要小很多,因此,如何利用其它数据来增加可用的数据量是语音翻译的一个重要方向。和文本翻译中的方法相似,一种思路是利用迁移学习或预训练,利用其他语言的双语数据预训练模型参数,然后迁移到生成目标语言的任务上\upcite{DBLP:conf/naacl/BansalKLLG19},或者是利用语音识别数据或文本翻译数据,分别预训练编码器和解码器的参数,用于初始化语音翻译模型的参数\upcite{DBLP:conf/icassp/BerardBKP18}。预训练的编码器对语音翻译模型的学习尤为重要\upcite{DBLP:conf/naacl/BansalKLLG19},相比文本数据,语音数据的复杂性更高,仅使用小规模语音翻译数据很难学习充分。此外,模型对声学特征的学习与语言并不是强相关的,其他语种预训练的编码器对模型学习也是有帮助的。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{3. 数据增强} \subsubsection{3. 数据增强}
\parinterval 数据增强是增加训练数据最简单、直接的一种方法。不同于文本翻译的回译等方法(见{\chaptersixteen}),语音翻译并不具有简单的“可逆性”。如果要利用回译的思想,需要通过一个模型,将目标语文本翻译为目标语语音,但实际上这种模型是不能简单得到的。因此,一个简单的思路是通过一个反向翻译模型和语音合成模型级联来生成伪数据\upcite{DBLP:conf/icassp/JiaJMWCCALW19}。 另外,正向翻译模型生成的伪数据在文本翻译中也被验证了对模型训练有一定的帮助,因此同样可以利用语音识别和文本翻译模型,将源语言语音生成目标语言翻译,得到伪平行语料。 \parinterval 数据增强是增加训练数据最直接的一种方法。不同于文本翻译的回译等方法(见{\chaptersixteen}),语音翻译并不具有简单的“可逆性”。如果要利用回译的思想,需要通过一个模型,将目标语言文本转化为源语言语音,但实际上这种模型是不能简单得到的。因此,一个简单的思路是通过一个反向翻译模型和语音合成模型级联来生成伪数据\upcite{DBLP:conf/icassp/JiaJMWCCALW19}。 另外,正向翻译模型生成的伪数据在文本翻译中也被验证了对模型训练有一定的帮助,因此同样可以利用语音识别和文本翻译模型,将源语言语音生成目标语言翻译,得到伪平行语料。
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
...@@ -283,7 +283,7 @@ ...@@ -283,7 +283,7 @@
\section{图像翻译} \section{图像翻译}
\parinterval 在人类所接受的信息中,视觉信息的比重往往不亚于语言信息,甚至更多。视觉信息通常以图像的形式存在,近几年,结合图像的多模态机器翻译受到了广泛的关注。多模态机器翻译(图\ref{fig:17-11} (a))简单来说就是结合源语言和其他模态(例如图像等)的信息生成目标语言的过程。这种结合图像的机器翻译还是一种狭义上的“翻译”,它本质上还是从源语言到目标语言或者说从文本到文本的翻译。那么从图像到文本(图\ref{fig:17-11}(b))的转换,即给定图像生成与图像内容相关的描述,也可以被称为广义上的“翻译”。例如,{\small\bfnew{图片描述生成}}\index{图片描述生成}(Image Captioning)\index{Image Captioning}就是一种典型的图像到文本的翻译。当然,这种广义上的翻译形式不仅仅包括图像到文本,还可以包括从图像到图像(图\ref{fig:17-11}(c)),甚至是从文本到图像(图\ref{fig:17-11}(d))等等。这里将这些与图像相关的翻译任务统称为图像翻译。 \parinterval 在人类所接受的信息中,视觉信息的比重往往不亚于语音和文本信息,甚至更多。视觉信息通常以图像的形式存在,近几年,结合图像的多模态机器翻译受到了广泛的关注。多模态机器翻译(图\ref{fig:17-11} (a))简单来说就是结合源语言和其他模态(例如图像等)的信息生成目标语言的过程。这种结合图像的机器翻译还是一种狭义上的“翻译”,它本质上还是从源语言到目标语言或者说从文本到文本的翻译。那么从图像到文本(图\ref{fig:17-11}(b))的转换,即给定图像生成与图像内容相关的描述,也可以被称为广义上的“翻译”。例如,{\small\bfnew{图片描述生成}}\index{图片描述生成}(Image Captioning)\index{Image Captioning}就是一种典型的图像到文本的翻译。当然,这种广义上的翻译形式不仅仅包括图像到文本的转换,还可以包括从图像到图像的转换(图\ref{fig:17-11}(c)),甚至是从文本到图像的转换(图\ref{fig:17-11}(d))等等。这里将这些与图像相关的翻译任务统称为图像翻译。
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -301,7 +301,7 @@ ...@@ -301,7 +301,7 @@
\subsection{基于图像增强的文本翻译} \subsection{基于图像增强的文本翻译}
\label{sec:image-augmented-translation} \label{sec:image-augmented-translation}
\parinterval 在文本翻译中引入图像信息是最典型的多模态机器翻译任务。虽然多模态机器翻译还是一种从源语言文本到目标语言文本的转换,但是在转换的过程中,融入了其他模态的信息减少了歧义的产生。例如前文提到的通过与源语言相关的图像信息,将“A medium sized child jumps off of a dusty bank”中“bank”翻译为“河岸”而不是“银行”,因为图像中出现了河,因此“bank”的歧义大大降低。换句话说,对于同一图像或者视觉场景的描述,源语言和目标语言描述的信息是一致的,只不过,体现在不同语言上会有表达方法上的差异。那么,图像就会存在一些源语言和目标语言的隐含对齐“约束”,而这种“约束”可以捕捉语言中不易表达的隐含信息。 \parinterval 在文本翻译中引入图像信息是最典型的多模态机器翻译任务。虽然多模态机器翻译还是一种从源语言文本到目标语言文本的转换,但是在转换的过程中,融入了其他模态的信息减少了歧义的产生。例如前文提到的通过与源语言相关的图像信息,将“A medium sized child jumps off of a dusty bank”中“bank”翻译为“河岸”而不是“银行”,因为图像中出现了河,因此“bank”的歧义大大降低。换句话说,对于同一图像或者视觉场景的描述,源语言和目标语言描述的信息是一致的,只不过,体现在不同语言上会有表达方法上的差异。那么,图像就会存在一些源语言和目标语言的隐含对齐“约束”,而这种“约束”可以捕捉语言中不易表达的隐含信息。
\parinterval 如何融入视觉信息,更好的理解多模态上下文语义是多模态机器翻译研究的重点\upcite{DBLP:conf/wmt/SpeciaFSE16,DBLP:conf/wmt/CaglayanABGBBMH17,DBLP:conf/wmt/LibovickyHTBP16},主要方向包括基于特征融合的方法\upcite{DBLP:conf/emnlp/CalixtoL17,DBLP:journals/corr/abs-1712-03449,DBLP:conf/wmt/HelclLV18}、基于联合模型的方法\upcite{DBLP:conf/ijcnlp/ElliottK17,DBLP:conf/acl/YinMSZYZL20}。下面是具体介绍。 \parinterval 如何融入视觉信息,更好的理解多模态上下文语义是多模态机器翻译研究的重点\upcite{DBLP:conf/wmt/SpeciaFSE16,DBLP:conf/wmt/CaglayanABGBBMH17,DBLP:conf/wmt/LibovickyHTBP16},主要方向包括基于特征融合的方法\upcite{DBLP:conf/emnlp/CalixtoL17,DBLP:journals/corr/abs-1712-03449,DBLP:conf/wmt/HelclLV18}、基于联合模型的方法\upcite{DBLP:conf/ijcnlp/ElliottK17,DBLP:conf/acl/YinMSZYZL20}。下面是具体介绍。
...@@ -347,14 +347,14 @@ ...@@ -347,14 +347,14 @@
\end{figure} \end{figure}
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\parinterval 那么,多模态机器翻译是如何计算上下文向量的呢?这里仿照第十章的内容给出具体解释。假设编码器输出的状态序列为$\{\mathbi{h}_1,\mathbi{h}_2,...\mathbi{h}_m\}$,需要注意的是,这里的状态序列不是源语言句子的状态序列,而是通过基于卷积等操作提取到的图像的状态序列。假设图像的特征维度是16×16×512,其中前两个维度分别表示图像的高和宽,这里会将图像映射为256×512 的状态序列,其中512 为每个状态的维度。对于目标语位置$j$,上下文向量$\mathbi{C}_{j}$被定义为对序列的编码器输出进行加权求和,如下: \parinterval 那么,多模态机器翻译是如何计算上下文向量的呢?这里仿照第十章的内容给出描述。假设编码器输出的状态序列为$\{\mathbi{h}_1,...\mathbi{h}_m\}$,需要注意的是,这里的状态序列不是源语言句子的状态序列,而是通过基于卷积等操作提取到的图像的状态序列。假设图像的特征维度是$16 \times 16 \times 512$,其中前两个维度分别表示图像的高和宽,这里会将图像映射为$256 \times 512$ 的状态序列,其中$512$为每个状态的维度。对于目标语位置$j$,上下文向量$\mathbi{C}_{j}$被定义为对序列的编码器输出进行加权求和,如下:
\begin{eqnarray} \begin{eqnarray}
\mathbi{C}_{j}&=& \sum_{i}{{\alpha}_{i,j}{\mathbi{h}}_{i}} \mathbi{C}_{j}&=& \sum_{i}{{\alpha}_{i,j}{\mathbi{h}}_{i}}
\end{eqnarray} \end{eqnarray}
\noindent 其中,${\alpha}_{i,j}$是注意力权重,它表示目标语言第$j$个位置与图片编码状态序列第$i$个位置的相关性大小,计算方式与{\chapterten}描述的注意力函数一致。 \noindent 其中,${\alpha}_{i,j}$是注意力权重,它表示目标语言第$j$个位置与图片编码状态序列第$i$个位置的相关性大小,计算方式与{\chapterten}描述的注意力函数一致。
\parinterval 这里,将$\mathbi{h}_{i}$看作图像表示序列位置$i$上的表示结果。图\ref{tab:17-2-3-c}给出了模型在生成目标词“bank”时,图像经过注意力机制对图像区域关注度的可视化效果。可以看到,经过注意力机制后,模型更关注与目标词相关的图像部分。当然,多模态机器翻译的输入还包括源语言文字序列。通常,源语言文字对于翻译的作用比图像更大\upcite{DBLP:conf/acl/YaoW20}。从这个角度说,在当下的多模态翻译任务中,图像信息更多的是作为文字信息的补充,而不是替代。除此之外,注意力机制在多模态机器翻译中也有很多研究,不仅仅在解码器端将经过注意力机制的文本特征和视觉特征作为解码输入的一部分,还有工作在编码器端将源语言与图像信息进行注意力建模,得到更好的源语言特征表示\upcite{DBLP:journals/corr/abs-1712-03449,DBLP:conf/acl/YaoW20} \parinterval 这里,将$\mathbi{h}_{i}$看作图像表示序列位置$i$上的表示结果。图\ref{tab:17-2-3-c}给出了模型在生成目标词“bank”时,图像经过注意力机制对图像区域关注度的可视化效果。可以看到,经过注意力机制后,模型更关注与目标词相关的图像部分。当然,多模态机器翻译的输入还包括源语言文字序列。通常,源语言文字对于翻译的作用比图像更大\upcite{DBLP:conf/acl/YaoW20}。从这个角度说,在当下的多模态翻译任务中,图像信息更多的是作为文字信息的补充,而不是替代。除此之外,注意力机制在多模态机器翻译中也有很多研究,比如,在编码器端将源语言文本与图像信息进行注意力建模,得到更好的源语言的表示结果\upcite{DBLP:journals/corr/abs-1712-03449,DBLP:conf/acl/YaoW20}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
...@@ -383,7 +383,7 @@ ...@@ -383,7 +383,7 @@
\subsection{图像到文本的翻译} \subsection{图像到文本的翻译}
\parinterval 图像到文本的转换也可以看作是广义上的翻译,简单来说,就是把图像作为了源语言的唯一输入,而输出是文本。其中,图像描述生成是最典型的图像到文本的翻译任务\upcite{DBLP:conf/ijcai/BernardiCEEEIKM17}。虽然,这部分内容并不是本书的重点,不过为了保证多模态翻译内容的完整性,这里对相关技术进行简要介绍。图像描述有时也被称图说话、图像字幕生成,它在图像检索、智能导盲、人机交互等领域有着广泛的应用场景。 \parinterval 图像到文本的转换也可以看作是广义上的翻译,简单来说,就是把图像作为了源语言的唯一输入,而输出是文本。其中,图像描述生成是最典型的图像到文本的翻译任务\upcite{DBLP:conf/ijcai/BernardiCEEEIKM17}。虽然,这部分内容并不是本书的重点,不过为了保证多模态翻译内容的完整性,这里对相关技术进行简要介绍。图像描述有时也被称图说话、图像字幕生成,它在图像检索、智能导盲、人机交互等领域有着广泛的应用场景。
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -394,7 +394,7 @@ ...@@ -394,7 +394,7 @@
\end{figure} \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 % NEW SUBSUB-SECTION
...@@ -402,18 +402,7 @@ ...@@ -402,18 +402,7 @@
\subsubsection{1. 基础框架} \subsubsection{1. 基础框架}
\parinterval 受到神经机器翻译的启发,编码器-解码器框架也应用到图像描述生成任务当中。其中,编码器将输入的图像转换为一种新的“表示”形式,这种“表示”包含了输入图像的所有信息。之后解码器把这种“表示”转换为自然语言描述。图\ref{fig:17-16}(a)是编码器-解码器框架在图像描述生成中的简单应用\upcite{DBLP:conf/cvpr/VinyalsTBE15}。首先,通过卷积神经网络提取图像特征到一个向量表示。然后,利用长短时记忆网络(LSTM)解码生成文字描述,这个过程中与机器翻译的解码过程类似。这种建模方式存在与\ref{sec:image-augmented-translation}描述一样的问题:生成的描述单词不一定需要所有的图像信息,将全局的图像信息送入模型中,可能会引入噪音。针对这个问题,图\ref{fig:17-16}(b)所示的模型引入了注意力机制\upcite{DBLP:conf/icml/XuBKCCSZB15} \parinterval 在编码器-解码器框架中,编码器将输入的图像转换为一种新的“表示”形式,这种“表示”包含了输入图像的所有信息。之后解码器把这种“表示”转换为自然语言描述。比如,可以通过卷积神经网络提取图像特征到一个向量表示。然后,利用长短时记忆网络(LSTM)解码生成文字描述,这个过程中与机器翻译的解码过程类似。这种建模方式存在与\ref{sec:image-augmented-translation}描述一样的问题:生成的描述单词不一定需要所有的图像信息,将全局的图像信息送入模型中,可能会引入噪音。这时也可以使用注意力机制对其进行缓解\upcite{DBLP:conf/icml/XuBKCCSZB15}
%----------------------------------------------------------------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter17/Figures/figure-image-description-of-encoder-decoder-framework}
\caption{图像描述的编码器-解码器框架}
\label{fig:17-16}
\end{figure}
%----------------------------------------------------------------------------------------------------
\parinterval 图像描述生成基本上沿用了编码器-解码器框架。接下来,将介绍针对编码器和解码器的改进方法。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
...@@ -421,9 +410,9 @@ ...@@ -421,9 +410,9 @@
\subsubsection{2. 编码器的改进} \subsubsection{2. 编码器的改进}
\parinterval 要想使编码器-解码器框架在图像描述生成中充分发挥作用,编码器也要更好的表示图像信息。对于编码器的改进,大多也是从这个角度出发。通常,体现在向编码器中添加图像的语义信息\upcite{DBLP:conf/cvpr/YouJWFL16,DBLP:conf/cvpr/ChenZXNSLC17,DBLP:journals/pami/FuJCSZ17}和位置信息\upcite{DBLP:conf/cvpr/ChenZXNSLC17,DBLP:conf/ijcai/LiuSWWY17} \parinterval 要想使编码器-解码器框架在图像描述生成中充分发挥作用,编码器也要更好的表示图像信息。对于编码器的改进,通常体现在向编码器中添加图像的语义信息\upcite{DBLP:conf/cvpr/YouJWFL16,DBLP:conf/cvpr/ChenZXNSLC17,DBLP:journals/pami/FuJCSZ17}和位置信息\upcite{DBLP:conf/cvpr/ChenZXNSLC17,DBLP:conf/ijcai/LiuSWWY17}
\parinterval 图像的语义信息一般是指图像中存在的实体、属性、场景等等。如图\ref{fig:17-17}所示,从图像中利用属性或实体检测器提取出“child”、“river”、“bank”等属性词和实体词作为图像的语义信息并初始化编码器,再利用注意力机制计算目标语言单词与这些属性词或实体词之间的注意力权重\upcite{DBLP:conf/cvpr/YouJWFL16}。当然,除了图像中的实体和属性作为语义信息外,也可以将图片的场景信息加入到编码器当中\upcite{DBLP:journals/pami/FuJCSZ17}。有关如何做属性、实体和场景的检测,涉及到目标检测任务的工作,例如Faster-RCNN\upcite{DBLP:journals/pami/RenHG017}、YOLO\upcite{DBLP:journals/corr/abs-1804-02767,DBLP:journals/corr/abs-2004-10934}等等,这里不过多赘述。 \parinterval 图像的语义信息一般是指图像中存在的实体、属性、场景等等。如图\ref{fig:17-17}所示,从图像中利用属性或实体检测器提取出“child”、“river”、“bank”等属性词和实体词,将他们作为图像的语义信息编码的一部分,再利用注意力机制计算目标语言单词与这些属性词或实体词之间的注意力权重\upcite{DBLP:conf/cvpr/YouJWFL16}。当然,除了图像中的实体和属性作为语义信息外,也可以将图片的场景信息加入到编码器当中\upcite{DBLP:journals/pami/FuJCSZ17}。有关如何做属性、实体和场景的检测,涉及到目标检测任务的工作,例如Faster-RCNN\upcite{DBLP:journals/pami/RenHG017}、YOLO\upcite{DBLP:journals/corr/abs-1804-02767,DBLP:journals/corr/abs-2004-10934}等等,这里不过多赘述。
%---------------------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
...@@ -434,7 +423,7 @@ ...@@ -434,7 +423,7 @@
\end{figure} \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 % NEW SUBSUB-SECTION
...@@ -454,9 +443,9 @@ ...@@ -454,9 +443,9 @@
\parinterval 当生成的目标对象是图像时,问题就变为了图像生成任务。虽然,这个领域本身并不属于机器翻译,但是其使用的基本方法与机器翻译有类似之处。二者也可以相互借鉴。 \parinterval 当生成的目标对象是图像时,问题就变为了图像生成任务。虽然,这个领域本身并不属于机器翻译,但是其使用的基本方法与机器翻译有类似之处。二者也可以相互借鉴。
\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 在计算机视觉中,图像风格变换、图像超分辨率重建等任务,都可以被视为{\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 % NEW SECTION
...@@ -464,7 +453,7 @@ ...@@ -464,7 +453,7 @@
\section{篇章级翻译} \section{篇章级翻译}
\parinterval 目前大多数机器翻译系统是句子级的。由于缺少了对篇章上下文信息的建模,在需要依赖上下文的翻译场景中其翻译效果总是不尽人意。篇章级翻译的目的就是对篇章上下文信息进行建模,进而改善机器翻译在整个篇章上的翻译质量。篇章级翻译的概念在很早就已经出现\upcite{DBLP:journals/ac/Bar-Hillel60},随着近几年神经机器翻译取得了巨大进展,如何使用篇章上下文信息也成为进一步改善机器翻译质量的重要方向\upcite{DBLP:journals/corr/abs-1912-08494,DBLP:journals/corr/abs-1901-09115}。基于此,本节将对篇章级机器翻译的若干问题展开讨论。 \parinterval 目前大多数机器翻译系统是句子级的。由于缺少了对篇章上下文信息的建模,在需要依赖上下文的翻译场景中其翻译效果总是不尽人意。篇章级翻译的目的就是对篇章上下文信息进行建模,进而改善机器翻译在整个篇章上的翻译质量。篇章级翻译的概念在很早就已经出现\upcite{DBLP:journals/ac/Bar-Hillel60},随着近几年神经机器翻译取得了巨大进展,篇章级神经机器翻译也成为了重要的方向\upcite{DBLP:journals/corr/abs-1912-08494,DBLP:journals/corr/abs-1901-09115}。基于此,本节将对篇章级神经机器翻译的若干问题展开讨论。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUB-SECTION % NEW SUB-SECTION
...@@ -472,7 +461,7 @@ ...@@ -472,7 +461,7 @@
\subsection{篇章级翻译的挑战} \subsection{篇章级翻译的挑战}
\parinterval “篇章”在这里指一系列连续的段落或句子所构成的整体,其中各个句子间从形式和内容上都具有一定的连贯性和一致性\upcite{jurafsky2000speech}。这些联系主要体现在{\small\sffamily\bfseries{衔接}}\index{衔接}(Cohesion \index{Cohesion})以及连贯两个方面。其中衔接体现在显性的语言成分和结构上,包括篇章中句子间的语法和词汇的联系,而连贯体现在各个句子之间的逻辑和语义的联系上。因此,篇章级翻译就是要将这些上下文之间的联系考虑在内,从而生成比句子级翻译更连贯和准确的翻译结果。实例\ref{eg:17-1}就展示了一个使用篇章信息进行机器翻译的实例。 \parinterval “篇章”在这里指一系列连续的段落或句子所构成的整体,其中各个句子间从形式和内容上都具有一定的连贯性和一致性\upcite{jurafsky2000speech}。这些联系主要体现在{\small\sffamily\bfseries{衔接}}\index{衔接}(Cohesion \index{Cohesion})以及连贯两个方面。其中衔接体现在显性的语言成分和结构上,包括篇章中句子间的语法和词汇的联系,而连贯体现在各个句子之间的逻辑和语义的联系上。因此,篇章级翻译就是要将这些上下文之间的联系考虑在内,从而生成比句子级翻译更连贯和准确的翻译结果。实例\ref{eg:17-1}就展示了一个使用篇章信息进行机器翻译的实例。
\begin{example} \begin{example}
上下文句子:我上周针对这个问题做出解释并咨询了他的意见。 上下文句子:我上周针对这个问题做出解释并咨询了他的意见。
...@@ -486,16 +475,13 @@ ...@@ -486,16 +475,13 @@
\label{eg:17-1} \label{eg:17-1}
\end{example} \end{example}
\parinterval 不过由于不同语言的特性多种多样,上下文信息在篇章级翻译中的作用也不尽相同。比如,在德语中名词是分词性的,因此在代词翻译的过程中需要根据其先行词的词性进行区分,而这种现象在其它不区分词性的语言中是不存在的。这意味着篇章级翻译在不同的语种中可能对应多种不同的上下文现象。 \parinterval 不过由于不同语言的特性多种多样,上下文信息在篇章级翻译中的作用也不尽相同。比如,在德语中名词是分词性的,因此在代词翻译的过程中需要根据其先行词的词性进行区分,而这种现象在其它不区分名词词性的语言中是不存在的。这意味着篇章级翻译在不同的语种中可能对应不同的上下文现象。
\parinterval 正是由于这种上下文现象的多样性,使评价篇章级翻译模型的性能变得相对困难。目前篇章级机器翻译主要针对一些常见的上下文现象,比如代词翻译、省略、连接和词汇衔接等,而{\chapterfour}介绍的BLEU等通用自动评价指标通常对这些上下文依赖现象不敏感,篇章级翻译需要采用一些专用方法来对这些具体现象进行评价。我们将在\ref{sec:17-3-2}节中对这些评价方法进行介绍。
\parinterval 从对篇章信息建模的角度看,在统计机器翻译时代就已经有大量的研究工作。这些工作大多针对某一具体的上下文现象,比如,篇章结构\upcite{DBLP:conf/anlp/MarcuCW00,foster2010translating,DBLP:conf/eacl/LouisW14}、代词回指\upcite{DBLP:conf/iwslt/HardmeierF10,DBLP:conf/wmt/NagardK10,DBLP:conf/eamt/LuongP16,}、词汇衔接\upcite{tiedemann2010context,DBLP:conf/emnlp/GongZZ11,DBLP:conf/ijcai/XiongBZLL13,xiao2011document}和篇章连接词\upcite{DBLP:conf/sigdial/MeyerPZC11,DBLP:conf/hytra/MeyerP12,}等。但是由于统计机器翻译本身流程复杂,依赖于许多组件和针对上下文现象所精心构造的特征,其建模方法相对比较困难。到了神经机器翻译时代,端到端建模给篇章级翻译提供了新的视角,相关工作不断涌现并且取得了很好的进展\upcite{DBLP:journals/corr/abs-1912-08494} \parinterval 正是由于这种上下文现象的多样性,使评价篇章级翻译模型的性能变得相对困难。目前篇章级机器翻译主要针对一些常见的上下文现象,比如代词翻译、省略、连接和词汇衔接等,而{\chapterfour}介绍的BLEU等通用自动评价指标通常对这些上下文依赖现象不敏感,篇章级翻译需要采用一些专用方法来对这些具体现象进行评价
\parinterval \parinterval 从对篇章信息建模的角度看,在统计机器翻译时代就已经有大量的研究工作。这些工作大多针对某一具体的上下文现象,比如,篇章结构\upcite{DBLP:conf/anlp/MarcuCW00,foster2010translating,DBLP:conf/eacl/LouisW14}、代词回指\upcite{DBLP:conf/iwslt/HardmeierF10,DBLP:conf/wmt/NagardK10,DBLP:conf/eamt/LuongP16,}、词汇衔接\upcite{tiedemann2010context,DBLP:conf/emnlp/GongZZ11,DBLP:conf/ijcai/XiongBZLL13,xiao2011document}和篇章连接词\upcite{DBLP:conf/sigdial/MeyerPZC11,DBLP:conf/hytra/MeyerP12,}等。区别于篇章级统计机器翻译,篇章级神经机器翻译不需要针对某一具体的上下文现象构造相应的特征,而是通过翻译模型本身从上下文句子中抽取和融合的上下文信息。通常情况下,篇章级机器翻译可以采用局部建模的手段将前一句或者周围几句作为上下文送入模型。针对需要长距离上下文的情况,也可以使用全局建模的手段直接从篇章中所有句子中提取上下文信息。近几年多数研究工作都在探索更有效的局部建模或全局建模方法,主要包括改进输入\upcite{DBLP:conf/discomt/TiedemannS17,DBLP:conf/naacl/BawdenSBH18,DBLP:conf/wmt/GonzalesMS17,DBLP:journals/corr/abs-1910-07481}、多编码器结构\upcite{DBLP:journals/corr/JeanLFC17,DBLP:journals/corr/abs-1805-10163,DBLP:conf/emnlp/ZhangLSZXZL18}、层次结构\upcite{DBLP:conf/naacl/MarufMH19,DBLP:conf/acl/HaffariM18,DBLP:conf/emnlp/YangZMGFZ19,DBLP:conf/ijcai/ZhengYHCB20}以及基于缓存的方法\upcite{DBLP:conf/coling/KuangXLZ18,DBLP:journals/tacl/TuLSZ18}等。
区别于篇章级统计机器翻译,篇章级神经机器翻译不需要针对某一具体的上下文现象构造相应的特征,而是通过翻译模型本身从上下文句子中抽取和融合的上下文信息。通常情况下,篇章级机器翻译可以采用局部建模的手段将前一句或者周围几句作为上下文送入模型。针对需要长距离上下文的情况,也可以使用全局建模的手段直接从篇章中所有句子中提取上下文信息。近几年多数研究工作都在探索更有效的局部建模或全局建模方法,主要包括改进输入\upcite{DBLP:conf/discomt/TiedemannS17,DBLP:conf/naacl/BawdenSBH18,DBLP:conf/wmt/GonzalesMS17,DBLP:journals/corr/abs-1910-07481}、多编码器结构\upcite{DBLP:journals/corr/JeanLFC17,DBLP:journals/corr/abs-1805-10163,DBLP:conf/emnlp/ZhangLSZXZL18}、层次结构\upcite{DBLP:conf/naacl/MarufMH19,DBLP:conf/acl/HaffariM18,DBLP:conf/emnlp/YangZMGFZ19,DBLP:conf/ijcai/ZhengYHCB20}以及基于缓存的方法\upcite{DBLP:conf/coling/KuangXLZ18,DBLP:journals/tacl/TuLSZ18}四类。
\parinterval 此外,篇章级机器翻译面临的另外一个挑战是数据稀缺。篇章级机器翻译所需要的双语数据需要保留篇章边界,数量相比于句子级双语数据要少很多。除了在之前提到的端到端方法中采用预训练或者参数共享的手段(见{\chaptersixteen}),也可以采用新的建模手段来缓解数据稀缺问题。这类方法通常将篇章级翻译流程进行分离:先训练一个句子级的翻译模型,再通过一些额外的模块来引入上下文信息,从而达到“充分利用句子级的双语数据,提升模型性能”的目的。比如,在句子级翻译模型的推断过程中,通过在目标端结合篇章级语言模型引入上下文信息\upcite{DBLP:conf/discomt/GarciaCE19,DBLP:journals/tacl/YuSSLKBD20,DBLP:journals/corr/abs-2010-12827},或者基于句子级的翻译结果,使用两阶段解码等手段引入上下文信息,进而对句子级翻译结果进行修正\upcite{DBLP:conf/aaai/XiongH0W19,DBLP:conf/acl/VoitaST19,DBLP:conf/emnlp/VoitaST19} \parinterval 此外,篇章级机器翻译面临的另外一个挑战是数据稀缺。篇章级机器翻译所需要的双语数据需要保留篇章边界,数量相比于句子级双语数据要少很多。除了在之前提到的端到端方法中采用预训练或者参数共享的手段(见{\chaptersixteen}),也可以采用新的建模手段来缓解数据稀缺问题。这类方法通常将篇章级翻译流程进行分离:先训练一个句子级的翻译模型,再通过一些额外的模块来引入上下文信息。比如,在句子级翻译模型的推断过程中,通过在目标端结合篇章级语言模型引入上下文信息\upcite{DBLP:conf/discomt/GarciaCE19,DBLP:journals/tacl/YuSSLKBD20,DBLP:journals/corr/abs-2010-12827},或者基于句子级的翻译结果,使用两阶段解码等手段引入上下文信息,进而对句子级翻译结果进行修正\upcite{DBLP:conf/aaai/XiongH0W19,DBLP:conf/acl/VoitaST19,DBLP:conf/emnlp/VoitaST19}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
...@@ -503,7 +489,7 @@ ...@@ -503,7 +489,7 @@
\subsection{篇章级翻译的评价}\label{sec:17-3-2} \subsection{篇章级翻译的评价}\label{sec:17-3-2}
\parinterval BLEU等自动评价指标能够在一定程度上反映译文的整体质量,但是并不能有效地评估篇章级翻译模型的性能。这是由于传统测试数据中出现篇章上下文现象的比例相对较少,并且$n$-gram的匹配很难检测到一些具体的语言现象,这使得研究人员很难通过BLEU得分来判断篇章级翻译模型的效果。 \parinterval BLEU等自动评价指标能够在一定程度上反映译文的整体质量,但是并不能有效地评估篇章级翻译模型的性能。这是由于很多标准测试集中需要篇章上下文的情况比例相对较少。而且,$n$-gram的匹配很难检测到一些具体的语言现象,这使得研究人员很难通过BLEU得分来判断篇章级翻译模型的效果。
\parinterval 为此,研究人员总结了机器翻译任务中存在的上下文现象,并基于此设计了相应的自动评价指标。比如针对篇章中代词的翻译问题,首先借助词对齐工具确定源语言中的代词在译文和参考答案中的对应位置,然后通过计算译文中代词的准确率和召回率等指标对代词翻译质量进行评价\upcite{DBLP:conf/iwslt/HardmeierF10,DBLP:conf/discomt/WerlenP17}。针对篇章中的词汇衔接,使用{\small\sffamily\bfseries{词汇链}}\index{词汇链}(Lexical Chain\index{Lexical Chain}\footnote{词汇链指篇章中语义相关的词所构成的序列。}等来获取能够反映词汇衔接质量的分数,然后通过加权的方式与常规的BLEU或METEOR等指标结合在一起\upcite{DBLP:conf/emnlp/WongK12,DBLP:conf/discomt/GongZZ15}。针对篇章中的连接词,使用候选词典和词对齐工具对源语中连接词的正确翻译结果进行计数,计算其准确率\upcite{DBLP:conf/cicling/HajlaouiP13} \parinterval 为此,研究人员总结了机器翻译任务中存在的上下文现象,并基于此设计了相应的自动评价指标。比如针对篇章中代词的翻译问题,首先借助词对齐工具确定源语言中的代词在译文和参考答案中的对应位置,然后通过计算译文中代词的准确率和召回率等指标对代词翻译质量进行评价\upcite{DBLP:conf/iwslt/HardmeierF10,DBLP:conf/discomt/WerlenP17}。针对篇章中的词汇衔接,使用{\small\sffamily\bfseries{词汇链}}\index{词汇链}(Lexical Chain\index{Lexical Chain}\footnote{词汇链指篇章中语义相关的词所构成的序列。}等来获取能够反映词汇衔接质量的分数,然后通过加权的方式与常规的BLEU或METEOR等指标结合在一起\upcite{DBLP:conf/emnlp/WongK12,DBLP:conf/discomt/GongZZ15}。针对篇章中的连接词,使用候选词典和词对齐工具对源语中连接词的正确翻译结果进行计数,计算其准确率\upcite{DBLP:conf/cicling/HajlaouiP13}
...@@ -522,7 +508,7 @@ ...@@ -522,7 +508,7 @@
\funp{P}(\seq{Y}|\seq{X})&=&\prod_{i=1}^{T}{\funp{P}(Y_i|X_i,D_i)} \funp{P}(\seq{Y}|\seq{X})&=&\prod_{i=1}^{T}{\funp{P}(Y_i|X_i,D_i)}
\label{eq:17-3-1} \label{eq:17-3-1}
\end{eqnarray} \end{eqnarray}
其中,$\seq{X}$$\seq{Y}$分别为源语言篇章和目标语言篇章,$X_i$$Y_i$分别为源语言篇章和目标语言篇章中的某个句子,$T$表示篇章中句子的数目\footnote{为了简化问题,为了假设源语言端和目标语言段具有相同的句子数目$T$}$D_i$表示翻译第$i$个句子时所对应的上下文句子集合,理想情况下,$D_i$中包含源语言篇章和目标语言篇章中所有除第$i$句之外的句子,但考虑到不同的任务场景需求与模型的应用效率,篇章级神经机器翻译在建模的时候通常仅使用其中的一部分作为上下文句子输入 其中,$\seq{X}$$\seq{Y}$分别为源语言篇章和目标语言篇章,$X_i$$Y_i$分别为源语言篇章和目标语言篇章中的$i$个句子,$T$表示篇章中句子的数目。为了简化问题,这里假设源语言和目标语言具有相同的句子数目$T$,而且两个篇章间句子是顺序对应的。$D_i$表示翻译第$i$个句子时所对应的上下文句子集合,理想情况下,$D_i$中包含源语言篇章和目标语言篇章中所有除第$i$句之外的句子,但实践中通常仅使用其中的部分句子作为上下文
\parinterval 上下文范围的选取是篇章级神经机器翻译需要着重考虑的问题,比如上下文句子的多少\upcite{agrawal2018contextual,Werlen2018DocumentLevelNM,DBLP:conf/naacl/MarufMH19},是否考虑目标端上下文句子\upcite{DBLP:conf/discomt/TiedemannS17,agrawal2018contextual}等。此外,不同的上下文范围也对应着不同的建模方法,接下来将对一些典型的方法进行介绍,包括改进输入\upcite{DBLP:conf/discomt/TiedemannS17,DBLP:conf/naacl/BawdenSBH18,DBLP:conf/wmt/GonzalesMS17,DBLP:journals/corr/abs-1910-07481}、多编码器模型\upcite{DBLP:journals/corr/JeanLFC17,DBLP:journals/corr/abs-1805-10163,DBLP:conf/emnlp/ZhangLSZXZL18}、层次结构模型\upcite{DBLP:conf/emnlp/WangTWL17,DBLP:conf/emnlp/TanZXZ19,Werlen2018DocumentLevelNM}以及基于缓存的方法\upcite{DBLP:conf/coling/KuangXLZ18,DBLP:journals/tacl/TuLSZ18} \parinterval 上下文范围的选取是篇章级神经机器翻译需要着重考虑的问题,比如上下文句子的多少\upcite{agrawal2018contextual,Werlen2018DocumentLevelNM,DBLP:conf/naacl/MarufMH19},是否考虑目标端上下文句子\upcite{DBLP:conf/discomt/TiedemannS17,agrawal2018contextual}等。此外,不同的上下文范围也对应着不同的建模方法,接下来将对一些典型的方法进行介绍,包括改进输入\upcite{DBLP:conf/discomt/TiedemannS17,DBLP:conf/naacl/BawdenSBH18,DBLP:conf/wmt/GonzalesMS17,DBLP:journals/corr/abs-1910-07481}、多编码器模型\upcite{DBLP:journals/corr/JeanLFC17,DBLP:journals/corr/abs-1805-10163,DBLP:conf/emnlp/ZhangLSZXZL18}、层次结构模型\upcite{DBLP:conf/emnlp/WangTWL17,DBLP:conf/emnlp/TanZXZ19,Werlen2018DocumentLevelNM}以及基于缓存的方法\upcite{DBLP:conf/coling/KuangXLZ18,DBLP:journals/tacl/TuLSZ18}
...@@ -530,9 +516,9 @@ ...@@ -530,9 +516,9 @@
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{1. 改进输入形式} \subsubsection{1. 输入形式}
\parinterval 一种简单的方法是直接复用传统的序列到序列模型,将篇章中待翻译句子与其上下文句子拼接后作为模型输入。如实例\ref{eg:17-3-1}所示,这种做法不需要改动模型结构,操作简单,适用于包括基于循环神经网络和Transformer在内的神经机器翻译系统\upcite{DBLP:conf/discomt/TiedemannS17,agrawal2018contextual,DBLP:conf/discomt/ScherrerTL19}。但是由于过长的序列会导致模型难以训练,通常只会选取局部的上下文句子进行拼接,比如只拼接源语言端前一句或者周围几句\upcite{DBLP:conf/discomt/TiedemannS17}。此外,也可以引入目标语言端的上下文\upcite{DBLP:conf/naacl/BawdenSBH18,agrawal2018contextual,DBLP:conf/discomt/ScherrerTL19},在解码时拼接目标语言端上下文和当前句同样会带来一定的性能提升。但是过大的窗口会造成推断速度的下降\upcite{agrawal2018contextual},因此通常只考虑前一个目标语言句子。 \parinterval 一种简单的方法是直接复用传统的序列到序列模型,将篇章中待翻译句子与其上下文句子拼接后作为模型输入。如实例\ref{eg:17-3-1}所示,这种做法不需要改动模型结构,操作简单,适用于大多数神经机器翻译系统\upcite{DBLP:conf/discomt/TiedemannS17,agrawal2018contextual,DBLP:conf/discomt/ScherrerTL19}。但是由于过长的序列会导致模型难以训练,通常只会选取局部的上下文句子进行拼接,比如只拼接源语言端前一句或者周围几句\upcite{DBLP:conf/discomt/TiedemannS17}。此外,也可以引入目标语言端的上下文\upcite{DBLP:conf/naacl/BawdenSBH18,agrawal2018contextual,DBLP:conf/discomt/ScherrerTL19},在解码时拼接目标语言端上下文和当前句同样会带来一定的性能提升。但是过大的窗口会造成推断速度的下降\upcite{agrawal2018contextual},因此通常只考虑前一个目标语言句子。
\begin{example} \begin{example}
传统模型训练输入: 传统模型训练输入:
...@@ -551,21 +537,14 @@ ...@@ -551,21 +537,14 @@
\label{eg:17-3-1} \label{eg:17-3-1}
\end{example} \end{example}
\parinterval 其他改进输入的做法相比于拼接的方法要复杂一些,首先需要对篇章进行处理,得到词汇链\footnote{词汇链指篇章中语义相关的词所构成的序列。}\upcite{DBLP:conf/wmt/GonzalesMS17}或者篇章嵌入\upcite{DBLP:journals/corr/abs-1910-07481}等信息,然后将融入这些信息的当前句子序列表示送入模型中。目前这种将预先提取的篇章表示作为上下文信息的方法是否适合机器翻译还有待论证。 \parinterval 其他改进输入的做法相比于拼接的方法要复杂一些,首先需要对篇章进行处理,得到词汇链\footnote{词汇链指篇章中语义相关的词所构成的序列。}或者篇章嵌入等信息\upcite{DBLP:conf/wmt/GonzalesMS17,DBLP:journals/corr/abs-1910-07481},然后将融入这些信息,与当前句子一起送入模型中。目前,这种预先提取篇章信息的方法是否适合机器翻译还有待论证。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\subsubsection{2. 多编码器结构} \subsubsection{2. 多编码器结构}
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter17/Figures/figure-multiencoder}
\caption{多编码器结构\upcite{DBLP:conf/acl/LiLWJXZLL20}}
\label{fig:17-18}
\end{figure}
%----------------------------------------------
\parinterval 另一种思路是对传统的编码器-解码器框架进行更改,引入额外的编码器来对上下文句子进行编码,该结构被称为多编码器结构\upcite{DBLP:conf/acl/LiLWJXZLL20,DBLP:conf/discomt/SugiyamaY19}。这种结构最早被应用在基于循环神经网络的篇章级翻译模型中\upcite{DBLP:journals/corr/JeanLFC17,DBLP:conf/coling/KuangX18,DBLP:conf/naacl/BawdenSBH18,DBLP:conf/pacling/YamagishiK19},后期证明在Transformer模型上同样适用\upcite{DBLP:journals/corr/abs-1805-10163,DBLP:conf/emnlp/ZhangLSZXZL18}。图\ref{fig:17-18}展示了一个基于Transformer模型的多编码器结构,基于源语言当前待翻译句子的编码表示$\mathbi{h}$和上下文句子的编码表示$\mathbi{h}^{\textrm pre}$,模型首先通过注意力机制提取上下文信息$\mathbi{d}$ \parinterval 另一种思路是对传统的编码器-解码器框架进行更改,引入额外的编码器来对上下文句子进行编码,该结构被称为多编码器结构\upcite{DBLP:conf/acl/LiLWJXZLL20,DBLP:conf/discomt/SugiyamaY19}。这种结构最早被应用在基于循环神经网络的篇章级翻译模型中\upcite{DBLP:journals/corr/JeanLFC17,DBLP:conf/coling/KuangX18,DBLP:conf/naacl/BawdenSBH18,DBLP:conf/pacling/YamagishiK19},后期证明在Transformer模型上同样适用\upcite{DBLP:journals/corr/abs-1805-10163,DBLP:conf/emnlp/ZhangLSZXZL18}。图\ref{fig:17-18}展示了一个基于Transformer模型的多编码器结构,基于源语言当前待翻译句子的编码表示$\mathbi{h}$和上下文句子的编码表示$\mathbi{h}^{\textrm pre}$,模型首先通过注意力机制提取上下文信息$\mathbi{d}$
\begin{eqnarray} \begin{eqnarray}
...@@ -581,6 +560,15 @@ ...@@ -581,6 +560,15 @@
\end{eqnarray} \end{eqnarray}
其中,$\widetilde{\mathbi{h}}$为融合了上下文信息的最终序列表示结果,$\widetilde{\mathbi{h}_{t}}$为其第$t$个位置的表示。$\mathbi{W}_{\lambda}$$\mathbi{b}_{\lambda}$为模型可学习的参数,$\sigma$为Sigmoid函数,用来获取门控权值$\lambda$。除了在编码端融合源语言上下文信息,也可以直接用类似机制在解码器内完成源语言上下文信息的融合\upcite{DBLP:conf/emnlp/ZhangLSZXZL18} 其中,$\widetilde{\mathbi{h}}$为融合了上下文信息的最终序列表示结果,$\widetilde{\mathbi{h}_{t}}$为其第$t$个位置的表示。$\mathbi{W}_{\lambda}$$\mathbi{b}_{\lambda}$为模型可学习的参数,$\sigma$为Sigmoid函数,用来获取门控权值$\lambda$。除了在编码端融合源语言上下文信息,也可以直接用类似机制在解码器内完成源语言上下文信息的融合\upcite{DBLP:conf/emnlp/ZhangLSZXZL18}
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter17/Figures/figure-multiencoder}
\caption{多编码器结构\upcite{DBLP:conf/acl/LiLWJXZLL20}}
\label{fig:17-18}
\end{figure}
%----------------------------------------------
\parinterval 此外,由于多编码器结构引入了额外的模块,模型整体参数量大大增加,同时增加了模型训练的难度。为此,一些研究人员提出使用句子级模型预训练的方式来初始化模型参数\upcite{DBLP:journals/corr/JeanLFC17,DBLP:conf/emnlp/ZhangLSZXZL18},或者将两个编码器的参数进行共享来降低模型复杂度\upcite{DBLP:conf/pacling/YamagishiK19,DBLP:conf/coling/KuangX18,DBLP:journals/corr/abs-1805-10163} \parinterval 此外,由于多编码器结构引入了额外的模块,模型整体参数量大大增加,同时增加了模型训练的难度。为此,一些研究人员提出使用句子级模型预训练的方式来初始化模型参数\upcite{DBLP:journals/corr/JeanLFC17,DBLP:conf/emnlp/ZhangLSZXZL18},或者将两个编码器的参数进行共享来降低模型复杂度\upcite{DBLP:conf/pacling/YamagishiK19,DBLP:conf/coling/KuangX18,DBLP:journals/corr/abs-1805-10163}
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
...@@ -589,6 +577,11 @@ ...@@ -589,6 +577,11 @@
\subsubsection{3. 层次结构模型} \subsubsection{3. 层次结构模型}
\parinterval 多编码器结构通过额外的编码器对前一句进行编码,但是当处理更多上下文句子的时候仍然面临效率低下的问题。为了捕捉更大范围的上下文,可以采用层次结构来对更多的上下文句子进行建模。层次结构是一种有效的序列表示方法,而且人类语言中天然就具有层次性,比如,句法树、篇章结构树等。类似的思想也成功的应用在基于树的句子级翻译模型中(见{\chaptereight}{\chapterfifteen})。
\parinterval\ref{fig:17-19}描述了一个基于层次注意力的模型结构\upcite{Werlen2018DocumentLevelNM}。首先通过翻译模型的编码器获取前$K$个句子的词序列编码表示$(\mathbi{h}^{\textrm{pre}1},\dots,\mathbi{h}^{\textrm{pre}K})$,然后针对前文每个句子的词序列编码表示$\mathbi{h}^{\textrm{pre}k}$,使用词级注意力提取句子级的上下文信息$\mathbi{s}^{k}$,然后在这$K$个句子级上下文信息$\mathbi{s}=(\mathbi{s}^1,\dots,\mathbi{s}^K)$的基础上,使用句子级注意力提取篇章上下文信息$\mathbi{d}$。由于上下文信息$\mathbi{d}$的获取涉及到词级和句子级两个不同层次的注意力操作,因此将该过程称为层次注意力。实际上,这种方法并没有使用语言学的篇章层次结构。但是,句子级注意力在归纳统计意义上的篇章结构,因此这种方法也可以捕捉不同句子之间的关系。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
...@@ -598,11 +591,7 @@ ...@@ -598,11 +591,7 @@
\end{figure} \end{figure}
%---------------------------------------------- %----------------------------------------------
\parinterval 多编码器结构通过额外的编码器对前一句进行编码,但是当处理更多上下文句子的时候仍然面临效率低下的问题。为了捕捉更大范围的上下文,可以采用层次结构来对更多的上下文句子进行建模。层次结构是一种有效的序列表示方法,而且人类语言中天然就具有层次性,比如,句法树、篇章结构树等。类似的思想也成功的应用在基于树的句子级翻译模型中({\chaptereight}{\chapterfifteen})。 \parinterval 为了增强模型的表示能力,层次注意力中并未直接使用当前句子第$t$个位置的编码表示$\mathbi{h}_{t}$作为查询,而是通过$f_w$$f_s$两个线性变换分别获取词级注意力和句子级注意力的查询$\mathbi{q}_{w}$$\mathbi{q}_{s}$,定义如下:
\parinterval\ref{fig:17-19}描述了一个基于层次注意力的模型结构\upcite{Werlen2018DocumentLevelNM}。首先通过翻译模型的编码器获取前$k$个句子的词序列编码表示$(\mathbi{h}^{\textrm{pre}1},\mathbi{h}^{\textrm{pre}2},\dots,\mathbi{h}^{\textrm{pre}k})$,然后针对前文每个句子的词序列编码表示$\mathbi{h}^{\textrm{pre}j}$,使用词级注意力提取句子级的上下文信息$\mathbi{s}^{j}$,然后在这$k$个句子级上下文信息$\mathbi{s}=(\mathbi{s}^1,\mathbi{s}^2,\dots,\mathbi{s}^k)$的基础上,使用句子级注意力提取篇章上下文信息$\mathbi{d}$。最终上下文信息$\mathbi{d}$的获取涉及到词级和句子级两个不同层次的注意力操作,因此将该过程称为层次注意力。实际上,这种方法并没有使用语言学的篇章层次结构。但是,句子级注意力在归纳统计意义上的篇章结构,因此这种方法也可以很好地捕捉不同句子之间的关系。
\parinterval 为了增强模型表示能力,层次注意力中并未直接使用当前句子第$t$个位置的编码表示$\mathbi{h}_{t}$作为查询,而是通过$f_w$$f_s$两个线性变换分别获取词级注意力和句子级注意力的查询$\mathbi{q}_{w}$$\mathbi{q}_{s}$,定义如下:
\begin{eqnarray} \begin{eqnarray}
\mathbi{q}_{w}&=&f_w(\mathbi{h}_t) \mathbi{q}_{w}&=&f_w(\mathbi{h}_t)
...@@ -612,7 +601,7 @@ ...@@ -612,7 +601,7 @@
\end{eqnarray} \end{eqnarray}
\noindent 另外,之后分别计算词级和句子级注意力模型。需要注意的是句子级注意力添加了一个前馈全连接网络子层FFN。其具体计算方式如下公式所示 \noindent 之后,分别计算词级和句子级注意力模型。需要注意的是句子级注意力添加了一个前馈全连接网络子层FFN。其具体计算方式如下
\begin{eqnarray} \begin{eqnarray}
\mathbi{s}^j&=&\textrm{WordAttention}(\mathbi{q}_{w},\mathbi{h}^{j},\mathbi{h}^{j}) \mathbi{s}^j&=&\textrm{WordAttention}(\mathbi{q}_{w},\mathbi{h}^{j},\mathbi{h}^{j})
...@@ -623,7 +612,7 @@ ...@@ -623,7 +612,7 @@
\noindent 其中,$\textrm{WordAttention}(\cdot)$$\textrm{SentAttention}(\cdot)$都是标准的自注意力模型。在得到最终的上下文信息$\mathbi{d}$后,模型同样采用门控机制(如公式\eqref{eq:17-3-4} 和公式\eqref{eq:17-3-5})与$\mathbi{h}$进行融合来得到一个上下文相关的当前句子表示$\widetilde{\mathbi{h}}$ \noindent 其中,$\textrm{WordAttention}(\cdot)$$\textrm{SentAttention}(\cdot)$都是标准的自注意力模型。在得到最终的上下文信息$\mathbi{d}$后,模型同样采用门控机制(如公式\eqref{eq:17-3-4} 和公式\eqref{eq:17-3-5})与$\mathbi{h}$进行融合来得到一个上下文相关的当前句子表示$\widetilde{\mathbi{h}}$
\parinterval 通过层次注意力,模型可以在词级和句子级两个维度从多个句子中提取更充分的上下文信息,除了用于编码器端,也可以用于解码器端来获取目标端的上下文信息。基于层次注意力,为了进一步编码整个篇章的上下文信息,研究人员提出选择性注意力来对篇章中整体上下文进行有选择的信息提取\upcite{DBLP:conf/naacl/MarufMH19}。此外,也有研究人员使用循环神经网络\upcite{DBLP:conf/emnlp/WangTWL17}记忆网络\upcite{DBLP:conf/acl/HaffariM18}、胶囊网络\upcite{DBLP:conf/emnlp/YangZMGFZ19}和片段级相对注意力\upcite{DBLP:conf/ijcai/ZhengYHCB20}等结构来对多个上下文句子进行上下文信息提取。 \parinterval 通过层次注意力,模型可以在词级和句子级两个维度从多个句子中提取更充分的上下文信息,除了用于编码器,也可以用于解码器来获取目标语言的上下文信息。基于层次注意力,为了进一步编码整个篇章的上下文信息,研究人员提出选择性注意力来对篇章中整体上下文进行有选择的信息提取\upcite{DBLP:conf/naacl/MarufMH19}。此外,也有研究人员使用循环神经网络\upcite{DBLP:conf/emnlp/WangTWL17}记忆网络\upcite{DBLP:conf/acl/HaffariM18}、胶囊网络\upcite{DBLP:conf/emnlp/YangZMGFZ19}和片段级相对注意力\upcite{DBLP:conf/ijcai/ZhengYHCB20}等结构来对多个上下文句子进行上下文信息提取。
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION % NEW SUBSUB-SECTION
...@@ -633,14 +622,14 @@ ...@@ -633,14 +622,14 @@
\parinterval 除了以上提到的建模方法,还有一类基于缓存的方法\upcite{DBLP:journals/tacl/TuLSZ18,DBLP:conf/coling/KuangXLZ18}。这类方法最大的特点在于将篇章翻译看作一个连续的过程,即依次翻译篇章中的每一个句子,该过程中通过一个额外的缓存来记录一些相关信息,且在每个句子的推断过程中都使用这个缓存来提供上下文信息。图\ref{fig:17-20}描述了一种基于缓存的篇章级翻译模型结构\upcite{DBLP:journals/tacl/TuLSZ18}。 在这里,翻译模型基于循环神经网络(见{\chapterten}),但是这种方法同样适用于包括Transformer在内的其他神经机器翻译模型。 \parinterval 除了以上提到的建模方法,还有一类基于缓存的方法\upcite{DBLP:journals/tacl/TuLSZ18,DBLP:conf/coling/KuangXLZ18}。这类方法最大的特点在于将篇章翻译看作一个连续的过程,即依次翻译篇章中的每一个句子,该过程中通过一个额外的缓存来记录一些相关信息,且在每个句子的推断过程中都使用这个缓存来提供上下文信息。图\ref{fig:17-20}描述了一种基于缓存的篇章级翻译模型结构\upcite{DBLP:journals/tacl/TuLSZ18}。 在这里,翻译模型基于循环神经网络(见{\chapterten}),但是这种方法同样适用于包括Transformer在内的其他神经机器翻译模型。
\parinterval 模型中篇章上下文的建模依赖于缓存的读和写操作。缓存的写操作指的是:按照一定规则将翻译历史中一些译文单词对应的上下文向量和其解码器端的隐藏状态分别作为键和值写入到缓存中。而缓存的读操作是指将待翻译句子中第$t$个单词的上下文向量$\mathbi{C}_t$作为查询,与缓存中的所有键分别进行匹配,并根据其匹配程度进行带权相加,最后得到当前待翻译句子的篇章上下文信息 $\mathbi{d}$。该方法中单词的解码器端隐藏状态$\mathbi{s}_t$与对应位置的上下文信息$\mathbi{d}_t$的融合也是基于门控机制。事实上,由于该方法中缓存空间是有限的,其内容的更新也存在一定的规则:在当前句子的翻译结束后,如果单词$y_t$的对应信息未曾写入缓存,则写入其中的空槽或者替换最久未使用的键值对;如果$y_t$ 已作为翻译历史存在于缓存中,则将对应的键值对按照以下规则进行更新: \parinterval 模型中篇章上下文的建模依赖于缓存的读和写操作。缓存的写操作指的是:按照一定规则,将翻译历史中一些译文单词对应的上下文向量作为键,将其解码器端的隐藏状态作为值,共同写入到缓存中。而缓存的读操作是指将待翻译句子中第$t$个单词的上下文向量$\mathbi{C}_t$作为查询,与缓存中的所有键分别进行匹配,并根据其匹配程度进行带权相加,最后得到当前待翻译句子的篇章上下文信息 $\mathbi{d}$。 该方法中,解码器端隐藏状态$\mathbi{s}_t$与对应位置的上下文信息$\mathbi{d}_t$的融合也是基于门控机制。事实上,由于该方法中缓存空间是有限的,其内容的更新也存在一定的规则:在当前句子的翻译结束后,如果单词$y_t$的对应信息未曾写入缓存,则写入其中的空槽或者替换最久未使用的键值对;如果$y_t$ 已作为翻译历史存在于缓存中,则将对应的键值对按照以下规则进行更新:
\begin{eqnarray} \begin{eqnarray}
\mathbi{k}_{i}&=&\frac{\mathbi{k}_{i}+\mathbi{c}_{t}}{2} \mathbi{k}_{i}&=&\frac{\mathbi{k}_{i}+\mathbi{c}_{t}}{2}
\label{eq:17-3-10}\\ \label{eq:17-3-10}\\
\mathbi{v}_{i}&=&\frac{\mathbi{v}_{i}+\mathbi{s}_{t}}{2} \mathbi{v}_{i}&=&\frac{\mathbi{v}_{i}+\mathbi{s}_{t}}{2}
\label{eq:17-3-11} \label{eq:17-3-11}
\end{eqnarray} \end{eqnarray}
其中,$i$表示$y_t$在缓存中的位置,$\mathbi{k}_{i}$$\mathbi{v}_{i}$分别为缓存中对应的键和值。这种方法缓存的都是目标语言历史的词级表示,因此能够解决一些词汇衔接的问题,比如词汇一致性和一些搭配问题,产生更连贯的翻译结果。 其中,$i$表示$y_t$在缓存中的位置,$\mathbi{k}_{i}$$\mathbi{v}_{i}$分别为缓存中对应的键和值。这种方法缓存的都是目标语言历史的词级表示,因此能够解决一些词汇衔接的问题,比如词汇一致性和一些搭配问题,产生更连贯的翻译结果。
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
...@@ -658,15 +647,15 @@ ...@@ -658,15 +647,15 @@
\parinterval 前面介绍的方法主要是对篇章中待翻译句子的上下文句子进行建模,通过端到端的方式对上下文信息进行提取和融合。由于篇章级双语数据相对稀缺,这种复杂的篇章级翻译模型很难得到充分训练,通常可以采用两阶段训练或参数共享的方式来缓解这个问题。此外,由于句子级双语数据更为丰富,一个自然的想法是以高质量的句子级翻译模型为基础,通过在推断过程中结合上下文信息来构造篇章级翻译模型。 \parinterval 前面介绍的方法主要是对篇章中待翻译句子的上下文句子进行建模,通过端到端的方式对上下文信息进行提取和融合。由于篇章级双语数据相对稀缺,这种复杂的篇章级翻译模型很难得到充分训练,通常可以采用两阶段训练或参数共享的方式来缓解这个问题。此外,由于句子级双语数据更为丰富,一个自然的想法是以高质量的句子级翻译模型为基础,通过在推断过程中结合上下文信息来构造篇章级翻译模型。
\parinterval 在句子级翻译模型中引入目标语言端的篇章级语言模型\upcite{DBLP:conf/discomt/GarciaCE19,DBLP:journals/tacl/YuSSLKBD20,DBLP:journals/corr/abs-2010-12827}是一种结合上下文信息的常用手段。 相比于篇章级双语数据,篇章级单语数据更容易获取。在双语数据稀缺的情况下,通过引入目标语言端的篇章级语言模型可以更充分的利用这些单语数据。最简单的做法是在句子级翻译模型基础上引入篇章级语言模型\upcite{DBLP:conf/discomt/GarciaCE19,DBLP:journals/corr/abs-2010-12827},既可以作为整个搜索过程中的模型得分,也可以作为重排序阶段的一种特征。 \parinterval 在句子级翻译模型中引入目标语言端的篇章级语言模型是一种结合上下文信息的常用手段\upcite{DBLP:conf/discomt/GarciaCE19,DBLP:journals/tacl/YuSSLKBD20,DBLP:journals/corr/abs-2010-12827}。 相比于篇章级双语数据,篇章级单语数据更容易获取。在双语数据稀缺的情况下,通过引入目标语言端的篇章级语言模型可以更充分的利用这些单语数据,比如,可以把这个语言模型与翻译模型做插值,也可以将其作为重排序阶段的一种特征。
\parinterval 另一种方法是通过两阶段解码\upcite{DBLP:conf/aaai/XiongH0W19,DBLP:conf/acl/VoitaST19}和后编辑\upcite{DBLP:conf/emnlp/VoitaST19}在句子级翻译结果上进行修正。这种方法不影响句子级翻译模型的推断过程,而是在完成翻译后使用额外的模块进行第二阶段的翻译,如图\ref{fig:17-21}所示,这种两阶段解码的做法相当于将篇章级翻译的问题进行了分离和简化,适用于篇章级双语数据稀缺的场景。基于类似的思想,也可以使用后编辑的做法对翻译结果进行修正。区别于两阶段解码的方法,后编辑的方法无需参考源源语言信息,只是对译文结果进行修正。通过这种方式,可以降低对篇章级双语数据的需求 \parinterval 另一种方法是两阶段翻译。这种方法不影响句子级翻译模型的推断过程,而是在完成翻译后使用额外的模块进行第二阶段的翻译\upcite{DBLP:conf/aaai/XiongH0W19,DBLP:conf/acl/VoitaST19}。如图\ref{fig:17-21}所示,这种两阶段翻译的做法相当于将篇章级翻译的问题进行了分离和简化,适用于篇章级双语数据稀缺的场景两阶段翻译。基于类似的思想,也可以使用后编辑的做法对翻译结果进行修正。区别于两阶段翻译的方法,后编辑的方法无需参考源语言信息,只是对译文结果进行修正\upcite{DBLP:conf/emnlp/VoitaST19}
%---------------------------------------------- %----------------------------------------------
\begin{figure}[htp] \begin{figure}[htp]
\centering \centering
\input{./Chapter17/Figures/figure-twodecoding} \input{./Chapter17/Figures/figure-twodecoding}
\caption{两阶段解码} \caption{两阶段翻译}
\label{fig:17-21} \label{fig:17-21}
\end{figure} \end{figure}
%---------------------------------------------- %----------------------------------------------
...@@ -684,13 +673,13 @@ ...@@ -684,13 +673,13 @@
\item 本章仅对音频处理和语音识别进行了简单的介绍,具体内容可以参考一些经典书籍,比如关于信号处理的基础知识\upcite{Oppenheim2001DiscretetimeSP,Quatieri2001DiscreteTimeSS},以及语音识别的传统方法\upcite{DBLP:books/daglib/0071550,Huang2001SpokenLP}和基于深度学习的最新方法\upcite{benesty2008automatic} \item 本章仅对音频处理和语音识别进行了简单的介绍,具体内容可以参考一些经典书籍,比如关于信号处理的基础知识\upcite{Oppenheim2001DiscretetimeSP,Quatieri2001DiscreteTimeSS},以及语音识别的传统方法\upcite{DBLP:books/daglib/0071550,Huang2001SpokenLP}和基于深度学习的最新方法\upcite{benesty2008automatic}
\vspace{0.5em} \vspace{0.5em}
\item 此外,语音翻译的一个重要应用是机器同声传译。机器同声传译的一个难点在于不同语言的文字顺序不同。这个问题导致了同声传译模型需要在翻译性能和实时性之间进行取舍。目前,同声传译的一种思路是基于目前已经说出的语音进行翻译\upcite{DBLP:conf/acl/MaHXZLZZHLLWW19},比如,等待源语$k$个词语,然后再进行翻译,同时改进束搜索方式来预测未来的词序列,从而提升准确度\upcite{DBLP:conf/emnlp/ZhengMZH19}。或者,对当前语音进行翻译,但需要判断翻译的词是否能够作为最终结果。如果是则不需要重新解码,否则将会根据之后的语音重新进行解码\upcite{DBLP:conf/naacl/DalviDSV18,DBLP:journals/corr/ChoE16}。第二种思路是动态预测当前时刻是应该继续等待还是开始翻译,这种方式更符合人类进行同传的思路。但是这种策略的难点在于标注每一时刻的决策状态十分耗时且标准难以统一,目前主流的方式是利用强化学习方法\upcite{DBLP:conf/eacl/NeubigCGL17,DBLP:conf/emnlp/GrissomHBMD14},对句子进行不同决策方案采样,最终学到最优的决策方案。此外,还有一些工作设计不同的学习策略\upcite{DBLP:conf/acl/ZhengLZMLH20,DBLP:conf/emnlp/ZhengZMH19,DBLP:conf/acl/ZhengZMH19}或改进注意力机制\upcite{DBLP:conf/acl/ArivazhaganCMCY19}以提升机器同声传译的性能。 \item 此外,语音翻译的一个重要应用是机器同声传译。机器同声传译的一个难点在于不同语言的文字顺序不同。目前,同声传译的一种思路是基于目前已经说出的语音进行翻译\upcite{DBLP:conf/acl/MaHXZLZZHLLWW19},比如,等待源语$k$个词语,然后再进行翻译,同时改进束搜索方式来预测未来的词序列,从而提升准确度\upcite{DBLP:conf/emnlp/ZhengMZH19}。或者,对当前语音进行翻译,但需要判断翻译的词是否能够作为最终结果,已决定是否根据之后的语音重新进行翻译\upcite{DBLP:conf/naacl/DalviDSV18,DBLP:journals/corr/ChoE16}。第二种思路是动态预测当前时刻是应该继续等待还是开始翻译,这种方式更符合人类进行同传的行为。但是这种策略的难点在于标注每一时刻的决策状态十分耗时且标准难以统一,目前主流的方式是利用强化学习方法\upcite{DBLP:conf/eacl/NeubigCGL17,DBLP:conf/emnlp/GrissomHBMD14},对句子进行不同决策方案采样,最终学到最优的决策方案。此外,还有一些工作设计不同的学习策略\upcite{DBLP:conf/acl/ZhengLZMLH20,DBLP:conf/emnlp/ZhengZMH19,DBLP:conf/acl/ZhengZMH19}或改进注意力机制\upcite{DBLP:conf/acl/ArivazhaganCMCY19}以提升机器同声传译的性能。
\vspace{0.5em} \vspace{0.5em}
\item 在篇章级翻译方面,一些研究工作对这类模型的上下文建模能力进行了探索\upcite{DBLP:conf/discomt/KimTN19,DBLP:conf/acl/LiLWJXZLL20},发现模型性能在小数据集上的BLEU提升并不完全来自于上下文信息的利用。同时,受限于数据规模,篇章级翻译模型相对难以训练。一些研究人员通过调整训练策略来帮助模型更容易捕获上下文信息\upcite{DBLP:journals/corr/abs-1903-04715,DBLP:conf/acl/SaundersSB20,DBLP:conf/mtsummit/StojanovskiF19}。除了训练策略的调整,也可以使用数据增强和预训练的手段来缓解数据稀缺的问题\upcite{DBLP:conf/discomt/SugiyamaY19,DBLP:journals/corr/abs-1911-03110,DBLP:journals/corr/abs-2001-08210}。此外,区别于传统的篇章级翻译,一些对话翻译也需要使用长距离上下文信息\upcite{DBLP:conf/wmt/MarufMH18} \item 在篇章级翻译方面,一些研究工作对这类模型的上下文建模能力进行了探索\upcite{DBLP:conf/discomt/KimTN19,DBLP:conf/acl/LiLWJXZLL20},发现模型性能在小数据集上的BLEU提升并不完全来自于上下文信息的利用。同时,受限于数据规模,篇章级翻译模型相对难以训练。一些研究人员通过调整训练策略使得模型更容易捕获上下文信息\upcite{DBLP:journals/corr/abs-1903-04715,DBLP:conf/acl/SaundersSB20,DBLP:conf/mtsummit/StojanovskiF19}。除了训练策略的调整,也可以使用数据增强和预训练的手段来缓解数据稀缺的问题\upcite{DBLP:conf/discomt/SugiyamaY19,DBLP:journals/corr/abs-1911-03110,DBLP:journals/corr/abs-2001-08210}。此外,区别于传统的篇章级翻译,一些对话翻译也需要使用长距离上下文信息\upcite{DBLP:conf/wmt/MarufMH18}
\vspace{0.5em} \vspace{0.5em}
\item 此外,多模态机器翻译、图像描述、视觉问答等多模态任务受到广泛关注。如何将多个模态的信息充分融合,是研究多模态任务的重要问题。另外,数据稀缺是大多数多模态任务的瓶颈之一,可以采取数据增强\upcite{DBLP:conf/emnlp/GokhaleBBY20,DBLP:conf/eccv/Tang0ZWY20}的方式缓解。但是,这时仍需要回答在:模型没有充分训练时,图像等模态信息究竟在翻译里发挥了多少作用?类似的问题在篇章级机器翻译中也存在,上下文模型在训练数据量很小的时候对翻译的作用十分微弱\upcite{DBLP:conf/acl/LiLWJXZLL20}。此外,受到预训练模型的启发,在多模态领域,图像和文本联合预训练\upcite{DBLP:conf/eccv/Li0LZHZWH0WCG20,DBLP:conf/aaai/ZhouPZHCG20,DBLP:conf/iclr/SuZCLLWD20}的工作也相继开展 \item 此外,多模态机器翻译、图像描述生成、视觉问答等多模态任务受到广泛关注。如何将多个模态的信息充分融合,是研究多模态任务的重要问题。另外,数据稀缺是大多数多模态任务的瓶颈之一,可以采取数据增强的方式缓解\upcite{DBLP:conf/emnlp/GokhaleBBY20,DBLP:conf/eccv/Tang0ZWY20}。但是,这时仍需要回答在:模型没有充分训练时,图像等模态信息究竟在翻译里发挥了多少作用?类似的问题在篇章级机器翻译中也存在,上下文模型在训练数据量很小的时候对翻译的作用十分微弱\upcite{DBLP:conf/acl/LiLWJXZLL20}。此外,受到预训练模型的启发,在多模态信息处理中,图像和文本联合预训练的工作也相继开展\upcite{DBLP:conf/eccv/Li0LZHZWH0WCG20,DBLP:conf/aaai/ZhouPZHCG20,DBLP:conf/iclr/SuZCLLWD20}
\vspace{0.5em} \vspace{0.5em}
\end{itemize} \end{itemize}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论