深度学习中的多层感知机:结构与激活函数详解
深度学习中的多层感知机:结构与激活函数详解
多层感知机(MLP)是深度学习中一种基础且重要的神经网络模型。它通过在输入层和输出层之间添加一个或多个隐藏层,克服了传统线性模型的局限性,能够处理更复杂的函数关系。本文将详细介绍MLP的结构、隐藏层的作用以及常用的激活函数。
为什么需要隐藏层?
在深度学习中,线性模型(如仿射变换)虽然简单,但其线性假设往往过于严格。例如,在预测贷款偿还概率时,收入与还款概率之间并非简单的线性关系;在根据体温预测死亡率时,温度与风险之间的关系更是非单调的。这些例子表明,现实世界中的许多问题都涉及复杂的非线性关系。
为了解决线性模型的局限性,我们可以在网络中加入一个或多个隐藏层。隐藏层通过引入非线性变换,使模型能够捕捉输入特征之间的复杂交互作用。这种架构通常被称为多层感知机(MLP)。
多层感知机的结构
一个多层感知机的基本结构如下图所示:
- 输入层:接收原始数据输入。
- 隐藏层:包含多个神经元,每个神经元都与前一层的所有神经元相连。隐藏层负责学习数据的抽象表示。
- 输出层:产生最终的预测结果。
在数学上,一个多层感知机可以表示为:
$$
\begin{aligned}
\mathbf{H} & = \sigma(\mathbf{X} \mathbf{W}^{(1)} + \mathbf{b}^{(1)}), \
\mathbf{O} & = \mathbf{H}\mathbf{W}^{(2)} + \mathbf{b}^{(2)}.
\end{aligned}
$$
其中,$\mathbf{H}$是隐藏层的输出,$\sigma$是非线性激活函数,$\mathbf{W}^{(1)}$和$\mathbf{W}^{(2)}$分别是隐藏层和输出层的权重矩阵,$\mathbf{b}^{(1)}$和$\mathbf{b}^{(2)}$是偏置项。
激活函数
激活函数是深度学习中的关键组件,它决定了神经元是否应该被激活。常见的激活函数包括ReLU、sigmoid和tanh。
ReLU函数
ReLU(修正线性单元)是最受欢迎的激活函数之一,其定义为:
$$
\operatorname{ReLU}(x) = \max(x, 0)
$$
ReLU函数简单直观,当输入为负时输出为0,当输入为正时输出等于输入值。这种非线性变换使得模型能够学习到更复杂的特征。
Sigmoid函数
Sigmoid函数将输入映射到(0, 1)区间,常用于二分类问题的输出层。其定义为:
$$
\operatorname{sigmoid}(x) = \frac{1}{1 + \exp(-x)}
$$
Sigmoid函数在早期神经网络中广泛使用,但现在更多地被ReLU取代,因为ReLU在训练过程中表现更好。
Tanh函数
Tanh函数与Sigmoid类似,但将输入映射到(-1, 1)区间。其定义为:
$$
\operatorname{tanh}(x) = \frac{1 - \exp(-2x)}{1 + \exp(-2x)}
$$
Tanh函数在0附近接近线性,且关于原点对称,这使得它在某些场景下比Sigmoid更受欢迎。
总结
多层感知机通过引入隐藏层和非线性激活函数,能够处理复杂的非线性关系,是深度学习中的基础模型。选择合适的激活函数对于模型的性能至关重要,ReLU由于其简单性和有效性,已成为目前最常用的激活函数之一。