Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
Toy-MT-Introduction
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
Toy-MT-Introduction
Commits
30bd8dbc
Commit
30bd8dbc
authored
May 21, 2020
by
zengxin
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'zengxin' 到 'caorunzhe'
Zengxin 查看合并请求
!247
parents
14c7f0a1
88027e87
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
2 行增加
和
2 行删除
+2
-2
Book/Chapter6/Chapter6.tex
+1
-1
Book/Chapter7/Chapter7.tex
+1
-1
没有找到文件。
Book/Chapter6/Chapter6.tex
查看文件 @
30bd8dbc
...
@@ -341,7 +341,7 @@ NMT & $ 21.7^{\ast}$ & $18.7^{\ast}$ & -1
...
@@ -341,7 +341,7 @@ NMT & $ 21.7^{\ast}$ & $18.7^{\ast}$ & -1
\end{figure}
\end{figure}
%----------------------------------------------
%----------------------------------------------
\parinterval
翻译过程的神经网络结构如图
\ref
{
fig:6-7
}
所示,其中
下方是编码器,上方
是解码器。编码器会顺序处理源语言单词,将每个单词都表示成一个实数向量,也就是每个单词的词嵌入结果(绿色方框)。在词嵌入的基础上运行循环神经网络(蓝色方框)。在编码下一个时间步状态的时候,上一个时间步的隐藏状态会作为历史信息传入给循环神经网络。这样,句子中每个位置的信息都被向后传递,最后一个时间步的隐藏状态(红色方框)就包含了整个源语言句子的信息,也就得到了编码器的编码结果
$
\ \dash\
$
源语言句子的分布式表示。
\parinterval
翻译过程的神经网络结构如图
\ref
{
fig:6-7
}
所示,其中
左边是编码器,右边
是解码器。编码器会顺序处理源语言单词,将每个单词都表示成一个实数向量,也就是每个单词的词嵌入结果(绿色方框)。在词嵌入的基础上运行循环神经网络(蓝色方框)。在编码下一个时间步状态的时候,上一个时间步的隐藏状态会作为历史信息传入给循环神经网络。这样,句子中每个位置的信息都被向后传递,最后一个时间步的隐藏状态(红色方框)就包含了整个源语言句子的信息,也就得到了编码器的编码结果
$
\ \dash\
$
源语言句子的分布式表示。
\parinterval
解码器直接把源语言句子的分布式表示作为输入的隐层状态,之后像编码器一样依次读入目标语言单词,这是一个标准的循环神经网络的执行过程。与编码器不同的是,解码器会有一个输出层,用于根据当前时间步的隐层状态生成目标语单词及其概率分布。可以看到,解码端当前时刻的输出单词与下一个时刻的输入单词是一样的。从这个角度说,解码器也是一种神经语言模型,只不过它会从另外一种语言(源语言)获得一些信息,而不是仅仅做单语句子的生成。具体来说,当生成第一个单词``I''时,解码器利用了源语言句子表示(红色方框)和目标语的起始词``<sos>''。在生成第二个单词``am''时,解码器利用了上一个时间步的隐藏状态(隐藏层变量)和已经生成的``I''的信息。这个过程会循环执行,直到生成完整的目标语句子。
\parinterval
解码器直接把源语言句子的分布式表示作为输入的隐层状态,之后像编码器一样依次读入目标语言单词,这是一个标准的循环神经网络的执行过程。与编码器不同的是,解码器会有一个输出层,用于根据当前时间步的隐层状态生成目标语单词及其概率分布。可以看到,解码端当前时刻的输出单词与下一个时刻的输入单词是一样的。从这个角度说,解码器也是一种神经语言模型,只不过它会从另外一种语言(源语言)获得一些信息,而不是仅仅做单语句子的生成。具体来说,当生成第一个单词``I''时,解码器利用了源语言句子表示(红色方框)和目标语的起始词``<sos>''。在生成第二个单词``am''时,解码器利用了上一个时间步的隐藏状态(隐藏层变量)和已经生成的``I''的信息。这个过程会循环执行,直到生成完整的目标语句子。
...
...
Book/Chapter7/Chapter7.tex
查看文件 @
30bd8dbc
...
@@ -994,7 +994,7 @@ y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
...
@@ -994,7 +994,7 @@ y_{j}^{ls}=(1-\alpha) \cdot \tilde{y}_j + \alpha \cdot q
\noindent
即译文单词
$
y
_
j
$
依赖前面已经生成的单词
$
\mathbf
{
y
}_{
<j
}
=
\{
y
_
1
,...,y
_{
j
-
1
}
\}
$
和源语言句子
$
\mathbf
{
x
}$
。显然,这个模型中,每一个目标语位置
$
j
$
都需要等待前面
$
j
-
1
$
个位置输出的结果。因此,自回归翻译会阻碍不同译文单词生成的并行化。特别是在GPU上,翻译的自回归性会大大降低计算的并行度,导致推断过程的效率不高。
\noindent
即译文单词
$
y
_
j
$
依赖前面已经生成的单词
$
\mathbf
{
y
}_{
<j
}
=
\{
y
_
1
,...,y
_{
j
-
1
}
\}
$
和源语言句子
$
\mathbf
{
x
}$
。显然,这个模型中,每一个目标语位置
$
j
$
都需要等待前面
$
j
-
1
$
个位置输出的结果。因此,自回归翻译会阻碍不同译文单词生成的并行化。特别是在GPU上,翻译的自回归性会大大降低计算的并行度,导致推断过程的效率不高。
\parinterval
对于这个问题,研究者也考虑移除翻译的自归回性
\cite
{
Gu2017NonAutoregressiveNM
}
,进行
{
\small\bfnew
{
非自回归翻译
}}
\index
{
非自回归翻译
}
(
Regressive Translation)
\index
{
R
egressive Translation
}
。非自回归翻译可以用如下公式描述:
\parinterval
对于这个问题,研究者也考虑移除翻译的自归回性
\cite
{
Gu2017NonAutoregressiveNM
}
,进行
{
\small\bfnew
{
非自回归翻译
}}
\index
{
非自回归翻译
}
(
Non-Autoregressive Translation)
\index
{
Non-Autor
egressive Translation
}
。非自回归翻译可以用如下公式描述:
\begin{eqnarray}
\begin{eqnarray}
\textrm
{
P
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
) =
\prod
_{
j=1
}^{
n
}
\textrm
{
P
}
(y
_
j|
\mathbf
{
x
}
)
\textrm
{
P
}
(
\mathbf
{
y
}
|
\mathbf
{
x
}
) =
\prod
_{
j=1
}^{
n
}
\textrm
{
P
}
(y
_
j|
\mathbf
{
x
}
)
\label
{
eq:7-7
}
\label
{
eq:7-7
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论