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
a2dd5a95
Commit
a2dd5a95
authored
Nov 19, 2020
by
zengxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
10 12
parent
75096b0f
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
2 行增加
和
2 行删除
+2
-2
Chapter10/chapter10.tex
+1
-1
Chapter12/chapter12.tex
+1
-1
没有找到文件。
Chapter10/chapter10.tex
查看文件 @
a2dd5a95
...
@@ -461,7 +461,7 @@ NMT & 21.7 & 18.7 & -13.7 \\
...
@@ -461,7 +461,7 @@ NMT & 21.7 & 18.7 & -13.7 \\
\vspace
{
0.5em
}
\vspace
{
0.5em
}
\item
如何对
$
\seq
{{
x
}}$
和
$
\seq
{{
y
}}_{
<j
}$
进行分布式表示,即词嵌入。首先,将由one-hot向量表示的源语言单词,即由0和1构成的离散化向量表示,转化为实数向量。可以把这个过程记为
$
\textrm
{
e
}_
x
(
\cdot
)
$
。类似地,可以把目标语言序列
$
\seq
{{
y
}}_{
<j
}$
中的每个单词用同样的方式进行表示,记为
$
\textrm
{
e
}_
y
(
\cdot
)
$
。
\item
如何对
$
\seq
{{
x
}}$
和
$
\seq
{{
y
}}_{
<j
}$
进行分布式表示,即词嵌入。首先,将由one-hot向量表示的源语言单词,即由0和1构成的离散化向量表示,转化为实数向量。可以把这个过程记为
$
\textrm
{
e
}_
x
(
\cdot
)
$
。类似地,可以把目标语言序列
$
\seq
{{
y
}}_{
<j
}$
中的每个单词用同样的方式进行表示,记为
$
\textrm
{
e
}_
y
(
\cdot
)
$
。
\vspace
{
0.5em
}
\vspace
{
0.5em
}
\item
如何在词嵌入的基础上获取整个序列的表示,即句子的表示学习
(Representation Learning)
。可以把词嵌入的序列作为循环神经网络的输入,循环神经网络最后一个时刻的输出向量便是整个句子的表示结果。如图
\ref
{
fig:10-11
}
中,编码器最后一个循环单元的输出
$
\mathbi
{
h
}_
m
$
被看作是一种包含了源语言句子信息的表示结果,记为
$
\mathbi
{
C
}$
。
\item
如何在词嵌入的基础上获取整个序列的表示,即句子的表示学习。可以把词嵌入的序列作为循环神经网络的输入,循环神经网络最后一个时刻的输出向量便是整个句子的表示结果。如图
\ref
{
fig:10-11
}
中,编码器最后一个循环单元的输出
$
\mathbi
{
h
}_
m
$
被看作是一种包含了源语言句子信息的表示结果,记为
$
\mathbi
{
C
}$
。
\vspace
{
0.5em
}
\vspace
{
0.5em
}
\item
如何得到每个目标语言单词的概率,即译文单词的
{
\small\sffamily\bfseries
{
生成
}}
\index
{
生成
}
(Generation)
\index
{
Generation
}
。与神经语言模型一样,可以用一个Softmax输出层来获取当前时刻所有单词的分布,即利用Softmax 函数计算目标语言词表中每个单词的概率。令目标语言序列
$
j
$
时刻的循环神经网络的输出向量(或状态)为
$
\mathbi
{
s
}_
j
$
。根据循环神经网络的性质,
$
y
_
j
$
的生成只依赖前一个状态
$
\mathbi
{
s
}_{
j
-
1
}$
和当前时刻的输入(即词嵌入
$
\textrm
{
e
}_
y
(
y
_{
j
-
1
}
)
$
)。同时考虑源语言信息
$
\mathbi
{
C
}$
,
$
\funp
{
P
}
(
y
_
j |
\seq
{{
y
}}_{
<j
}
,
\seq
{{
x
}}
)
$
可以被重新定义为:
\item
如何得到每个目标语言单词的概率,即译文单词的
{
\small\sffamily\bfseries
{
生成
}}
\index
{
生成
}
(Generation)
\index
{
Generation
}
。与神经语言模型一样,可以用一个Softmax输出层来获取当前时刻所有单词的分布,即利用Softmax 函数计算目标语言词表中每个单词的概率。令目标语言序列
$
j
$
时刻的循环神经网络的输出向量(或状态)为
$
\mathbi
{
s
}_
j
$
。根据循环神经网络的性质,
$
y
_
j
$
的生成只依赖前一个状态
$
\mathbi
{
s
}_{
j
-
1
}$
和当前时刻的输入(即词嵌入
$
\textrm
{
e
}_
y
(
y
_{
j
-
1
}
)
$
)。同时考虑源语言信息
$
\mathbi
{
C
}$
,
$
\funp
{
P
}
(
y
_
j |
\seq
{{
y
}}_{
<j
}
,
\seq
{{
x
}}
)
$
可以被重新定义为:
\begin{eqnarray}
\begin{eqnarray}
...
...
Chapter12/chapter12.tex
查看文件 @
a2dd5a95
...
@@ -182,7 +182,7 @@
...
@@ -182,7 +182,7 @@
\parinterval
此外,编码端和解码端都有输入的词序列。编码端的词序列输入是为了对其进行表示,进而解码端能从编码端访问到源语言句子的全部信息。解码端的词序列输入是为了进行目标语的生成,本质上它和语言模型是一样的,在得到前
$
n
-
1
$
个单词的情况下输出第
$
n
$
个单词。除了输入词序列的词嵌入,Transformer中也引入了位置嵌入,以表示每个位置信息。原因是,自注意力机制没有显性地对位置进行表示,因此也无法考虑词序。在输入中引入位置信息可以让自注意力机制间接地感受到每个词的位置,进而保证对序列表示的合理性。最终,整个模型的输出由一个Softmax层完成,它和循环神经网络中的输出层是完全一样的。
\parinterval
此外,编码端和解码端都有输入的词序列。编码端的词序列输入是为了对其进行表示,进而解码端能从编码端访问到源语言句子的全部信息。解码端的词序列输入是为了进行目标语的生成,本质上它和语言模型是一样的,在得到前
$
n
-
1
$
个单词的情况下输出第
$
n
$
个单词。除了输入词序列的词嵌入,Transformer中也引入了位置嵌入,以表示每个位置信息。原因是,自注意力机制没有显性地对位置进行表示,因此也无法考虑词序。在输入中引入位置信息可以让自注意力机制间接地感受到每个词的位置,进而保证对序列表示的合理性。最终,整个模型的输出由一个Softmax层完成,它和循环神经网络中的输出层是完全一样的。
\parinterval
在进行更详细的介绍前,先利用图
\ref
{
fig:12-39
}
简单了解一下Transformer模型是如何进行翻译的。首先,Transformer将源语言句子“我/很/好”的词嵌入融合位置编码
(Position Embedding)
后作为输入。然后,编码器对输入的源语句子进行逐层抽象,得到包含丰富的上下文信息的源语表示并传递给解码器。解码器的每一层,使用自注意力子层对输入解码端的表示进行加工,之后再使用编码-解码注意力子层融合源语句子的表示信息。就这样逐词生成目标语译文单词序列。解码器的每个位置的输入是当前单词(比如,“I”),而这个位置输出是下一个单词(比如,“am”),这个设计和标准的神经语言模型是完全一样的。
\parinterval
在进行更详细的介绍前,先利用图
\ref
{
fig:12-39
}
简单了解一下Transformer模型是如何进行翻译的。首先,Transformer将源语言句子“我/很/好”的词嵌入融合位置编码后作为输入。然后,编码器对输入的源语句子进行逐层抽象,得到包含丰富的上下文信息的源语表示并传递给解码器。解码器的每一层,使用自注意力子层对输入解码端的表示进行加工,之后再使用编码-解码注意力子层融合源语句子的表示信息。就这样逐词生成目标语译文单词序列。解码器的每个位置的输入是当前单词(比如,“I”),而这个位置输出是下一个单词(比如,“am”),这个设计和标准的神经语言模型是完全一样的。
\parinterval
当然,这里可能还有很多疑惑,比如,什么是位置编码?Transformer的自注意力机制具体是怎么进行计算的,其结构是怎样的?层归一化又是什么?等等。下面就一一展开介绍。
\parinterval
当然,这里可能还有很多疑惑,比如,什么是位置编码?Transformer的自注意力机制具体是怎么进行计算的,其结构是怎样的?层归一化又是什么?等等。下面就一一展开介绍。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论