Commit b561475d by xiaotong

wording (sec 16, unsupervised nmt)

parent 8f10560e
......@@ -560,7 +560,7 @@ Joint training for neural machine translation models with monolingual data
\parinterval 多语言单模型方法也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17,DBLP:conf/lrec/RiktersPK18,dabre2019brief},尤其适用于翻译方向较多的情况,因为为每一个翻译方向单独训练一个模型是不实际的,不仅由于设备资源和时间上的限制,还由于很多翻译方向都没有双语平行数据。比如要翻译100个语言之间的互译的系统,理论上就需要训练$100 \times 99$个翻译模型,代价是十分巨大的。这时就需要用到多语言单模型方法。
\parinterval 多语言单模型系统即用单个模型训练具有多个语言翻译方向的系统。对于源语言集合$G_x$和目标语言集合$G_y$,多语言单模型的学习目标是学习一个单一的模型,这个模型可以进行任意源语言到任意目标语言翻译,即同时支持所有$(x,y) \in (G_x,G_y)$的翻译。多语言单模型方法又可以进一步分为一对多\upcite{DBLP:conf/acl/DongWHYW15}、多对一\upcite{DBLP:journals/tacl/LeeCH17}和多对多\upcite{DBLP:conf/naacl/FiratCB16}的方法。不过这些方法本质上是相同的,因此这里以多对多翻译为例进行介绍。
\parinterval 多语言单模型系统即用单个模型训练具有多个语言翻译方向的系统。对于源语言集合$G_x$和目标语言集合$G_y$,多语言单模型的学习目标是学习一个单一的模型,这个模型可以进行任意源语言到任意目标语言翻译,即同时支持所有$(x,y) \in (G_x,G_y)$的翻译。多语言单模型方法又可以进一步分为一对多\upcite{DBLP:conf/acl/DongWHYW15}、多对一\upcite{DBLP:journals/tacl/LeeCH17}和多对多\upcite{DBLP:conf/naacl/FiratCB16}的方法。不过这些方法本质上是相同的,因此这里以多对多翻译为例进行介绍。
\parinterval 在模型结构方面,多语言模型与普通的神经机器翻译模型相同,都是标准的编码-解码结构。多语言单模型方法的一个假设是:不同语言可以共享同一个表示空间。因此,该方法使用同一个编码器处理所有的源语言句子,使用同一个解码器处理所有的目标语言句子。为了使多个语言共享同一个解码器(或编码器),一种简单的方法是直接在输入句子上加入语言标记,让模型显性地知道当前句子属于哪个语言。如图\ref{fig:16-5-ll}所示,在此示例中,标记“ <spanish>”指示目标句子为西班牙语,标记“ <german>”指示目标句子为德语,则模型在进行翻译时便会将句子开头加<spanish>标签的句子翻译为西班牙语\upcite{DBLP:journals/tacl/JohnsonSLKWCTVW17}。假设训练时有英语到西班牙语 “<spanish> Hello”$\rightarrow$“Hola”和法语到德语“<german> Bonjour”$\rightarrow$“Hallo” 的双语句对,则在解码时候输入英语“<german> Hello”时就会得到解码结果“Hallo”。
......@@ -750,18 +750,42 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection{无监督神经机器翻译}
\subsection{无监督神经机器翻译{\color{red} 参考文献较少!或者加一个拓展阅读!}}
\parinterval 既然神经机器翻译已经证明在大多数情况下都优于统计机器翻译,为什么我们不直接做无监督神经机器翻译呢?实际上由于神经网络的黑盒特性,我们无法像统计机器翻译那样非常直观的定位并解决无监督神经机器翻译。一个折衷的方案是我们借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号,然后在这个基础上训练模型。由于初始的监督信号可能很少或者包含大量噪声,我们需要逐步优化数据来重新训练出更好的模型。这个方案最简单直接的实现就是借助已经成功的无监督统计机器翻译模型产生伪双语数据来训练神经机器翻译模型 ,然后模型进行迭代回译来进行数据优化,如图\ref{fig:16-1}所示\upcite{DBLP:conf/acl/ArtetxeLA19}。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立),缺点是复杂繁琐,涉及许多超参数调整工作。
\parinterval 既然神经机器翻译已经在很多任务上优于统计机器翻译,为什么不直接做无监督神经机器翻译呢?实际上,由于神经网络的黑盒特性使得我们无法像统计机器翻译那样对其进行拆解,并定位问题。因此需要借用其它无监督翻译系统来训练神经机器翻译模型。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{基于无监督统计机器翻译的方法}
一个简单的方法是,借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号,然后在这个基础上训练模型。由于初始的监督信号可能很少或者包含大量噪声,因此需要逐步优化数据来重新训练出更好的模型。这个方案最简单直接的实现就是借助已经成功的无监督统计机器翻译模型产生伪双语数据来训练神经机器翻译模型 ,然后模型进行迭代回译来进行数据优化,如图\ref{fig:16-1} 所示\upcite{DBLP:conf/acl/ArtetxeLA19}。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立)。缺点是复杂繁琐,涉及许多超参数调整工作,而且训练代价较大({\color{red} 再来一些参考文献?})。
\begin{figure}[h]
\centering
\includegraphics[scale=0.2,angle=90]{Chapter16/Figures/figure-unmt-idea1.jpg}
\caption{无监督神经机器翻译思路1。}
\caption{用无监督统计机器翻译训练神经机器翻译}
\label{fig:16-1}
\end{figure}
\parinterval 既然无监督神经机器翻译问题的核心在于通过无监督方法提供初始的监督信号,另一个思路就是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型训练过程,同时也避免神经机器翻译模型继承统计机器翻译模型的错误,如图\ref{fig:16-2}所示。这种方法的核心就是把翻译看成一个两阶段的过程:无监督词典归纳首先通过双语词典把一个源语句子转换成一个不通顺但是意思完整的目标语译文,然后把这样一个不通顺的句子改写成一个流畅的句子,同时保留原来的含义,最后达到翻译的目的。而第二阶段的改写任务其实也是一个特殊的翻译任务,因为翻译任务本质就是映射两个不同形态的序列并且保持两者之间语义上的一致,只不过现在的源语和目标语都是使用不同的表达方式表达的同一种语言。因此我们可以使用神经机器翻译模型来完成这个任务,而且由于这个任务不再涉及双语数据而只需要单语数据,模型的训练也将是无监督的。尽管这样的方法不再需要无监督统计机器翻译,并且适应能力很强(对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,然后使用相同的模型进行改写),但是目前训练数据需要使用其他语种对的双语数据来进行构造(把源语句子里每个词使用双语词典进行翻译作为输入,输出的目标语句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子不符合语言学的规律并且跟实际应用里见到的句子所服从的数据分布不一致,导致训练测试不一致的问题。最后,这个思路简化了部分流程,但是两个阶段的过程无法避免最终翻译模型继承来自无监督词典归纳的错误\upcite{DBLP:conf/acl/PourdamghaniAGK19}。一个相对更简洁一些的方法则是把无监督词典归纳得到的词典对单语数据进行逐词的翻译,然后在相应的伪数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型\upcite{DBLP:conf/iclr/LampleCDR18}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{基于无监督词典归纳的方法}
\parinterval 既然无监督神经机器翻译问题的核心在于通过无监督方法提供初始的监督信号,另一个思路就是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型训练过程,同时也避免神经机器翻译模型继承统计机器翻译模型的错误,如图\ref{fig:16-2}所示。这种方法的核心就是把翻译看成一个两阶段的过程:
\begin{itemize}
\vspace{0.5em}
\item 首先,无监督词典归纳首先通过双语词典把一个源语言句子转换成一个不通顺但是意思完整的目标语言译文。
\vspace{0.5em}
\item 然后,把这样一个不通顺的句子改写成一个流畅的句子,同时保留原来的含义,最后达到翻译的目的。
\vspace{0.5em}
\end{itemize}
而第二阶段的改写任务其实也是一个特殊的翻译任务,只不过现在的源语言和目标语言是使用不同的方式表达的同一种语言的句子。因此可以使用神经机器翻译模型来完成这个任务,而且由于这里不涉及双语数据而只需要单语数据,模型的训练也将是无监督的。这样的方法不再需要无监督统计机器翻译,并且适应能力很强。对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,然后使用相同的模型进行改写。但是,目前训练数据需要使用其他语种对的双语数据来进行构造(把源语言句子里每个词使用双语词典进行翻译作为输入,输出的目标语言句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子不符合语言学的规律,并且跟真实句子所服从的数据分布不一致,导致训练测试不一致的问题。最后,可以进一步化简流程({\color{red} 和后面的但是逻辑关系没看懂!}),但是两个阶段的过程无法避免最终翻译模型继承来自无监督词典归纳的错误\upcite{DBLP:conf/acl/PourdamghaniAGK19}。一个相对更简洁一些的方法则是把无监督词典归纳得到的词典对单语数据进行逐词的翻译,然后在相应的伪数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型\upcite{DBLP:conf/iclr/LampleCDR18}
\begin{figure}[h]
\centering
......@@ -770,7 +794,13 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\label{fig:16-2}
\end{figure}
\parinterval 为了获得更好的神经机器翻译模型,我们需要对目前训练流程和模型做更深度的整合。我们知道,神经机器翻译模型的训练包含两个阶段:初始化和优化,而无监督神经机器翻译的核心思路也是对应的两个阶段:无监督方法提供初始的监督信号和数据优化,因此我们可以考虑通过在模型的初始化阶段使用无监督方法提供初始的监督信号,然后优化过程不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播,如图\ref{fig:16-3}所示\upcite{DBLP:conf/nips/ConneauL19}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{更深层的融合}
\parinterval 为了获得更好的神经机器翻译模型,可以对训练流程和模型做更深度的整合。{\chapternine}已经介绍,神经机器翻译模型的训练包含两个阶段:初始化和优化,而无监督神经机器翻译的核心思路也是对应的两个阶段:无监督方法提供初始的监督信号和数据优化,因此可以考虑通过在模型的初始化阶段使用无监督方法提供初始的监督信号,然后优化过程不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播,如图\ref{fig:16-3}所示\upcite{DBLP:conf/nips/ConneauL19}
\begin{figure}[h]
\centering
......@@ -779,21 +809,27 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\label{fig:16-3}
\end{figure}
\parinterval 实际中无监督神经机器翻译模型的数据优化并不简单。一般来说我们相信在生成的伪数据上经过参数优化后模型会变得比生成伪数据的时候更好,这时候对这个更好的模型使用数据增强的手段如回译等就可以生成更好的训练数据。这样一个数据优化过程依赖于模型经过参数优化后会生成比原始数据更好的数据的假设,而实际上在数据优化和参数优化共同影响下模型非常容易拟合数据中的简单模式,使得在数据优化过程中模型倾向产生包含这种简单模式的数据,然后模型对这种类型数据过拟合,最后可以得到非常低的损失,然而模型生成的结果却非常差。一个常见的问题解就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,而它的训练过程则退化成普通的语言模型(数据优化产生的数据里无论什么目标语对应的源语都是同一个句子)。这种情况下翻译模型虽然能降低损失(训练语言模型),但是它不能学会任何源语跟目标语之间的对应关系,也就无法翻译。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{4. 其它问题}
\parinterval 实际中无监督神经机器翻译模型的训练并不简单。一般来说,可以相信在生成的伪数据上经过参数优化后模型会变得比生成伪数据的时候更好,这时候对这个更好的模型使用数据增强的手段(如回译等)就可以生成更好的训练数据。这样一个数据优化过程依赖于一个假设:模型经过参数优化后会生成比原始数据更好的数据。而在数据优化和参数优化共同影响下,模型非常容易拟合数据中的简单模式,使得在数据优化过程中模型倾向产生包含这种简单模式的数据,然后模型对这种类型数据过拟合,最后训练模型的损失可以下降到很低,然而模型生成的结果却非常差。一个常见的问题解就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,而它的训练过程则退化成普通的语言模型(数据优化产生的数据里无论什么目标语言对应的源语言都是同一个句子)。这种情况下翻译模型虽然能降低损失(训练语言模型),但是它不能学会任何源语言跟目标语言之间的对应关系,也就无法翻译。这个现象也反映出无监督机器翻译训练的脆弱性。
\parinterval 比较常见的解决方案就是在双语数据对应的目标函数外增加一个语言模型的目标函数。我们希望这样一个额外的语言模型目标函数能在模型在初始化后由于性能较差导致翻译出不通顺的句子的时候把它纠正过来,使得模型能稳定的逐渐生成更好的数据。这个方法在实际中非常有效,尽管目前我们还没有任何理论上的支持来保证无监督神经机器翻译模型的训练一定成功
\parinterval 比较常见的解决方案是在双语数据对应的目标函数外增加一个语言模型的目标函数。因为,在初始阶段,由于数据中存在大量不通顺的句子,额外的语言模型目标函数能把部分句子纠正过来,使得模型逐渐生成更好的数据({\color{red} 参考文献!})。这个方法在实际中非常有效,尽管目前还没有理论上的支持
\parinterval 无监督神经机器翻译还有两个关键的技巧:
\begin{itemize}
\vspace{0.5em}
\item 词表共享:对于源语和目标语里都一样的词使用同一个词嵌入,而不是源语目标语各自对应一个词嵌入,比如阿拉伯数字或者一些实体名字。这样相当于在模型设计上告诉模型这个词在源语和目标语里面表达同一个意思,隐式地引入了词翻译的监督信号。在无监督神经机器翻译里词表共享搭配子词切分会更加有效,因为子词的覆盖范围广,比如多个不同的词可以包含同一个子词。
\item 词表共享:对于源语言和目标语言里都一样的词使用同一个词嵌入,而不是源语言和目标语言各自对应一个词嵌入,比如,阿拉伯数字或者一些实体名字。这样相当于在模型设计上告诉模型这个词在源语言和目标语言里面表达同一个意思,隐式地引入了单词翻译的监督信号。在无监督神经机器翻译里词表共享搭配子词切分会更加有效,因为子词的覆盖范围广,比如,多个不同的词可以包含同一个子词。
\vspace{0.5em}
\item 模型共享:与多语言翻译系统类似,使用同一个翻译模型来进行正向翻译(源语$\to$目标语)和反向翻译(目标语$\to$源语)。这样做降低了模型的参数量,减少了过拟合的风险。
\item 模型共享:与多语言翻译系统类似,使用同一个翻译模型来进行前向翻译(源语言$\to$目标语言)和反向翻译(目标语言$\to$源语言)。这样做降低了模型的参数量,减少了过拟合的风险。
\vspace{0.5em}
\end{itemize}
\parinterval 最后图\ref{fig:16-4}简单总结了无监督神经机器翻译的流程。下面我们详细讨论一下无监督神经机器翻译里面模型的初始化以及语言模型目标函数的选用。
\parinterval 最后图\ref{fig:16-4}简单总结了无监督神经机器翻译的流程。下面分别讨论:无监督神经机器翻译里面模型的初始化,以及语言模型目标函数的选用。
\begin{figure}[h]
\centering
......@@ -802,25 +838,21 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\label{fig:16-4}
\end{figure}
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection{3. 初始化}
\parinterval 无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的迭代流程,而初始化正是提供这些监督信号的地方。前面章节提到的无监督词典归纳已经可以提供一些可靠的监督信号,那么问题就是如何在模型初始化中融入这些信息。一个直观的做法就是,既然神经机器翻译模型都使用词嵌入层作为输入,而无监督词典归纳总是首先把两个语言各自的单语词嵌入映射到一个空间后才推断双语词典,那么我们可以使用这些映射后的词嵌入来初始化模型的词嵌入层,然后在这个基础上训练模型,因为这些映射后的词嵌入天然就包含了大量的监督信号,比如两个语言里意思相近的词对应的词嵌入会比其他词更靠近对方\upcite{DBLP:journals/ipm/FarhanTAJATT20}。为了防止训练过程中模型参数的更新会破坏词嵌入当中的词对齐信息,通常初始化后会固定模型的词嵌入层不让其更新。
\vspace{0.5em}
\noindent {\small\bfnew{(1) 模型参数初始化}}
\vspace{0.5em}
\parinterval 后续的研究表明,无监督神经机器翻译能在更少监督信号被提供的情况下启动,也就是我们可以去除无监督词典归纳这一步骤。这时候模型的初始化直接使用共享词表的预训练模型的参数作为起始点。这个预训练模型直接使用前面章节提到的预训练方法如MASS或者MLM的方法进行训练,区别在于模型的大小如宽度和深度需要严格匹配翻译模型。此外,这个模型不仅仅只在一个语言的单语数据上进行训练,而是同时在两个语言的单语数据上进行训练,并且两个语言的词表进行共享。前面我们提到,共享词表特别是共享子词词表的情况下我们已经隐式的告诉模型源语和目标语里一样的(子)词互为翻译,相当于模型使用了少量的监督信号,而在这基础上使用两个语言的单语数据进行预训练则通过模型共享进一步挖掘了语言之间共通的部分,因此使用预训练模型进行初始化后无监督神经机器翻译模型已经得到大量的监督信号,从而得以不断通过优化来提升模型性能
\parinterval 无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的迭代流程。无监督词典归纳已经可以提供一些可靠的监督信号,那么如何在模型初始化中融入这些信息?既然神经机器翻译模型都使用词嵌入层作为输入,而无监督词典归纳总是首先把两个语言各自的单语词嵌入映射到一个空间后才归纳双语词典,那么可以使用这些映射后的词嵌入来初始化模型的词嵌入层,然后在这个基础上训练模型,因为这些映射后的词嵌入天然就包含了大量的监督信号,比如,两个语言里意思相近的词对应的词嵌入会比其他词更靠近对方\upcite{DBLP:journals/ipm/FarhanTAJATT20}。 为了防止训练过程中模型参数的更新会破坏词嵌入当中的词对齐信息,通常初始化后会固定模型的词嵌入层不让其更新
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\parinterval 进一步的研究表明,无监督神经机器翻译能在提供更少监督信号的情况下启动,也就是可以去除无监督词典归纳这一步骤({\color{red} 参考文献!})。这时候模型的初始化直接使用共享词表的预训练模型的参数作为起始点。这个预训练模型直接使用前面提到的预训练方法(如MASS)进行训练,区别在于模型的大小如宽度和深度需要严格匹配翻译模型。此外,这个模型不仅仅只在一个语言的单语数据上进行训练,而是同时在两个语言的单语数据上进行训练,并且两个语言的词表进行共享。前面提到,在共享词表特别是共享子词词表的情况下,已经隐式的告诉模型源语言和目标语言里一样的(子)词互为翻译,相当于模型使用了少量的监督信号。在这基础上使用两个语言的单语数据进行预训练,则通过模型共享进一步挖掘了语言之间共通的部分。因此,使用预训练模型进行初始化后,无监督神经机器翻译模型已经得到大量的监督信号,从而得以不断通过优化来提升模型性能。
\subsubsection{4. 语言模型}
\vspace{0.5em}
\noindent {\small\bfnew{(2) 语言模型的使用}}
\vspace{0.5em}
\parinterval 前面提到,无监督神经机器翻译的一个重要部分就是来自语言模型的目标函数。因为翻译模型本质上是在完成文本生成任务,所以只有文本生成类型的语言模型建模方法才可以应用到无监督神经机器翻译里。比如经典的给定前文预测下一词就可以运用到无监督神经机器翻译里,而目前在预训练里流行的Masked Language Model就不能直接在无监督神经翻译里使用。
\parinterval 无监督神经机器翻译的一个重要部分就是来自语言模型的目标函数。因为翻译模型本质上是在完成文本生成任务,所以只有文本生成类型的语言模型建模方法才可以应用到无监督神经机器翻译里。比如,经典的给定前文预测下一词就是一个典型的自回归生成任务(见{\chaptertwo}),因此可以运用到无监督神经机器翻译里。但是,目前在预训练里流行的BERT等模型是自编码模型({\color{red} 参考文献!}),就不能直接在无监督神经翻译里使用。
\parinterval 另外一个在无监督神经机器翻译中比较常见的语言模型目标函数则是降噪自编码器。它也是文本生成类型的语言模型建模方法。对于一个句子$x$,我们首先使用一个噪声函数$x'=\mathrm{noise}(x)$来对$x$注入噪声,产生一个质量较差的句子$x'$,然后我们让模型学习如何从$x'$还原出$x$。这样一个目标函数比预测下一词更贴近翻译任务的本质,因为它是一个序列到序列的映射,并且输入输出两个序列在语义上是等价的。通常来说,噪声函数$\mathrm{noise}$有三种形式,如表\ref{tab:16-1}所示。
\parinterval 另外一个在无监督神经机器翻译中比较常见的语言模型目标函数则是{\small\bfnew{降噪自编码器}}\index{降噪自编码器}(Denoising Autoencoder\index{降噪自编码器})。它也是文本生成类型的语言模型建模方法。对于一个句子$x$,首先使用一个噪声函数$x'=\mathrm{noise}(x)$ 来对$x$注入噪声,产生一个质量较差的句子$x'$。然后,让模型学习如何从$x'$还原出$x$。这样一个目标函数比预测下一词更贴近翻译任务的本质,因为它是一个序列到序列的映射,并且输入输出两个序列在语义上是等价的。通常来说,噪声函数$\mathrm{noise}$有三种形式,如表\ref{tab:16-1}所示。
\begin{table}[h]
\centering
......@@ -837,5 +869,7 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\label{tab:16-1}
\end{table}
\parinterval 实际当中三种形式的噪声函数都会被使用到,其中在交换方法中越相近的词越容易被交换,并且保证被交换的词的对数有限,而删除和空白方法里词的删除和替换概率通常都非常低,如0.1等。
\parinterval 实际当中三种形式的噪声函数都会被使用到,其中在交换方法中越相近的词越容易被交换,并且保证被交换的词的对数有限,而删除和空白方法里词的删除和替换概率通常都非常低,如$0.1$等。
{\color{red} 降噪自编码器需要再多说一下,因为这部分还是挺新颖的。比如,它解决了什么问题?为什么要降噪?数学本质是什么?常用的结构?等等}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论