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
f66afcf2
Commit
f66afcf2
authored
Mar 03, 2021
by
曹润柘
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'caorunzhe' 到 'master'
Caorunzhe 查看合并请求
!1041
parents
16123b24
60fe5d0b
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
6 行增加
和
6 行删除
+6
-6
Chapter10/Figures/figure-encoder-decoder-with-attention.tex
+1
-1
Chapter10/chapter10.tex
+0
-0
Chapter11/chapter11.tex
+0
-0
Chapter12/chapter12.tex
+0
-0
Chapter15/chapter15.tex
+5
-5
没有找到文件。
Chapter10/Figures/figure-encoder-decoder-with-attention.tex
查看文件 @
f66afcf2
...
...
@@ -82,7 +82,7 @@
\draw
[->,thick] ([yshift=3em]s6.north) -- ([yshift=4em]s6.north) -- ([yshift=4em]t1.north) node [pos=0.5,fill=green!30,inner sep=2pt] (c1)
{
\scriptsize
{
表示
$
\mathbi
{
C
}_
1
$}}
-- ([yshift=3em]t1.north) ;
\draw
[->,thick] ([yshift=3em]s5.north) -- ([yshift=5.3em]s5.north) -- ([yshift=5.3em]t2.north) node [pos=0.5,fill=green!30,inner sep=2pt] (c2)
{
\scriptsize
{
表示
$
\mathbi
{
C
}_
2
$}}
-- ([yshift=3em]t2.north) ;
\draw
[->,thick] ([yshift=3.5em]s3.north) -- ([yshift=6.6em]s3.north) -- ([yshift=6.6em]t4.north) node [pos=0.5,fill=green!30,inner sep=2pt] (c3)
{
\scriptsize
{
表示
$
\mathbi
{
C
}_
i
$}}
-- ([yshift=3.5em]t4.north) ;
\draw
[->,thick] ([yshift=3.5em]s3.north) -- ([yshift=6.6em]s3.north) -- ([yshift=6.6em]t4.north) node [pos=0.5,fill=green!30,inner sep=2pt] (c3)
{
\scriptsize
{
表示
$
\mathbi
{
C
}_
j
$}}
-- ([yshift=3.5em]t4.north) ;
\node
[anchor=north] (smore) at ([yshift=3.5em]s3.north)
{
...
}
;
\node
[anchor=north] (tmore) at ([yshift=3.5em]t4.north)
{
...
}
;
...
...
Chapter10/chapter10.tex
查看文件 @
f66afcf2
差异被折叠。
点击展开。
Chapter11/chapter11.tex
查看文件 @
f66afcf2
差异被折叠。
点击展开。
Chapter12/chapter12.tex
查看文件 @
f66afcf2
差异被折叠。
点击展开。
Chapter15/chapter15.tex
查看文件 @
f66afcf2
...
...
@@ -89,7 +89,7 @@
\label
{
eq:15-6
}
\end{eqnarray}
\noindent
其中,
$
d
_
k
$
为模型中隐层的维度
\footnote
[3]
{
在多头注意力中,
$
d
_
k
$
为经过多头分割后每个头的维度。
}
。
$
\mathbi
{
e
}_{
ij
}$
实际上就是
$
\mathbi
{
Q
}$
和
$
\mathbi
{
K
}$
的向量积缩放后的一个结果。
\noindent
其中,
$
d
_
k
$
为模型中隐
藏
层的维度
\footnote
[3]
{
在多头注意力中,
$
d
_
k
$
为经过多头分割后每个头的维度。
}
。
$
\mathbi
{
e
}_{
ij
}$
实际上就是
$
\mathbi
{
Q
}$
和
$
\mathbi
{
K
}$
的向量积缩放后的一个结果。
\parinterval
基于上述描述,相对位置模型可以按如下方式实现:
...
...
@@ -355,7 +355,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\begin{itemize}
\vspace
{
0.5em
}
\item
Reformer模型在计算Key和Value时使用相同的线性映射,共享Key和Value的值
\upcite
{
Kitaev2020ReformerTE
}
,降低了自注意力机制的复杂度。进一步,Reformer引入了一种
{
\small\bfnew
{
局部敏感哈希注意力机制
}}
\index
{
局部敏感哈希注意力机制
}
(Locality Sensitive Hashing Attention
\index
{
Locality Sensitive Hashing Attention
}
,LSH Attention),其提高效率的方式和固定模式中的局部建模一致,减少注意力机制的计算范围。对于每一个Query,通过局部哈希敏感机制找出和其较为相关的Key,并进行注意力的计算。其基本思路就是距离相近的向量以较大的概率被哈希分配到一个桶内,距离较远的向量被分配到一个桶内的概率则较低。此外,Reformer中还采用了一种
{
\small\bfnew
{
可逆残差网络结构
}}
\index
{
可逆残差网络结构
}
(The Reversible Residual Network)
\index
{
The Reversible Residual Network
}
和分块计算前馈神经网络层的机制,即将前馈层的隐层维度拆分为多个块并独立的进行计算,最后进行拼接操作,得到前馈层的输出,这种方式大幅度减少了内存(显存)占用。
\item
Reformer模型在计算Key和Value时使用相同的线性映射,共享Key和Value的值
\upcite
{
Kitaev2020ReformerTE
}
,降低了自注意力机制的复杂度。进一步,Reformer引入了一种
{
\small\bfnew
{
局部敏感哈希注意力机制
}}
\index
{
局部敏感哈希注意力机制
}
(Locality Sensitive Hashing Attention
\index
{
Locality Sensitive Hashing Attention
}
,LSH Attention),其提高效率的方式和固定模式中的局部建模一致,减少注意力机制的计算范围。对于每一个Query,通过局部哈希敏感机制找出和其较为相关的Key,并进行注意力的计算。其基本思路就是距离相近的向量以较大的概率被哈希分配到一个桶内,距离较远的向量被分配到一个桶内的概率则较低。此外,Reformer中还采用了一种
{
\small\bfnew
{
可逆残差网络结构
}}
\index
{
可逆残差网络结构
}
(The Reversible Residual Network)
\index
{
The Reversible Residual Network
}
和分块计算前馈神经网络层的机制,即将前馈层的隐
藏
层维度拆分为多个块并独立的进行计算,最后进行拼接操作,得到前馈层的输出,这种方式大幅度减少了内存(显存)占用。
\vspace
{
0.5em
}
\item
Routing Transformer通过聚类算法对序列中的不同单元进行分组,分别在组内进行自注意力机制的计算
\upcite
{
DBLP:journals/corr/abs-2003-05997
}
。该方法是将Query和Key映射到聚类矩阵
$
\mathbi
{
S
}$
:
...
...
@@ -506,7 +506,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
\label
{
eq:15-33
}
\end{eqnarray}
\noindent
其中,
$
[
\mathbi
{
h
}^
1
,
\ldots
,
\mathbi
{
h
}^
L
]
$
是输入矩阵,
$
\mathbi
{
o
}$
是输出矩阵,
$
\mathbi
{
W
}_
1
\in
\mathbb
{
R
}^{
d
_{
\textrm
{
model
}}
\times
d
_{
\rm
a
}}$
,
$
\mathbi
{
W
}_
2
\in
\mathbb
{
R
}^{
d
_{
\rm
a
}
\times
n
_{
\rm
hop
}}$
,
$
d
_{
\rm
a
}$
表示前馈神经网络隐层大小,
$
n
_{
\rm
hop
}$
表示跳数。 之后使用Softmax 函数计算不同层沿相同维度上的归一化结果
$
\mathbi
{
u
}_
l
$
:
\noindent
其中,
$
[
\mathbi
{
h
}^
1
,
\ldots
,
\mathbi
{
h
}^
L
]
$
是输入矩阵,
$
\mathbi
{
o
}$
是输出矩阵,
$
\mathbi
{
W
}_
1
\in
\mathbb
{
R
}^{
d
_{
\textrm
{
model
}}
\times
d
_{
\rm
a
}}$
,
$
\mathbi
{
W
}_
2
\in
\mathbb
{
R
}^{
d
_{
\rm
a
}
\times
n
_{
\rm
hop
}}$
,
$
d
_{
\rm
a
}$
表示前馈神经网络隐
藏
层大小,
$
n
_{
\rm
hop
}$
表示跳数。 之后使用Softmax 函数计算不同层沿相同维度上的归一化结果
$
\mathbi
{
u
}_
l
$
:
\begin{eqnarray}
\mathbi
{
u
}_
l
&
=
&
\frac
{
\textrm
{
exp
}
(
\mathbi
{
o
}_
l)
}{
\sum
_{
i=1
}^
L
{
\textrm
{
exp
}
(
\mathbi
{
o
}_
i)
}}
\label
{
eq:15-34
}
...
...
@@ -799,7 +799,7 @@ v_i &=& \mathbi{I}_d^{\textrm{T}}\textrm{Tanh}(\mathbi{W}_d\mathbi{Q}_i)
lr
&
=
&
d
_{
\textrm
{
model
}}^{
-0.5
}
\cdot
step
\_
num
\cdot
warmup
\_
steps
^{
-0.5
}
\label
{
eq:15-49
}
\end{eqnarray}
\noindent
这里,
$
step
\_
num
$
表示参数更新的次数,
$
warmup
\_
step
$
表示预热的更新次数,
$
d
_{
\textrm
{
model
}}$
表示Transformer模型的隐层大小,
$
lr
$
是学习率。
\noindent
这里,
$
step
\_
num
$
表示参数更新的次数,
$
warmup
\_
step
$
表示预热的更新次数,
$
d
_{
\textrm
{
model
}}$
表示Transformer模型的隐
藏
层大小,
$
lr
$
是学习率。
\vspace
{
0.5em
}
\item
在之后的训练过程中,每当增加模型深度时,学习率都会重置到峰值,之后进行相应的衰减:
\begin{eqnarray}
...
...
@@ -914,7 +914,7 @@ lr &=& d_{\textrm{model}}^{-0.5}\cdot step\_num^{-0.5}
\label
{
eq:15-53
}
\end{eqnarray}
\noindent
其中,
$
\mathbi
{
h
}_
l
$
和
$
\mathbi
{
h
}_
r
$
分别代表了左孩子节点和右孩子节点的神经网络输出(隐层状态),通过一个非线性函数
$
f
_
\textrm
{
tree
}
(
\cdot
,
\cdot
)
$
得到父节点的状态
$
\mathbi
{
h
}_
p
$
。 图
\ref
{
fig:15-20
}
展示了一个基于树结构的循环神经网络编码器
\upcite
{
DBLP:conf/acl/EriguchiHT16
}
。这些编码器由下自上组成了一个树型结构,这种树结构的具体连接形式由句法分析决定。其中
$
\{\mathbi
{
h
}_
1
,
\ldots
,
\mathbi
{
h
}_
m
\}
$
是输入序列所对应的循环神经单元(绿色部分),
$
\{\mathbi
{
h
}_{
m
+
1
}
,
\ldots
,
\mathbi
{
h
}_{
2
m
-
1
}
\}
$
对应着树中的节点(红色部分),它的输出由其左右子节点通过公式
\eqref
{
eq:15-53
}
计算得到。对于注意力模型,图中所有的节点都会参与上下文向量的计算,因此仅需要对
{
\chapterten
}
所描述的计算方式稍加修改,如下:
\noindent
其中,
$
\mathbi
{
h
}_
l
$
和
$
\mathbi
{
h
}_
r
$
分别代表了左孩子节点和右孩子节点的神经网络输出(隐
藏
层状态),通过一个非线性函数
$
f
_
\textrm
{
tree
}
(
\cdot
,
\cdot
)
$
得到父节点的状态
$
\mathbi
{
h
}_
p
$
。 图
\ref
{
fig:15-20
}
展示了一个基于树结构的循环神经网络编码器
\upcite
{
DBLP:conf/acl/EriguchiHT16
}
。这些编码器由下自上组成了一个树型结构,这种树结构的具体连接形式由句法分析决定。其中
$
\{\mathbi
{
h
}_
1
,
\ldots
,
\mathbi
{
h
}_
m
\}
$
是输入序列所对应的循环神经单元(绿色部分),
$
\{\mathbi
{
h
}_{
m
+
1
}
,
\ldots
,
\mathbi
{
h
}_{
2
m
-
1
}
\}
$
对应着树中的节点(红色部分),它的输出由其左右子节点通过公式
\eqref
{
eq:15-53
}
计算得到。对于注意力模型,图中所有的节点都会参与上下文向量的计算,因此仅需要对
{
\chapterten
}
所描述的计算方式稍加修改,如下:
\begin{eqnarray}
\mathbi
{
C
}_
j
&
=
&
\sum
_{
i=1
}^{
m
}
\alpha
_{
i,j
}
\mathbi
{
h
}_
i +
\sum
_{
i=m+1
}^{
2m-1
}
\alpha
_{
i,j
}
\mathbi
{
h
}_
i
\label
{
eq:15-54
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论