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
7fb45ecd
Commit
7fb45ecd
authored
Jan 25, 2021
by
单韦乔
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
13章反馈后终版
parent
c4e21b36
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
6 行增加
和
11 行删除
+6
-11
Chapter13/chapter13.tex
+6
-11
没有找到文件。
Chapter13/chapter13.tex
查看文件 @
7fb45ecd
...
...
@@ -543,11 +543,11 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\noindent
这里,
$
\hat
{
\seq
{
y
}}$
是模型预测的译文,
$
\chi
(
\seq
{
x
}^{
[
k
]
}
)
$
是
$
\seq
{
x
}^{
[
k
]
}$
所对应的所有候选翻译的集合。损失函数
$
\vartriangle
(
\hat
{
\seq
{
y
}}
,
\seq
{
y
}^{
[
k
]
}
)
$
用来衡量模型预测
$
\hat
{
\seq
{
y
}}$
与标准答案
$
\seq
{
y
}^{
[
k
]
}$
间的差异,损失函数一般用翻译质量评价指标定义,例如,BLEU,TER等
\footnote
{
对于BLEU,损失函数可以被定义为
$
1
-
$
BLEU。
}
。在最小风险训练中,对模型参数
$
\theta
$
的偏导数为:
\begin{eqnarray}
\frac
{
\partial
\funp
{
R
}
(
\theta
)
}{
\partial
\theta
}
&
=
&
\sum
_{
k=1
}^
N
\mathbb
{
E
}_{
\hat
{
\seq
{
y
}}
|
\seq
{
x
}^{
[k]
}
;
\theta
}
[
\vartriangle
(
\hat
{
\seq
{
y
}}
,
\seq
{
y
}^{
[k]
}
)
\times
\frac
{
\partial
\funp
{
P
}
(
\hat
{
\seq
{
y
}}
|
\seq
{
x
}^{
[k]
}
;
\theta
)/
\partial
\theta
}{
\funp
{
P
}
(
\hat
{
\seq
{
y
}}
|
\seq
{
x
}^{
[k]
}
;
\theta
)
}
]
\nonumber
\\
&
=
&
{
\red
\sum
_{
k=1
}^
N
\mathbb
{
E
}_{
\hat
{
\seq
{
y
}}
|
\seq
{
x
}^{
[k]
}
;
\theta
}
[
\vartriangle
(
\hat
{
\seq
{
y
}}
,
\seq
{
y
}^{
[k]
}
)
\times
\frac
{
\partial
\log
{
\funp
{
P
}
(
\hat
{
\seq
{
y
}}
|
\seq
{
x
}^{
[k]
}
;
\theta
)
}}{
\partial
\theta
}
]
}
&
=
&
\sum
_{
k=1
}^
N
\mathbb
{
E
}_{
\hat
{
\seq
{
y
}}
|
\seq
{
x
}^{
[k]
}
;
\theta
}
[
\vartriangle
(
\hat
{
\seq
{
y
}}
,
\seq
{
y
}^{
[k]
}
)
\times
\frac
{
\partial
\log
{
\funp
{
P
}
(
\hat
{
\seq
{
y
}}
|
\seq
{
x
}^{
[k]
}
;
\theta
)
}}{
\partial
\theta
}
]
\label
{
eq:13-15
}
\end{eqnarray}
\noindent
公式
\eqref
{
eq:13-15
}
使用了
{
\small\bfnew
{
策略梯度
}}
\index
{
策略梯度
}
(Policy Gradient
\index
{
Policy Gradient
}
)的手段将
$
\vartriangle
(
\hat
{
\seq
{
y
}}
,
\seq
{
y
}^{
[
k
]
}
)
$
提到微分操作之外
\upcite
{
DBLP:conf/nips/Kakade01,DBLP:journals/corr/abs-1810-02525
}
。这样,就无需对
$
\vartriangle
(
\hat
{
\seq
{
y
}}
,
\seq
{
y
}^{
[
k
]
}
)
$
进行微分,因此最小风险训练允许任意不可微的损失函数,包括BLEU等常用的评价函数。
{
\red
同时,等式右侧将对概率的求导操作转化为了对log函数的求导,更易于模型进行优化。因此,
}
使用公式
\eqref
{
eq:13-15
}
就可以求出模型参数相对于风险函数的损失,进而进行基于梯度的优化。
\noindent
公式
\eqref
{
eq:13-15
}
使用了
{
\small\bfnew
{
策略梯度
}}
\index
{
策略梯度
}
(Policy Gradient
\index
{
Policy Gradient
}
)的手段将
$
\vartriangle
(
\hat
{
\seq
{
y
}}
,
\seq
{
y
}^{
[
k
]
}
)
$
提到微分操作之外
\upcite
{
DBLP:conf/nips/Kakade01,DBLP:journals/corr/abs-1810-02525
}
。这样,就无需对
$
\vartriangle
(
\hat
{
\seq
{
y
}}
,
\seq
{
y
}^{
[
k
]
}
)
$
进行微分,因此最小风险训练允许任意不可微的损失函数,包括BLEU等常用的评价函数。
同时,等式右侧将对概率的求导操作转化为了对log函数的求导,更易于模型进行优化。因此,
使用公式
\eqref
{
eq:13-15
}
就可以求出模型参数相对于风险函数的损失,进而进行基于梯度的优化。
\parinterval
这里需要注意的是,公式
\eqref
{
eq:13-15
}
中求期望的过程是无法直接实现的,因为无法遍历所有的译文句子。通常,会使用采样的方法搜集一定数量的译文,来模拟译文空间。例如,可以使用推断系统生成若干译文。同时,为了保证生成的译文之间具有一定的差异性,也可以对推断过程进行一些“干扰”。从实践的角度看,采样方法是影响强化学习系统的重要因素,因此往往需要对不同的任务设计相适应的采样方法。最简单的方法就是在产生译文的每一个词时候,根据模型产生的下一个词的分布随机选取词当作模型预测,直到选到句子结束符或者达到特定长度的时候停止
\upcite
{
DBLP:conf/emnlp/EdunovOAG18
}
。其他方法还包括随机束搜索,它把束搜索中选取Top-
$
k
$
的操作替换成随机选取
$
k
$
个词。这个方法不会采集到重复的样本。还可以使用基于Gumbel-Top-
$
k
$
的随机束搜索更好地控制了样本里的噪声
\upcite
{
DBLP:conf/icml/KoolHW19
}
。
...
...
@@ -575,13 +575,8 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
&
&
\sum
_{
i=j
}^
J
\funp
{
r
}_
i(
\hat
{{
y
}}_
i;
\hat
{{
y
}}_{
1
\ldots
j-1
}
a
\hat
{{
y
}}_{
j+1
\ldots
i
}
,
\seq
{
y
}
)]
\label
{
eq:13-16
}
\end{eqnarray}
{
\blue
---------------------------------------------讨论
\\
{{
(学长,
$
\sum
_{
i
=
j
+
1
}^
J
\funp
{
r
}_
i
(
\hat
{{
y
}}_
i;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
a
\hat
{{
y
}}_{
j
+
1
\ldots
i
}
,
\seq
{
y
}
)
$
想表达的应该是:
\\
$
\funp
{
r
}_{
j
+
1
}
(
\hat
{{
y
}}_{
j
+
1
}
;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
a,
\seq
{
y
}
)
$
\\
$
\funp
{
r
}_{
j
+
2
}
(
\hat
{{
y
}}_{
j
+
2
}
;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
a
\hat
{{
y
}}_{
j
+
1
}
,
\seq
{
y
}
)
$
\\
$
\funp
{
r
}_{
j
+
3
}
(
\hat
{{
y
}}_{
j
+
3
}
;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
a
\hat
{{
y
}}_{
j
+
1
,j
+
2
}
,
\seq
{
y
}
)
$
\\
$
\cdots
$
\\
这些项的加和对吧,那
$
a
$
后面的
$
y
$
的最后一项改成
$
i
-
1
$
也不合理,因为
$
i
-
1
$
就是
$
j
$
,会跟
$
a
$
重复(因为
$
a
$
也是
$
\hat
{{
y
}}_
j
$
,只不过
$
\hat
{{
y
}}_
j
$
是固定的状态,
$
a
$
是任意动作),要不这里就把a改成
$
\hat
{{
y
}}_
j
$
行吗?或者
$
a
_{
\hat
{{
y
}}_
j
}$
这种形式,但是这种形式仍然会和
$
a
$
后面的加和冲突。)
}}
{{
学长觉得这样行吗,公式1.16把a删掉,改成:
$
\sum
_{
i
=
j
}^
J
\funp
{
r
}_
i
(
\hat
{{
y
}}_
i;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
\hat
{{
y
}}^{
a
}_{
j
\ldots
i
}
,
\seq
{
y
}
)
$
,(下面的段落加说明,此处的
$
\hat
{{
y
}}^{
a
}_{
j
\ldots
i
}$
表示由动作a决定的
$
\hat
{{
y
}}_{
j
\ldots
i
}$
)
\\
}}
---------------------------------------------讨论
\\
}
\noindent
其中,
$
\funp
{
r
}_
j
(
a;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
,
\seq
{
y
}
)
$
是
$
j
$
时刻做出行动
$
a
$
获得的奖励,
$
\funp
{
r
}_
i
(
\hat
{{
y
}}_
i;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
a
\hat
{{
y
}}_{
j
+
1
\ldots
i
}
,
\seq
{
y
}
)
$
是在
$
j
$
时刻的行动为
$
a
$
的前提下,
$
i
$
时刻的做出行动
$
\hat
{{
y
}}_
i
$
获得的奖励,
{
\red
$
\hat
{
y
}_{
j
+
1
\ldots
J
}
\sim
\funp
{
p
}
(
\cdot
|
\hat
{
y
}_{
1
\ldots
j
-
1
}
a,
\seq
{
x
}
)
$
表示序列
$
\hat
{
y
}_{
j
+
1
\ldots
J
}$
是根据
$
\funp
{
p
}
(
\cdot
|
\hat
{
y
}_{
1
\ldots
j
-
1
}
a,
\seq
{
x
}
)
$
得到的采样结果,概率函数
$
\funp
{
p
}$
中的
$
\cdot
$
表示序列
$
\hat
{
y
}_{
j
+
1
\ldots
J
}$
服从的随机变量,
}$
\seq
{
x
}$
是源语言句子,
$
\seq
{
y
}$
是正确译文,
$
\hat
{{
y
}}_{
1
\ldots
j
-
1
}$
是策略
$
\funp
{
p
}$
产生的译文的前
$
j
-
1
$
个词,
$
J
$
是生成译文的长度。
{
\red
特别的,对于公式
\ref
{
eq:13-16
}
中
$
\hat
{{
y
}}_{
j
+
1
\ldots
i
}$
来说,如果
$
i<j
+
1
$
,则
$
\hat
{{
y
}}_{
j
+
1
\ldots
i
}$
不存在,
}
对于源语句子
$
x
$
,最优策略
$
\hat
{
p
}$
可以被定义为:
\noindent
其中,
$
\funp
{
r
}_
j
(
a;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
,
\seq
{
y
}
)
$
是
$
j
$
时刻做出行动
$
a
$
获得的奖励,
$
\funp
{
r
}_
i
(
\hat
{{
y
}}_
i;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
a
\hat
{{
y
}}_{
j
+
1
\ldots
i
}
,
\seq
{
y
}
)
$
是在
$
j
$
时刻的行动为
$
a
$
的前提下,
$
i
$
时刻的做出行动
$
\hat
{{
y
}}_
i
$
获得的奖励,
$
\hat
{
y
}_{
j
+
1
\ldots
J
}
\sim
\funp
{
p
}
(
\cdot
|
\hat
{
y
}_{
1
\ldots
j
-
1
}
a,
\seq
{
x
}
)
$
表示序列
$
\hat
{
y
}_{
j
+
1
\ldots
J
}$
是根据
$
\funp
{
p
}
(
\cdot
|
\hat
{
y
}_{
1
\ldots
j
-
1
}
a,
\seq
{
x
}
)
$
得到的采样结果,概率函数
$
\funp
{
p
}$
中的
$
\cdot
$
表示序列
$
\hat
{
y
}_{
j
+
1
\ldots
J
}$
服从的随机变量,
$
\seq
{
x
}$
是源语言句子,
$
\seq
{
y
}$
是正确译文,
$
\hat
{{
y
}}_{
1
\ldots
j
-
1
}$
是策略
$
\funp
{
p
}$
产生的译文的前
$
j
-
1
$
个词,
$
J
$
是生成译文的长度。特别的,对于公式
\ref
{
eq:13-16
}
中
$
\hat
{{
y
}}_{
j
+
1
\ldots
i
}$
来说,如果
$
i<j
+
1
$
,则
$
\hat
{{
y
}}_{
j
+
1
\ldots
i
}$
不存在,对于源语句子
$
x
$
,最优策略
$
\hat
{
p
}$
可以被定义为:
\begin{eqnarray}
\hat
{
p
}
&
=
&
\argmax
_{
\funp
{
p
}}
\mathbb
{
E
}_{
\hat
{
\seq
{
y
}}
\sim
\funp
{
p
}
(
\hat
{
\seq
{
y
}}
|
\seq
{
x
}
)
}
\sum
_{
j=1
}^
J
\sum
_{
a
\in
A
}
\funp
{
p
}
(a|
\hat
{{
y
}}_{
1
\ldots
j
}
,
\seq
{
x
}
)
\funp
{
Q
}
(a;
\hat
{{
y
}}_{
1
\ldots
j
}
,
\seq
{
y
}
)
\label
{
eq:13-17
}
...
...
@@ -610,19 +605,19 @@ Loss_{\textrm{robust}}(\theta_{\textrm{mt}}) &=& \frac{1}{N}\sum_{(\mathbi{x},\
\label
{
eq:13-19
}
\end{eqnarray}
\parinterval
这个等式也被称为
{
\small\bfnew
{
贝尔曼方程
}}
\index
{
贝尔曼方程
}
(Bellman Equation
\index
{
Bellman Equation
}
)
\upcite
{
sutton2018reinforcement
}
。它表达了
$
j
-
1
$
时刻的动作价值函数
$
\funp
{
Q
}
(
\hat
{{
y
}}_
j;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
,
\seq
{
y
}
)
$
跟下一时刻
$
j
$
的动作价值函数
$
\funp
{
Q
}
(
a;
\hat
{{
y
}}_{
1
\ldots
j
}
,
\seq
{
y
}
)
$
之间的关系。
{
\red
在理想情况下,动作价值函数
$
\funp
{
Q
}$
应该满足上述等式,因此可以使用该等式作为可学习的函数
$
\tilde
{
\funp
{
Q
}}$
的目标
}{
\red
\sout
{
,因此可以很自然的使用等式右部作为等式左部
$
\funp
{
Q
}
(
\hat
{{
y
}}_
j;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
,
\seq
{
y
}
)
$
的等价形式
}}
。于是,可以定义
$
j
$
时刻动作价值函数为:
\parinterval
这个等式也被称为
{
\small\bfnew
{
贝尔曼方程
}}
\index
{
贝尔曼方程
}
(Bellman Equation
\index
{
Bellman Equation
}
)
\upcite
{
sutton2018reinforcement
}
。它表达了
$
j
-
1
$
时刻的动作价值函数
$
\funp
{
Q
}
(
\hat
{{
y
}}_
j;
\hat
{{
y
}}_{
1
\ldots
j
-
1
}
,
\seq
{
y
}
)
$
跟下一时刻
$
j
$
的动作价值函数
$
\funp
{
Q
}
(
a;
\hat
{{
y
}}_{
1
\ldots
j
}
,
\seq
{
y
}
)
$
之间的关系。
在理想情况下,动作价值函数
$
\funp
{
Q
}$
应该满足上述等式,因此可以使用该等式作为可学习的函数
$
\tilde
{
\funp
{
Q
}}$
的目标
。于是,可以定义
$
j
$
时刻动作价值函数为:
\begin{eqnarray}
\funp
{
q
}_
j
&
=
&
\funp
{
r
}_
j(
\hat
{{
y
}}_
j;
\hat
{{
y
}}_{
1
\ldots
j-1
}
,
\seq
{
y
}
) +
\sum
_{
a
\in
A
}
\funp
{
p
}
(a|
\hat
{{
y
}}_{
1
\ldots
j
}
,
\seq
{
x
}
)
\tilde
{
\funp
{
Q
}}
(a;
\hat
{{
y
}}_{
1
\ldots
j
}
,
\seq
{
y
}
)
\label
{
eq:13-20
}
\end{eqnarray}
\noindent
{
\red
相应的,
}
评论家对应的目标定义如下:
\noindent
相应的,
评论家对应的目标定义如下:
\begin{eqnarray}
\hat
{
\tilde
{
\funp
{
Q
}}}
&
=
&
\argmin
_{
\tilde
{
\funp
{
Q
}}}
\sum
_{
j=1
}^
J
{
(
\tilde
{
\funp
{
Q
}}
(
\hat
{{
y
}}_
j;
\hat
{{
y
}}_{
1
\ldots
j-1
}
,
\seq
{
y
}
) -
\funp
{
q
}_
j)
}^
2
\label
{
eq:13-21
}
\end{eqnarray}
\parinterval
{
\red
此时,公式
\ref
{
eq:13-20
}
与公式
\ref
{
eq:13-21
}
共同组成了评论家的学习目标,使得可学习的函数
$
\tilde
{
\funp
{
Q
}}$
逼近理想的
$
\funp
{
Q
}$
。
}
最后,通过同时优化演员和评论家直到收敛,获得的演员(也就是策略
$
\funp
{
p
}$
)就是我们期望的翻译模型。图
\ref
{
fig:13-12
}
展示了演员和评论家的关系。
\parinterval
此时,公式
\ref
{
eq:13-20
}
与公式
\ref
{
eq:13-21
}
共同组成了评论家的学习目标,使得可学习的函数
$
\tilde
{
\funp
{
Q
}}$
逼近理想的
$
\funp
{
Q
}$
。
最后,通过同时优化演员和评论家直到收敛,获得的演员(也就是策略
$
\funp
{
p
}$
)就是我们期望的翻译模型。图
\ref
{
fig:13-12
}
展示了演员和评论家的关系。
%----------------------------------------------
\begin{figure}
[htp]
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论