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
32632930
Commit
32632930
authored
Mar 03, 2021
by
孟霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sec3 编辑修改
parent
2a437587
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
6 行增加
和
6 行删除
+6
-6
Chapter3/chapter3.tex
+6
-6
没有找到文件。
Chapter3/chapter3.tex
查看文件 @
32632930
...
...
@@ -327,11 +327,11 @@ $计算这种切分的概率值。
\parinterval
隐马尔可夫模型是一种经典的序列模型
\upcite
{
Baum1966Statistical,baum1970maximization,1996Hidden
}
。它在语音识别、自然语言处理的很多领域得到了广泛的应用。隐马尔可夫模型的本质就是概率化的马尔可夫过程,这个过程隐含着状态间转移和可见状态生成的概率。
\parinterval
这里用一个简单的“抛硬币”游戏来对这些概念进行说明:假设有三枚质地不同的硬币
$
A
$
、
$
B
$
、
$
C
$
,已知这三个硬币抛出正面的概率分别为0.3、0.5、0.7,在游戏中,游戏发起者在上述三枚硬币中选择一枚硬币上抛,每枚硬币被挑选到的概率可能会受上次被挑选的硬币的影响,且每枚硬币正面向上的概率都各不相同。不停的重复挑选硬币、上抛硬币的过程,会得到一串硬币的正反序列,例如:抛硬币6次,得到:正正反反正反。游戏挑战者
通过观察6次后获得的硬币
正反序列,猜测每次选择的究竟是哪一枚硬币。
\parinterval
这里用一个简单的“抛硬币”游戏来对这些概念进行说明:假设有三枚质地不同的硬币
$
A
$
、
$
B
$
、
$
C
$
,已知这三个硬币抛出正面的概率分别为0.3、0.5、0.7,在游戏中,游戏发起者在上述三枚硬币中选择一枚硬币上抛,每枚硬币被挑选到的概率可能会受上次被挑选的硬币的影响,且每枚硬币正面向上的概率都各不相同。不停的重复挑选硬币、上抛硬币的过程,会得到一串硬币的正反序列,例如:抛硬币6次,得到:正正反反正反。游戏挑战者
根据硬币的
正反序列,猜测每次选择的究竟是哪一枚硬币。
\parinterval
在上面的例子中,每次挑选并上抛硬币后得到的“正面”或“反面”即为“可见状态”,再次挑选并上抛硬币会获得新的“可见状态”,这个过程即为“状态的转移”,经过6次反复挑选上抛后得到的硬币正反序列叫做可见状态序列,由每个回合的可见状态构成。此外,在这个游戏中还暗含着一个会对最终“可见状态序列”产生影响的“隐含状态序列”
\ \dash
\
每次挑选的硬币形成的序列,例如
$
CBABCA
$
。
\parinterval
实际上,隐马尔科夫模型在处理序列问题时的关键依据是两个至关重要的概率关系,并且这两个概率关系也始终贯穿于“抛硬币”的游戏中。一方面,隐马尔可夫模型
中
用
{
\small\sffamily\bfseries
{
发射概率
}}
\index
{
发射概率
}
(Emission Probability)
\index
{
Emission Probability
}
来描述隐含状态和可见状态之间存在的输出概率(即
$
A
$
、
$
B
$
、
$
C
$
抛出正面的输出概率为0.3、0.5、0.7),同样的,隐马尔可夫模型还会描述系统隐含状态的
{
\small\sffamily\bfseries
{
转移概率
}}
\index
{
转移概率
}
(Transition Probability)
\index
{
Transition Probability
}
,在这个例子中,
$
A
$
的下一个状态是
$
A
$
、
$
B
$
、
$
C
$
的概率都是1/3,
$
B
$
、
$
C
$
的下一个状态是
$
A
$
、
$
B
$
、
$
C
$
的转移概率也同样是1/3。图
\ref
{
fig:3.3-2
}
展示了在“抛硬币”游戏中的转移概率和发射概率,它们都可以被看做是条件概率矩阵。
\parinterval
实际上,隐马尔科夫模型在处理序列问题时的关键依据是两个至关重要的概率关系,并且这两个概率关系也始终贯穿于“抛硬币”的游戏中。一方面,隐马尔可夫模型用
{
\small\sffamily\bfseries
{
发射概率
}}
\index
{
发射概率
}
(Emission Probability)
\index
{
Emission Probability
}
来描述隐含状态和可见状态之间存在的输出概率(即
$
A
$
、
$
B
$
、
$
C
$
抛出正面的输出概率为0.3、0.5、0.7),同样的,隐马尔可夫模型还会描述系统隐含状态的
{
\small\sffamily\bfseries
{
转移概率
}}
\index
{
转移概率
}
(Transition Probability)
\index
{
Transition Probability
}
,在这个例子中,
$
A
$
的下一个状态是
$
A
$
、
$
B
$
、
$
C
$
的概率都是1/3,
$
B
$
、
$
C
$
的下一个状态是
$
A
$
、
$
B
$
、
$
C
$
的转移概率也同样是1/3。图
\ref
{
fig:3.3-2
}
展示了在“抛硬币”游戏中的转移概率和发射概率,它们都可以被看做是条件概率矩阵。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -382,7 +382,7 @@ $计算这种切分的概率值。
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
参数学习
}}
,即给定硬币种类(隐含状态数量),根据多个可见状态序列(抛硬币的结果)估计模型的参数(转移概率),这个问题的求解需要用到EM算法
\upcite
{
1977Maximum
}
。
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfseries
{
解码
}}
,即给定模型(转移概率和发射概率)和可见状态序列(抛硬币的结果),
计算在可见状态序列的情况下,最可能出现的对应的
状态序列,这个问题的求解需要用到基于动态规划的方法,通常也被称作
{
\small\sffamily\bfseries
{
维特比算法
}}
\index
{
维特比算法
}
(Viterbi Algorithm)
\index
{
Viterbi Algorithm
}
\upcite
{
1967Error
}
。
\item
{
\small\sffamily\bfseries
{
解码
}}
,即给定模型(转移概率和发射概率)和可见状态序列(抛硬币的结果),
根据可见状态序列,计算最可能出现的隐含
状态序列,这个问题的求解需要用到基于动态规划的方法,通常也被称作
{
\small\sffamily\bfseries
{
维特比算法
}}
\index
{
维特比算法
}
(Viterbi Algorithm)
\index
{
Viterbi Algorithm
}
\upcite
{
1967Error
}
。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -797,7 +797,7 @@ s_0 \overset{r_1}{\Rightarrow} s_1 \overset{r_2}{\Rightarrow} s_2 \overset{r_3}{
\label
{
eq:3.4-4
}
\end{eqnarray}
\noindent
即,在给定规则左部的情况下生成规则右部的可能性。进一步,在上下文无关文法中,每条规则之间的使用都是相互独立的
\footnote
{
如果是上下文有关文法,规则会形如
$
a
\alpha
b
\to
a
\beta
b
$
,这时
$
\alpha
\to
\beta
$
的过程会依赖
前后
上下文
$
a
$
和
$
b
$}
,因此可以把
$
\funp
{
P
}
(
d
)
$
分解为规则概率的乘积:
\noindent
即,在给定规则左部的情况下生成规则右部的可能性。进一步,在上下文无关文法中,每条规则之间的使用都是相互独立的
\footnote
{
如果是上下文有关文法,规则会形如
$
a
\alpha
b
\to
a
\beta
b
$
,这时
$
\alpha
\to
\beta
$
的过程会依赖上下文
$
a
$
和
$
b
$}
,因此可以把
$
\funp
{
P
}
(
d
)
$
分解为规则概率的乘积:
\begin{eqnarray}
\funp
{
P
}
(d)
&
=
&
\funp
{
P
}
(r
_
1
\cdot
r
_
2
\cdot
...
\cdot
r
_
n)
\nonumber
\\
&
=
&
\funp
{
P
}
(r
_
1)
\cdot
\funp
{
P
}
(r
_
2)
\cdots
\funp
{
P
}
(r
_
n)
...
...
@@ -819,9 +819,9 @@ r_6: & & \textrm{VP} \to \textrm{VV}\ \textrm{NN} \nonumber
\label
{
eq:3.4-7
}
\end{eqnarray}
\parinterval
这也对应了词串“吃/鱼”的生成过程。首先,从起始非终结符VP开始,使用规则
$
r
_
6
$
生成两个非终结符VV和NN;进一步,分别使用规则
$
r
_
3
$
和
$
r
_
4
$
从VV和NN进一步
生成单词“吃”和“鱼”。整个过程的概率等于三条规则概率的乘积。
\parinterval
这也对应了词串“吃/鱼”的生成过程。首先,从起始非终结符VP开始,使用规则
$
r
_
6
$
生成两个非终结符VV和NN;进一步,分别使用规则
$
r
_
3
$
和
$
r
_
4
$
将“VV”和“NN”进一步推导,
生成单词“吃”和“鱼”。整个过程的概率等于三条规则概率的乘积。
\parinterval
新的问题又来了,如何得到规则的概率呢?这里仍然可以从数据中学习文法规则的概率。假设有人工标注的数据,它包
括
很多人工标注句法树的句法,称之为
{
\small\sffamily\bfseries
{
树库
}}
\index
{
树库
}
(Treebank)
\index
{
Treebank
}
。然后,对于规则
$
\textrm
{
r
}
:
\alpha
\to
\beta
$
可以使用基于频次的方法:
\parinterval
新的问题又来了,如何得到规则的概率呢?这里仍然可以从数据中学习文法规则的概率。假设有人工标注的数据,它包
含
很多人工标注句法树的句法,称之为
{
\small\sffamily\bfseries
{
树库
}}
\index
{
树库
}
(Treebank)
\index
{
Treebank
}
。然后,对于规则
$
\textrm
{
r
}
:
\alpha
\to
\beta
$
可以使用基于频次的方法:
\begin{eqnarray}
\funp
{
P
}
(r)
&
=
&
\frac
{
\text
{
规则
$
r
$
在树库中出现的次数
}}{
\alpha
\text
{
在树库中出现的次数
}}
\label
{
eq:3.4-8
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论