面试模拟场景
面试官: 你能列举一些常见的激活函数并推导其导数吗?
1. Sigmoid 函数
定义:
- Sigmoid 函数将输入映射到
(
0
,
1
)
(0, 1)
(0,1) 区间,常用于输出层进行二分类任务。
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
导数推导: - 对 Sigmoid 函数求导:
d σ ( x ) d x = d d x ( 1 1 + e − x ) \frac{d\sigma(x)}{dx} = \frac{d}{dx} \left(\frac{1}{1 + e^{-x}}\right) dxdσ(x)=dxd(1+e−x1)
通过链式法则,首先求 e − x e^{-x} e−x 对 x x x 的导数:
d d x ( 1 + e − x ) = − e − x \frac{d}{dx}(1 + e^{-x}) = -e^{-x} dxd(1+e−x)=−e−x
然后对整个函数求导:
d σ ( x ) d x = − ( − e − x ) ( 1 + e − x ) 2 = e − x ( 1 + e − x ) 2 \frac{d\sigma(x)}{dx} = \frac{-(-e^{-x})}{(1 + e^{-x})^2} = \frac{e^{-x}}{(1 + e^{-x})^2} dxdσ(x)=(1+e−x)2−(−e−x)=(1+e−x)2e−x
使用 Sigmoid 函数的定义:
d σ ( x ) d x = σ ( x ) ( 1 − σ ( x ) ) \frac{d\sigma(x)}{dx} = \sigma(x)(1 - \sigma(x)) dxdσ(x)=σ(x)(1−σ(x))
解释: - Sigmoid 函数的导数也是一个 Sigmoid 函数的函数,最大值出现在 x = 0 x = 0 x=0 处,值为 1 4 \frac{1}{4} 41。
2. Tanh 函数
定义:
- Tanh 函数是 Sigmoid 函数的缩放和平移版本,将输入映射到
(
−
1
,
1
)
(-1, 1)
(−1,1) 区间,通常用于隐藏层激活。
tanh ( x ) = e x − e − x e x + e − x \text{tanh}(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=ex+e−xex−e−x
导数推导: - 对 Tanh 函数求导:
d d x tanh ( x ) = d d x ( e x − e − x e x + e − x ) \frac{d}{dx}\text{tanh}(x) = \frac{d}{dx}\left(\frac{e^x - e^{-x}}{e^x + e^{-x}}\right) dxdtanh(x)=dxd(ex+e−xex−e−x)
使用商的导数法则:
d d x tanh ( x ) = ( e x + e − x ) ( e x + e − x ) − ( e x − e − x ) ( e x − e − x ) ( e x + e − x ) 2 \frac{d}{dx}\text{tanh}(x) = \frac{(e^x + e^{-x})(e^x + e^{-x}) - (e^x - e^{-x})(e^x - e^{-x})}{(e^x + e^{-x})^2} dxdtanh(x)=(ex+e−x)2(ex+e−x)(ex+e−x)−(ex−e−x)(ex−e−x)
简化得:
d d x tanh ( x ) = 4 e 2 x ( e x + e − x ) 2 = 1 − tanh 2 ( x ) \frac{d}{dx}\text{tanh}(x) = \frac{4e^{2x}}{(e^x + e^{-x})^2} = 1 - \text{tanh}^2(x) dxdtanh(x)=(ex+e−x)24e2x=1−tanh2(x)
解释: - Tanh 函数的导数可以表示为 1 − tanh 2 ( x ) 1 - \text{tanh}^2(x) 1−tanh2(x),它在 x = 0 x = 0 x=0 处取最大值1。
3. ReLU(Rectified Linear Unit)函数
定义:
- ReLU 是目前最常用的激活函数之一,将输入大于零的部分保留,小于零的部分截断为零。
ReLU ( x ) = max ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)
导数推导: - ReLU 函数的导数是分段函数:
d d x ReLU ( x ) = { 1 x > 0 0 x ≤ 0 \frac{d}{dx}\text{ReLU}(x) = \begin{cases} 1 & x > 0 \\ 0 & x \leq 0 \end{cases} dxdReLU(x)={10x>0x≤0
解释: - ReLU 的导数在 x > 0 x > 0 x>0 时为1,在 x ≤ 0 x \leq 0 x≤0 时为0。这使得 ReLU 函数在正向传播中保持非线性,而在反向传播中仍然保持计算的简便性。
4. Leaky ReLU 函数
定义:
- Leaky ReLU 是 ReLU 的变种,允许小于零的部分也有一个很小的斜率(通常为0.01),以避免 ReLU 的“死亡神经元”问题。
Leaky ReLU ( x ) = { x x > 0 α x x ≤ 0 \text{Leaky ReLU}(x) = \begin{cases} x & x > 0 \\ \alpha x & x \leq 0 \end{cases} Leaky ReLU(x)={xαxx>0x≤0
其中, α \alpha α 是一个很小的正数。
导数推导:
- Leaky ReLU 函数的导数也是分段函数:
d d x Leaky ReLU ( x ) = { 1 x > 0 α x ≤ 0 \frac{d}{dx}\text{Leaky ReLU}(x) = \begin{cases} 1 & x > 0 \\ \alpha & x \leq 0 \end{cases} dxdLeaky ReLU(x)={1αx>0x≤0
解释: - Leaky ReLU 的导数在 x > 0 x > 0 x>0 时为1,在 x ≤ 0 x \leq 0 x≤0 时为 α \alpha α,避免了 ReLU 的零梯度问题。
5. Softmax 函数
定义:
- Softmax 函数常用于多分类问题的输出层,将输入向量转换为概率分布。对于输入向量
z
=
[
z
1
,
z
2
,
…
,
z
n
]
z = [z_1, z_2, \dots, z_n]
z=[z1,z2,…,zn],Softmax 函数定义为:
Softmax ( z i ) = e z i ∑ j = 1 n e z j \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} Softmax(zi)=∑j=1nezjezi
导数推导: - 由于涉及多个变量,Softmax 函数的导数比较复杂,对于 Softmax 输出
y
i
y_i
yi 和输入
z
j
z_j
zj,导数为:
∂ y i ∂ z j = y i ( δ i j − y j ) \frac{\partial y_i}{\partial z_j} = y_i (\delta_{ij} - y_j) ∂zj∂yi=yi(δij−yj)
其中, δ i j \delta_{ij} δij 是Kronecker delta,即当 i = j i = j i=j 时, δ i j = 1 \delta_{ij} = 1 δij=1;否则 δ i j = 0 \delta_{ij} = 0 δij=0。
解释:
- Softmax 函数的导数表示每个输出与输入之间的关系,在反向传播中广泛用于计算梯度。
总结
- Sigmoid 函数: σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1,导数为 σ ( x ) ( 1 − σ ( x ) ) \sigma(x)(1 - \sigma(x)) σ(x)(1−σ(x))。
- Tanh 函数: tanh ( x ) = e x − e − x e x + e − x \text{tanh}(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=ex+e−xex−e−x,导数为 1 − tanh 2 ( x ) 1 - \text{tanh}^2(x) 1−tanh2(x)。
- ReLU 函数: ReLU ( x ) = max ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x),导数为 1 1 1 (当 x > 0 x > 0 x>0 时),否则为 0 0 0。
- Leaky ReLU 函数: Leaky ReLU ( x ) = max ( α x , x ) \text{Leaky ReLU}(x) = \max(\alpha x, x) Leaky ReLU(x)=max(αx,x),导数为 1 1 1(当 x > 0 x > 0 x>0 时),否则为 α \alpha α。
- Softmax 函数: Softmax ( z i ) = e z i ∑ j e z j \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j} e^{z_j}} Softmax(zi)=∑jezjezi,导数为 y i ( δ i j − y j ) y_i (\delta_{ij} - y_j) yi(δij−yj)。