做百科权威网站有哪些,北京快速网站建设,怎么建设vip电影网站,wordpress aliuyun文章目录 激活函数1. Sigmoid 激活函数例子及推导过程代码 2. ReLU 激活函数例子及推导过程 3. Tanh 激活函数例子及推导过程代码 4. Softmax 激活函数例子及推导过程代码 CNN 中的卷积层工作原理卷积计算过程卷积后的输出及 ReLU 应用 激活函数
激活函数在神经网络中扮演着至… 文章目录 激活函数1. Sigmoid 激活函数例子及推导过程代码 2. ReLU 激活函数例子及推导过程 3. Tanh 激活函数例子及推导过程代码 4. Softmax 激活函数例子及推导过程代码 CNN 中的卷积层工作原理卷积计算过程卷积后的输出及 ReLU 应用 激活函数
激活函数在神经网络中扮演着至关重要的角色主要用于引入非线性使神经网络能够学习和表示复杂数据如图像、声音、文本等。以下是几种常见的激活函数及其数学表达式。
1. Sigmoid 激活函数
Sigmoid 函数是一个经典的激活函数通常用于二分类问题中。它的数学表达式为 σ ( x ) 1 1 e − x \sigma(x) \frac{1}{1 e^{-x}} σ(x)1e−x1
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.2−0.9−1.1]
应用 Sigmoid 激活函数的计算过程是将这个特征图中的每个元素通过 Sigmoid 函数转换。Sigmoid 函数的数学表达式是 σ ( x ) 1 1 e − x \sigma(x) \frac{1}{1 e^{-x}} σ(x)1e−x1。
因此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} [1e−0.811e−1.211e0.911e1.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 激活函数
ReLURectified 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 zw1×x1w2×x2w3×x3b 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 z0.4×1.00.3×(−2.0)0.5×3.0−0.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)exe−xex−e−x
Tanh 函数的输出是零中心的这使得在某些情况下它比 Sigmoid 函数表现更好。
例子及推导过程
假设卷积操作的输出特征图为 [ 0.5 − 0.6 0.9 − 1.0 ] \begin{bmatrix} 0.5 -0.6 \\ 0.9 -1.0 \\ \end{bmatrix} [0.50.9−0.6−1.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)exe−xex−e−x。
因此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.5e−0.5e0.5−e−0.5e0.9e−0.9e0.9−e−0.9e−0.6e0.6e−0.6−e0.6e−1.0e1.0e−1.0−e1.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.0e1.0e0.1e2.0e2.0e1.0e0.1e1.0e2.0e1.0e0.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×04×05×14
这个过程在整个输入矩阵上重复进行生成输出特征图。
卷积后的输出及 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 激活后的特征图与原特征图相同。