Commit b597f795 by 孟霞

合并分支 'mengxia' 到 'caorunzhe'

Mengxia

查看合并请求 !409
parents 3995a472 df5f0c2b
......@@ -20,8 +20,8 @@
\node [anchor=west] (a15-2) at ([xshift=-4.25em]a15.west) {\tiny{$\cdots$}};
\node [anchor=east] (a13-3) at ([yshift=0.8em]a13-2.west) {\small{无监督语言}};
\node [anchor=north] (a13-4) at ([xshift=0em]a13-3.south) {\small{模型隐藏层}};
\node [anchor=east] (a13-3) at ([yshift=0.8em]a13-2.west) {\small{模型语言}};
\node [anchor=north] (a13-4) at ([xshift=0em]a13-3.south) {\small{隐藏层}};
\node [anchor=east] (a14-3) at ([yshift=0.8em]a14-2.west) {\small{神经机器翻译}};
\node [anchor=north] (a14-4) at ([xshift=0.5em]a14-3.south) {\small{模型隐藏层}};
......
......@@ -135,54 +135,54 @@
\parinterval 前向和反向语言模型均可以使用海量的单语数据训练得到。通过这种方法,选取到的稀有词保证了替换后句子的句法合理性以及流畅度。最后,根据词对齐找到替换词在目标语言句子中对应的位置$j$,根据翻译词典等方法,就可以将目标语言句子中的$y_j$替换为$x_i^{'}$对应的翻译结果$y_j^{'}$,从而生成得到伪双语数据。
{\color{red} 就介绍这一篇文章?我们是对一个方向进行整理,对典型工作进行描述,适当的还应该有些扩展,可以看一下14章的写法。单词替换的方式有很多,我印象里也有几篇。即使不是在数据增强方面的,包括张家俊的论文都提过类似的内容。我们写东西的全面性也是非常必要的。也可以再看一下李垠桥写的内容,他那个风格介绍还是很全面的。现在不是翻译一篇论文。}
{\color{red} 就介绍这一篇文章?可以再看一下我发给许晨的一篇文章,上面也有一些相关工作的整理。我们是对一个方向进行整理,对典型工作进行描述,适当的还应该有些扩展,可以看一下14章的写法。单词替换的方式有很多,我印象里也有几篇。即使不是在数据增强方面的,包括张家俊的论文都提过类似的内容。我们写东西的全面性也是非常必要的。也可以再看一下李垠桥写的内容,他那个风格介绍还是很全面的。现在不是翻译一篇论文。}
\vspace{0.5em}
\end{itemize}
\subsubsection{3. 双语句对挖掘}
\parinterval 从可比语料中挖掘可用的双语句对也是一种常用的数据增强方法。可比语料是指源语言和目标语言虽然不是完全互译的文本,但是蕴含了丰富的双语对照知识,可以从中挖掘出可用的双语句对来训练。相比有标注的双语语料来说,可比语料相对容易获取,比如多种语言报道的新闻事件、多种语言的维基百科词条;多种语言翻译的书籍等。如图\ref{fig:16-5-xc}中展示的维基百科词条所示。
\parinterval 在双语平行语料缺乏的时候,从可比语料中挖掘可用的双语句对也是一种常用的方法({\color{red} 参考文献!})。可比语料是指源语言和目标语言虽然不是完全互译的文本,但是蕴含了丰富的双语对照知识,可以从中挖掘出可用的双语句对来训练。相比双语平行语料来说,可比语料相对容易获取,比如,多种语言报道的新闻事件、多种语言的维基百科词条;多种语言翻译的书籍等。如图\ref{fig:16-5-xc}中展示的维基百科词条所示。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter16/Figures/figure-examples-of-comparable-corpora}
\caption{维基百科中的可比}
\caption{维基百科中的可比}
\label{fig:16-5-xc}
\end{figure}
%-------------------------------------------
\parinterval 可比语料一般从网页中爬取得到,内容一般较为复杂,可能会存在较大比例的噪声,如HTML字符、乱码等,首先需要进行充分的数据清洗操作,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过模型或双语词典来得到,比如通过计算两个不同语言句子之间的单词重叠数或BLEU值\upcite{finding2006adafre,method2008keiji},通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性\upcite{DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10}
\parinterval 可比语料大多存在于网页中,内容较为复杂,可能会存在较大比例的噪声,如HTML字符、乱码等。首先需要进行充分的数据清洗操作,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过统计模型或双语词典来得到,比如,通过计算两个不同语言句子之间的单词重叠数或BLEU值\upcite{finding2006adafre,method2008keiji},通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性\upcite{DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10}
\parinterval 另外一种比较有效的方法是根据两种语言中每个句子的句向量来抽取。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到蕴含句子语义信息的句向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对\cite{DBLP:conf/emnlp/WuZHGQLL19}。然而,不同语言单独训练得到的词嵌入可能在不同的表示空间,因此得到的句向量无法用于衡量两个句子的相似度。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词,在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句向量也就可以用于衡量两个句子是否表示相似的语义。关于跨语言词嵌入的具体内容,可以参考xxx(双语词典归纳一节)。
\parinterval 另外一种比较有效的方法是根据两种语言中每个句子的表示向量来抽取。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到句子的表示向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对\cite{DBLP:conf/emnlp/WuZHGQLL19}。然而,不同语言单独训练得到的词嵌入可能多对应不同的表示空间,因此得到的句向量无法用于衡量两个句子的相似度。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词。在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句向量也就可以用于衡量两个句子是否表示相似的语义({\color{red} 参考文献!})。关于跨语言词嵌入的具体内容,可以参考xxx节({\color{red} 双语词典归纳一节!})。
(扩展阅读)
\parinterval 除此之外,还有很多工作对数据增强方法进行了深入的研究与探讨。探索源语言单语数据在神经机器翻译中的使用方法\upcite{DBLP:conf/emnlp/ZhangZ16};选择何种单语数据来生成伪数据带来的收益更大\upcite{DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19};通过特别标识对真实双语和回译生成的伪双语数据进行区分\upcite{DBLP:conf/wmt/CaswellCG19};在回译过程中对训练数据进行动态选择与加权\upcite{DBLP:journals/corr/abs200403672};利用目标端单语数据和相关的富资源语言进行数据增强\upcite{DBLP:conf/acl/XiaKAN19};通过在源语或目标语中随机选择某些词,将这些词替换为词表中随机的一个词,可以得到伪双语数据\upcite{DBLP:conf/emnlp/WangPDN18};随机选择句子中的某个词,将这个词的词嵌入替换为多个语义相似词的加权表示融合\upcite{DBLP:conf/acl/GaoZWXQCZL19};基于模型的不确定性来量化预测结果的置信度,从而提升回译方法的性能\upcite{DBLP:conf/emnlp/WangLWLS19};探索如何利用大规模单语数据\upcite{DBLP:conf/emnlp/WuWXQLL19};还有一些工作对数据增强进行了理论分析\upcite{DBLP:conf/emnlp/LiLHZZ19}。({\color{red} 这部分写得不错}
\parinterval 除此之外,还有很多工作对数据增强方法进行了深入的研究与探讨。探索源语言单语数据在神经机器翻译中的使用方法\upcite{DBLP:conf/emnlp/ZhangZ16};选择何种单语数据来生成伪数据带来的收益更大\upcite{DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19};通过特别标识对真实双语和回译生成的伪双语数据进行区分\upcite{DBLP:conf/wmt/CaswellCG19};在回译过程中对训练数据进行动态选择与加权\upcite{DBLP:journals/corr/abs200403672};利用目标端单语数据和相关的富资源语言进行数据增强\upcite{DBLP:conf/acl/XiaKAN19};通过在源语言或目标语言中随机选择某些词,将这些词替换为词表中随机的一个词,可以得到伪双语数据\upcite{DBLP:conf/emnlp/WangPDN18};随机选择句子中的某个词,将这个词的词嵌入替换为多个语义相似词的加权表示融合\upcite{DBLP:conf/acl/GaoZWXQCZL19};基于模型的不确定性来量化预测结果的置信度,从而提升回译方法的性能\upcite{DBLP:conf/emnlp/WangLWLS19};探索如何利用大规模单语数据\upcite{DBLP:conf/emnlp/WuWXQLL19};还有一些工作对数据增强进行了理论分析\upcite{DBLP:conf/emnlp/LiLHZZ19}{\color{red},发现XXXX?}。({\color{red} 这部分写得不错}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{基于语言模型的单语数据使用}
\subsection{基于语言模型的方法}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\parinterval 单语数据是一种无标注的数据形式,而自然语言处理领域中最常用的无监督任务是语言模型,用来描述文字序列出现的规律。语言模型在训练过程中逐渐具备了特征提取的作用,并且考虑了生成结果的流畅度。因此,通过单语数据训练语言模型,然后应用在神经机器翻译模型中,也是一种有效的辅助方法。下面从语言模型融合、预训练、联合训练等方向介绍基于语言模型的单语数据使用
\parinterval 除了构造双语平行数据,直接利用单语数据也是机器翻译中的常用方法。通常,单语数据会被用于语言模型的学习(见{\chaptertwo})。对于机器翻译系统,使用语言模型也是一件十分“自然”的事情。在目标语言端,语言模型可以帮助系统产生更加流畅的译文。在源语言端,语言模型也可以用于句子编码,进而更好地生成句子的表示结果。在传统方法中,语言模型更多的被使用在目标语端。不过,近些年来随着预训练技术的发展,语言模型也被使用在神经机器翻译的编码端。下面从语言模型在目标端的融合、预训练编码器、联合训练等方向介绍基于语言模型的单语数据使用方法
\subsubsection{1. 语言模型融合}
\subsubsection{1. 语言模型融合{\color{red} 参考文献较少}}
\parinterval 单语数据是一种无标注的数据形式,而自然语言处理领域中最常用的无监督任务是语言模型,用来描述文字序列出现的规律。神经机器翻译模型本身也具备了语言模型的作用,在解码阶段,不仅考虑和源语言句子的语义对应,也考虑了预测的目标语言句子的流畅度。然而,训练神经机器翻译模型的双语数据是较为有限的,而语言模型可以使用海量的单语数据进行训练,预测结果的流畅度更高。因此,融合语言模型和神经机器翻译模型来生成翻译结果也是一种有效的单语数据使用方法。
\parinterval 神经机器翻译模型自回归地生成翻译结果。对于一个双语句对$(x, y)$,神经机器翻译模型根据源语言句子$x$和前面生成的词来预测当前位置词的概率分布:
\parinterval 融合目标语言端的语言模型是一种最直接的使用单语数据的方法。实际上,神经机器翻译模型本身也具备了语言模型的作用,因为在解码器本质上也是一个语言模型,用于描述生成译文词串的规律。类似于语言模型,神经机器翻译模型可以自回归地生成翻译结果。对于一个双语句对$(x, y)$,神经机器翻译模型根据源语言句子$x$和前面生成的词来预测当前位置词的概率分布:
\begin{eqnarray}
\log_{P(y | x; \theta)} = \sum_{t}{\log_{P(y_t | x, y_{<t}; \theta)}}
\label{eq:16-1-xc}
\end{eqnarray}
\parinterval 这里,$\theta$是神经机器翻译模型的参数,$y_{<t}$表示第$t$个词前面生成的词。神经机器翻译模型考虑了结果的忠诚度和流畅度,忠诚度是指目标语翻译结果和源语言句子的语义保持一致,流畅度是指翻译结果符合人类的语言习惯。忠诚度需要建模源语言和目标语言之间的对应关系,但是流畅度只和目标语言有关。使用海量单语数据训练的语言模型可以生成更流利的句子,将其和神经机器翻译模型的解码过程结合,可以在保证忠诚度的情况下,得到更加流利的翻译结果。具体的结合方法包括两种,分别是浅融合和深融合\cite{2015OnGulcehre},如图\ref{fig:16-6-xc}所示。
{\color{red} 这个公式和第九章的公式最好一致!!!}
\noindent 这里,$\theta$是神经机器翻译模型的参数,$y_{<t}$表示第$t$个词前面生成的词。语言模型可以与上述过程融合,具体分为浅融合和深融合两种方法\cite{2015OnGulcehre},如图\ref{fig:16-6-xc}所示。
%----------------------------------------------
\begin{figure}[htp]
......@@ -193,13 +193,13 @@
\end{figure}
%-------------------------------------------
\parinterval 浅融合通过对神经机器翻译模型和语言模型的预测概率进行加权来得到最终的预测概率:
\parinterval 浅融合通过对神经机器翻译模型和语言模型的预测概率进行插值来得到最终的预测概率:
\begin{eqnarray}
\log_{\funp{P}(y_t | x, y_{<t})} = \log_{\funp{P}(y_t | x, y_{<t}; \theta_{TM})} + \beta \log_{\funp{P}(y_t | y_{<t}; \theta_{LM})}
\label{eq:16-2-xc}
\end{eqnarray}
\parinterval 这里,$\theta_{TM}$$\theta_{LM}$分别表示翻译模型和语言模型的参数,$\beta$是一个超参数,表示语言模型预测概率在解码过程中的权重,通过对比不同权重在校验集上的性能表现来进行选择
\noindent 其中,$\theta_{TM}$$\theta_{LM}$分别表示翻译模型和语言模型的参数。$\beta$是一个超参数,表示语言模型预测概率在解码过程中的权重
\parinterval 深融合是在解码过程中,动态地融合翻译模型和语言模型的隐藏层表示来计算预测概率。
浅融合在解码过程对每个词均采用相同的语言模型权重,而深融合可以根据解码不同的词,动态选择语言模型的权重。
......@@ -211,7 +211,7 @@
\label{eq:16-3-xc}
\end{eqnarray}
\parinterval 这里$s_{t}$表示当前时刻$t$的隐藏层表示。
\noindent 其中$s_{t}$表示当前时刻$t$的隐藏层表示。
\begin{eqnarray}
s_{t} = s_{t}^{TM} + g_{t} s_{t}^{LM}
\label{eq:16-4-xc}
......@@ -223,44 +223,49 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\label{eq:16-5-xc}
\end{eqnarray}
\parinterval 这里,$w$$b$是可学习的参数,在训练过程中不断调整得到,$\sigma$是Sigmoid函数,将结果压缩到$(0, 1)$范围内。
\noindent 其中,$w$$b$是可学习的参数。$\sigma$是Sigmoid函数,将结果压缩到$(0, 1)$范围内。
\parinterval 大多数情况下,译文端语言模型的使用可以提高翻译结果的流畅度。不过,它并不会增加翻译结果对源语言句子表达的{\small\bfnew{充分性}}\index{充分性}(Adequacy\index{Adequacy}),即源语言句子的信息是否被充分提现到了译文中。也有一些研究发现,神经机器翻译过于关注译文的流畅度,但是充分性的问题没有很好的考虑,比如,神经机器翻译系统的结果中经常出现漏译等问题。也有一些研究者提出控制翻译充分性的方法,让译文在流畅度和充分性之间达到平衡({\color{red} 参考文献!Zhaopeng Tu组应该有工作,还有其它一些工作都可以引用})。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{2. 预训练}
\subsubsection{2. 预训练{\color{red} 参考文献较少}}
{\red 预训练模型ELMo、GPT、BERT等在这里是否要详细介绍?}
{\red 预训练模型ELMo、GPT、BERT等在这里是否要详细介绍?}{\color{blue} 还是介绍一下,但是并不是深入讲,要不一些基础的概念大家可能不知道}
\parinterval 编码器-解码器框架天然就包含了对输入(源语言)和输出(目标语言)进行表示学习的过程。比如,在编码端需要学习一种分布式表示(Distributed Representation)来表示源语言句子的信息,这种分布式表示既包含单词的表示也包括整个序列的表示。因此,可以使用更大规模的源语言单语数据完成编码器的训练
\parinterval 编码器-解码器框架天然就包含了对输入(源语言)和输出(目标语言)进行表示学习的过程。在编码端,需要学习一种分布式表示来表示源语言句子的信息,这种分布式表示可以包含序列中每个位置的表示结果(见{\chapternine})。从结构上看,神经机器翻译所使用的编码器与神经语言模型无异,或者说神经机器翻译的编码器其实就是一个源语言的语言模型。唯一的区别在于,神经机器翻译的编码器并不直接输出源语言句子的生成概率,而传统语言模型是建立在序列生成任务上的。既然神经机器翻译的编码器可以与解码器一起在双语数据上联合训练,那为什么不使用更大规模的数据单独对编码器进行训练呢?或者说,直接使用一个预先训练好的编码器,与机器翻译的解码器配合完成翻译过程
\parinterval 实现上述想法的一种手段是{\small\sffamily\bfnew{预训练}}\index{预训练}(Pre-training)\index{Pre-training}。常用的方法是将机器翻译模型中的一部分(比如,编码器)单独提抽取出来,之后用语言建模等方式在大规模单语数据上进行训练。得到优化后的参数后,将其重新放入神经机器翻译模型中,作为模型的初始值。最后,神经机器翻译模型在双语数据上进行{\small\sffamily\bfnew{微调}}\index{微调}(Fine-tuning)\index{Fine-tuning},以得到最终的翻译模型。图\ref{fig:16-7-xc}给出了机器翻译编码器预训练流程的示意图。
\parinterval 实现上述想法的一种手段是{\small\sffamily\bfnew{预训练}}\index{预训练}(Pre-training)\index{Pre-training}{\color{red} 参考文献!}。常用的方法是将机器翻译模型中的一部分(比如,编码器)单独提抽取出来,之后用语言建模等方式在大规模单语数据上进行训练。得到优化后的参数后,将其重新放入神经机器翻译模型中,作为模型的初始值。最后,神经机器翻译模型在双语数据上进行{\small\sffamily\bfnew{微调}}\index{微调}(Fine-tuning)\index{Fine-tuning},以得到最终的翻译模型。图\ref{fig:16-7-xc}给出了机器翻译编码器预训练流程的示意图。
%----------------------------------------------
\begin{figure}[htp]
\centering
\input{./Chapter16/Figures/figure-encoder-fin}
\caption{机器翻译编码器预训练流程}
\caption{机器翻译编码器预训练流程{\color{red} 图要重新构思}}
\label{fig:16-7-xc}
\end{figure}
%-------------------------------------------
\parinterval 预训练的做法相当于对目标任务进行了简化,将表示模型的学习任务从目标任务中分离出来了。这样,可以学习一种更加通用的模型,具有更好的泛化能力。此外,预训练的任务相比于机器翻译要简单许多,比如语言模型或者句子调序等。将预训练任务的结果作为机器翻译模型的初始值可以减轻目标任务上的学习负担。在第六章中已经介绍了几种基于预训练的模型,如ELMo、GPT和BERT等。这些模型的结构和神经机器翻译是兼容的,比如,BERT使用的也是目前神经机器翻译中主流的Transformer模型。因此,可以直接在神经机器翻译中使用这些开放的预训练模型
\parinterval 预训练的做法相当于将表示模型的学习任务从目标任务中分离出来了。这样,可以在更大规模的数据上学习一种更加通用的模型。此外,预训练的任务相比于机器翻译要更加“简单”,其学习过程相对“容易”。比如,最近非常流行的BERT就是一种基于Transformer结构的预训练模型,它可以给自然语言处理下游任务提供句子的表示结果({\color{red} 参考文献!})。对于机器翻译,预训练可以在单词、句子等多个层次上使用
\begin{itemize}
\vspace{0.5em}
\item {\small\sffamily\bfnew{词嵌入预训练}}
\item {\small\sffamily\bfnew{词嵌入预训练}{\color{red} 四级标题}}
{\red(词嵌入预训练和语言模型关系不大,是否要放在这儿?)}
{\red(词嵌入预训练和语言模型关系不大,是否要放在这儿?)}{\color{blue} 没问题,用预训练的word embedding的工作还是不少的}
\parinterval 词嵌入可以被看作是对每个独立单词进行的表示学习,在自然语言处理的众多任务中都扮演着重要角色\upcite{DBLP:journals/corr/abs-1901-09069}。因此,可以使用{\chapternine}介绍的词嵌入方法,在外部单语数据上训练得到词嵌入,并把它作为神经机器翻译系统的词嵌入输入。
\parinterval 词嵌入可以被看作是对每个独立单词进行的表示学习,在自然语言处理的众多任务中都扮演着重要角色\upcite{DBLP:journals/corr/abs-1901-09069}{\color{red} 参考文献!})。到目前为止已经有大量的词嵌入学习方法被提出(见{\chapternine}),因此可以直接应用这些方法在外部单语数据上训练得到词嵌入,并把它作为神经机器翻译系统的词嵌入输入。
\parinterval 需要注意的是,在神经机器翻译中使用预训练的词嵌入有两种方法。一种方法是直接将词嵌入作为固定的输入,也就是在训练机器翻译模型的过程中,并不调整词嵌入的参数。这样做的目的是完全将词嵌入模块独立出来,机器翻译可以被看作是在固定的词嵌入输入上进行的建模,降低了机器翻译系统学习的难度。另一种方法是仍然遵循``预训练+微调''的策略,将词嵌入作为翻译模型的初始值。之后在机器翻译训练过程中,词嵌入模型结果会被进一步更新。近些年,在词嵌入预训练的基础上进行微调的方法受到研究者越来越多的青睐({\color{red} 参考文献!})。因为在实践中发现,完全用单语数据学习的单词表示,与双语上的翻译任务并不完全匹配。目标语言的信息也会影响源语言的表示学习。这时,在预训练词嵌入的基础上进一步进行微调是更加有效的方案。
\parinterval 需要注意的是,在神经机器翻译中使用预训练的词嵌入有两种方法。一种方法是直接将词嵌入作为固定的输入,也就是在训练机器翻译模型的过程中,并不调整词嵌入的参数。这样做的目的是完全将词嵌入模块独立出来,机器翻译可以被看作是在固定的词嵌入输入上进行的建模。另一种方法是仍然遵循``预训练+微调''的策略,将词嵌入作为翻译模型的初始值。之后在机器翻译训练过程中,词嵌入模型结果会被进一步更新。近些年,在词嵌入预训练的基础上进行微调的方法受到研究者越来越多的青睐。
\vspace{0.5em}
\item {\small\sffamily\bfnew{编码器预训练}}
\parinterval 编码器在神经机器翻译中的作用是对源语句子中的信息进行抽象和提取,将离散的词序列编码成一组上下文相关的向量表示,本质上就是一个源语言端的句子表示模型。因此,可以使用预训练好的句子级表示模型(比如,BERT和XLM等),来初始化编码器参数。然而在实践中发现,这种参数初始化的方法在一些富资源语种上提升效果并不明显,甚至反而有些下降\upcite{DBLP:journals/corr/abs-2002-06823}。原因可能在于预训练模型和编码器虽然都是对句子进行表示,但是由于目标任务不一致,二者的参数状态还是存在区别的。因此,也有一些做法将预训练模型和翻译模型在结构上进行融合,将预训练句子模型作为一个独立的模块来为编码器或者解码器提供句子级表示信息\upcite{DBLP:journals/corr/abs-2002-06823}
\parinterval 编码器在神经机器翻译中的作用是对源语句子中的信息进行抽象和提取。通常这个过程会将离散的词序列编码成一组上下文相关的向量表示,即:序列的每个位置都会有一个向量。句子级预训练模型正是要学习这种序列的表示向量。从学习方式上看,预训练模型可以分为:自回归模型、自编吗模型 xxx {\color{red} 找一些综述看看,论文非常多,可以引用一些在这小节。然后进一步描述,稍微介绍一下基本概念和模型结构,还有训练方式}
预训练的结果可以作为编码器的初始状态。然而在实践中发现,这种参数初始化的方法在一些富资源语种上提升效果并不明显,甚至反而有些下降\upcite{DBLP:journals/corr/abs-2002-06823}{\color{red} 参考文献!})。原因可能在于预训练模型和编码器虽然都是对句子进行表示,但是由于目标任务不一致,二者的参数状态还是存在区别的。因此,也有一些做法将预训练模型和翻译模型在结构上进行融合,将预训练句子模型作为一个独立的模块来为编码器或者解码器提供句子级表示信息\upcite{DBLP:journals/corr/abs-2002-06823}
\vspace{0.5em}
\item {\small\sffamily\bfnew{序列到序列预训练}}
......
......@@ -66,7 +66,7 @@
\subsubsection{2. 神经网络的第二次高潮和第二次寒冬}
\parinterval 虽然第一代神经网络受到了打击,但是20世纪80年代,第二代人工神经网络开始萌发新的生机。在这个发展阶段,生物属性已经不再是神经网络的唯一灵感来源,在{\small\bfnew{连接主义}}\index{连接主义}(Connectionism)\index{Connectionism}和分布式表示两种思潮的影响下,神经网络方法再次走入了人们的视线。
\parinterval 虽然第一代神经网络受到了打击,但是20世纪80年代,第二代人工神经网络开始萌发新的生机。在这个发展阶段,生物属性已经不再是神经网络的唯一灵感来源,在{\small\bfnew{连接主义}}\index{连接主义}(Connectionism)\index{Connectionism}和分布式表示两种思潮的影响下,神经网络方法再次走入了人们的视线。
\vspace{0.3em}
\parinterval (1)符号主义与连接主义
......@@ -102,7 +102,7 @@
\vspace{0.5em}
\end{itemize}
\parinterval 另外,从应用的角度,数据量的快速提升和模型容量的增加也为深度学习的成功提供了条件,数据量的增加使得深度学习有了用武之地,例如,2000年以来,无论在学术研究还是在工业实践中,双语数据的使用数量都在逐年上升(如图\ref{fig:9-1}所示)。现在的深度学习模型参数量都十分巨大,因此需要大规模数据才能保证模型学习的充分性,而大数据时代的到来为训练这样的模型提供了数据基础。
\parinterval 另外,从应用的角度来看,数据量的快速提升和模型容量的增加也为深度学习的成功提供了条件,数据量的增加使得深度学习有了用武之地,例如,2000年以来,无论在学术研究还是在工业实践中,双语数据的使用数量都在逐年上升(如图\ref{fig:9-1}所示)。现在的深度学习模型参数量都十分巨大,因此需要大规模数据才能保证模型学习的充分性,而大数据时代的到来为训练这样的模型提供了数据基础。
%----------------------------------------------------------------------
\begin{figure}[htp]
......@@ -142,7 +142,7 @@
\begin{itemize}
\vspace{0.5em}
\item 特征的构造需要耗费大量的时间和精力。在传统机器学习的特征工程方法中,特征提取过程往往依赖于大量的先验假设,都基于人力完成的,这样导致相关系统的研发周期也大大增加;
\item 特征的构造需要耗费大量的时间和精力。在传统机器学习的特征工程方法中,特征提取都是基于人力完成的,该过程往往依赖于大量的先验假设,会导致相关系统的研发周期也大大增加;
\vspace{0.5em}
\item 最终的系统性能强弱非常依赖特征的选择。有一句话在业界广泛流传:“数据和特征决定了机器学习的上限”,但是人的智力和认知是有限的,因此人工设计的特征的准确性和覆盖度会存在瓶颈;
\vspace{0.5em}
......@@ -150,7 +150,7 @@
\vspace{0.5em}
\end{itemize}
\parinterval 端到端学习将人们从大量的特征提取工作之中解放出来,可以不需要太多人的先验知识。从某种意义上讲,对问题的特征提取完全是自动完成的,这也意味着哪怕系统开发者不是该任务的“专家”也可以完成相关系统的开发。此外,端到端学习实际上也隐含了一种新的对问题的表示形式\ $\dash$分布式表示。 在这种框架下,模型的输入可以被描述为分布式的实数向量,这样模型可以有更多的维度描述一个事物,同时避免传统符号系统对客观事物离散化的刻画。比如,在自然语言处理中,表示学习重新定义了什么是词,什么是句子。在本章后面的内容中也会看到,表示学习可以让计算机对语言文字的描述更加准确和充分。
\parinterval 端到端学习将人们从大量的特征提取工作之中解放出来,可以不需要太多人的先验知识。从某种意义上讲,对问题的特征提取完全是自动完成的,这也意味着即使系统开发者不是该任务的“专家”也可以完成相关系统的开发。此外,端到端学习实际上也隐含了一种新的对问题的表示形式\ $\dash$分布式表示。 在这种框架下,模型的输入可以被描述为分布式的实数向量,这样模型可以有更多的维度描述一个事物,同时避免传统符号系统对客观事物离散化的刻画。比如,在自然语言处理中,表示学习重新定义了什么是词,什么是句子。在本章后面的内容中也会看到,表示学习可以让计算机对语言文字的描述更加准确和充分。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -196,7 +196,7 @@
\subsection{线性代数基础} \label{sec:9.2.1}
\parinterval 线性代数作为一个数学分支,广泛应用于科学和工程中,神经网络的数学描述中也大量使用了线性代数工具。因此,这里对线性代数的一些概念进行简要介绍,以方便后续对神经网络数学描述。
\parinterval 线性代数作为一个数学分支,广泛应用于科学和工程中,神经网络的数学描述中也大量使用了线性代数工具。因此,这里对线性代数的一些概念进行简要介绍,以方便后续对神经网络进行数学描述。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......@@ -740,7 +740,7 @@ x_1\cdot w_1+x_2\cdot w_2+x_3\cdot w_3 & = & 0\cdot 1+0\cdot 1+1\cdot 1 \nonumbe
%-------------------------------------------
\vspace{-0.5em}
\parinterval 那激活函数又是什么?神经元在接收到经过线性变换的结果后,通过激活函数的处理,得到最终的输出$ \mathbf y $。激活函数的目的是解决实际问题中的非线性变换,线性变换只能拟合直线,而激活函数的加入,使神经网络具有了拟合曲线的能力。 特别是在实际问题中,很多现象都无法用简单的线性关系描述,这时可以使用非线性激活函数来描述更加复杂的问题。常见的非线性函数有Sigmoid、ReLU、Tanh等。如图\ref{fig:9-15}列举了几种激活函数的形式。
\parinterval 那激活函数又是什么?神经元在接收到经过线性变换的结果后,通过激活函数的处理,得到最终的输出$ \mathbf y $。激活函数的目的是解决实际问题中的非线性变换,线性变换只能拟合直线,而激活函数的加入,使神经网络具有了拟合曲线的能力。 特别是在实际问题中,很多现象都无法用简单的线性关系描述,这时可以使用非线性激活函数来描述更加复杂的问题。常见的非线性激活函数有Sigmoid、ReLU、Tanh等。如图\ref{fig:9-15}列举了几种激活函数的形式。
%----------------------------------------------
\begin{figure}[htp]
......@@ -1069,7 +1069,7 @@ f(x)=\begin{cases} 0 & x\le 0 \\x & x>0\end{cases}
\parinterval 有了张量这个工具,可以很容易地实现任意的神经网络。反过来,神经网络都可以被看作是张量的函数。一种经典的神经网络计算模型是:给定输入张量,通过各个神经网络层所对应的张量计算之后,最后得到输出张量。这个过程也被称作{\small\sffamily\bfseries{前向传播}}\index{前向传播}(Forward Propagation\index{Forward Propagation}),它常常被应用在使用神经网络对新的样本进行推断中。
\parinterval 来看一个具体的例子,如图\ref{fig:9-37}(a)是一个根据天气情况判断穿衣指数(穿衣指数是人们穿衣薄厚的依据)的过程,将当天的天空状况、低空气温、水平气压作为输入,通过一层神经元在输入数据中提取温度、风速两方面的特征,并根据这两方面的特征判断穿衣指数。需要注意的是,在实际的神经网络中,并不能准确地知道神经元究竟可以提取到哪方面的特征,以上表述是为了让读者更好地理解神经网络的建模过程和前向传播过程。这里将上述过程建模为如图\ref{fig:9-37}(b)所示的两层神经网络。
\parinterval 来看一个具体的例子,如图\ref{fig:9-37}是一个根据天气情况判断穿衣指数(穿衣指数是人们穿衣薄厚的依据)的过程,将当天的天空状况、低空气温、水平气压作为输入,通过一层神经元在输入数据中提取温度、风速两方面的特征,并根据这两方面的特征判断穿衣指数。需要注意的是,在实际的神经网络中,并不能准确地知道神经元究竟可以提取到哪方面的特征,以上表述是为了让读者更好地理解神经网络的建模过程和前向传播过程。这里将上述过程建模为如图\ref{fig:9-37}所示的两层神经网络。
%----------------------------------------------
\begin{figure}[htp]
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论