最优化理论_模型训练中的数学原理
在参数估计中,常用的方法主要是最优化理论,
其中包括 最大似然估计、最小化损失函数(最小二乘法、梯度下降法)) 。
- 本文以Logistic回归算法 为依据, 初步的学习逻辑回归中的最优化理论:最大似然估计.
- 之后介绍其它的最优化方法:梯度下降、最小二乘法.
tips: 逻辑回归中除了 最大似然估计还可以用其它方法,比如梯度下降
逻辑回归中的最优化理论
基于 最优化方法 的最佳回归系数确定.
1. 最大似然估计
背景(模型训练)
先来看看模型训练过程:1
2
3
4# 算法过程
1. 收集数据、准备数据
2. 分析数据
3. 训练算法:训练的目的是为了找到最佳的分类回归系数
基于最优化方法的最佳回归系数确定
确定回归系数的最优化方法通常涉及到求解损失函数的最小化问题。
通常在线性回归中,最常用的方法是最小二乘法,而在深度学习中,通常使用梯度下降法或其变种来优化损失函数。
(逻辑回归是个分类问题,不是线性回归,使用的最优化方法是梯度下降)
- 最小二乘法
在普通最小二乘线性回归中,我们试图找到一条直线,使得该直线与数据点的残差平方和最小。这个问题可以通过解析方法(例如正规方程)求解,或者通过迭代优化方法(例如梯度下降)来解决。
- 梯度下降法
在深度学习中,梯度下降法是最常用的优化方法之一。它通过计算损失函数相对于模型参数的梯度,并沿着梯度的反方向更新参数,以使损失函数的值逐渐减小。梯度下降法有多种变种,包括批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-batch Gradient Descent)等。
- 其他优化方法
除了梯度下降法之外,还有一些其他的优化方法,如动量法(Momentum)、自适应学习率方法(Adaptive Learning Rate Methods,如Adam、RMSProp等)等。这些方法通过在梯度下降过程中引入动量或自适应调整学习率的方式来加速优化过程。
1. 最小二乘法
目标是最小化观测值与模型预测值之间的平方误差
2. 梯度下降法
3. 逻辑回归的最优化
逻辑回归使用 梯度下降法
梯度下降通过迭代更新模型参数,沿着损失函数的负梯度方向寻找损失函数的最小值。这种方法适用于逻辑回归中的损失函数,如对数损失函数(logarithmic loss)或交叉熵损失函数(cross-entropy loss),可以有效地最小化损失并找到最优参数。
1.1 模型预测:
logistic 回归的模型预测由 sigmoid 函数完成,将线性组合的结果 $z$ 映射到一个介于 0 和 1 之间的概率值,表示样本属于正类的概率。预测公式为:
$ \hat{y} = \sigma(z) = \frac{1}{1 + e^{-z}} $
其中,e是自然对数的底,即欧拉常数,约等于2.71828。
1.2 损失函数
logistic 回归通常使用对数损失函数(log loss),也称为交叉熵损失函数,用来衡量模型预测值与真实标签之间的差异。
对于二分类问题,对数损失函数的定义为:
$ \text{Log Loss} = -\frac{1}{N} \sum_{i=1}^{N} \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right) $
其中,$N$ 是样本数量,y_i 是第 i 个样本的真实标签,$\hat{y}_i$ 是模型的预测概率。
这个损失函数是根据最大似然估计推导而来的。todo:怎么推导来着??????
我们希望通过最小化损失函数,使得模型输出的概率尽可能地接近真实标签的概率。而对数损失函数在这里被广泛选择的原因有以下几点:
- 可微性: 对数损失函数是连续可导的,这使得我们可以使用梯度下降等优化算法来最小化损失函数,从而更新模型的参数。
- 凸性: 对数损失函数是凸函数,这意味着局部最小值也是全局最小值,因此我们可以保证收敛到全局最优解。
- 推导简单性: 对数损失函数的推导相对简单,并且与逻辑回归模型的概率输出形式相符合,因此在数学上更容易处理和理解。
因此,对数损失函数是逻辑回归中的一种合适选择,它在实践中被广泛采用,并且在处理二分类问题时通常能够取得良好的效果。
1.3 参数优化
通过最小化损失函数来优化模型的参数 $ \mathbf{w} = (w_0, w_1, \ldots, w_n) $。
通常使用梯度下降法或其变种来进行参数优化。
具体地,我们计算损失函数关于参数的梯度,然后沿着梯度的反方向更新参数,使损失函数的值逐渐减小。
如上 sigmoid函数 定义, 函数的输入记为 $z$(其中$z$是线性函数的输出),即 $z$ 由下面公式得出:
$z = w_0 + w_1x_1 + w_2x_2 + \ldots + w_nx_n$
在这里,$w_0, w_1, \ldots, w_n$ 是模型的权重,$x_1, x_2, \ldots, x_n$ 是输入特征。sigmoid函数将z的值映射到[0,1]的区间
todo: 这个过程的代码实现.
是怎么根据 损失函数、梯度下降 来找到 最优参数的呢??
拓展
其它机器学习模型 中的参数估计方法是?