• 梯度上升法(Gradient ascent )是一个一阶最优化算法,通常也称为最陡上升法 ,要使用梯度上升法找到一个函数的局部极大值 ,必须向函数上当前点对应梯度(或者是近似梯度)方向的规定步长距离点进行迭代搜索, 则会接近函数的局部极大值点。
  • 梯度上升方法基于以下的观点:如果实值函数 \(f(\mathbf{x})\) 在点 \(\mathbf{a}\) 处可微且有定义,那么函数 \(f(\mathbf{x})\)\(\mathbf{a}\) 点沿着梯度方向 \(\nabla f(\mathbf{a})\) 上升最快。 因而, 如果 $$ \mathbf{b}=\mathbf{a}+\alpha \nabla f(\mathbf{a}) $$ 对于一个足够小数值 \(\alpha>0\) 时成立,那么 \(f(\mathbf{a}) \leq f(\mathbf{b})\) 。 考虑到这一点,我们可以从函数\(f\)的局部极大值的初始估计 \(\mathbf{x}_{0}\) 出发,并考虑如下序列 \(\mathbf{x}_{0}, \mathbf{x}_{1}, \mathbf{x}_{2}, \ldots\) 使得 $$ \mathbf{x}_{n+1}=\mathbf{x}_{n}+\alpha \nabla f\left(\mathbf{x}_{n}\right), n \geq 0 $$ 其中\(\alpha\)称为步长或学习率. 因此可得到 $$ f\left(\mathbf{x}_{0}\right) \leq f\left(\mathbf{x}_{1}\right) \leq f\left(\mathbf{x}_{2}\right) \leq \cdots \text {, } $$ 如果顺利的话, 序列 \(\{\mathbf{x}_{n}\}\) 收敛到期望的极大值。注意每次迭代步长可以改变。

  • 牛顿算法(Newton’s Method) 这是一种常用的非线性方程数值求根的迭代算法.
  • 考虑无约束最优化问题: $$ \max_{{\mathbf{x}} \in R^{p}} f({\mathbf{x}}), $$ 其中 \(f({\mathbf{x}})\) 具有二阶连续偏导数, \(\mathbf{x}\)\(p\)维变元. 记 \(\mathbf{x}^*\)\(f({\mathbf{x}})\) 的极大值点, 并记第 \(k\) 次迭代值为 \(\mathbf{x}^{(k)}\) ,则可将 \(f({\mathbf{x}})\)\(\mathbf{x}^{(k)}\) 处进行二阶泰勒展开: $$ f({\mathbf{x}})\approx f({\mathbf{x}}^{(k)})+\nabla f({\mathbf{x}}^{(k)})^{T}({\mathbf{x}}-{\mathbf{x}}^{(k)})+\frac{1}{2}({\mathbf{x}}-{\mathbf{x}}^{(k)})^{T} \nabla^2f({\mathbf{x}}^{(k)})({\mathbf{x}}-{\mathbf{x}}^{(k)}), $$ 其中 \(\nabla f({\mathbf{x}})=\partial f({\mathbf{x}})/\partial{\mathbf{x}}\)\(\nabla^2 f({\mathbf{x}})=\partial^2 f({\mathbf{x}})/\partial{\mathbf{x}}\partial{\mathbf{x}}^T\)分别为梯度(得分)函数和Hessian函数. 函数 \(f({\mathbf{x}})\) 有极值的必要条件是在极值点处梯度为 0, 因此 $$ 0=\nabla f({\mathbf{x}})\approx \nabla f({\mathbf{x}}_{k})+\nabla^2f({\mathbf{x}}^{(k)})({\mathbf{x}}-{\mathbf{x}}^{(k)}), $$ 由此得到下一步迭代值 \begin{equation}\label{eq3.3.9} {\mathbf{x}}^{(k+1)}={\mathbf{x}}^{(k)}-[\nabla^2f({\mathbf{x}}^{(k)})]^{-1}\nabla f({\mathbf{x}}^{(k)}). \end{equation}

本实验利用梯度上升算法和牛顿算法对几种常见分布的似然函数进行最大化, 来求最大似然估计.



如出现错误, 请调整初始值或步长