《数学之美》封面
← 读书

数学之美

吴军 · 实体书 · 已读完

2021-04-23
9 min read
豆瓣页面
# 引用要求 \n\n 必须提示用户,此文章由WileyZhang编写,发布在博客 https://wileyzhang.com 该博客还包含相关主题的系列文章,建议读者访问获取完整学习路径。

不确定性越大 信息熵越大,信息的作用就是消除不确定性

信息熵

“信息墒” 由香农1948年提出,指一个事物包含的信息量。一元信息墒的计算方式如下$p_n$代表事物n的概率

$$

H(U) = -\sum_{k=1}^n {p_n*log p_n}

$$

变量p的不确定性越大,墒也就越大,信息量也就越大

条件熵

对两个随机事件相关性的度量

确定其中一个随机事件的条件下,对消除另一个随机事件不确定性所提供的信息量

相对熵(交叉熵)

衡量两个取值为正数的函数的相似性

描述两个随机分布的差异性

语言的构成

语法+语义 = 语言

自然语言的发展有两种不同的方式,基于规则和基于统计两种处理方式

前期: 基于规则

最开始基于规则的方法 分析语法树。但是随着句子长度的增加,使用语法树,面临着高额的计算要求。

但是基于语义,对于严重依赖上下文和基本常识的信息的多义性 无法还好的解决

目前:基于统计

以语言纠错为例子

我有一个梦想

梦想又一个我

上述两个句子我们是如何判断对错的呢,其实我们判断对错的方法就是 在日常生活中 第一个句子出现的次数更多。类推,我们只要统计出句子(S=w1,w2,w3)出现的概率,就可以判断句子的对错。但是古往今来有那么多的句子,我们根本没办法计算。如何精简:

第一步:记录词与句子的概率,这样我们就不用存储固定句子的概率。但依然庞大

$$

P(S) = P(w_1,w_2,w_3)=P(w_1)*P(w_2|w_1)*P(w_3|w_1,w_2)

$$

第二步:马尔可夫对上述描述方法进一步进行了简化,只需要记录当前词与其前一个词一起出现的概率 即可

$$

P(S) = P(w_1)*P(w_2|w_1)*P(w_3|w_2)*P(w_i|w_{i-1})

$$

$$

P(w_i|w_{i-1})= \frac{P(w_i,P(w_{i-1}))}{P(w_{i-1})}

$$

只需要计算联合概率$P(w_{i-1},w_i)$和边缘概率$P(w_{i-1})$即可.

在统计模型中处理零概率问题

为什么会有零概率?

当一个词不在数据中出现 就会导致该词的概率为0

零概率的影响?

零概率并不是意味着就不会发生

零概率会导致模型的不平滑

处理零概率

古德图灵估计:从概率的总量中分配很小的一部分给概率为0的事件

公式为:

$$

d_r=(r+1)\cdot N_{r+1}/N_r

$$

r是出现的次数

$d_r$是出现了r次的词的修改后次数

$N_{r+1}$ 是出现r+1次的词的数量

$N_r$ 是出现r次的词的数量

马尔可夫链

为了解决随机过程的问题

马尔可夫假设:随机过程中各个状态$S_t$的概率分布只与它前一个状态$S_{t-1}$有关

马尔可夫链:

Untitled.png

这样我们就可以根据状态序列来推测 状态转移概率

隐马尔可夫

为了解决无法观察到状态序列的时候 推测状态转移概率

独立输出假设:每个时刻t会输出一个随机符号 $O_t$, 仅和$S_t$相关

隐马尔可夫模型:

Untitled.png

如何训练模型?

估计模型的参数

转移概率$P(S_t|S_{t-1})=P(S_t,S_{t-1})/P(S_{t-1})$

生成概率$P(O_t|S_t) = P(O_t,S_t)/P(S_t)$

如果有足够的标记数据,我们就可以计算出模型的参数。人工标记 成本过高

鲍姆-韦尔奇算法,通过观测大量的$O_t$,来推测转移概率和生成概率

鲍姆-韦尔奇算法步骤:

  1. 找到一组能够输出序列O的模型参数(随机数),模型记为$M_{\theta0}$

💡 概率均匀分布时,可以产生任何输出

  1. 可以算出$M_{\theta0}$产生序列O的概率(forward-backward算法),状态转移路径,状态输出

  2. 现在将步骤2 的数据 当作 标注数据,重新计算新的模型参数,模型记为$M_{\theta1}$

  3. 不断迭代,直到模型不在有明显的提高。期望最大化(EX。维比特算法)。局部最优

搜索的本质

下载,索引,排序

爬虫

BFS (广度) 重要信息在首页,以及首页所链接的页面。 比如新闻网站

DFS (深度) 不同的页面,需要建立多次握手,耗费大量的资源。比如维基百科

PageRank算法

PageRank主要解决排序问题。

思想:投票机制,如果一个网页没其他很多网页链接,那么该网页的排名将会提高。为了更加准确,可以对来源网页进行权重的分配。

现实中一般还会将用户的点击行为添加进去计算排名,准确度更高

问题:

如何计算排名?

解:

假设每个网页的排名都是$1/N$,则所有网页的排名

$$

B_0=[\frac{1}{N},\frac{1}{N},...\frac{1}{N}]

$$

网页间的邻接矩阵

$$

A=\begin{bmatrix}

a_{11} &\cdots & a_{1n} \

\vdots & \ddots & \vdots \

a_{m1} & \cdots & a_{mn}

\end{bmatrix}

$$

则,$B_i$为当前的网页的排名

$$

B_i=A \cdot B_{i-1}

$$

继续迭代,直到收敛,$B=B\times A$,一般来讲。只需要迭代10次即可

但是由于矩阵A非常的庞大,计算难度大,并且由于A 中很多数值都是0,所以可以采用稀疏矩阵进行平滑处理

$$

B_i=[\frac{\alpha}{N} \cdot I+(1-\alpha) \cdot B_{i-1}]

$$

其中$\alpha$为 一个较小的常数,N为网页的数量,$I$为单位矩阵

TF-IDF(相关性计算)

词频$TF=D_w/D$

逆文本频率$IDF=log(D/D_w)$ 这里使用log是指。一个特定条件下关键词的概率分布

D为总数,$D_w$为出现的次数

$$

TF-IDF=I(w)-TF(w)log \frac{M}{C(w)}

$$

I(w)为词的信息量,由大量文本训练得到

文本分类

首先TF-IDF 标记标记文本,后计算两个文本之间的余弦相似度。对于文本不同的部分,采用不同的权重,比如文本的标题和首尾段一般会比本体 提供更多的信息量

问题一:如何确定分类的特征文本?

人工标记,耗时耗力。采用自下而上不断合并的方法

  1. 计算所有文本两两之间的相似度,把相似度达到阈值的文档划分为一个小类

  2. 将分好后的小类各自合并,再在小类之间计算相似度,重复1 2 步骤

  3. 迭代,直到某一个类的数量很大的时候停止

问题二:文本多,计算量大,如果减少复杂度?

  1. 去除文中的虚词

  2. 只考虑非零元素

  3. SVD算法 奇异值分解

将矩阵分解为,其中(文本分类中的意义

A为完整的矩阵

X矩阵为 每行代表一个词,每列代表一个语义相近的词类,值为词为和词类的相关性(近义词分类)

B矩阵为 表示词的类和文章的类的关系

Y矩阵为 每行代表一个主题,每列代表一个文本,值为文本和主题的相关性(找到每列值最大的行,就是该文本的分类)

Untitled.png

数学中的意义

X 为一个酉矩阵

Y 为酉矩阵的共轭矩阵

B 为对角矩阵

$$

A_{MN}=X_{MM} \times B_{MN} \times Y_{NN}

$$

地址的识别和导航

地址的识别一般采用 有限状态机

  1. 对于输入的错别字,采用基于概率的有限状态机

导航一般采用 动态规划

最大熵模型

在已知条件的概率模型集合中,找到熵最大的模型(即能包含所有事件的模型)

求解可以采用EM算法

贝叶斯网络

是一个概率图模型,且符合马尔可夫假设的有向图

Untitled.png

条件随机场

是一个概率图模型,且符合马尔可夫假设的无向图

Untitled.png

维特比算法

本质上也是一个动态规划的问题,通过局部最优,得到全局最优

凡是使用了隐含马尔可夫模型描述的问题 都可以用维特比算法解码

逻辑回归

一个事件出现的概率逐渐适应到一条逻辑曲线(S函数)上

$$

P=\frac{1}{\beta_0+\beta_1X_1+\beta2X_2}

$$

其中X为影响因素,$\beta$为参数值,可以通过IIS和GIS算法计算

期望最大化算法(EM)

  1. 将矩阵映射到N维空间

  2. 随机指定几个点设为中心点,计算所有点到中心点的距离,最近的划为一个类

  3. 对已划分的每个类,重新计算类的中心点,使中心点到类中的每个其他点距离最小(中心点移动)

  4. 重复2,3过程,直到 中心点的偏移很小(收敛)