三、极大似然估计求解

当似然函数为最大值时,得到的[math]\omega[/math]和 [math]b[/math]即可认为是模型的参数。求似然函数的最大值,如梯度上升,可以对似然函数稍作处理,使之变为梯度下降,然后使用梯度下降的思想来求解此问题,变换的表达式如下:[br] [br] [math]f\left(\omega^T,b\right)=-\frac{1}{N}L\left(\omega^T,b\right)[/math][br][br] 由于在原似然函数的前面乘了一个负值,由原来的梯度上升变为梯度下降,其好处在于快速收敛,便于训练数据的取得。
因为要使用当前的 [math]\omega[/math] 和 [math]b[/math]值通过更新得到新的 [math]\omega[/math] 和[math]b[/math] 值,所以需要知道 [math]\omega[/math] 和 [math]b[/math] 更新的方向,即当前 [math]\omega[/math] 和 [math]b[/math] 是加上一个数还是减去一个数离最终结果近,所以得到 [math]J(a,b)[/math] 后对其求导便可得到更新方向。对 [math]\omega^T[/math] 参数来讲,求偏导过程如下:[br] [br] 设:[math]h_{\left(\omega,b\right)}\left(x_i\right)=g\left(\omega^Tx_i+b\right)=\frac{1}{1+e^{^{-\left(\omega^Tx_i+b\right)}}}[/math][br][br] [math]\frac{\partial}{\partial\omega_j}J\left(\omega^T,b\right)=-\frac{1}{n}\sum\left[y_i\frac{1}{h_{\left(\omega^T,b\right)}\left(x_i\right)}\frac{\partial}{\partial_{\omega_i}}h_{_{\left(\omega^T,b\right)}}\left(x_i\right)-\left(1-y_i\right)\frac{1}{1-h_{\left(\omega^T,b\right)}\left(x_i\right)}\frac{\partial}{\partial_{\omega_i}}h_{_{\left(\omega^T,b\right)}}\left(x_i\right)\right][/math][br][br] [math]\frac{\partial}{\partial\omega_j}J\left(\omega^T,b\right)=-\frac{1}{n}\sum\left[y_i\frac{1}{g\left(\omega^Tx_i+b\right)}-\left(1-y_i\right)\frac{1}{1-g\left(\omega^Tx_i+b\right)}\right]\frac{\partial}{\partial_{\omega_i}}g\left(\omega^Tx_i+b\right)[/math] (2-6-1)[br][br] 可以先求 [math]\frac{\partial}{\partial_{\omega_i}}g\left(\omega^Tx_i+b\right)[/math]。[br] [br] 设[math]f\left(\omega^T,b\right)=e^{-\left(\omega^Tx_i+b\right)}[/math],则[br][br] [math]g\left(\omega^Tx_i+b\right)=\frac{1}{1+f\left(\omega^T,B\right)}[/math][br] [br] [math]\frac{\partial g\left(\omega^Tx_i+b\right)}{\partial_{\omega_j}}=\frac{\partial g\left(\omega^Tx_i+b\right)}{\partial f\left(\omega^T,b\right)}\cdot\frac{\partial f\left(\omega^T,b\right)}{\partial\omega_j}[/math][br] [br] [math]=\frac{-1}{\left[1+f\left(\omega^T,b\right)\right]^2}\cdot e^{-\left(\omega^Tx_i+b\right)}\cdot-x_i^j[/math][br] [br] [math]=\frac{e^{-\left(\omega^Tx_i+b\right)}}{\left(1+e^{-\left(\omega^Tx_i+b\right)}\right)^2}\cdot x_i^j[/math][br] [br] [math]=g\left(\omega^Tx_i+b\right)\left[1-g\left(\omega^Tx_i+b\right)\right]x_i^j[/math] (2-6-2)[br][br][br] 将式(2-6-2)代入式(2-6-1),则可得[br][br] [math]\frac{\partial}{\partial\omega_j}J\left(\omega^T,b\right)=\frac{1}{n}\sum\left[y_i\frac{1}{g\left(\omega^Tx_i+b\right)}-\left(1-y_i\right)\frac{1}{1-g\left(\omega^Tx_i+b\right)}\right]g\left(\omega^Tx_i+b\right)\left[1-g\left(\omega^Tx_i+b\right)\right]x_i^j[/math][br] [br] [math]=-\frac{1}{n}\sum\left\{y_i\left[1-g\left(\omega^Tx_i+b\right)\right]-\left(1-y_i\right)g\left(\omega^Tx_i+b\right)\right\}x_i^j[/math][br] [br] [math]=-\frac{1}{n}\sum\left[y_i-g\left(\omega^Tx_i+b\right)\right]x_i^j=\frac{1}{n}\sum\left[h\left(_{\omega,b}\right)\left(x_i\right)-y_i\right]x_i[/math][br][br] 同理,对于 b 参数,其求偏导的过程为[br] [br] [math]\frac{\partial g\left(\omega^Tx_i+b\right)}{\partial b}=\frac{\partial g\left(\omega^Tx_i+b\right)}{\partial f\left(\omega^T,b\right)}.\frac{\partial f\left(\omega^T,b\right)}{\partial b}[/math][br] [br] [math]\frac{e^{-\left(\omega^Tx_i+b\right)}}{\left(1+e^{-\left(\omega^Tx_i+b\right)}\right)^2}=g\left(\omega^Tx_i+b\right)\left[1-g\left(\omega^Tx_i+b\right)\right][/math][br][br] 则 [math]\frac{\partial}{\partial b}J\left(\omega^T,b\right)=\frac{1}{n}\sum\left(h_{\omega,b}\left(x_i\right)-y_i\right)[/math][br]
二特征变量逻辑回归极大似然估计梯度下降举例演示:设有事物 [math]z[/math] 具备两个特征向量 [math]x[/math] 和 [math]y[/math] ,其逻辑回归方程为[math]z=\frac{1}{1+e^{-\left(w_1x+w_2x+b\right)}}[/math],为简化计算,预设 [math]w_1=5,w_2=0,b=5[/math] ,随机选取一组数据,根据 [math]z[/math] 值以 0.5 为界分为 A、B 两类。然后选取 10 组数据作为样本进行梯度下降计算。计算过程的编程文件可以扫描以下二维码下载验算,也可作为简单梯度下降的计算工具使用。[br][center][img]https://s21.ax1x.com/2025/02/17/pEKzrSP.png[/img][/center] 根据计算,以学习率 a  0.1 为例,分别呈现初始参数[math](w_1=-5,b=-5)[/math]以及迭代次数在 30、60、100、135 等处的参数值,并绘制梯度下降图,如图 2-6-15 所示。由图可以看出,参数值按正确方向下降,并逐步逼近理想参数点[math](w_1=5,b=5)[/math]。同时,通过图示也呈现出梯度下降不可避免的问题:一是梯度衰减,即收敛程度越来越小,逼近步幅逐渐缩短,造成大量算力耗损也很难达到理想值;二是此梯度方程有明显的梯度平原区,即图形的陡度消失,造成损失函数无差值或极小,使得梯度迭代无法继续进行。除以上两个问题之外,梯度下降法还经常存在局部最小值问题,这些问题在目前的理论界还没有很好的解决办法,在此不再赘述。为动态展示梯度下降过程(见图 2-6-16)。
【知识点引入】目标函数、损失函数、代价函数。[br][br] 三种拟合示意如图 2-6-17 所示。[br][center][img]https://s21.ax1x.com/2025/02/16/pEKqm4K.jpg[/img][/center][center]图 2-6-17 三种拟合图示意[/center]
[br] 上面三个图的函数为 [math]f_1\left(x\right)=\theta_0+\theta_1x[/math],[math]f_2\left(x\right)=\theta_0+\theta_1x+\theta_2x^2[/math] ,[math]f_3\left(x\right)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4[/math] 。给定 [math]x[/math] ,三个函数都会输出一个 [math]f\left(x\right)[/math] ,这个输出的 [math]f(x)[/math]与真实值 y 是有偏差的。为了表示拟合得好坏,需要用一个函数度量拟合的程度:[math]L\left[Y,f\left(x\right)\right]=\left[Y-f\left(X\right)\right]^2[/math],这个函数就称之为损失函数(loss function),或者称之为代价函(cost function)。[br][br] 接下来还要引入一个概念,叫作风险函数(risk function)。风险函数是损失函数的期望,这是由于我们输入输出的 [math](X,Y)[/math] 遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。但是因为有历史数据,即训练集,[math]f(X)[/math] 关于训练集的平均损失称作经验风险(empirical risk),[br]即[math]\frac{1}{N}\sum L\left[y_i,f\left(x_i\right)\right][/math],所以我们的目标就是最小化[math]\frac{1}{N}\sum L\left[y_i,f\left(x_i\right)\right][/math],称之为经验风险最小化。[br][br] 但是如果仅仅求解经验风险最小化,还无法很好地解决现实中的数据运算问题。比如图2-6-17 所示的三个函数,很显然图 2-6-17(c)的数据拟合得最好,但是函数呈现最复杂,已经达到了四次方,因为它过度学习历史数据,导致它在真正预测时效果会很不好,这种情况称为过拟合(over-fitting)。这就引出了另一个概念,不仅要让经验风险最小化,还要让结构风险最小化。这时我们定义一个函数 [math]J(f)[/math],这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化[br](regularization),常用的有 L1, L2 范数。[br][br] 至此,最终的优化函数为:[math]min\frac{1}{N}\sum L\left[y_i,f\left(x_i\right)\right]+\lambda J\left(f\right)[/math],即最优化经验风险和结构风险,而这个函数就被称为目标函数。结合上面图示例子来分析:中间的 [math]f_1\left(x\right)=\theta_0+\theta_1x[/math] 结构风险最小(模型结构最简单),但是经验风险最大(对历史数据拟合得最差);最右面的[math]f_3\left(x\right)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4[/math] 经验风险最小(对历史数据拟合得最好),但是结构风险最大(模型结构最复杂),而[math]f_2\left(x\right)=\theta_0+\theta_1x+\theta_2x^2[/math] 达到了二者的良好平衡,最适合用来预测未知数据集。

Information: 三、极大似然估计求解