激活函数数学详解以及应用场景解释

激活函数

激活函数在神经网络中扮演着至关重要的角色,主要用于引入非线性,使神经网络能够学习和表示复杂数据,如图像、声音、文本等。以下是几种常见的激活函数及其数学表达式。

1. Sigmoid 激活函数

Sigmoid 函数是一个经典的激活函数,通常用于二分类问题中。它的数学表达式为:

σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1

Sigmoid 函数的输出范围在 0 到 1 之间,适合用作输出概率。然而,它也存在梯度消失问题,特别是当 x 的值非常大或非常小的时候。

例子及推导过程

假设卷积操作的输出特征图为:
[ 0.8 − 0.9 1.2 − 1.1 ] \begin{bmatrix} 0.8 & -0.9 \\ 1.2 & -1.1 \\ \end{bmatrix} [0.81.20.91.1]

应用 Sigmoid 激活函数的计算过程是将这个特征图中的每个元素通过 Sigmoid 函数转换。Sigmoid 函数的数学表达式是 σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1

因此,Sigmoid 激活后的特征图为:
[ σ ( 0.8 ) σ ( − 0.9 ) σ ( 1.2 ) σ ( − 1.1 ) ] \begin{bmatrix} \sigma(0.8) & \sigma(-0.9) \\ \sigma(1.2) & \sigma(-1.1) \\ \end{bmatrix} [σ(0.8)σ(1.2)σ(0.9)σ(1.1)]=
[ 1 1 + e − 0.8 1 1 + e 0.9 1 1 + e − 1.2 1 1 + e 1.1 ] \begin{bmatrix} \frac{1}{1 + e^{-0.8}} & \frac{1}{1 + e^{0.9}} \\ \frac{1}{1 + e^{-1.2}} & \frac{1}{1 + e^{1.1}} \\ \end{bmatrix} [1+e0.811+e1.211+e0.911+e1.11]

代码

import numpy as np

# Sigmoid 激活函数定义
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# 假设的卷积层输出特征图
feature_map = np.array([[0.8, -0.9], [1.2, -1.1]])

# 应用 Sigmoid 激活函数
activated_feature_map = sigmoid(feature_map)

print("Sigmoid 激活后的特征图:\n", activated_feature_map)

2. ReLU 激活函数

ReLU(Rectified Linear Unit)函数是深度学习中最常用的激活函数之一。它的数学表达式为:

ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

ReLU 函数在正数区间内保持线性,这使得计算效率非常高。但在负数区间内,它不进行激活,可能导致“死神经元”问题。

例子及推导过程

假设我们有以下输入数据和权重:

  • 输入值: ( x = [1.0, -2.0, 3.0] )
  • 权重: ( w = [0.4, 0.3, 0.5] )
  • 偏置: ( b = -0.5 )

计算加权输入 ( z ):
z = w 1 × x 1 + w 2 × x 2 + w 3 × x 3 + b z = w_1 \times x_1 + w_2 \times x_2 + w_3 \times x_3 + b z=w1×x1+w2×x2+w3×x3+b
z = 0.4 × 1.0 + 0.3 × ( − 2.0 ) + 0.5 × 3.0 − 0.5 z = 0.4 \times 1.0 + 0.3 \times (-2.0) + 0.5 \times 3.0 - 0.5 z=0.4×1.0+0.3×(2.0)+0.5×3.00.5

应用 ReLU 激活函数:
ReLU ( z ) = max ⁡ ( 0 , z ) \text{ReLU}(z) = \max(0, z) ReLU(z)=max(0,z)

在此例中,我们首先计算了加权输入 z,然后应用了 ReLU 函数。ReLU 函数的作用是将所有负值置为 0,而保留正值不变

3. Tanh 激活函数

Tanh 函数是 Sigmoid 函数的变体,输出范围在 -1 到 1 之间。其数学表达式为:

tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} tanh(x)=ex+exexex

Tanh 函数的输出是零中心的,这使得在某些情况下,它比 Sigmoid 函数表现更好。

例子及推导过程

假设卷积操作的输出特征图为:
[ 0.5 − 0.6 0.9 − 1.0 ] \begin{bmatrix} 0.5 & -0.6 \\ 0.9 & -1.0 \\ \end{bmatrix} [0.50.90.61.0]

应用 Tanh 激活函数的计算过程是将这个特征图中的每个元素通过 Tanh 函数转换。Tanh 函数的数学表达式是 tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} tanh(x)=ex+exexex

因此,Tanh 激活后的特征图为:
[ tanh ⁡ ( 0.5 ) tanh ⁡ ( − 0.6 ) tanh ⁡ ( 0.9 ) tanh ⁡ ( − 1.0 ) ] \begin{bmatrix} \tanh(0.5) & \tanh(-0.6) \\ \tanh(0.9) & \tanh(-1.0) \\ \end{bmatrix} [tanh(0.5)tanh(0.9)tanh(0.6)tanh(1.0)]=
[ e 0.5 − e − 0.5 e 0.5 + e − 0.5 e − 0.6 − e 0.6 e − 0.6 + e 0.6 e 0.9 − e − 0.9 e 0.9 + e − 0.9 e − 1.0 − e 1.0 e − 1.0 + e 1.0 ] \begin{bmatrix} \frac{e^{0.5} - e^{-0.5}}{e^{0.5} + e^{-0.5}} & \frac{e^{-0.6} - e^{0.6}}{e^{-0.6} + e^{0.6}} \\ \frac{e^{0.9} - e^{-0.9}}{e^{0.9} + e^{-0.9}} & \frac{e^{-1.0} - e^{1.0}}{e^{-1.0} + e^{1.0}} \\ \end{bmatrix} [e0.5+e0.5e0.5e0.5e0.9+e0.9e0.9e0.9e0.6+e0.6e0.6e0.6e1.0+e1.0e1.0e1.0]

代码

import numpy as np

# Tanh 激活函数定义
def tanh(x):
    return np.tanh(x)

# 假设的卷积层输出特征图
feature_map = np.array([[0.5, -0.6], [0.9, -1.0]])

# 应用 Tanh 激活函数
activated_feature_map = tanh(feature_map)

print("Tanh 激活后的特征图:\n", activated_feature_map)

4. Softmax 激活函数

Softmax 函数通常用于多分类神经网络的输出层。它将输入转换为概率分布。对于给定的类别集合,Softmax 的数学表达式为:

Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} Softmax(xi)=jexjexi

其中 ( x_i ) 是一个特定输出节点的输入,分母是所有输出节点输入的指数和。这确保了所有输出概率的总和为 1。

例子及推导过程

假设一个多分类问题的输出层得到以下得分:
scores = [ 2.0 , 1.0 , 0.1 ] \text{scores} = [2.0, 1.0, 0.1] scores=[2.0,1.0,0.1]

应用 Softmax 激活函数的计算过程是将这些得分通过 Softmax 函数转换。Softmax 函数的数学表达式是:
Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} Softmax(xi)=jexjexi

其中 ( x_i ) 是特定类别的得分,分母是所有类别得分的指数和。

因此,Softmax 激活后的概率分布为:
[ e 2.0 e 2.0 + e 1.0 + e 0.1 e 1.0 e 2.0 + e 1.0 + e 0.1 e 0.1 e 2.0 + e 1.0 + e 0.1 ] \begin{bmatrix} \frac{e^{2.0}}{e^{2.0} + e^{1.0} + e^{0.1}} & \frac{e^{1.0}}{e^{2.0} + e^{1.0} + e^{0.1}} & \frac{e^{0.1}}{e^{2.0} + e^{1.0} + e^{0.1}} \\ \end{bmatrix} [e2.0+e1.0+e0.1e2.0e2.0+e1.0+e0.1e1.0e2.0+e1.0+e0.1e0.1]

代码

import numpy as np

# Softmax 激活函数定义
def softmax(x):
    e_x = np.exp(x - np.max(x))  # 防止数值过大
    return e_x / e_x.sum()

# 多分类问题的输出层得分
scores = np.array([2.0, 1.0, 0.1])

# 应用 Softmax 激活函数
probabilities = softmax(scores)

print("Softmax 激活后的概率分布:", probabilities)

CNN 中的卷积层工作原理

卷积神经网络(CNN)中的卷积层主要用于特征提取。卷积操作涉及将卷积核(或滤波器)应用于输入数据。

卷积计算过程

考虑一个简单的例子,我们有一个 3x3 的输入矩阵和一个 2x2 的卷积核:

  • 输入矩阵:
    [ 1 2 3 4 5 6 7 8 9 ] \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{bmatrix} 147258369

  • 卷积核:
    [ − 1 0 0 1 ] \begin{bmatrix} -1 & 0 \\ 0 & 1 \\ \end{bmatrix} [1001]

卷积操作包括将卷积核滑动过输入矩阵的每个区域,并计算元素的点乘,然后将结果求和。

例如,卷积核覆盖输入矩阵左上角时的计算:
[ 1 2 4 5 ] ⊙ [ − 1 0 0 1 ] = 1 × ( − 1 ) + 2 × 0 + 4 × 0 + 5 × 1 = 4 \begin{bmatrix} 1 & 2 \\ 4 & 5 \\ \end{bmatrix} \odot \begin{bmatrix} -1 & 0 \\ 0 & 1 \\ \end{bmatrix} = 1 \times (-1) + 2 \times 0 + 4 \times 0 + 5 \times 1 = 4 [1425][1001]=1×(1)+2×0+4×0+5×1=4

这个过程在整个输入矩阵上重复进行,生成输出特征图。

卷积后的输出及 ReLU 应用

假设卷积操作的输出特征图为:
[ 4 3 2 1 ] \begin{bmatrix} 4 & 3 \\ 2 & 1 \\ \end{bmatrix} [4231]

应用 ReLU 激活函数的计算过程是将这个特征图中的每个元素与 0 比较,取较大者。ReLU 函数的数学表达式是 ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

因此,ReLU 激活后的特征图为:
[ max ⁡ ( 0 , 4 ) max ⁡ ( 0 , 3 ) max ⁡ ( 0 , 2 ) max ⁡ ( 0 , 1 ) ] \begin{bmatrix} \max(0, 4) & \max(0, 3) \\ \max(0, 2) & \max(0, 1) \\ \end{bmatrix} [max(0,4)max(0,2)max(0,3)max(0,1)]=
[ 4 3 2 1 ] \begin{bmatrix} 4 & 3 \\ 2 & 1 \\ \end{bmatrix} [4231]

在这个例子中,由于所有值都是正的,ReLU 激活后的特征图与原特征图相同。

  • 29
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h52013141

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值