sigmoid 函数的损失函数与参数更新

简介: 1 sigmoid 函数的损失函数与参数更新 逻辑回归对应线性回归,但旨在解决分类问题,即将模型的输出转换为 $[0, 1]$ 的概率值。逻辑回归直接对分类的可能性进行建模,无需事先假设数据的分布。最理想的转换函数为单位阶跃函数(也称 Heaviside 函数),但单位阶跃函数是不连续的,没法在实际计算中使用。

1 sigmoid 函数的损失函数与参数更新

逻辑回归对应线性回归,但旨在解决分类问题,即将模型的输出转换为 $[0, 1]$ 的概率值。逻辑回归直接对分类的可能性进行建模,无需事先假设数据的分布。最理想的转换函数为单位阶跃函数(也称 Heaviside 函数),但单位阶跃函数是不连续的,没法在实际计算中使用。故而,在分类过程中更常使用对数几率函数(即 sigmoid 函数):

$$ \sigma(x) = \frac{1}{1+e^{-x}} $$

易推知,$\sigma(x)' = \sigma(x)(1- \sigma(x))$.

假设我们有 $m$ 个样本 $D = \{(x_i, y_i)\}_i^m$, 令 $X = (x_1, x_2, \cdots, x_m)^T, y = (y_1, y_2, \cdots, y_m)^T$, 其中 $x_i \in \mathbb{R}^n, y_i \in \{0, 1\}$, 关于参数 $w \in \mathbb{R}^n, b \in \mathbb{R}$, ($b$ 需要广播操作),我们定义正例的概率为

$$ P(y_j=1|x_j;w,b) = \sigma(x_j^Tw +b) = \sigma(z_j) $$

这样属于类别 $y$ 的概率可改写为

$$ P(y_j|x_j;w,b) = \sigma(z_j)^{y_j}(1-\sigma(z_j))^{1-y_j} $$

令 $z = (z_1, \cdots, z_m)^T$, 则记 $h(z) = (\sigma(z_1), \cdots, \sigma(z_m))^T$, 且 Logistic Regression 的损失函数为

$$ \begin{aligned} L(w, b) =& - \displaystyle \frac{1}{m} \sum_{i=1}^m (y_i \log (\sigma(z_i)) +(1-y_i) \log (1 - \sigma(z_i)))\\ =& - \frac{1}{m} (y^T\log (h(z)) + (\mathbf{1}-y)^T\log(\mathbf{1}- h(z))), \text{ 此时做了广播操作} \end{aligned} $$

这样,我们有

$$ \begin{cases} \nabla_w L(w,b) = \frac{\text{d}z}{\text{d}w} \frac{\text{d}L}{\text{d}z} = - \frac{1}{m}X^T(y-h(z))\\ \nabla_b L(w,b) = \frac{\text{d}z}{\text{d}b} \frac{\text{d}L}{\text{d}z} = - \frac{1}{m}\mathbf{1}^T(y-h(z)) \end{cases} $$

其中,$\mathbf{1}$ 表示全一列向量。这样便有参数更新公式 ($\eta$ 为学习率):

$$ \begin{cases} w \leftarrow w - \eta \nabla_{w} L(w,b)\\ b \leftarrow b - \eta \nabla_b L(w,b) \end{cases} $$

更多机器学习中的数见:机器学习中的数学

目录
相关文章
WK
|
25天前
|
机器学习/深度学习 算法
为什么Sigmoid函数比Tanh函数更好
在神经网络中,Sigmoid和Tanh函数各有优劣,选择取决于具体应用场景。Sigmoid函数输出范围为(0,1),适合二分类问题,但存在梯度消失和非零中心化的问题;Tanh函数输出范围为(-1,1),以0为中心,有利于加速收敛,但同样涉及较大的计算复杂度。两者均存在梯度消失风险,但在多数情况下,Tanh梯度问题较轻。随着技术发展,ReLU等新型激活函数因能有效缓解梯度消失并提高计算效率,已成为许多任务的首选。因此,不能简单地说Sigmoid比Tanh更好,需依据任务需求和网络结构进行选择。
WK
53 1
WK
|
14天前
|
机器学习/深度学习 算法 PyTorch
如何计算损失函数关于参数的梯度
计算损失函数关于参数的梯度是深度学习优化的关键,涉及前向传播、损失计算、反向传播及参数更新等多个步骤。首先,输入数据经由模型各层前向传播生成预测结果;其次,利用损失函数评估预测与实际标签间的差距;再次,采用反向传播算法自输出层逐层向前计算梯度;过程中需考虑激活函数、输入数据及相邻层梯度影响。针对不同层类型,如线性层或非线性层(ReLU、Sigmoid),梯度计算方式各异。最终,借助梯度下降法或其他优化算法更新模型参数,直至满足特定停止条件。实际应用中还需解决梯度消失与爆炸问题,确保模型稳定训练。
WK
27 0
WK
|
14天前
|
机器学习/深度学习 算法
什么是损失函数和损失函数关于参数的梯度
损失函数是机器学习中评估模型预测与真实值差异的核心概念,差异越小表明预测越准确。常见损失函数包括均方误差(MSE)、交叉熵损失、Hinge Loss及对数损失等。通过计算损失函数关于模型参数的梯度,并采用梯度下降法或其变种(如SGD、Adam等),可以优化参数以最小化损失,提升模型性能。反向传播算法常用于神经网络中计算梯度。
WK
21 0
WK
|
27天前
|
机器学习/深度学习 算法
什么是Sigmoid函数
Sigmoid函数是在机器学习及统计学中广泛应用的一种数学模型,尤其适用于逻辑回归与神经网络中的激活场景。该函数能将任意实数映射至(0,1)区间,象征概率或事件发生可能性。其S型曲线特性使其在二分类问题中表现出色,同时具备连续平滑与中心对称的特点,利于采用如梯度下降等优化算法。然而,Sigmoid函数在极端输入值下会出现梯度消失的问题,影响模型训练效果。尽管有此局限性,它在特定应用场景中依然重要,例如需要输出概率值的情况。
WK
13 0
|
4月前
|
机器学习/深度学习 Python
sigmoid函数
本文探讨了高等数学中的sigmoid函数,它在神经网络中的应用,特别是在二分类问题的输出层。sigmoid函数公式为 $\frac{1}{1 + e^{-x}}$,其导数为 $sigmoid(x)\cdot(1-sigmoid(x))$。文章还展示了sigmoid函数的图像,并提供了一个使用Python绘制函数及其导数的代码示例。
102 2
|
11月前
|
机器学习/深度学习 PyTorch 算法框架/工具
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
186 0
|
算法
单变量批量梯度下降算法与单变量随机梯度下降算法
通过这些图形,我希望你能更好地理解这些代价函数J所表达的值是什么样的,它们对应的假设是什么样的,以及什么样的假设对应的点,更接近于代价函数的最小值。
100 0
|
机器学习/深度学习 算法 数据可视化
梯度下降法的三种形式BGD、SGD以及MBGD
有上述的两种梯度下降法可以看出,其各自均有优缺点,那么能不能在两种方法的性能之间取得一个折衷呢?即,算法的训练过程比较快,而且也要保证最终参数训练的准确率,而这正是小批量梯度下降法(Mini-batch Gradient Descent,简称MBGD)的初衷。
梯度下降法的三种形式BGD、SGD以及MBGD
torch 如何在迭代训练中,只计算参数梯度,不更新参数。并且将参数的梯度保存到列表,这个列表的值不随着梯度清零而跟着变为零
在使用 torch.autograd.backward() 计算梯度后,可以通过设置参数的 requires_grad 属性为 False 来阻止参数更新。同时,通过将计算出的梯度值放入一个列表中来保存,这个列表的值不会随着梯度清零而清零
684 0
|
机器学习/深度学习 Serverless PyTorch
torch 神经网络,每次迭代时如何计算mse损失?
在 PyTorch 中,可以使用 torch.nn.MSELoss() 函数计算均方误差 (Mean Squared Error, MSE) 损失。在每次迭代中,首先将模型的输出和目标值传递给该函数,它将返回一个张量表示损失值。然后,在优化器的帮助下,根据损失值更新神经网络参数以使其更好地拟合数据。具体代码示例如下:
580 0