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
435a4f06
Commit
435a4f06
authored
Aug 18, 2020
by
单韦乔
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'shanweiqiao' 到 'caorunzhe'
Shanweiqiao 查看合并请求
!75
parents
5f08fd52
1bef4e83
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
32 行增加
和
23 行删除
+32
-23
Chapter2/chapter2.tex
+13
-11
bibliography-old.bib
+19
-12
没有找到文件。
Chapter2/chapter2.tex
查看文件 @
435a4f06
...
...
@@ -336,14 +336,14 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\end{figure}
%-------------------------------------------
\parinterval
此时玩家的胜利似乎只能来源于运气。不过,
请注意,
这里的假设“随便选一个数字”本身就是一个概率模型,它对骰子的六个面的出现做了均匀分布假设。
\parinterval
此时玩家的胜利似乎只能来源于运气。不过,这里的假设“随便选一个数字”本身就是一个概率模型,它对骰子的六个面的出现做了均匀分布假设。
\begin{eqnarray}
\funp
{
P
}
(
\text
{
1
}
)=
\funp
{
P
}
(
\text
{
2
}
)=
\ldots
=
\funp
{
P
}
(
\text
{
5
}
)=
\funp
{
P
}
(
\text
{
6
}
)=1/6
\label
{
eq:2-17
}
\end{eqnarray}
\vspace
{
-0.5em
}
\parinterval
但是
这个游戏没有人规定骰子是均匀的(有些被坑了的感觉)
。如果骰子的六个面不均匀呢?这里可以用一种更加“聪明”的方式定义一种新的模型,即定义骰子的每一个面都以一定的概率出现,而不是相同的概率。描述如下:
\parinterval
但是
在这个游戏中没有人规定骰子是均匀的
。如果骰子的六个面不均匀呢?这里可以用一种更加“聪明”的方式定义一种新的模型,即定义骰子的每一个面都以一定的概率出现,而不是相同的概率。描述如下:
\begin{eqnarray}
\funp
{
P
}
(
\text
{
1
}
)
&
=
&
\theta
_
1
\nonumber
\\
\funp
{
P
}
(
\text
{
2
}
)
&
=
&
\theta
_
2
\nonumber
\\
...
...
@@ -354,13 +354,15 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\label
{
eq:2-18
}
\end{eqnarray}
\noindent
这里,
$
\theta
_
1
\sim
\theta
_
5
$
可以被看作是模型的参数,因此这个模型的自由度是5。对于这样的模型,参数确定了,模型也就确定了。但是
,新的问题来了,在定义骰子每个面的概率后,如何求出具体的概率值呢?一种常用的方法是,从大量实例中学习模型参数,这个方法也是常说的
{
\small\bfnew
{
参数估计
}}
\index
{
参数估计
}
(Parameter Estimation)
\index
{
Parameter Estimation
}
。可以将这个不均匀的骰子先实验性地掷很多次,这可以被看作是独立同分布的若干次采样,比如
$
X
$
次,发现1出现
$
X
_
1
$
次,2出现
$
X
_
2
$
次,以此类推,得到了各个面出现的次数。假设掷骰子中每个面出现的概率符合多项式分布,
通过简单的概率论知识可以知道每个面出现概率的极大似然估计为:
\noindent
这里,
$
\theta
_
1
\sim
\theta
_
5
$
可以被看作是模型的参数,因此这个模型的自由度是5。对于这样的模型,参数确定了,模型也就确定了。但是
一个新的问题出现了,在定义骰子每个面的概率后,如何求出具体的概率值呢?一种常用的方法是,从大量实例中学习模型参数,这个方法也是常说的
{
\small\bfnew
{
参数估计
}}
\index
{
参数估计
}
(Parameter Estimation)
\index
{
Parameter Estimation
}
。可以将这个不均匀的骰子先实验性地掷很多次,这可以被看作是独立同分布的若干次采样。比如投掷
$
X
$
次,发现1出现
$
X
_
1
$
次,2出现
$
X
_
2
$
次,以此类推,可以得到各个面出现的次数。假设掷骰子中每个面出现的概率符合多项式分布,那么
通过简单的概率论知识可以知道每个面出现概率的极大似然估计为:
\begin{eqnarray}
\funp
{
P
}
(i)=
\frac
{
X
_
i
}{
X
}
\label
{
eq:2-19
}
\end{eqnarray}
\parinterval
当
$
X
$
足够大的时,
$
\frac
{
X
_
i
}{
X
}$
可以无限逼近
$
\funp
{
P
}
(
i
)
$
的真实值,因此可以通过大量的实验推算出掷骰子各个面的概率的准确估计值。回归到原始的问题,如果在正式开始游戏前,预先掷骰子30次,得到如图
\ref
{
fig:2-6
}
的结果。
\parinterval
当
$
X
$
足够大的时,
$
\frac
{
X
_
i
}{
X
}$
可以无限逼近
$
\funp
{
P
}
(
i
)
$
的真实值,因此可以通过大量的实验推算出掷骰子各个面的概率的准确估计值。
\parinterval
回归到原始的问题,如果在正式开始游戏前,预先掷骰子30次,得到如图
\ref
{
fig:2-6
}
的结果。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -382,7 +384,7 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\end{figure}
%-------------------------------------------
\parinterval
世界上的事物并不是平等出现的,上面这个掷骰子游戏也是如此。在“公平”的世界中,没有任何一个模型可以学到有价值的事情。从机器学习的角度来看,所谓的“不公平”实际上这是客观事物中蕴含的一种
{
\small\sffamily\bfseries
{
偏置
}}
\index
{
偏置
}
(Bias)
\index
{
Bias
}
,也就是很多事情天然
就有对某些情况有倾向。而图像处理、自然语言处理等问题中绝大多数都存在着偏置。比如,当翻译一个英语单词的时候,它最可能的翻译结果往往就是那几个词。设计统计模型的目的正是要学习这种偏置,之后利用这种偏置对新的问题做出足够好的决策。
\parinterval
与上面这个掷骰子游戏类似,世界上的事物并不是平等出现的。在“公平”的世界中,没有任何一个模型可以学到有价值的事情。从机器学习的角度来看,所谓的“不公平”实际上是客观事物中蕴含的一种
{
\small\sffamily\bfseries
{
偏置
}}
\index
{
偏置
}
(Bias)
\index
{
Bias
}
,也就是很多事情天然地
就有对某些情况有倾向。而图像处理、自然语言处理等问题中绝大多数都存在着偏置。比如,当翻译一个英语单词的时候,它最可能的翻译结果往往就是那几个词。设计统计模型的目的正是要学习这种偏置,之后利用这种偏置对新的问题做出足够好的决策。
\parinterval
在处理语言问题时,为了评价哪些词更容易在一个句子中出现,或者哪些句子在某些语境下更合理,常常也会使用统计方法对词或句子出现的可能性建模。与掷骰子游戏类似,词出现的概率可以这样理解:每个单词的出现就好比掷一个巨大的骰子,与前面的例子中有所不同的是:
...
...
@@ -390,7 +392,7 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\vspace
{
0.5em
}
\item
骰子有很多个面,每个面代表一个单词。
\vspace
{
0.5em
}
\item
骰子是不均匀的,代表常用单词
所在
的那些面的出现次数会远远多于罕见单词。
\item
骰子是不均匀的,代表常用单词的那些面的出现次数会远远多于罕见单词。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -440,9 +442,9 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\parinterval
通过这个学习过程,就可以得到每个词出现的概率,成功使用统计方法对“单词的频率”这个问题进行建模。
\parinterval
那么
又
该如何计算一个句子的概率呢?在自然语言处理领域中,句子可以被看作是由单词组成的序列,因而句子的概率可以被建模为若干单词的联合概率,即
$
\funp
{
P
}
(
w
_
1
w
_
2
w
_
3
\ldots
w
_
m
)
$
。
\parinterval
那么该如何计算一个句子的概率呢?在自然语言处理领域中,句子可以被看作是由单词组成的序列,因而句子的概率可以被建模为若干单词的联合概率,即
$
\funp
{
P
}
(
w
_
1
w
_
2
w
_
3
\ldots
w
_
m
)
$
。
\parinterval
其中,
$
w
$
表示句子中的一个单词。此时仍可以使用掷骰子的方式,将骰子的每个面看作一个句子,然后用统计词汇概率的方式统计句子的概率。但是这里
有
一个问题,一个句子在指定文本中出现的次数一定比词汇在文本出现的次数低得多,此时通过统计的方式求句子的频率会由于样本数太少,导致无法准确的求出句子的概率,因此对句子的统计建模仍需要更好的方式。
\parinterval
其中,
$
w
$
表示句子中的一个单词。此时仍可以使用掷骰子的方式,将骰子的每个面看作一个句子,然后用统计词汇概率的方式统计句子的概率。但是这里
存在
一个问题,一个句子在指定文本中出现的次数一定比词汇在文本出现的次数低得多,此时通过统计的方式求句子的频率会由于样本数太少,导致无法准确的求出句子的概率,因此对句子的统计建模仍需要更好的方式。
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
@@ -451,7 +453,7 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\sectionnewpage
\section
{$
n
$
-gram语言模型
}
\parinterval
在骰子游戏中,可以通过一种统计的方式,估计出在文本中词和句子出现的概率。但是在计算句子概率时往往会因为句子的样本过少而无法正确估计出句子出现的频率,为了能够准确地衡量句子出现的频率,
本章引入了计算整个单词序列概率
$
\funp
{
P
}
(
w
_
1
w
_
2
w
_
3
\ldots
w
_
m
)
$
的方法---统计语言模型的概念。并且本章
进一步介绍更加通用的
$
n
$
-gram语言模型,它在机器翻译及其他自然语言处理任务中有更加广泛的应用。
\parinterval
在骰子游戏中,可以通过一种统计的方式,估计出在文本中词和句子出现的概率。但是在计算句子概率时往往会因为句子的样本过少而无法正确估计出句子出现的频率,为了能够准确地衡量句子出现的频率,
这里引入了计算整个单词序列概率
$
\funp
{
P
}
(
w
_
1
w
_
2
w
_
3
\ldots
w
_
m
)
$
的方法---统计语言模型的概念。并且下面将
进一步介绍更加通用的
$
n
$
-gram语言模型,它在机器翻译及其他自然语言处理任务中有更加广泛的应用。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -527,7 +529,7 @@ F(x)=\int_{-\infty}^x f(x)\textrm{d}x
\end{itemize}
\vspace
{
0.5em
}
\parinterval
极大似然估计方法和掷骰子游戏中介绍的统计词汇概率的方法是一致的,它的核心是使用
$
n
$
-gram出现的频度进行参数估计。基于人工神经网络的方法在近些年也非常受关注,它直接利用多层神经网络对问题的输入
$
(
w
_{
m
-
n
+
1
}
\ldots
w
_{
m
-
1
}
)
$
和输出
$
\funp
{
P
}
(
w
_
m|w
_{
m
-
n
+
1
}
\ldots
w
_{
m
-
1
}
)
$
进行建模,而模型的参数通过网络中神经元之间连接的权重进行体现。严格意义上了来说,基于人工神经网络的方法并不算基于
$
n
$
-gram的方法,或者说它并没有显性记录
$
n
$
-gram的生成概率,也不依赖
$
n
$
-gram的频度进行参数估计。为了保证内容的连贯性,
本章将
仍以传统
$
n
$
-gram语言模型为基础进行讨论,基于人工神经网络的方法将会在
{
\chapternine
}
和
{
\chapterten
}
进行详细介绍。
\parinterval
极大似然估计方法和掷骰子游戏中介绍的统计词汇概率的方法是一致的,它的核心是使用
$
n
$
-gram出现的频度进行参数估计。基于人工神经网络的方法在近些年也非常受关注,它直接利用多层神经网络对问题的输入
$
(
w
_{
m
-
n
+
1
}
\ldots
w
_{
m
-
1
}
)
$
和输出
$
\funp
{
P
}
(
w
_
m|w
_{
m
-
n
+
1
}
\ldots
w
_{
m
-
1
}
)
$
进行建模,而模型的参数通过网络中神经元之间连接的权重进行体现。严格意义上了来说,基于人工神经网络的方法并不算基于
$
n
$
-gram的方法,或者说它并没有显性记录
$
n
$
-gram的生成概率,也不依赖
$
n
$
-gram的频度进行参数估计。为了保证内容的连贯性,
接下来
仍以传统
$
n
$
-gram语言模型为基础进行讨论,基于人工神经网络的方法将会在
{
\chapternine
}
和
{
\chapterten
}
进行详细介绍。
\parinterval
$
n
$
-gram语言模型的使用非常简单。可以直接用它来对词序列出现的概率进行计算。比如,可以使用一个2-gram语言模型计算一个句子出现的概率:
\begin{eqnarray}
...
...
@@ -785,7 +787,7 @@ w^{'} = \argmax_{w \in \chi}\funp{P}(w)
\end{figure}
%-------------------------------------------
\parinterval
在这种序列生成方式的基础上,实现对候选序列的搜索过程通常有两种方法
\ \dash\
深度优先遍历和宽度优先遍历
\upcite
{
cormen1990introduction
}
。在深度优先遍历中,每次从词表中可重复地选择一个单词,然后从左至右地生成序列,直到<eos>被选择,此时一个完整的单词序列被生成出来。然后从<eos>回退到上一个单词,选择之前没有被选择到的候选单词代替<eos>,并继续挑选下一个单词直到<eos>被选到,如果上一个单词的所有可能都被枚举过,那么回退到上上一个单词继续枚举,直到回退到<sos>,这时候枚举结束。在宽度优先遍历中,每次不是只选择一个单词而是枚举所有单词。一个简单的例子是一个只有两个单词
\{
a, b
\}
的词表,从<sos>开始枚举所有单词,可以生成:
\parinterval
在这种序列生成方式的基础上,实现对候选序列的搜索过程通常有两种方法
\ \dash\
深度优先遍历和宽度优先遍历
\upcite
{
DBLP:books/mg/CormenLR89
}
。在深度优先遍历中,每次从词表中可重复地选择一个单词,然后从左至右地生成序列,直到<eos>被选择,此时一个完整的单词序列被生成出来。然后从<eos>回退到上一个单词,选择之前没有被选择到的候选单词代替<eos>,并继续挑选下一个单词直到<eos>被选到,如果上一个单词的所有可能都被枚举过,那么回退到上上一个单词继续枚举,直到回退到<sos>,这时候枚举结束。在宽度优先遍历中,每次不是只选择一个单词而是枚举所有单词。一个简单的例子是一个只有两个单词
\{
a, b
\}
的词表,从<sos>开始枚举所有单词,可以生成:
\begin{eqnarray}
\text
{
\{
<sos> a, <sos> b, <sos> <eos>
\}
}
\nonumber
\end{eqnarray}
...
...
bibliography-old.bib
查看文件 @
435a4f06
...
...
@@ -1145,17 +1145,23 @@
publisher ={北京: 高等教育出版社}
}
@book{cormen1990introduction,
title="Introduction to Algorithms",
author="Thomas T. {Cormen} and Charles E. {Leiserson} and Ronald L. {Rivest}",
notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2752885492",
year="1990"
@book{DBLP:books/mg/CormenLR89,
author = {Thomas H. Cormen and
Charles E. Leiserson and
Ronald L. Rivest},
title = {Introduction to Algorithms},
publisher = {The {MIT} Press and McGraw-Hill Book Company},
year = {1989},
isbn = {0-262-03141-8},
timestamp = {Thu, 03 Jan 2002 11:51:25 +0100},
biburl = {https://dblp.org/rec/books/mg/CormenLR89.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
%没有出版社
@book{russell2003artificial,
title={Artificial Intelligence : A Modern Approach},
author={Stuart J. {Russell} and Peter {Norvig}},
notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2122410182",
//
notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/2122410182",
year={2003}
}
...
...
@@ -1163,7 +1169,8 @@
title={Fundamentals of Computer Algorithms},
author={Sartaj {Sahni} and Ellis {Horowitz}},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/1554451661",
year={1978}
year={1978},
publisher={Computer Science Press}
}
@article{hart1968a,
...
...
@@ -1173,7 +1180,7 @@
volume={4},
number={2},
pages={100--107},
notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/1969483458},
//
notes={Sourced from Microsoft Academic - https://academic.microsoft.com/paper/1969483458},
year={1968}
}
...
...
@@ -1346,8 +1353,7 @@
number={3},
year={1957},
}
%没有出版社
@book{lowerre1976the,
title={The HARPY speech recognition system},
author={Bruce T. {Lowerre}},
...
...
@@ -1359,7 +1365,8 @@
title={Neural networks for pattern recognition},
author={Christopher M. {Bishop}},
//notes="Sourced from Microsoft Academic - https://academic.microsoft.com/paper/1554663460",
year={1995}
year={1995},
publisher={Oxford university press}
}
@article{åström1965optimal,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论