代码
from sympy import *
大数据机器学习课程第一次作业
叶璨铭 (2024214500) ycm24@mails.tsinghua.edu.cn
2024年10月20日星期日
题目如下
说明伯努利模型的极大似然估计以及贝叶斯估计中的统计学习方法三要素。伯努利模型是定义在取值为0与1的随机变量上的概率分布。假设观测到伯努利模型n次独立的数据生成结果,其中k次的结果为1,这时可以用极大似然估计或贝叶斯估计来估计结果为1的概率。
模型
策略
算法
求函数\(Like(p)\)的最小值,首先显然\(Like(p)\)是连续可导的,所以最小值一定在critical point或者边缘0, 1上。
\(Like^\prime(p)= kp^{k-1}(1-p)^{(n-k)}-(n-k)p^k(1-p)^{(n-k-1)}\)
我们还可以学习一下python的sympy库辅助我们求导,防止人工求导抄错了
\(\displaystyle \frac{k p^{k} \left(1 - p\right)^{- k + n}}{p} + \frac{p^{k} \left(1 - p\right)^{- k + n} \left(k - n\right)}{1 - p}\)
令\(Like^{\prime}(p) = 0\) 。这些p称为critical point,这些点可能是极值点可能不是。
\(kp^{k-1}(1-p)^{(n-k)}=(n-k)p^k(1-p)^{(n-k-1)}\)
\(k(1-p) = (n-k)p\)
\(k-kp = (n-k)p\)
\(k = np\)
\(p=\frac{n}{k}\) 为唯一解
同样的,我们可以用Python做验证
\(\displaystyle \frac{k}{n}\)
代入并且比较Like(0), Like(1)和Like(p), 发现\(Like(p)\ge Like(1)\and Like(p)\ge Like(0)\),所以\(Like(p)\)就是最小值(之一,如果n=k或者k=0)。
此时,\(Like(p) = \left(\frac{k}{n}\right)^{k} \left(\frac{- k + n}{n}\right)^{- k + n}\)
Python可以代入p为求解出来的p,得到上面的表达式。
注:在PRML书中,贝叶斯估计也叫做Maximum a Posterior(MAP, 极大后验估计)
由于题目中没有给出p的先验概率分布,
\(P(p|x_{1:n})\)的分母是一个正的相对于p的常数,对于求最大值而言可以去除。
那么此时原优化目标变为 \(\displaystyle \mathop{\arg\max}_{p} P(x_{1:n}|p)*P(p) = P(x_{1:n}|p)\), 贝叶斯估计退化为极大似然估计,我们得到的结论和过程与上文1.2所述完全一致。
\(\beta\)分布的密度函数是这样的\(P(p) = \beta(p;a,b) = \frac{p^{a-1}(1-p)^{b-1}}{C}\), a和b是这个分布的参数,C是使得概率密度函数积分为1的一个常数,在这里不重要。
\(\displaystyle \mathop{\arg\max}_{p} P(x_{1:n}|p)*P(p) = P(x_{1:n}|p)*\beta(p;a,b)\)
求解极值问题等价于求解log之后的极值问题。
\(\displaystyle \log{\left(p^{k} p^{a - 1} \left(1 - p\right)^{b - 1} \left(1 - p\right)^{- k + n} \right)}\)
类似于1.2,我们来求导数。
[0**(1/(a + k - 1)),
(a + k - 1)/(a + b + n - 2),
1 - 0**(1/(k - n)),
1 - 0**(1/(b - k + n - 1))]
可以得到critical point为0, 1和 \(\frac{a + k - 1}{a + b + n - 2}\),同样的可以发现第三个解比较通用,涵盖了前两个解的情况,所以贝叶斯估计的结果是\(p = \frac{a + k - 1}{a + b + n - 2}\)。如果a=b=1,那么和最大似然估计的结果一样。
通过经验风险最小化推导极大似然估计。证明模型是条件概率分布,当损
失函数是对数损失函数时,经验风险最小化等价于极大似然估计。
根据题意,当损失函数是对数损失函数时,经验风险为
\(R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i, f(x_i))=\frac{1}{N}\sum_{i=1}^{N}-logP(y_i|x_i)\)
经验风险最小化是指
\(f = \mathop{\arg\min}_{f} R_{emp}(f) = \mathop{\arg\min}_{f} -\sum_{i=1}^{N}logP(y_i|x_i)=\mathop{\arg\max}_{f}\sum_{i=1}^{N}logP(y_i|x_i)\)
由于log函数的性质,
\(f = \mathop{\arg\max}_{f}\prod_{i=1}^{N}P(y_i|x_i) = \mathop{\arg\max}_{f}\prod_{i=1}^{N}\frac{P(y_i, x_i)}{P(x_i)}\),由于evidence概率\(P(x_i)\)与模型的参数无关,可以认为是一个常数,所以在优化中可以去除,注意这是重要的一个推导。
\(f = \mathop{\arg\max}_{f}\prod_{i=1}^{N}P(y_i, x_i) = \mathop{\arg\max}_{f}\prod_{i=1}^{N}P(y_i, x_i| f)\), 注意,在上文中李航书中的条件概率省略了f(而PRML书是没有省略的),比如上文的\(P(Y|X)\)实际上是\(P(Y|X, f)\),这里我们为了和似然做比较,显式地加回来。
由于数据i.i.d.
\(f = \mathop{\arg\max}_{f}P(Y,X|f)\), 而这就是极大似然估计,给定一个f,求出现这个数据集中的(X, Y)的出现概率,这个叫做似然。因此得证。
考虑一个回归模型 $ f \(,它的目标变量为\)t=f(x,w,^2)+$,其中 \(\varepsilon\) 是一个随机噪声,\(\varepsilon\) 的概率密度为: \[p(x)=\frac{q}{2(2\sigma ^2)^{\frac{1}{q}}\Gamma (\frac{1}{q})}\exp(-\frac{|x|^q}{2\sigma ^2})\] 给定观测数据集 \(Data=\{(X,t)\}= \{(x_1,t_1)...(x_N,t_N)\}\),求f 关于参数 w 和 \(\sigma^2\) 的对数似然函数。
本题我们不知道f的形式,但是题目告诉了我们ground truth,也就是t的真实情况是一个已知的f函数加上一个噪声,f函数的未知参数需要我们根据极大似然估计来求出。
似然函数本来是问我们,假如已知了\(w,\sigma^2\),对应数据集Data出现的概率是多少,也就是\(P(Data|w,\sigma^2)\)。
如果有了\(w,\sigma^2\), f也知道,我们算出来的预测\(\hat{t}=f(x,w,\sigma^2)\)与t之间有差值,如果我们\(w,\sigma^2\)就是真相,那么对应的差值就是真正的\(\varepsilon\),那么它就应该服从题目描述的那个分布,这个情况下,我们就能算出来\(P(\varepsilon)\),这个\(P(\varepsilon)\)就是我们给定\(w,\sigma^2\)情况下数据出现的概率。
\(LogLike(w,\sigma^2) = logP(Data|w,\sigma^2) = \sum_{i=1}^{N}logP(\varepsilon_i|w,\sigma^2)) = \sum_{i=1}^{N}log p(t_i-f(x_i, w,\sigma^2); w,\sigma^2)\)
带入题目给的概率密度p,这个式子变为
$LogLike(w,^2) = _{i=1}^{N} ( (-) ) $
利用log的性质
\(LogLike(w,\sigma^2) = \sum_{i=1}^{N} \left( \log(q) - \log(2(2\sigma^2)^{\frac{1}{q}}\Gamma(\frac{1}{q})) - \frac{|t_i - f(x_i, w, \sigma^2)|^q}{2\sigma^2} \right)\)
最后一项和求和有关,其他都没有关系
\(LogLike(w,\sigma^2) = N \log(q) - N \log(2(2\sigma^2)^{\frac{1}{q}}\Gamma(\frac{1}{q})) - \frac{1}{2\sigma^2} \sum_{i=1}^{N} |t_i - f(x_i, w, \sigma^2)|^q\)
由于没法继续进行化简,这个式子就是我们给出的答案。
当我们做极大似然估计的时候,q和N是常数,所以损失函数为
\(Loss(w,\sigma^2) = \frac{1}{2\sigma^2} \sum_{i=1}^{N} |t_i - f(x_i, w, \sigma^2)|^q + N \log(2(2\sigma^2)^{\frac{1}{q}}\Gamma(\frac{1}{q}))\)
我们可以看到,这是用了误差绝对值的q次方来惩罚,然后后面增加了一个正则项防止\(\sigma^2\)的值太大。