📅  最后修改于: 2023-12-03 14:56:32.244000             🧑  作者: Mango
在神经网络中,激活函数在处理前向传播时扮演着非常重要的角色。在第一套装中,我们已经了解了几种基本的激活函数,包括 sigmoid、ReLU 和 tanh 等。在本套装中,我们将继续介绍一些常用的激活函数。
LeakyReLU(泄漏线性整流单元)是一个修正版的 ReLU,它的公式如下:
$$f(x) = max(\alpha x, x)$$
其中 $\alpha$ 是个小于1的数,通常为 0.01。相比于 ReLU,LeakyReLU 在 $x < 0$ 的时候,输出的值不为零,这样能够一定程度上防止神经元“死亡”,提高模型的稳定性。
在 PyTorch 中,可以这样实现:
import torch.nn as nn
class LeakyReLU(nn.Module):
def __init__(self, alpha=0.01):
super().__init__()
self.alpha = alpha
def forward(self, x):
return nn.functional.leaky_relu(x, negative_slope=self.alpha)
ELU(指数线性单元)是另一个修正版的 ReLU,其公式如下:
$$f(x) = \begin{cases} x, & \text{if } x \geq 0 \ \alpha (e^x -1), & \text{if } x < 0 \end{cases} $$
其中 $\alpha$ 是一个常数,通常为 1。相比于 ReLU,ELU 在 $x < 0$ 的时候,输出的值不为零,但不是一个固定的值,而是一个指数函数,这样能够一定程度上防止神经元“死亡”,提高模型的稳定性。
在 PyTorch 中,可以这样实现:
import torch.nn as nn
class ELU(nn.Module):
def __init__(self, alpha=1.0):
super().__init__()
self.alpha = alpha
def forward(self, x):
return nn.functional.elu(x, alpha=self.alpha)
Softmax 函数常用于多分类问题中,其公式如下:
$$f(x_i) = \frac{e^{x_i}}{\sum_{j=1}^ke^{x_j}}$$
其中 $k$ 是类别数。
Softmax 函数的作用是将输入的 $k$ 个数映射到一个概率分布上,每个数对应一个类别的概率值,且满足所有概率值的和为 1。
在 PyTorch 中,可以这样实现:
import torch.nn as nn
class Softmax(nn.Module):
def __init__(self, dim=-1):
super().__init__()
self.dim = dim
def forward(self, x):
return nn.functional.softmax(x, dim=self.dim)
本套装中,我们介绍了 LeakyReLU、ELU 和 Softmax 三种激活函数,它们分别可以用于提高模型的稳定性、防止神经元“死亡”和多分类问题中输出概率分布。在实际使用中,需要根据具体的问题和数据集选择合适的激活函数,以提高模型的性能。