深度学习中,逻辑回归(交叉熵),softmax损失函数的推导,以及sigmoid, relu, tanh, softmax函数的用处

本文介绍了sigmoid, relu, tanh, softmax函数在深度学习中的应用,重点讲解了逻辑回归的交叉熵损失函数和softmax损失函数的推导过程,分别针对二分类和多分类问题进行了详细阐述。" 134958348,10163228,Oracle数据泵并行与压缩优化实战,"['Oracle', '数据库', '数据导出', '并行处理', '数据压缩']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sigmoid, relu, tanh, softmax函数的用处

其中作为激励函数的有:

(1) g(z) = sigmoid(z) = \frac{1}{1+e^{-z}}  

(2) g(z) = relu(z) = max(0, x)

(3) g(z) = tanh(z) = \frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}

以上激励函数作用为构造非线性模型,如:z = W^Tx + b是一个线性模型,当引入a = g(z)时,就构造出了非线性模型,用来拟合实际中的实际问题。

作为分类:

(1)sigmoid函数:用于2分类与多分类问题。

(2)softmax函数:用于多分类问题

逻辑回归(交叉熵)损失函数的推导(以二分类举例)

LOSS = ∑-y_i * log(y_hat_i) - (1 - y_i) * log(1 - y_hat_i), 其中y_hat_i = g(z_i) = sigmoid(z_i) 值介于0,1之间

对于样本x_i, 二分模型判定其为1的概率为p1_i = y_hat_i     (注:p1_i指的是第i个样本预测判定其为1的概率)

对于样本x_i, 二分模型判定其为1的概率为p0_i = 1 - y_hat_i     (注:p0_i指的是第i个

### ReLU 激活函数的数学表达式与特性 ReLU(Rectified Linear Unit)激活函数的数学表达式为: $$ f(x) = \max(0, x) $$ 该函数具有以下特性: - **非线性**:尽管形式简单,ReLU 提供了非线性变换的能力,使得神经网络可以逼近任意复杂的函数。 - **稀疏激活**:对于所有负值输入,输出为 0,这模拟了生物神经元的稀疏性[^3]。 - **梯度保持**:在 $x > 0$ 区域,导数恒为 1;在 $x < 0$ 区域,导数恒为 0。这意味着在反向传播过程中,正数区域不会出现梯度消失问题。 - **计算高效**:相比于 SigmoidTanh 函数ReLU 的计算成本更低。 ### Sigmoid 激活函数的数学表达式与特性 Sigmoid 函数的数学表达式为: $$ \sigma(x) = \frac{1}{1 + e^{-x}} $$ 其导数表达式为: $$ \sigma'(x) = \sigma(x)(1 - \sigma(x)) $$ Sigmoid 函数的主要特性包括: - **输出范围**:输出值在 $(0, 1)$ 区间内,适用于二分类问题中的概率解释。 - **平滑可导**:便于使用梯度下降等优化算法进行参数更新。 - **梯度消失问题**:当输入值较大或较小时,函数趋于饱和,导数接近于零,导致反向传播过程中梯度逐渐缩小,影响深层网络的训练效果[^2]。 ### 交叉熵损失函数的数学原理与推导 交叉熵损失函数常用于衡量两个概率分布之间的差异,尤其在分类任务中广泛应用。对于二分类问题,交叉熵损失函数定义如下: $$ L = -\left[y \log(p) + (1 - y)\log(1 - p)\right] $$ 其中: - $y$ 是真实标签(取值为 0 或 1) - $p$ 是模型预测的概率值(由 Sigmoid 函数输出) 在多分类任务中,若使用 Softmax 激活函数将输出转换为类别概率分布,则交叉熵损失函数表示为: $$ L = -\sum_{i=1}^{C} y_i \log(p_i) $$ 其中: - $C$ 是类别总数 - $y_i$ 是第 $i$ 类的真实标签(one-hot 编码) - $p_i$ 是模型预测的第 $i$ 类概率 #### 推导过程示例(以二分类为例): 假设一个样本的真实标签为 $y$,模型输出经过 Sigmoid 函数后得到预测概率 $p$,则交叉熵损失函数为: $$ L = -\left[y \log(p) + (1 - y)\log(1 - p)\right] $$ 对该损失函数关于权重 $w$ 求导时,结合链式法则,可以得到梯度表达式: $$ \frac{\partial L}{\partial w} = (p - y) \cdot x $$ 这一结果表明,在二分类问题中,使用 Sigmoid 激活函数配合交叉熵损失函数时,梯度表达式简洁且避免了直接对 Sigmoid 导数连乘的问题,从而缓解了梯度消失现象[^2]。 ### 示例代码:实现 ReLUSigmoid交叉熵损失函数 ```python import numpy as np # ReLU 函数及其导数 def relu(x): return np.maximum(0, x) def relu_derivative(x): return (x > 0).astype(float) # Sigmoid 函数及其导数 def sigmoid(x): return 1 / (1 + np.exp(-x)) def sigmoid_derivative(x): s = sigmoid(x) return s * (1 - s) # 二分类交叉熵损失函数 def binary_cross_entropy(y_true, y_pred): epsilon = 1e-15 # 防止 log(0) y_pred = np.clip(y_pred, epsilon, 1 - epsilon) return -(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)).mean() # 多分类交叉熵损失函数 def categorical_cross_entropy(y_true, y_pred): epsilon = 1e-15 y_pred = np.clip(y_pred, epsilon, 1 - epsilon) return -np.sum(y_true * np.log(y_pred)) / y_true.shape[0] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值