CompModCogPsy
  • 全书介绍和写作计划
  • 第一章 计算认知科学导论
    • 前言
    • 1.1 交叉学科三角
    • 1.2 认知科学的特点
    • 1.3 认知科学的发展历史
    • 1.4 我们为什么需要计算认知
      • 1.4.1 认知科学的基础假设:信息处理理论
      • 1.4.2 挑战与“诞生”
      • 1.4.3 计算认知的必要性
  • 第二章 计算模型基础
    • 2.1 什么是计算模型?
    • 2.2 模型选择
    • 2.3 模型拟合
    • 2.4 模型准确度
    • 2.5 模型可信度
  • 第三章 概率推断和贝叶斯理论
    • 3.1 概率基础
    • 3.2 概率推断
      • 3.2.1 似然函数
      • 3.2.2 最大似然估计
    • 3.3 贝叶斯理论
    • 3.4 拓展阅读:p值
    • 3.5 编程练习-最大似然估计
  • 第四章 心理物理学和信号检测论
    • 心理物理学基础
    • 心理物理曲线
      • 几种常见的心理物理曲线
      • 拟合心理物理曲线
    • 信号检测论
      • dprime
      • 决策标准
      • receiver operating curve (ROC)曲线和area under curve (AUC)
      • dprime和AUC的关系
      • 2AFC的应用
      • Page
    • 展望
  • 第五章 近似推断
    • 马尔科夫链蒙特卡洛采样
      • Metropolis-Hasting算法
    • 变分推断
    • 展望
  • 第六章 知觉决策
    • 模拟一个简单知觉决策
    • 模拟决策和反应时
    • 权衡反应时和正确率
    • 6.4 经典漂移扩散模型
    • 漂移扩散模型的应用
      • 基于价值的决策
      • 精神疾病的应用
      • 社会认知
    • 展望
  • 第七章 价值决策
    • 人类决策基础
    • 前景理论
    • 风险决策
    • 展望
  • 第八章 强化学习
    • 机器学习强化学习基础
      • 动态规划
      • 时间差分学习
      • 基于模型和无模型强化学习
    • 心理学的强化学习
    • 强化学习的交叉关系
    • 强化学习模型和参数估计
    • Rescorlar-wagner模型
    • 二阶段任务
    • 展望
  • 第九章 社会决策和社会学习
    • 社会决策
    • 社会学习
    • 展望
  • 第十章 神经网络
    • 神经网络和心理学引言
    • 神经网络基础
      • 多层感知机
      • 卷积神经网络
      • 循环神经网络
    • 神经网络和人脑加工的关系
      • 感知觉的编解码
      • 工作记忆
      • 长时记忆
      • 学习和决策
    • 展望
由 GitBook 提供支持
在本页
  • 引入
  • 最大似然估计的基本概念
  • 最大似然估计与最小二乘法
  1. 第三章 概率推断和贝叶斯理论
  2. 3.2 概率推断

3.2.2 最大似然估计

最后更新于9个月前

引入

回顾洒水问题,我们根据 p(O1∣C1)=0.8>p(O1∣C2)=0.6>p(O1∣C3)=0.2p(O 1 \mid C 1)=0.8>p(O 1 \mid C 2)=0.6>p(O 1 \mid C 3)=0.2p(O1∣C1)=0.8>p(O1∣C2)=0.6>p(O1∣C3)=0.2,作出了“当门口有水时,最有可能是下雨了”的推断。如果使用最后所提到的最大似然估计的视角来看待这个问题,这个问题可以被表述为 “如果 θ\thetaθ 的值域为集合 (C1,C2,C3)(C1,C2,C3)(C1,C2,C3),其中L(θ)=(d1=有水∣θ)L(\theta)=\left(d_1 = 有水 \mid \theta\right)L(θ)=(d1​=有水∣θ),那么当θ\thetaθ 为何值时,L(θ)L(\theta)L(θ) 最大?”。对于这个问题,我们当然可以轻松地推出,要使得 L(θ) L(\theta) L(θ) 最大,那么应该选择 θ=C1(下雨)\theta = C_1(下雨) θ=C1​(下雨)。

在这个过程中,我们完成了一次对离散分布下的似然函数进行最大似然估计。那么,严格上最大似然估计该如何定义?在刚刚的例子中,我们只关注单个数据点(d1=有水d_1 = 有水d1​=有水),但在实践中我们通常面对的都是一系列数据点,如何对一系列实验数据的似然函数进行极大似然估计呢?

最大似然估计的基本概念

3.n 最大似然估计

已知数据 D=[d1,d2,...di] D = [d_1, d_2, ...d_i]D=[d1​,d2​,...di​],求其背后的高斯分布 θ=(u,σ)\theta=(u, \sigma)θ=(u,σ) ,使其似然函数 L(θ)=∏i=1np(di∣θ)L(\theta)=\prod_{i=1}^n p\left(d_i \mid \theta\right)L(θ)=∏i=1n​p(di​∣θ) 取得最大值,即求解θ^=⟨u^,σ^⟩=arg⁡max⁡θL(θ)\hat{\theta}=\langle\hat{u}, \hat{\sigma}\rangle=\underset{\theta}{\arg \max } L(\theta)θ^=⟨u^,σ^⟩=θargmax​L(θ),该过程被称为最大似然估计。

在第二章中,我们学习了优化,在优化问题中我们需要使得损失函数最小。而实际上求解最大似然估计的过程同样也是优化过程。不过在具体操作上,两者存在少许差别:我们通常会对似然函数进行一些转换。

首先,因为概率 p(di∣θ) p\left(d_i \mid \theta\right)p(di​∣θ) 一定小于1,那么连乘过后往往非常小。为了避免在数值计算过程中的数据下溢,通常我们使用 log⁡\loglog 函数进行变换。

一方面 log⁡\loglog 变换不改变函数的单调性,如下图所示,x2x^2x2在x=0x=0x=0处取得最小值,ln(x2)ln(x^2)ln(x2)也在x=0x=0x=0处取得最小值。

另一方面, log⁡\loglog 函数的导数是它的倒数,这会使得在反向传播算法中计算梯度变得更加方便。

进行 log⁡\loglog 变换后,我们可以得到对数似然函数:

LL(θ)=log⁡(L(θ))=log⁡(∏i=1np(di∣θ))=∑inlog⁡(p(di∣θ))(3.1)L L(\theta)=\log (L(\theta))=\log \left(\prod_{i=1}^n p\left(d_i \mid \theta\right)\right)=\sum_i^n \log \left(p\left(d_i \mid \theta\right)\right)\qquad\qquad\tag{3.1}LL(θ)=log(L(θ))=log(i=1∏n​p(di​∣θ))=i∑n​log(p(di​∣θ))(3.1)

其次, p(di∣θ) p\left(d_i \mid \theta\right)p(di​∣θ) 小于1,则log⁡(p(di∣θ))\log(p(d_i \mid \theta))log(p(di​∣θ))小于0,要使得小于0的∑inlog⁡(p(di∣θ))\sum_i^n \log (p(d_i|\theta))∑in​log(p(di​∣θ))取得最大值,就等价于求−∑inlog⁡(p(di∣θ))-\sum_i^n \log (p(d_i|\theta))−∑in​log(p(di​∣θ))的最小值(或许有点绕,但大家可以暂停一下理清思路)。

这样,我们再在对数似然函数的前面加个 负号,就得到了负对数似然函数

NLL(θ)=−log⁡(L(θ))=−log⁡(∏i=1np(di∣θ))=−∑inlog⁡(p(di∣θ))(3.2)N L L(\theta)= - \log (L(\theta)) = - \log \left(\prod_{i=1}^n p\left(d_i \mid \theta\right)\right)=-\sum_i^n \log \left(p\left(d_i \mid \theta\right)\right)\qquad\qquad\tag{3.2}NLL(θ)=−log(L(θ))=−log(i=1∏n​p(di​∣θ))=−i∑n​log(p(di​∣θ))(3.2)

此时有,

θ^=⟨u^,σ^>=arg⁡max⁡θL(θ)=arg⁡max⁡θLL(θ)=arg⁡min⁡θNLL(θ)(3.3)\hat{\theta}=\langle\hat{u}, \hat{\sigma}>=\underset{\theta}{\arg \max } L(\theta)=\underset{\theta}{\arg \max } L L(\theta)=\underset{\theta}{\arg \min } N L L(\theta)\qquad\qquad\tag{3.3}θ^=⟨u^,σ^>=θargmax​L(θ)=θargmax​LL(θ)=θargmin​NLL(θ)(3.3)

至此,又回到了之前介绍过的优化问题,如何使得函数取得最小值,这样就能使用我们熟悉的python minimize函数进行求解了!

下面我们对极大似然估计进行技术总结:

极大似然估计的步骤

  1. 根据数据生成模型写出基于参数的似然函数(此步为最关键也是最难的一步)

  2. 将得到的似然函数变换为负对数似然函数

  3. 利用matlab或者python等优化软件的数值优化方法求解。例如python里面的minimize函数,matlab里面的fminsearch函数

最大似然估计与最小二乘法

那么最大似然估计跟最小二乘法的关系是什么,我们先给出一个结论:

在线性回归中,当残差(或称为噪音)满足正态分布的条件下,最大似然估计和最小二乘法在数学上是等价的

现在,我们来一步步证明这个结论:

考虑一个简单线性模型: y=ax+by=a x+by=ax+b , 其中残差ϵ\epsilon ϵ满足均值为0,标准差为σ\sigmaσ的高斯分布(所以假定σ\sigmaσ已知)

我们从这个模型中得到了一组数据, 自变量为 X=[x1,x2,…,xi,…]X=\left[x_1, x_2, \ldots, x_i, \ldots\right]X=[x1​,x2​,…,xi​,…] ,因变量为 Y=[y1,y2,…,yi,…]Y=\left[y_1, y_2, \ldots, y_i, \ldots\right]Y=[y1​,y2​,…,yi​,…] ,为找到能够最佳拟合这一组数据的线性模型,我们使用最小二乘法对模型参数进行求解:

arg⁡min⁡a,b∑in(yi−(axi+b))2(3.4)\underset{a, b}{\arg \min } \sum_i^n\left(y_i-\left(a x_i+b\right)\right)^2 \qquad\qquad\tag{3.4}a,bargmin​i∑n​(yi​−(axi​+b))2(3.4)

那么,在最大似然估计的情况下,我们要怎么来表示这个求解过程?

现在,我们将参数 a,ba, ba,b 看作一个参数对 θ\thetaθ ,将数据 xi,yix_i, y_ixi​,yi​ 看作一个数据对 did_idi​ ,整个数据集用 DDD 表示。结合先前的内容,我们可以写作:

已知数据 D=[d1,d2,...di] D = [d_1, d_2, ...d_i]D=[d1​,d2​,...di​],其中di=(xi,yi)d_i = (x_i, y_i)di​=(xi​,yi​),求其背后的高斯分布 θ=(a,b)\theta=(a, b)θ=(a,b) ,使其负对数似然函数取得最小值

但这么说并不是很直观,你或许会想,为什么这些数据点(xi,yi)(x_i,y_i)(xi​,yi​)背后跟高斯分布有关,跟高斯分布有关的不是残差吗?

通常来说,我们这么来表示线性模型:

y=ax+b+ϵ          ϵ∼N(0,σ2)y = ax+ b +\epsilon \;\;\;\;\;\epsilon \sim N(0,\sigma^2)y=ax+b+ϵϵ∼N(0,σ2)

但这可以等价写为:

y∼N(μ,σ2)          μ=ax+by \sim N(\mu,\sigma^2)\;\;\;\;\; \mu = ax+by∼N(μ,σ2)μ=ax+b

因此,我们完全可以用高斯分布来表示线性模型

那么很显然,在给定的μ(即a,b),σ\mu(即a, b), \sigmaμ(即a,b),σ下,取到数据点di=(xi,yi)d_i = (x_i, y_i)di​=(xi​,yi​)的条件概率可以表示为:

p(di∣θ)=p(yi∣xi,a,b)=12πσ2exp⁡(−(yi−μ)22σ2)p(d_i|\theta) = p(y_i|x_i,a,b) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left(-\frac{\left(y_i-\mu\right)^2}{2 \sigma^2}\right)p(di​∣θ)=p(yi​∣xi​,a,b)=2πσ2​1​exp(−2σ2(yi​−μ)2​)

代入负对数似然函数,可以表示为:

NLL(θ)=−LL(θ)=−log⁡(L(θ))=−log⁡(∏i=1np(di∣θ))=−∑inlog⁡(p(di∣θ))=−∑inlog⁡(12πσ2exp⁡(−(yi−μ)22σ2))=∑in(−log⁡(12πσ2)+(yi−μ)22σ2)\begin{aligned} N L L(\theta) & =-L L(\theta) \\ & =-\log (L(\theta)) \\ & =-\log \left(\prod_{i=1}^n p\left(d_i \mid \theta\right)\right) \\ & =-\sum_i^n \log \left(p\left(d_i \mid \theta\right)\right) \\ & =-\sum_i^n \log \left(\frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left(-\frac{\left(y_i-\mu\right)^2}{2 \sigma^2}\right)\right)\\ & = \sum_i^n\left(-\log \left(\frac{1}{\sqrt{2 \pi \sigma^2}}\right)+\frac{\left(y_i-\mu\right)^2}{2 \sigma^2}\right) \\ \end{aligned}NLL(θ)​=−LL(θ)=−log(L(θ))=−log(i=1∏n​p(di​∣θ))=−i∑n​log(p(di​∣θ))=−i∑n​log(2πσ2​1​exp(−2σ2(yi​−μ)2​))=i∑n​(−log(2πσ2​1​)+2σ2(yi​−μ)2​)​

在 σ\sigmaσ 已知的情况下,其中的 −log⁡(12πσ2)-\log \left(\frac{1}{\sqrt{2 \pi \sigma^2}}\right)−log(2πσ2​1​) , 2σ22 \sigma^22σ2 都为常数,在计算中可以直接省去

arg min⁡θNLL(θ)=arg⁡min⁡θ∑in(yi−μ)2\begin{aligned} \underset{\theta}{\argmin}N L L(\theta) & = \underset{\theta}{\arg \min } \sum_i^n\left(y_i-\mu\right)^2 \\ \end{aligned}θargmin​NLL(θ)​=θargmin​i∑n​(yi​−μ)2​

对于每个 yiy_iyi​ 来说,高斯分布的 μ\muμ 实际上就是 axi+ba x_i + baxi​+b

arg min⁡θNLL(θ)=arg⁡min⁡θ∑in(yi−μ)2=arg⁡min⁡θ∑in(yi−(axi+b))2\begin{aligned} \underset{\theta}{\argmin}N L L(\theta) & = \underset{\theta}{\arg \min } \sum_i^n\left(y_i-\mu\right)^2 \\ & = \underset{\theta}{\arg \min } \sum_i^n\left(y_i-\left(a x_i+b\right)\right)^2 \\ \end{aligned}θargmin​NLL(θ)​=θargmin​i∑n​(yi​−μ)2=θargmin​i∑n​(yi​−(axi​+b))2​

故对于已知高斯噪音(即残差的标准差已知)的简单线性模型,最大似然估计和最小二乘法在数学上是等价的。

在中,我们已经学习了求解简单线性模型的最小二乘法。最小二乘法是:在线性回归中,我们通过最小化误差的平方和找到最能拟合数据的

先前的章节
上一节
(改编自:https: // saylordotorg.github.io/text_introductory-statistics/s14-03-modelling-linear-relationships.html)