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
d9eaf1d3
Commit
d9eaf1d3
authored
Feb 14, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chapter 3.4
parent
7e3e56e4
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
73 行增加
和
106 行删除
+73
-106
Book/Chapter3/Chapter3.tex
+73
-106
没有找到文件。
Book/Chapter3/Chapter3.tex
查看文件 @
d9eaf1d3
...
@@ -387,6 +387,7 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
...
@@ -387,6 +387,7 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection
{
解码
}
\index
{
Chapter3.2.5
}
\subsection
{
解码
}
\index
{
Chapter3.2.5
}
\label
{
sec:simple-decoding
}
\noindent\hspace
{
2em
}
\textbf
{
解码
}
是指,在得到翻译模型后,对于新输入的句子生成最佳译文的过程。具体来说,当给定任意的源语句
$
s
$
,解码系统要找到翻译概率最大的目标语译文
$
\hat
{
t
}$
。这个过程可以被形式化描述为:
\noindent\hspace
{
2em
}
\textbf
{
解码
}
是指,在得到翻译模型后,对于新输入的句子生成最佳译文的过程。具体来说,当给定任意的源语句
$
s
$
,解码系统要找到翻译概率最大的目标语译文
$
\hat
{
t
}$
。这个过程可以被形式化描述为:
...
@@ -723,7 +724,7 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
...
@@ -723,7 +724,7 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
\begin{figure}
[htp]
\begin{figure}
[htp]
\centering
\centering
\input
{
./Chapter3/Figures/figure328
}
\input
{
./Chapter3/Figures/figure328
}
\caption
{
IBM模型1中单词级的对应
}
\caption
{
汉译英双语句对及词对齐
}
\label
{
figureC3.28
}
\label
{
figureC3.28
}
\end{figure}
\end{figure}
%---------------------------
%---------------------------
...
@@ -779,18 +780,7 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
...
@@ -779,18 +780,7 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
\label
{
eqC3.33
}
\label
{
eqC3.33
}
\end{equation}
\end{equation}
\noindent\hspace
{
2em
}
我们用一个简单的例子来说明公式
\ref
{
eqC3.33
}
。如图
\ref
{
figureC3.31
}
所示,这里考虑``桌子''对齐到``table''的情况。如果在模型1中,``桌子''对齐到译文四个位置上的单词的概率是一样的。但在模型2中,``桌子''对齐到``table''被形式化为
$
a
(
a
_
j |j,m,l
)=
a
(
3
|
2
,
3
,
3
)
$
,意思是对于源文位置2(
$
j
=
2
$
)的词,如果它的源文是和目标语译文都是3个词(
$
l
=
m
=
3
$
),对齐到目标语译文位置3(
$
a
_
j
=
3
$
)的概率是多少?因为
$
a
(
a
_
j|j,m,l
)
$
也是模型需要学习的参数,因此``桌子''对齐到不同位置上的目标语单词概率也是不一样的。理想的情况下,通过
$
a
(
a
_
j|j,m,l
)
$
,``桌子''对齐到``table''应该得到更高的概率。
\noindent\hspace
{
2em
}
我们还用图
\ref
{
figureC3.28
}
中的例子来进行说明公式。如果在模型1中,``桌子''对齐到译文四个位置上的单词的概率是一样的。但在模型2中,``桌子''对齐到``table''被形式化为
$
a
(
a
_
j |j,m,l
)=
a
(
3
|
2
,
3
,
3
)
$
,意思是对于源文位置2(
$
j
=
2
$
)的词,如果它的源文是和目标语译文都是3个词(
$
l
=
m
=
3
$
),对齐到目标语译文位置3(
$
a
_
j
=
3
$
)的概率是多少?因为
$
a
(
a
_
j|j,m,l
)
$
也是模型需要学习的参数,因此``桌子''对齐到不同位置上的目标语单词概率也是不一样的。理想的情况下,通过
$
a
(
a
_
j|j,m,l
)
$
,``桌子''对齐到``table''应该得到更高的概率。
%----------------------------------------------
% 图3.31
\begin{figure}
[htp]
\centering
\input
{
./Chapter3/Figures/figure331
}
\caption
{
汉语到英语词对齐实例
}
\label
{
figureC3.31
}
\end{figure}
%---------------------------
\noindent\hspace
{
2em
}
IBM模型2的其他假设均与模型1相同。把公式
\ref
{
eqC3.28
}
、
\ref
{
eqC3.29
}
和
\ref
{
eqC3.33
}
重新带入公式
\ref
{
eqC3.22
}
和
\ref
{
eqC3.21
}
,可以得到IBM模型2的数学描述:
\noindent\hspace
{
2em
}
IBM模型2的其他假设均与模型1相同。把公式
\ref
{
eqC3.28
}
、
\ref
{
eqC3.29
}
和
\ref
{
eqC3.33
}
重新带入公式
\ref
{
eqC3.22
}
和
\ref
{
eqC3.21
}
,可以得到IBM模型2的数学描述:
...
@@ -800,174 +790,149 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
...
@@ -800,174 +790,149 @@ g(s,t) \equiv \prod_{j,i \in \widehat{A}}{\textrm{P}(s_j,t_i)} \times \textrm{P
\label
{
eqC3.34
}
\label
{
eqC3.34
}
\end{eqnarray}
\end{eqnarray}
\noindent\hspace
{
2em
}
类似于模型1,模型2的表达式
\ref
{
eqC3.34
}
也能被拆分为两部分进行理解。第一部分:遍历所有的
$
a
$
;第二部分:对于每个
$
a
$
累加对齐概率
$
\textrm
{
P
}
(
s,a|t
)
$
,即计算对齐概率
$
a
(
a
_
j|j,m,l
)
$
和词汇翻译概率
$
f
(
s
_
j|t
_{
a
_
j
}
)
$
对于所有位置的乘积。
\noindent\hspace
{
2em
}
类似于模型1,模型2的表达式
\ref
{
eqC3.34
}
也能被拆分为两部分进行理解。第一部分:遍历所有的
$
a
$
;第二部分:对于每个
$
a
$
累加对齐概率
$
\textrm
{
P
}
(
s,a|t
)
$
,即计算对齐概率
$
a
(
a
_
j|j,m,l
)
$
和词汇翻译概率
$
f
(
s
_
j|t
_{
a
_
j
}
)
$
对于所有
源语言
位置的乘积。
\subsection
{
计算优化
}
\index
{
Chapter3.4.3
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection
{
解码及计算优化
}
\index
{
Chapter3.4.3
}
\noindent\hspace
{
2em
}
如果模型参数给定,我们可以使用IBM模型1-2对新的句子进行翻译。比如,我们可以使用
\ref
{
sec:simple-decoding
}
节描述的解码方法搜索最优译文,或者使用自左向右解码 + 剪枝的方法。在搜索过程中,只需要通过公式
\ref
{
eqC3.32
}
和
\ref
{
eqC3.34
}
计算每个译文候选的IBM模型翻译概率。但是,公式
\ref
{
eqC3.32
}
和
\ref
{
eqC3.34
}
的高计算复杂度导致这些模型很难直接使用。以IBM模型1为例,这里把公式
\ref
{
eqC3.32
}
重写为:
\noindent\hspace
{
2em
}
暂时没有内容
\begin{equation}
\begin{equation}
\textrm
{
P
}
(s|t) =
\frac
{
\epsilon
}{
(l+1)
^{
m
}}
\underbrace
{
\sum\limits
_{
a
_
1=0
}^{
l
}
...
\sum\limits
_{
a
_
m=0
}^{
l
}}_{
(l+1)
^
m
\textrm
{
次循环
}}
\underbrace
{
\prod\limits
_{
j=1
}^{
m
}
f(s
_
j|t
_{
a
_
j
}
)
}_{
m
\textrm
{
次循环
}}
\textrm
{
P
}
(s|t) =
\frac
{
\epsilon
}{
(l+1)
^{
m
}}
\underbrace
{
\sum\limits
_{
a
_
1=0
}^{
l
}
...
\sum\limits
_{
a
_
m=0
}^{
l
}}_{
(l+1)
^
m
\textrm
{
次循环
}}
\underbrace
{
\prod\limits
_{
j=1
}^{
m
}
f(s
_
j|t
_{
a
_
j
}
)
}_{
m
\textrm
{
次循环
}}
\label
{
eqC3.35
}
\label
{
eqC3.35
}
\end{equation}
\end{equation}
\noindent\hspace
{
2em
}
暂时没有内容
\noindent
可以看到,遍历所有的词对齐需要
$
(
l
+
1
)
^
m
$
次循环,遍历所有源语言位置累计
$
f
(
s
_
j|t
_{
a
_
j
}
)
$
需要
$
m
$
次循环,因此这个模型的计算复杂度为
$
O
((
l
+
1
)
^
m m
)
$
。当
$
m
$
较大时,计算这样的模型几乎是不可能的。不过,经过仔细观察,可以发现还有更加有效的方法进行计算,如下:
\begin{equation}
\sum\limits
_{
a
_
1=0
}^{
l
}
...
\sum\limits
_{
a
_
m=0
}^{
l
}
\prod\limits
_{
j=1
}^{
m
}
f(s
_
j|t
_{
a
_
j
}
) =
\prod\limits
_{
j=1
}^{
m
}
\sum\limits
_{
i=0
}^{
l
}
f(s
_
j|t
_
i)
\label
{
eqC3.35new
}
\end{equation}
\noindent
公式
\ref
{
eqC3.35new
}
的技巧在于把若干个乘积的加法(等式左手端)转化为若干加法结果的乘积(等式右手端),这样省去了多次循环,把
$
O
((
l
+
1
)
^
m m
)
$
的计算复杂度降为
$
(
l
+
1
)
m
$
。图
\ref
{
figureC3.32-new
}
对这个过程进行了进一步解释。
%----------------------------------------------
%----------------------------------------------
% 图3.32
% 图3.32
-new
\begin{figure}
[htp]
\begin{figure}
[htp]
\centering
\centering
\input
{
./Chapter3/Figures/figure332
}
\caption
{$
\sum\limits
_{
a
_
1
=
0
}^{
l
}
...
\sum\limits
_{
a
_
m
=
0
}^{
l
}
\prod\limits
_{
j
=
1
}^{
m
}
f
(
s
_
j|t
_{
a
_
j
}
)
=
\prod\limits
_{
j
=
1
}^{
m
}
\sum\limits
_{
i
=
0
}^{
l
}
f
(
s
_
j|t
_
i
)
$
的实例(
{
\red
直接使用课件第三章40页
}
)
}
\caption
{
此处为图片的描述...
}
\label
{
figureC3.32-new
}
\label
{
figureC3.32
}
\end{figure}
\end{figure}
%---------------------------
%---------------------------
\noindent\hspace
{
2em
}
接着,利用公式
\ref
{
eqC3.35new
}
的方式,可以把公式
\ref
{
eqC3.32
}
和
\ref
{
eqC3.34
}
重写表示为:
\begin{eqnarray}
\textrm
{
IBM模型1:
\ \ \ \
}
\textrm
{
P
}
(s|t)
&
=
&
\frac
{
\epsilon
}{
(l+1)
^{
m
}}
\prod\limits
_{
j=1
}^{
m
}
\sum\limits
_{
i=0
}^{
l
}
f(s
_
j|t
_
i)
\label
{
eq:final-model1
}
\\
\textrm
{
IBM模型2:
\ \ \ \
}
\textrm
{
P
}
(s|t)
&
=
&
\epsilon
\prod\limits
_{
j=1
}^{
m
}
\sum\limits
_{
i=0
}^{
l
}
a(i|j,m,l) f(s
_
j|t
_
i)
\label
{
eq:final-model2
}
\label
{
eqC3.35new2
}
\end{eqnarray}
公式
\ref
{
eq:final-model1
}
和
\ref
{
eq:final-model2
}
是IBM模型1-2的最终表达式,在解码和训练中可以被直接使用。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection
{
训练
}
\index
{
Chapter3.4.4
}
\subsection
{
训练
}
\index
{
Chapter3.4.4
}
\noindent\hspace
{
2em
}
在前面的章节中我们完成的对翻译的建模,但如何求解出模型的参数的呢?这也是本节需要解决的问题。下面我们将目标函数、极大似然估计、最大化
$
\textrm
{
P
}
(
s|t
)
$
和对目标函数求导这四个部分逐步介绍参数的求解过程。
\noindent\hspace
{
2em
}
在完成了建模和解码的基础上,剩下的问题是如何得到模型的参数。这也是整个统计机器翻译里最重要的内容。下面我们将会对IBM模型1-2的参数估计方法进行介绍。
\vspace
{
0.5em
}
\noindent\textbf
{
(一)目标函数
}
\index
{
Chapter3.4.4.1
}
\vspace
{
0.5em
}
\noindent\
textbf
{
目标函数
}
\index
{
Chapter3.4.4.1
}
\noindent\
hspace
{
2em
}
统计机器翻译模型的训练是一个典型的优化问题。简单来说,训练是只在给定数据集(训练集)上调整参数使得目标函数的值达到最大(或最小),此时得到的参数被称为是该模型在该目标函数下的最优解(图
\ref
{
figureC3.33
}
)。
\noindent\hspace
{
2em
}
一般来说训练是在训练集上调整参数使得目标函数的值达到最大(最下),此时得到对的参数称为该模型在该目标函数下的最优解,如下图所示。
%----------------------------------------------
%----------------------------------------------
% 图3.32
% 图3.32
\begin{figure}
[htp]
\begin{figure}
[htp]
\centering
\centering
\input
{
./Chapter3/Figures/figure333
}
\input
{
./Chapter3/Figures/figure333
}
\caption
{
此处为图片的描述...
}
\caption
{
一个目标函数的优化结果示例
}
\label
{
figureC3.33
}
\label
{
figureC3.33
}
\end{figure}
\end{figure}
%---------------------------
%---------------------------
\noindent\hspace
{
2em
}
在IBM模型中,训练就是对于给定的句对
$
(
s,t
)
$
,最大化翻译概率
$
\textrm
{
P
}
(
s|t
)
$
。这里用符号
$
\textrm
{
P
}_{
\theta
}
(
s|t
)
$
表示概率由参数
$
\theta
$
决定,公式如下所示。
\noindent\hspace
{
2em
}
在IBM模型中,优化的目标函数被定义为
$
\textrm
{
P
}
(
s|t
)
$
。也就是,对于给定的句对
$
(
s,t
)
$
,最大化翻译概率
$
\textrm
{
P
}
(
s|t
)
$
。这里用符号
$
\textrm
{
P
}_{
\theta
}
(
s|t
)
$
表示模型由参数
$
\theta
$
决定,模型训练可以被描述为对目标函数
$
\textrm
{
P
}_{
\theta
}
(
s|t
)
$
的优化过程:
\begin{equation}
\begin{equation}
\widehat
{
\theta
}
=
\argmax
_{
\theta
}
\textrm
{
P
}_{
\theta
}
(s|t)
\widehat
{
\theta
}
=
\argmax
_{
\theta
}
\textrm
{
P
}_{
\theta
}
(s|t)
\label
{
eqC3.36
}
\label
{
eqC3.36
}
\end{equation}
\end{equation}
\noindent\hspace
{
2em
}
上述公式可以分解为两个部分,如图所示。其中我们的目标函数是
$
\textrm
{
P
}_{
\theta
}
(
s|t
)
$
,而
$
argmax
_{
\theta
}$
表示求最优参数。
\noindent
其中,
$
\argmax
_{
\theta
}$
表示求最优参数的过程(或优化过程)。
%----------------------------------------------
% 图3.34
\begin{figure}
[htp]
\centering
\input
{
./Chapter3/Figures/figure334
}
\caption
{
此处为图片的描述...
}
\label
{
figureC3.34
}
\end{figure}
%---------------------------
\noindent\textbf
{
极大似然估计
}
\index
{
Chapter3.4.4.2
}
\noindent\hspace
{
2em
}
那如何求解上述目标函数的最优参数呢?这里我们用到了极大似然估计。所谓极大似然估计,就是要找到使似然函数达到最大的
$
\theta
$
。其中
$
\textrm
{
P
}
(
s|t
)
$
可以被看做是
$
(
s,t
)
$
上的似然函数,记做
$
\textrm
{
L
}
(
s,t;
\theta
)
$
。上述公式可以改写为下述公式。其中
$
L
(
s,t;
\theta
)
$
\\
表示
$
\textrm
{
L
}
(
\bullet
)
$
依赖模型参数
$
\theta
$
,
\{
$
\widehat
{
\theta
}$
\}
表示可能有多个组的结果,
$
\Theta
$
表示参数空间。
\noindent\hspace
{
2em
}
公式
\ref
{
eqC3.36
}
实际上也是一种基于极大似然的模型训练方法。这里,可以把
$
\textrm
{
P
}_{
\theta
}
(
s|t
)
$
看作是模型对数据描述的一个似然函数,可以记做
$
\textrm
{
L
}
(
s,t;
\theta
)
$
。也就是,我们的优化目标实际上是对似然函数的优化:
$
\widehat
{
\theta
}
=
\argmax
_{
\theta
\in
\Theta
}
\textrm
{
L
}
(
s,t;
\theta
)
$
,其中
\{
$
\widehat
{
\theta
}$
\}
表示可能有多个组的结果,
$
\Theta
$
表示参数空间。
\noindent\hspace
{
2em
}
那如何找到一组
$
\theta
$
使
$
\textrm
{
P
}_{
\theta
}
(
s|t
)
$
达到最大。求函数最大值问题。比如,我们可以对
$
\textrm
{
P
}_{
\theta
}
(
s|t
)
$
求导,令导数为零,得到极值点。
\noindent\hspace
{
2em
}
回到IBM模型的优化问题上。以IBM模型1为例,我们优化的目标是最大化翻译概率
$
\textrm
{
P
}
(
s|t
)
$
。使用公式
\ref
{
eq:final-model1
}
,可以把这个目标表述为:
\noindent\textbf
{
最大化
$
\textrm
{
P
}
(
s|t
)
$}
\index
{
Chapter3.4.4.3
}
\noindent\hspace
{
2em
}
那如何找到一组
$
\theta
$
使
$
\textrm
{
P
}_{
\theta
}
(
s|t
)
$
达到最大呢?一般求函数的最大值问题的做法是:对目标函数进行求导,并令导数为零,得到极值点。如图所示。
%----------------------------------------------
% 图3.35
\begin{figure}
[htp]
\centering
\includegraphics
[scale=1]
{
./Chapter3/Figures/figure1.jpg
}
\caption
{
求极值点
}
\label
{
figureC3.35
}
\end{figure}
%-------------------------------------------
\noindent\hspace
{
2em
}
以IBM模型1为例,我们基于极大似然估计可以把对应的模型训练问题描述为:
\begin{eqnarray}
\begin{equation}
&
&
\textrm
{
max
}
\Big
(
\frac
{
\varepsilon
}{
(l+1)
^
m
}
\prod
_{
j=1
}^{
m
}
\sum
_{
i=0
}^{
l
}{
f(
{
s
_
j|t
_
i
}
)
}
\Big
)
\nonumber
\\
\begin{split}
&
\textrm
{
s.t.
}
&
\textrm
{
任意单词
}
t
_{
y
}
:
\;\sum
_{
s
_
x
}{
f(s
_
x|t
_
y)
}
=1
\nonumber
&{
max(
\frac
{
\varepsilon
}{
((l+1)
^
m
}
\prod
_{
j=1
}^{
m
}
\sum
_{
i=0
}^{
l
}{
f
{
s
_
j|t
_
i
}}
)
}
\\
&{
s.t.
\;
for
\;
each
\;
word
\;
t
_{
y
}
:
\;\sum
_{
s
_
x
}{
f(s
_
x|t
_
y)
}}
\\
&{
=1
}
\label
{
eqC3.37
}
\label
{
eqC3.37
}
\end{split}
\end{eqnarray}
\end{equation}
\noindent\hspace
{
2em
}
上述公式的含义解释如下。需要注意的是
$
\{
f
(
s
_
x |t
_
y
)
\}
$
对应很多参数,每个源语言单词和每个目标语单词的组合都对应一个
$
f
(
s
_
x |t
_
y
)
$
。
\noindent
其中,
$
\textrm
{
max
}
(
\cdot
)
$
表示最大化,
$
\frac
{
\varepsilon
}{
(
l
+
1
)
^
m
}
\prod
_{
j
=
1
}^{
m
}
\sum
_{
i
=
0
}^{
l
}{
f
(
{
s
_
j|t
_
i
}
)
}$
是目标函数,
$
f
(
{
s
_
j|t
_
i
}
)
$
是模型的参数,
$
\sum
_{
s
_
x
}{
f
(
s
_
x|t
_
y
)
}
=
1
$
是优化的约束条件,保证翻译概率满足归一化的要求。需要注意的是
$
\{
f
(
s
_
x |t
_
y
)
\}
$
对应了很多参数,每个源语言单词和每个目标语单词的组合都对应一个参数
$
f
(
s
_
x |t
_
y
)
$
。
%----------------------------------------------
% 图3.36
\vspace
{
0.5em
}
\begin{figure}
[htp]
\noindent\textbf
{
(二)优化
}
\index
{
Chapter3.4.4.4
}
\centering
\vspace
{
0.5em
}
\input
{
./Chapter3/Figures/figure337
}
\caption
{
公式图解
}
\label
{
figureC3.36
}
\end{figure}
%-------------------------------------------
\noindent\
textbf
{
对目标函数求导
}
\index
{
Chapter3.4.4.4
}
\noindent\
hspace
{
2em
}
我们已经把IBM模型的参数训练问题定义为带约束的目标函数优化问题。由于目标函数是可微分函数,解决这类问题的一种常用手法是把带约束的优化问题转化为不带约束的优化问题。这里用到了拉格朗日乘数法(The Lagrange Multiplier Method),它的基本思想是把含有
$
n
$
个变量和
$
m
$
个约束条件的优化问题转化为含有
$
n
+
m
$
个变量的无约束优化问题。
\noindent\hspace
{
2em
}
如何解决带约束的目标函数优化问题呢?这里用到了拉格朗日乘数法。在百度百科中关于它的定义如下所示。简单地说,拉格朗日乘数法解决了把含有约束的优化问题转换为了不含约束的优化问题。
\noindent\hspace
{
2em
}
这里,我们的目标是
$
\max
(
\textrm
{
P
}_{
\theta
}
(
s|t
))
$
,约束条件是对于任意的目标语单词
$
\forall
{
t
_
y
}$
有
\\
$
\sum
_{
s
_
x
}{
\textrm
{
P
}
(
s
_
x|t
_
y
)
}
=
1
$
。根据拉格朗日乘数法,可以把上述优化问题重新定义最大化如下拉格朗日函数:
%----------------------------------------------
% 图3.37
\begin{figure}
[htp]
% \centering
\includegraphics
{
./Chapter3/Figures/figure1.png
}
\caption
{
拉格朗日乘数法
}
\label
{
figureC3.37
}
\end{figure}
%-------------------------------------------
\noindent\hspace
{
2em
}
这里我们的目标是
$
max
(
\textrm
{
P
}_{
\theta
}
(
s|t
))
$
,约束是对于任意的
$
\forall
{
t
_
y
}$
,都有
$
\sum
_{
s
_
x
}{
\textrm
{
P
}
(
s
_
x|t
_
y
)
}
=
1
$
。根据拉格朗日乘数法,我们可以把上述优化问题重新定义如下。
\begin{equation}
\begin{equation}
\begin{split}
L(f,
\lambda
)=
\frac
{
\epsilon
}{
(l+1)
^
m
}
\prod
_{
j=1
}^{
m
}
\sum
_{
i=0
}^{
l
}
\prod
_{
j=1
}^{
m
}{
f(s
_
j|t
_
i)
}
-
\sum
_{
u
}{
\lambda
_{
t
_
y
}
(
\sum
_{
s
_
x
}{
f(s
_
x|t
_
y)
}
-1)
}
L(f,
\lambda
)=
\frac
{
\epsilon
}{
(l+1)
^
m
}
\prod
_{
j=1
}^{
m
}
\sum
_{
i=0
}^{
l
}
\prod
_{
j=1
}^{
m
}{
f(s
_
j|t
_
i)
}
-
\sum
_{
u
}{
\lambda
_{
t
_
y
}
(
\sum
_{
s
_
x
}{
f(s
_
x|t
_
y)
}
-1)
}
\label
{
eqC3.37
}
\label
{
eqC3.37
}
\end{split}
\end{equation}
\end{equation}
\noindent\hspace
{
2em
}
分析上式可得。我们可以看到
$
\lambda
_
(
t
_
y
)
$
是我们引入的拉格朗日乘数,它的数量和参数约束条件的数量相同。
\noindent\hspace
{
2em
}$
L
(
f,
\lambda
)
$
包含两部分,
$
\frac
{
\epsilon
}{
(
l
+
1
)
^
m
}
\prod
_{
j
=
1
}^{
m
}
\sum
_{
i
=
0
}^{
l
}
\prod
_{
j
=
1
}^{
m
}{
f
(
s
_
j|t
_
i
)
}$
是原始的目标函数,
\\
$
\sum
_{
u
}{
\lambda
_{
t
_
y
}
(
\sum
_{
s
_
x
}{
f
(
s
_
x|t
_
y
)
}
-
1
)
}$
是原始的约束条件乘以拉格朗日乘数
$
\lambda
_{
t
_
y
}$
,拉格朗日乘数的数量和约束条件的数量相同。图
\ref
{
figureC3.35
}
通过图例说明了
$
L
(
f,
\lambda
)
$
各部分的意义。
%----------------------------------------------
%----------------------------------------------
% 图3.35
% 图3.35
\begin{figure}
[htp]
\begin{figure}
[htp]
\centering
\centering
\input
{
./Chapter3/Figures/figure338
}
\input
{
./Chapter3/Figures/figure338
}
\caption
{
拉格朗日乘数法
}
\caption
{
拉格朗日乘数法
(IBM模型1)
}
\label
{
figureC3.35
}
\label
{
figureC3.35
}
\end{figure}
\end{figure}
%---------------------------
%---------------------------
\noindent\hspace
{
2em
}
现在我们需要对目标函数L进行求导。首先用
$
s
_
u
$
和
$
t
_
v
$
分别表示任意一个源语单词和一个目标语单词,再进行求导,得到如下公式。
\noindent\hspace
{
2em
}
因为
$
L
(
f,
\lambda
)
$
是可微分函数,因此可以通过计算
$
L
(
f,
\lambda
)
$
的导数为零的点得到极值点。因为这个模型里仅有
$
f
(
s
_
x|t
_
y
)
$
一种类型的参数,我们只需要如下导数进行计算
\begin{equation}
\begin{split}
{
\frac
{
\partial
L(f,
\lambda
)
}{
\partial
f(s
_
u|t
_
v)
}}&
=
{
\frac
{
\partial
\big
[ \frac{\epsilon}{(l+1)^{m}} \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} f(s_j|t_i) \big]
}{
\partial
f(s
_
u|t
_
v)
}}
\\
&
-
{
\frac
{
\partial
\big
[ \sum_{t_y} \lambda_{t_y} (\sum_{s_x} f(s_x|t_y) -1) \big]
}{
\partial
f(s
_
u|t
_
v)
}}
\\
&
=
{
\frac
{
\epsilon
}{
(l+1)
^{
m
}}
\cdot
\frac
{
\partial
\big
[ \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} f(s_j|t_{a_j}) \big]
}{
\partial
f(s
_
u|t
_
v)
}
-
\lambda
_{
t
_
v
}}
\label
{
eqC3.38
}
\end{split}
\end{equation}
\noindent\hspace
{
2em
}
为了求
$
\frac
{
\partial
\big
[
\prod\limits
_{
j
=
1
}^{
m
}
\sum\limits
_{
i
=
0
}^{
l
}
f
(
s
_
j|t
_
i
)
\big
]
}{
\partial
f
(
s
_
u|t
_
v
)
}$
,先看一个简单的例子:
$
g
(
z
)=
\alpha
z
^{
\beta
}$
为一个变量z的多项式函数,显然,
\begin{eqnarray}
$
\frac
{
\partial
g
(
z
)
}{
\partial
z
}
=
\alpha
\beta
z
^{
\beta
-
1
}
=
\frac
{
\beta
}{
z
}
\alpha
z
^{
\beta
}
=
\frac
{
\beta
}{
z
}
g
(
z
)
$
\frac
{
\partial
L(f,
\lambda
)
}{
\partial
f(s
_
u|t
_
v)
}&
=
&
\frac
{
\partial
\big
[ \frac{\epsilon}{(l+1)^{m}} \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} f(s_j|t_i) \big]
}{
\partial
f(s
_
u|t
_
v)
}
-
\nonumber
\\
&
&
\frac
{
\partial
\big
[ \sum_{t_y} \lambda_{t_y} (\sum_{s_x} f(s_x|t_y) -1) \big]
}{
\partial
f(s
_
u|t
_
v)
}
\nonumber
\\
&
=
&
\frac
{
\epsilon
}{
(l+1)
^{
m
}}
\cdot
\frac
{
\partial
\big
[ \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} f(s_j|t_{a_j}) \big]
}{
\partial
f(s
_
u|t
_
v)
}
-
\lambda
_{
t
_
v
}
\label
{
eqC3.38
}
\end{eqnarray}
\noindent\hspace
{
2em
}
这里可以把
$
\prod
_{
j
=
1
}^{
m
}
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
j|t
_
i
)
$
看做
$
g
(
z
)=
\alpha
z
^{
\beta
}$
的实例。首先令
$
z
=
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
u|t
_
i
)
$
,注意
$
s
_
u
$
为给定的源语单词。其次那么
$
\beta
$
为
$
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
u|t
_
i
)
$
在
$
\prod
_{
j
=
1
}^{
m
}
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
j|t
_
i
)
$
中出现的次数,即源语句子中与
$
s
_
u
$
相同的单词的个数。
\noindent\hspace
{
2em
}
为了求
$
\frac
{
\partial
\big
[
\prod\limits
_{
j
=
1
}^{
m
}
\sum\limits
_{
i
=
0
}^{
l
}
f
(
s
_
j|t
_
i
)
\big
]
}{
\partial
f
(
s
_
u|t
_
v
)
}$
,这里引入一个辅助函数。令
$
g
(
z
)=
\alpha
z
^{
\beta
}$
为变量
$
z
$
的函数,显然,
$
\frac
{
\partial
g
(
z
)
}{
\partial
z
}
=
\alpha
\beta
z
^{
\beta
-
1
}
=
\frac
{
\beta
}{
z
}
\alpha
z
^{
\beta
}
=
\frac
{
\beta
}{
z
}
g
(
z
)
$
。这里可以把
$
\prod
_{
j
=
1
}^{
m
}
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
j|t
_
i
)
$
看做
$
g
(
z
)=
\alpha
z
^{
\beta
}$
的实例。首先,令
$
z
=
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
u|t
_
i
)
$
,注意
$
s
_
u
$
为给定的源语单词。然后,把
$
\beta
$
定义为
$
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
u|t
_
i
)
$
在
$
\prod
_{
j
=
1
}^{
m
}
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
j|t
_
i
)
$
中出现的次数,即源语句子中与
$
s
_
u
$
相同的单词的个数。
\begin{equation}
\begin{equation}
\beta
=
\sum
_{
j=1
}^{
m
}
\delta
(s
_
j,s
_
u)
\beta
=
\sum
_{
j=1
}^{
m
}
\delta
(s
_
j,s
_
u)
\label
{
eqC3.38
}
\label
{
eqC3.38
}
\end{equation}
\end{equation}
\noindent
\hspace
{
2em
}
其中
$
\delta
(
x,y
)
$
,当
$
x
=
y
$
时为1
,否则为0。
\noindent
其中,当
$
x
=
y
$
时为
$
\delta
(
x,y
)=
1
$
,否则为0。
\noindent\hspace
{
2em
}
根据
$
\frac
{
\partial
g
(
z
)
}{
\partial
z
}
=
\frac
{
\beta
}{
z
}
g
(
z
)
$
。
可以得到
\noindent\hspace
{
2em
}
根据
$
\frac
{
\partial
g
(
z
)
}{
\partial
z
}
=
\frac
{
\beta
}{
z
}
g
(
z
)
$
,
可以得到
\begin{equation}
\begin{equation}
\frac
{
\partial
g(z)
}{
\partial
z
}
=
\frac
{
\partial
\big
[ \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} f(s_j|t_i) \big]
}{
\partial
\big
[ \sum\limits_{i=0}^{l}f(s_u|t_i) \big]
}
=
\frac
{
\sum\limits
_{
j=1
}^{
m
}
\delta
(s
_
j,s
_
u)
}{
\sum\limits
_{
i=0
}^{
l
}
f(s
_
u|t
_
i)
}
\prod\limits
_{
j=1
}^{
m
}
\sum\limits
_{
i=0
}^{
l
}
f(s
_
j|t
_
i)
\frac
{
\partial
g(z)
}{
\partial
z
}
=
\frac
{
\partial
\big
[ \prod\limits_{j=1}^{m} \sum\limits_{i=0}^{l} f(s_j|t_i) \big]
}{
\partial
\big
[ \sum\limits_{i=0}^{l}f(s_u|t_i) \big]
}
=
\frac
{
\sum\limits
_{
j=1
}^{
m
}
\delta
(s
_
j,s
_
u)
}{
\sum\limits
_{
i=0
}^{
l
}
f(s
_
u|t
_
i)
}
\prod\limits
_{
j=1
}^{
m
}
\sum\limits
_{
i=0
}^{
l
}
f(s
_
j|t
_
i)
\label
{
eqC3.39
}
\label
{
eqC3.39
}
\end{equation}
\end{equation}
\noindent\hspace
{
2em
}
即目标语译文单词中与
$
t
_
v
$
相同的个数。
\noindent\hspace
{
2em
}
根据
$
\frac
{
\partial
g
(
z
)
}{
\partial
z
}$
和
$
\frac
{
\partial
z
}{
\partial
f
}$
计算的结果,可以得到
\noindent\hspace
{
2em
}
根据
$
\frac
{
\partial
g
(
z
)
}{
\partial
z
}$
和
$
\frac
{
\partial
z
}{
\partial
f
}$
计算的结果,可以得到
%----------------------------------------------
%----------------------------------------------
% 图3.36
% 图3.36
\begin{figure}
[htp]
\begin{figure}
[htp]
\centering
\centering
\input
{
./Chapter3/Figures/figure336
}
\input
{
./Chapter3/Figures/figure336
}
\caption
{
拉格朗日乘数法
}
\caption
{
{
\red
此处是公式不是图!!!
}
}
\label
{
figureC3.36
}
\label
{
figureC3.36
}
\end{figure}
\end{figure}
%---------------------------
%---------------------------
\noindent\hspace
{
2em
}
将
$
\frac
{
\partial
\big
[
\prod
_{
j
=
1
}^{
m
}
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
j|t
_
i
)
\big
]
}{
\partial
f
(
s
_
u|t
_
v
)
}$
进一步代入
$
\frac
{
\partial
L
(
f,
\lambda
)
}{
\partial
f
(
s
_
u|t
_
v
)
}$
\noindent\hspace
{
2em
}
将
$
\frac
{
\partial
\big
[
\prod
_{
j
=
1
}^{
m
}
\sum
_{
i
=
0
}^{
l
}
f
(
s
_
j|t
_
i
)
\big
]
}{
\partial
f
(
s
_
u|t
_
v
)
}$
进一步代入
$
\frac
{
\partial
L
(
f,
\lambda
)
}{
\partial
f
(
s
_
u|t
_
v
)
}$
,得到
$
L
(
f,
\lambda
)
$
的导数
\begin{equation}
\begin{equation}
\begin{split}
\begin{split}
&{
\frac
{
\partial
L(f,
\lambda
)
}{
\partial
f(s
_
u|t
_
v)
}}
\\
&{
\frac
{
\partial
L(f,
\lambda
)
}{
\partial
f(s
_
u|t
_
v)
}}
\\
...
@@ -985,7 +950,9 @@ f(s_u|t_v) = \frac{\lambda_{t_v}^{-1} \epsilon}{(l+1)^{m}} \cdot \frac{\sum\limi
...
@@ -985,7 +950,9 @@ f(s_u|t_v) = \frac{\lambda_{t_v}^{-1} \epsilon}{(l+1)^{m}} \cdot \frac{\sum\limi
\end{split}
\end{split}
\end{equation}
\end{equation}
\noindent\hspace
{
2em
}
(二)求
$
f
(
s
_
u |t
_
v
)
$
的最优解
\noindent\hspace
{
2em
}{
\red
这部分刘继强没有做,直接把第三章课件的51-57页抄过来就行,写得很清楚了,文字内容不多!!!!!
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section
{
IBM模型3-5及隐马尔可夫模型
}
\index
{
Chapter3.5
}
\section
{
IBM模型3-5及隐马尔可夫模型
}
\index
{
Chapter3.5
}
\subsection
{
基本翻译模型
}
\index
{
Chapter3.5.1
}
\subsection
{
基本翻译模型
}
\index
{
Chapter3.5.1
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论