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
单韦乔
Toy-MT-Introduction
Commits
8884b1c0
Commit
8884b1c0
authored
Dec 20, 2019
by
Lee
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update content
parent
d53fb7d4
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
55 行增加
和
6 行删除
+55
-6
Section06-Neural-Machine-Translation/section06.tex
+55
-6
没有找到文件。
Section06-Neural-Machine-Translation/section06.tex
查看文件 @
8884b1c0
...
...
@@ -1136,8 +1136,8 @@ NLP问题的隐含结构假设 & 无隐含结构假设,端到端学习 \\
\item
词嵌入的作用是把离散化的单词表示转换为连续空间上的分布式表示
\begin{itemize}
\item
把输入的词转换成唯一对应的词表大小的0-1向量
\item
根据0-1向量,从词嵌入矩阵中取出对应的词嵌入
$
e
_
y
$
\item
取出的词嵌入
$
e
_
y
$
作为循环神经网络的输入
\item
根据0-1向量,从词嵌入矩阵中取出对应的词嵌入
$
e
()
$
\item
取出的词嵌入
$
e
()
$
作为循环神经网络的输入
\end{itemize}
\end{itemize}
\vspace
{
-1em
}
...
...
@@ -1259,8 +1259,8 @@ NLP问题的隐含结构假设 & 无隐含结构假设,端到端学习 \\
\begin{itemize}
\item
输出层需要得到每个目标语单词的生成概率,进而选取概率最高的词作为输出。但RNN中的隐藏层并不会输出单词概率,而是输出
$
s
$
,其每一行对应一个单词表示
\begin{itemize}
\item
循环网络输出
$
s
$
经过权重矩阵
$
W
$
变换成词表大小的向量
\item
获得的向量经过Softmax变换得到不同词作为输出的概率,即单词
$
i
$
的概率
$
p
_
i
=
\textrm
{
Softmax
}
(
i
)
=
\frac
{
e
^{
s
_
i
}}{
\sum
_{
j
}
e
^{
s
_{
j
}}}
$
\item
$
s
$
经过权重矩阵
$
W
$
变成
$
\hat
{
s
}$
,其隐藏层维度变换成词表的大小
\item
$
\hat
{
s
}$
经过Softmax变换得到不同词作为输出的概率,即单词
$
i
$
的概率
$
p
_
i
=
\textrm
{
Softmax
}
(
i
)
=
\frac
{
e
^{
\hat
{
s
}_
i
}}{
\sum
_{
j
}
e
^{
\hat
{
s
}
_{
j
}}}
$
\end{itemize}
\end{itemize}
%%% 图
...
...
@@ -1587,7 +1587,7 @@ NLP问题的隐含结构假设 & 无隐含结构假设,端到端学习 \\
%%% GRU
\begin{frame}
{
另一种循环单元 - 门循环单元(GRU)
}
\begin{itemize}
\item
GRU
\item
GRU
是LSTM的一个变种,它把隐藏状态
$
h
$
和记忆
$
c
$
合并成一个隐藏状态
$
h
$
,同时使用了更少的``门''单元,大大提升了计算效率
\end{itemize}
%%% 图
\begin{center}
...
...
@@ -1735,6 +1735,11 @@ NLP问题的隐含结构假设 & 无隐含结构假设,端到端学习 \\
\end{scope}
\end{tikzpicture}
\end{center}
{
\scriptsize
\begin{tabular}
{
l
}
*
$
x
_
t
$
: 上一层的输出
\\
*
$
h
_
t
$
: 同一层上一时刻的隐藏状态
\end{tabular}
}
\end{frame}
%%%------------------------------------------------------------------------------------------------------------
...
...
@@ -2658,6 +2663,50 @@ $\textrm{``you''} = \argmax_{y} \textrm{P}(y|\textbf{s}_1, \alert{\textbf{C}})$
%%%------------------------------------------------------------------------------------------------------------
%%% 训练
\begin{frame}
{
训练
}
\begin{itemize}
\item
有了一个NMT模型,我们应该怎么使用梯度下降算法来训练一个``聪明''的翻译模型呢?
\begin{itemize}
\item
参数初始化
\only
<2>
{
:模型结构是确定了,但是我们初始化参数还有很多需要注意的地方,否则训练不了一个优秀的模型
\begin{itemize}
\item
LSTM遗忘门偏置初始为1,也就是始终选择遗忘记忆
$
c
$
,可以有效防止初始时
$
c
$
里包含的错误信号传播后面所有时刻
\item
其他参数一般使用Xavier参数初始化方法,可以有效稳定训练过程,特别是对于比较``深''的网络
\end{itemize}
}
\item
优化器选择
\only
<3-5>
{
:训练RNN我们通常会使用Adam或者SGD两种优化器,它们各有优劣
\begin{center}
\footnotesize
\begin{tabular}
{
c|c|c
}
&
使用
&
性能
\\
\hline
Adam
&
一套配置包打天下
&
不算差,但没到极限
\\
SGD
&
换一个任务就得调
&
效果杠杠的
\\
\end{tabular}
\end{center}
}
\item
学习率调度
\only
<4>
{
\begin{itemize}
\item
不同优化器需要的学习率不同,比如Adam一般使用
$
0
.
001
$
或
$
0
.
0001
$
,而SGD则在
$
0
.
1
\sim
1
$
之间挑选
\item
但是无论使用哪个优化器,为了达到最好效果,我们通常都需要根据当前的更新次数来调整学习率的大小
\end{itemize}
}
\only
<5>
{
\begin{itemize}
\item
学习率预热
\item
学习率衰减
\end{itemize}
}
\item
多设备并行
\only
<6->
{
\begin{itemize}
\item
万事俱备,只是为什么训练这么慢?
\only
<7->
{
\alert
{
- RNN需要等前面所有时刻都完成计算以后才能开始计算当前时刻的输出
}}
\item
我有钱,是不是多买几台设备会更快?
\only
<7->
{
\alert
{
- 可以,但是需要技巧,而且也不是无限增长的
}}
\end{itemize}
}
\end{itemize}
\end{itemize}
\end{frame}
%%%------------------------------------------------------------------------------------------------------------
...
...
@@ -4896,7 +4945,7 @@ PE_{(pos,2i+1)} = cos(pos/10000^{2i/d_{model}})
\begin{itemize}
\item
\textbf
{
优化器
}
:使用Adam优化器,
$
\beta
_
1
$
=0.9,
$
\beta
_
2
$
=0.98,
$
\epsilon
=
10
^{
-
9
}$
关于学习率的设置,引入了warmup策略,在训练初期,学习率从一个较小的初始值逐渐增大,当到达一定的步数,学习率再逐渐减小
\begin{displaymath}
lrate=d
_{
model
}^{
-0.5
}
\cdot
min(step
^{
-0.5
}
,step
\cdot
warmup
\_
steps
^{
-1.5
}
)
lrate=d
_{
\mathrm
{
model
}}^{
-0.5
}
\cdot
\min
(step
^{
-0.5
}
,step
\cdot
\mathrm
{
warmup
\_
steps
}
^{
-1.5
}
)
\end{displaymath}
这样做可以减缓在训练初期的不稳定现象,保持分布平稳,通常warmup
\_
steps通常设置为4000
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论