本文共 2684 字,大约阅读时间需要 8 分钟。
深度学习的核心原理在于人工神经网络中的信号传递机制。一个神经元的输出会经过非线性激活函数处理,再传递给下一层神经元,这种非线性叠加机制使得神经网络具备了抓取复杂模式的能力。因此,激活函数在深度学习中占据了重要地位。
选择激活函数的关键在于其优化能力,而非是否能模拟真实的生物神经元。
Sigmoid 函数是最常用且在最早期被广泛应用的激活函数之一。
函数形式:
$$σ(x) = \frac{1}{1 + e^{-x}}$$优点(Pros):
缺点(Cons):
适用场景:
适用于输出层,尤其是二分类任务等。tanh 函数是一个双曲函数,常用于解决 Sigmoid 的问题。
函数形式:
$$tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}$$优点(Pros):
缺点(Cons):
适用场景:
常用于 NVIDIA 的深度学习框架中,如自然语言处理和语音识别任务。ReLU 是当前最流行的激活函数之一。
函数形式:
$$ReLU(x) = max(0, x)$$优点(Pros):
缺点(Cons):
适用场景:
广泛应用于隐藏层和迭代模型(如 LSTMs)中。为了解决 Dead ReLU 问题,Leaky ReLU 将 ReLU 的前半段从 0 设为一个缓慢下降的线性函数。
函数形式:
$$f(x) = max(0.01x, x)$$优点(Pros):
缺点(Cons):
适用场景:
与 ReLU 类似,适用于特定任务。ELU 函数(Exponential Linear Units)结合了 ReLU 和 sigmoid 的优势。
函数形式:
$$f(x) = \begin{cases}x, & \text{if } x > 0 \\alpha(e^x - 1), & \text{otherwise}\end{cases}$$优点(Pros):
缺点(Cons):
适用场景:
适用于需要加速训练的任务。MaxOut 函数不仅仅是一个传统的激活函数,而是一种全新的非线性激活机制。
函数形式:
$$f(x) = max(\mathbf{w}_1 \mathbf{x} + \mathbf{b}_1, \mathbf{w}_2 \mathbf{x} + \mathbf{b}_2)$$优点(Pros):
缺点(Cons):
1.神经元数量和参数信息翻倍,导致优化困难。适用场景:
多用于隐藏层。0-1 损失函数是二分类任务中最简单的损失函数之一。
函数形式:
$$L(Y, f(x)) = \begin{cases}1, & Y \neq f(x) \0, & Y = f(x)\end{cases}$$特点:
它直接反映分类错误的个数,但其非凸性不适合大多数深度学习任务。绝对值损失函数常用于回归任务。
函数形式:
$$L(Y, f(x)) = |Y - f(x)|$$特点:
简单且鲁棒,适合数据分布不确定的场景。log 损失函数基于对数似然原理,广泛应用于二分类和多分类任务。
函数形式:
$$L(Y, P(Y|X)) = -\ln P(Y|X)$$特点:
平方损失函数是最常见的回归损失函数。
函数形式:
$$L(Y|f(X)) = \sum_{N} (Y - f(X))^2$$特点:
经常用于回归任务,计算简单但在神经网络中较少使用。指数损失函数是一种.size:20 widely used in AdaBoost算法.
函数形式:
$$L(Y|f(X)) = \exp(-y f(x))$$特点:
对离群值敏感,应用场景较为局限。Hinge 损失函数最初由 SVM 引入,广泛应用于分类任务。
函数形式:
$$L(y, f(x)) = \max(0, 1 - y f(x))$$特点:
感知损失函数是 Hinge 损失函数的变种,适用于特定分类任务。
函数形式:
$$L(y, f(x)) = \max(0, 1 - f(x))$$特点:
感知损失函数不关心类别边界的具体位置,模型的泛化能力较强。交叉熵损失函数是深度学习中最常用的损失函数之一。
函数形式:
$$\mathcal{C} = -\frac{1}{n}\sum_x [y \ln a + (1 - y) \ln (1 - a)]$$特点:
激活函数和损失函数是深度学习中核心组件,选择适合任务的激活函数和损失函数对模型性能至关重要。随着时间推移,不同类型的激活函数和损失函数不断演变,研究人员们在优化计算效率和模型表现方面取得了显著进展。
转载地址:http://meaez.baihongyu.com/