Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
mtbookv2
Commits
c42ca33d
Commit
c42ca33d
authored
Dec 23, 2020
by
曹润柘
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'caorunzhe' 到 'master'
Caorunzhe 查看合并请求
!685
parents
da89ac2b
caf467ec
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
8 行增加
和
8 行删除
+8
-8
Chapter10/chapter10.tex
+0
-0
Chapter11/chapter11.tex
+4
-4
Chapter12/Figures/figure-point-product-attention-model.tex
+1
-1
Chapter12/Figures/figure-self-att-vs-enco-deco-att.tex
+3
-3
Chapter12/chapter12.tex
+0
-0
没有找到文件。
Chapter10/chapter10.tex
查看文件 @
c42ca33d
差异被折叠。
点击展开。
Chapter11/chapter11.tex
查看文件 @
c42ca33d
...
...
@@ -278,7 +278,7 @@
\parinterval
单层卷积神经网络的感受野受限于卷积核的大小,因此只能捕捉序列中局部的上下文信息,不能很好地进行长序列建模。为了捕捉更长的上下文信息,最简单的做法就是堆叠多个卷积层。相比于循环神经网络的链式结构,对相同的上下文跨度,多层卷积神经网络的层级结构可以通过更少的非线性计算对其进行建模,缓解了长距离建模中的梯度消失问题。因此,卷积神经网络相对更容易进行训练。
\parinterval
在ConvS2S模型中,编码
端和解码端
分别使用堆叠的门控卷积神经网络对源语言和目标语言序列进行建模,在传统卷积神经网络的基础上引入了门控线性单元
\upcite
{
Dauphin2017LanguageMW
}
,通过门控机制对卷积输出进行控制,它在模型中的位置如图
\ref
{
fig:11-13
}
黄色方框所示:
\parinterval
在ConvS2S模型中,编码
器和解码器
分别使用堆叠的门控卷积神经网络对源语言和目标语言序列进行建模,在传统卷积神经网络的基础上引入了门控线性单元
\upcite
{
Dauphin2017LanguageMW
}
,通过门控机制对卷积输出进行控制,它在模型中的位置如图
\ref
{
fig:11-13
}
黄色方框所示:
%----------------------------------------------
% 图13.
...
...
@@ -319,14 +319,14 @@
\noindent
其中,
$
\sigma
$
为Sigmoid函数,
$
\otimes
$
为按位乘运算。Sigmoid将
$
\mathbi
{
B
}$
映射为0-1范围内的实数,用来充当门控。可以看到,门控卷积神经网络中核心部分就是
$
\sigma
(
\mathbi
{
B
}
)
$
,通过这个门控单元来对卷积输出进行控制,确定保留哪些信息。同时,在梯度反向传播的过程中,这种机制使得不同层之间存在线性的通道,梯度传导更加简单,利于深层网络的训练。这种思想和
\ref
{
sec:11.2.3
}
节将要介绍的残差网络也很类似。
\parinterval
在ConvS2S模型中,为了保证卷积操作之后的序列长度不变,需要对输入进行填充,这一点已经在之前的章节中讨论过了。因此,在编码
端每一次卷积操作前,需要对序列的头部和尾部分别做相应的填充(如图
\ref
{
fig:11-14
}
左侧部分)。而在解码端中,由于需要训练和解码的一致性,模型在训练过程中不能使用未来的信息,需要对未来信息进行屏蔽,也就是屏蔽掉当前译文单词右侧的译文信息。从实践角度来看,只需要对解码端输入序列的头部填充
$
K
-
1
$
个空元素,其中
$
K
$
为卷积核的宽度(图
\ref
{
fig:11-15
}
展示了卷积核宽度
$
K
$
=3时,解码端
对输入序列的填充情况,图中三角形表示卷积操作)。
\parinterval
在ConvS2S模型中,为了保证卷积操作之后的序列长度不变,需要对输入进行填充,这一点已经在之前的章节中讨论过了。因此,在编码
器每一次卷积操作前,需要对序列的头部和尾部分别做相应的填充(如图
\ref
{
fig:11-14
}
左侧部分)。而在解码器中,由于需要训练和解码的一致性,模型在训练过程中不能使用未来的信息,需要对未来信息进行屏蔽,也就是屏蔽掉当前译文单词右侧的译文信息。从实践角度来看,只需要对解码器输入序列的头部填充
$
K
-
1
$
个空元素,其中
$
K
$
为卷积核的宽度(图
\ref
{
fig:11-15
}
展示了卷积核宽度
$
K
$
=3时,解码器
对输入序列的填充情况,图中三角形表示卷积操作)。
%----------------------------------------------
% 图14-2.
\begin{figure}
[htp]
\centering
\input
{
./Chapter11/Figures/figure-padding-method
}
\caption
{
解码
端
的填充方法
}
\caption
{
解码
器
的填充方法
}
\label
{
fig:11-15
}
\end{figure}
%----------------------------------------------
...
...
@@ -372,7 +372,7 @@
\end{figure}
%----------------------------------------------
\parinterval
在基于循环神经网络的翻译模型中,注意力机制已经被广泛使用
\upcite
{
bahdanau2014neural
}
,并用于避免循环神经网络将源语言序列压缩成一个固定维度的向量表示带来的信息损失。另一方面,注意力同样能够帮助解码
端
区分源语言中不同位置对当前目标语言位置的贡献度,其具体的计算过程如公式
\eqref
{
eq:11-8
}
和
\eqref
{
eq:11-9
}
所示:
\parinterval
在基于循环神经网络的翻译模型中,注意力机制已经被广泛使用
\upcite
{
bahdanau2014neural
}
,并用于避免循环神经网络将源语言序列压缩成一个固定维度的向量表示带来的信息损失。另一方面,注意力同样能够帮助解码
器
区分源语言中不同位置对当前目标语言位置的贡献度,其具体的计算过程如公式
\eqref
{
eq:11-8
}
和
\eqref
{
eq:11-9
}
所示:
\begin{eqnarray}
\mathbi
{
C
}_
j
&
=
&
\sum
_
i
\alpha
_{
i,j
}
\mathbi
{
h
}_
i
\label
{
eq:11-8
}
\\
...
...
Chapter12/Figures/figure-point-product-attention-model.tex
查看文件 @
c42ca33d
...
...
@@ -44,7 +44,7 @@
}
{
\node
[anchor=west] (line31) at ([yshift=6em]line1.west)
{
\scriptsize
{
在编码端,对句子补齐
}}
;
\node
[anchor=west] (line31) at ([yshift=6em]line1.west)
{
\scriptsize
{
在编码
器
端,对句子补齐
}}
;
\node
[anchor=north west] (line32) at ([yshift=0.3em]line31.south west)
{
\scriptsize
{
填充的部分进行屏蔽
}}
;
\node
[anchor=north west] (line33) at ([yshift=0.3em]line32.south west)
{
\scriptsize
{
解码时看不到未来的信息
}}
;
\node
[anchor=north west] (line34) at ([yshift=0.3em]line33.south west)
{
\scriptsize
{
需要对未来的信息进行屏蔽
}}
;
...
...
Chapter12/Figures/figure-self-att-vs-enco-deco-att.tex
查看文件 @
c42ca33d
...
...
@@ -11,7 +11,7 @@
\draw
[->,thick]
([xshift=-3.6em]word1.north)--([xshift=-3.6em]p1.south);
\draw
[->,thick]
([xshift=3.6em]word1.north)--([xshift=3.6em]p1.south);
\node
[anchor=north,rounded corners=1pt,minimum width=11.0em,minimum height=3.5em,draw=ugreen!70,very thick,dotted]
(p1-1) at ([yshift=-5.2em]p1.south)
{
\small
{
解码
端
每个位置的表示
}}
;
\node
[anchor=north,rounded corners=1pt,minimum width=11.0em,minimum height=3.5em,draw=ugreen!70,very thick,dotted]
(p1-1) at ([yshift=-5.2em]p1.south)
{
\small
{
解码
器
每个位置的表示
}}
;
\draw
[->,thick,dashed] (word3.south) .. controls +(south:1.5em) and +(north:1.5em) .. ([xshift=-0.4em]p1-1.north);
\draw
[->,thick,dashed](word1.south) --(p1-1.north);
...
...
@@ -29,7 +29,7 @@
\draw
[->,thick]
([xshift=-3.6em]word1-2.north)--([xshift=-3.6em]p2.south);
\draw
[->,thick]
([xshift=3.6em]word1-2.north)--([xshift=3.6em]p2.south);
\node
[anchor=north,rounded corners=1pt]
(p2-1) at ([xshift=-3.55em,yshift=-5.5em]p2.south)
{
\small
{
解码
端
每个
}}
;
\node
[anchor=north,rounded corners=1pt]
(p2-1) at ([xshift=-3.55em,yshift=-5.5em]p2.south)
{
\small
{
解码
器
每个
}}
;
\node
[anchor=north,rounded corners=1pt]
(p2-2) at ([xshift=-3.55em,yshift=-6.8em]p2.south)
{
\small
{
位置的表示
}}
;
\begin{pgfonlayer}
{
background
}
{
...
...
@@ -38,7 +38,7 @@
\end{pgfonlayer}
\node
[anchor=north,rounded corners=1pt]
(p2-3) at ([xshift=3.55em,yshift=-5.5em]p2.south)
{
\small
{
编码
端
每个
}}
;
\node
[anchor=north,rounded corners=1pt]
(p2-3) at ([xshift=3.55em,yshift=-5.5em]p2.south)
{
\small
{
编码
器
每个
}}
;
\node
[anchor=north,rounded corners=1pt]
(p2-4) at ([xshift=3.55em,yshift=-6.8em]p2.south)
{
\small
{
位置的表示
}}
;
\begin{pgfonlayer}
{
background
}
{
...
...
Chapter12/chapter12.tex
查看文件 @
c42ca33d
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论