[自然语言处理先修]一、概率统计相关知识梳理
一、概率统计相关知识梳理
本科和硕士阶段都断断续续地接触过NLP相关内容,但是没有真正地、系统地进行总结,因此也只是停留在什么都知道一点、但什么都理解的不深刻的程度上。写这一系列内容是为了记录自己重新学习的过程,也希望这次能将这些知识真正内化理解。
学习路线参考:
https://blog.51cto.com/u_15298598/3121189
https://github.com/Ailln/nlp-roadmap
https://juejin.cn/post/7113066539053482021
本节学习使用工具&阅读文章:
https://zhangzhenhu.github.io/blog/
https://www.zhihu.com/question/20587681
https://seeing-theory.brown.edu/cn.html
https://cloud.tencent.com/developer/article/1070069
https://blog.csdn.net/Dby_freedom/article/details/83374650
https://cloud.tencent.com/developer/article/1694338
1. 概率论基础
-
随机变量
用\(x\)来代表抛硬币的结果:比如说1表示正面,0表示反面,那么我们称\(x\)为随机变量。
-
期望
以概率(或密度)为权重的加权平均值。刻画了概率分布的中心。
\(E[X]=∑_{x∈X}xP(x)\)
-
方差
一个随机变量与它的期望之间的差的平方的加权平均值。刻画了概率分布的分散度。
\(Var(X)=E[(X−E[X])^2]\)
-
排列&组合
假设我们有一袋珠子,每个珠子的颜色都不相同。如果我们无放回地从袋子里抽取珠子:
排列:一共有多少种可能出现的颜色序列
排列数\(A^m_n\):从n个不同元素中取出m个元素的所有排列的个数。\(A^m_n=n!/(n-m)!\)
组合:有多少种可能出现的没有顺序的序列
组合数\(C^m_n\):从n个不同元素中取出m个元素的所有组合的个数。\(C^m_n=A^m_n/m!\)
-
条件概率
条件概率是指事件A在另外一个事件B已经发生条件下的发生概率,表示为:\(P(A|B)\)。
若只有两个事件A、B,那么,\(P(A|B)=P(AB)/P(B)\)
若有\(A_1, A_2, …, A_n\),且\(P(A_1A_2…A_n)>0\),则\(P(A_1A_2…A_n)=P(A_1)P(A_2|A_1)…P(A_n|A_1A_2…A_{n-1})\)
-
相关性:刻画两个变量之间的线性关系
\(r=\frac{s_{xy}}{s_{xx}s_{yy}}\)
其中,\(s_{xy}=\sum^n_{i=1}(x_i-\overline x)(y_i-\overline y)\)
\(s_{xx}=\sum^n_{i=1}(x_i-\overline x)^2\)
\(s_{yy}=\sum^n_{i=1}(y_i-\overline y)^2\)
-
方差分析(ANOVA)
-
中心极限定理
对于一个(性质比较好的)分布,如果我们有足够大的独立同分布的样本,其样本均值会(近似地)呈正态分布。样本数量越大,其分布与正态越接近。
2. 概率学派
世界是确定的,有一个本体,这个本体的真值是不变的。我们的目标就是要找到这个真值或真值所在的范围。
- 点估计:用样本统计量来估计总体参数
- 置信区间:一个置信水平为\(95\%\)的置信区间表示这个置信区间包含真实参数的概率为\(95\%\)。
- Bootstrap方法:一种方便的近似确定估计量性质的方法。假设给定的数据集包含d个样本。该数据集有放回地抽样m次,产生m个样本的集合,利用这些新的样本来估计元样本均值的标准差。
3. 贝叶斯学派
世界是不确定的,人们对世界先有一个预判,而后通过观测数据对这个预判做调整,我们的目标是要找到最优的描述这个世界的概率分布。
- 全概率公式:\(H\)发生的可能性。\(P(H) = \sum^n_{i=1}P(A_i)P(H|A_i)\)
- 贝叶斯公式:在\(H\)发生的情况下,由\(A_i\)促成的可能性。\(P(A_i|H) = \frac{P(A_i)P(H|A_i)}{\sum^n_{j=1}P(A_j)P(H|A_j)}\)
- 先验概率(Prior):\(P(A_i)\)。已有的、根据以往经验和分析得到的概率。
- 似然性(Likelihood):\(P(H|A_i)\)。概率分布。
- 后验概率(Posterior):\(P(A_i|H)\)。在得到结果后重新修正的概率,实际上就是条件概率。
4. 线性回归
\(Y=wX+b\),找到一组参数\(w,b\)使预测数据和实际数据之间的均方误差最小。
假设有\(n\)个样本,损失函数使用均方误差:$$J = \frac{1}{2n}\sum_{i=1}^n (z_i-y_i)^2 = \frac{1}{2n}\sum_{i=1}^n (y_i-wx_i-b)^2$$
最小二乘法:对\(w\)和\(b\)求导,再令导数为0(到达最小极值),就是\(w\)和\(b\)的最优解。
5. 逻辑回归
在线性回归的基础上加了一个Sigmoid 函数(非线形)映射。是分类模型,通常用来解决二分类问题。Sigmoid函数,即逻辑函数:\(g(x)=\frac{1}{1+e^{-x}}\),且有\(g'(x)=g(x)[1-g(x)]\)
逻辑回归函数\(g(y)=\frac{1}{1+e^{-wx}}\)
-
最大似然估计
\(P(Y=1|x)=g(y)=\frac{1}{1+e^{-wx}}=g_w(x)\)
\(P(Y=0|x)=1-g(y)=\frac{1}{1+e^{wx}}=1-g_w(x)\)
对于样本数据\((x,y)\),它的分类结果为\(y\)的概率为
\(P(y|x,w)=g_w(x)^y(1-g_w(x))^{1-y}\)
对于样本集合\(D=\{(x_1,y_1),(x_2,y_2),…,(x_n,y_n)\}\),总事件发生的概率为
\(L(w)=\prod_{i=1}^nP(y_i|x_i;w)=\prod^n_{i=1}g_w(x_i)^{y_i}(1-g_w(x_i))^{1-y_i}\)
找到参数\(w\)使预测数据和实际数据之间的差距最小。为了计算方便,引入对数,则
\(ln(L(w))=\sum^n_{i=1}[y_iln(g_w(x_i))+(1-y_i)ln(1-g_w(x_i))]\)
-
损失函数
损失函数取平均对数似然,即\(J(w)=-\frac1nln(L(w))\)
在逻辑回归当中,最大化似然函数和最小化损失函数实际上是等价的。
-
梯度下降法
-
步骤:
- 找到现在所处位置下降最快的方向(梯度);
- 沿着第二步找到的方向走一个步长,到达新的位置,且新位置低于刚才的位置;
- 判断是否结束,如果还没有,回到步骤一。
-
梯度:\(J(w)\)对\(w_j\)求偏导的结果。\(F = {\partial J(w)\over\partial w_j}={1\over n}\sum^n_i[g(wx_i)-y_i]*x_{i,j}\)
\(x_{i,j}\)代表第\(i\)个样本的第\(j\)个属性值。
-
更新:\(w_j=w_j-\alpha*F\)
-
结束条件:达到最大迭代次数,或学习曲线已小于某个特定阈值。
-
6. 信息理论
首先定义:越不可能发生的事件(\(P(x)\)越小)信息量越大,独立事件的信息量可叠加。
-
熵:可以表示一个事件A本身包含多少信息。
\(s(x)=−∑_iP(x_i)logP(x_i)\),\(x\)指事件。
一个一定会发生的事件发生概率为1,\(s(x)=−∑_iP(x_i)log_bP(x_i)=-log1=0\),信息量为0。
-
KL散度(相对熵):用于衡量两个事件(分布)之间的不同。即从事件A的角度来看,事件B有多大不同。假设原概率分布为\(P_A(x_i)\),近似概率分布为\(P_B(x_i)\)。
对于离散事件:\(D_{KL}(A||B)=\sum_iP_A(x_i)[logP_A(x_i)-logP_B(x_i)]=\sum_iP_A(x_i)log\frac{P_A(x_i)}{P_B(x_i)}\)
对于连续事件:\(D_{KL}(A||B)=\int a(x)[loga(x)-logb(x)]=\int a(x)log\frac{a(x)}{b(x)}\)
KL散度不具有对称性,因此\(D_{KL}(A||B)\)与\(D_{KL}(B||A)\)不一定相同。
-
交叉熵:可以用来表示从事件A的角度来看,如何描述事件B。
交叉熵 = KL散度 + 熵,即\(H(A,B)=D_{KL}(A∣∣B)+S(A) = -\sum_iP_A(x_i)logP_B(x_i)\)
\(H(A,A)=S(A)\)。交叉熵同样不具有对称性。
如果\(S(A)\)是一个常量,那么$D_{KL}(A||B)= H ( A , B ) $ ,也就是说KL散度和交叉熵在特定条件下等价。