几种常见的神经网络激活函数的导数

博客提供了几种常见的神经网络激活函数的速查表,聚焦于信息技术领域中神经网络相关内容,为了解激活函数提供便利。

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


几种常见的神经网络激活函数cheat sheet。

神经网络中,**激活函数导数是反向传播过程中计算梯度的关键组成部分**。下面是**几种常见激活函数及其导数的公式化表达和Python实现**。 --- ## 🧠 一、Sigmoid 激活函数 ### 📌 公式: $$ \sigma(x) = \frac{1}{1 + e^{-x}} $$ ### 📌 导数: $$ \sigma'(x) = \sigma(x)(1 - \sigma(x)) $$ ### ✅ Python 实现: ```python import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) def sigmoid_derivative(x): s = sigmoid(x) return s * (1 - s) ``` --- ## 🧠 二、ReLU(Rectified Linear Unit) ### 📌 公式: $$ \text{ReLU}(x) = \max(0, x) $$ ### 📌 导数: $$ \text{ReLU}'(x) = \begin{cases} 1 & \text{if } x > 0 \\ 0 & \text{if } x < 0 \\ \text{undefined or 0/1} & \text{if } x = 0 \end{cases} $$ ### ✅ Python 实现: ```python def relu(x): return np.maximum(0, x) def relu_derivative(x): return (x > 0).astype(float) ``` --- ## 🧠 三、Tanh(双曲正切函数) ### 📌 公式: $$ \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} $$ ### 📌 导数: $$ \tanh'(x) = 1 - \tanh^2(x) $$ ### ✅ Python 实现: ```python def tanh(x): return np.tanh(x) def tanh_derivative(x): return 1 - np.tanh(x)**2 ``` --- ## 🧠 四、Softmax Softmax 通常用于输出层,其导数比较复杂,因为它是**向量函数**。 ### 📌 公式: 对于输入向量 $ z $,Softmax 输出为: $$ \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}} $$ ### 📌 导数(Jacobian矩阵): 对 Softmax 的导数是一个矩阵,其中: - 当 $ i = j $ 时: $$ \frac{\partial \text{Softmax}(z_i)}{\partial z_j} = \text{Softmax}(z_i)(1 - \text{Softmax}(z_j)) $$ - 当 $ i \ne j $ 时: $$ \frac{\partial \text{Softmax}(z_i)}{\partial z_j} = -\text{Softmax}(z_i)\text{Softmax}(z_j) $$ ### ✅ Python 实现(Jacobian): ```python def softmax(z): exps = np.exp(z - np.max(z)) # 数值稳定性优化 return exps / np.sum(exps) def softmax_derivative(z): s = softmax(z).reshape(-1, 1) return np.diagflat(s) - np.dot(s, s.T) ``` --- ## 🧠 五、Leaky ReLU ### 📌 公式: $$ \text{LeakyReLU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha x & \text{if } x \le 0 \end{cases} \quad (\alpha \text{ 通常取 } 0.01) $$ ### 📌 导数: $$ \text{LeakyReLU}'(x) = \begin{cases} 1 & \text{if } x > 0 \\ \alpha & \text{if } x < 0 \\ \text{undefined or 0/1/α} & \text{if } x = 0 \end{cases} $$ ### ✅ Python 实现: ```python def leaky_relu(x, alpha=0.01): return np.where(x > 0, x, alpha * x) def leaky_relu_derivative(x, alpha=0.01): return np.where(x > 0, 1, alpha) ``` --- ## 🧠 六、Swish(Google 提出的新型激活函数) ### 📌 公式: $$ \text{Swish}(x) = x \cdot \sigma(x) $$ ### 📌 导数: $$ \text{Swish}'(x) = \sigma(x) + x \cdot \sigma(x)(1 - \sigma(x)) $$ ### ✅ Python 实现: ```python def swish(x): return x * sigmoid(x) def swish_derivative(x): s = sigmoid(x) return s + x * s * (1 - s) ``` --- ## 📌 七、总结表格 | 激活函数 | 函数表达式 | 导数表达式 | |----------|------------|-------------| | Sigmoid | $ \sigma(x) = \frac{1}{1+e^{-x}} $ | $ \sigma(x)(1 - \sigma(x)) $ | | ReLU | $ \max(0, x) $ | $ \begin{cases} 1 & x > 0 \\ 0 & x < 0 \end{cases} $ | | Tanh | $ \tanh(x) $ | $ 1 - \tanh^2(x) $ | | Softmax | $ \frac{e^{z_i}}{\sum_j e^{z_j}} $ | $ \text{Softmax}(z_i)(1 - \text{Softmax}(z_j)) $ | | LeakyReLU | $ x > 0 ? x : \alpha x $ | $ x > 0 ? 1 : \alpha $ | | Swish | $ x \cdot \sigma(x) $ | $ \sigma(x) + x \cdot \sigma(x)(1 - \sigma(x)) $ | --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值