我们可以通过在网络中加入一个或多个隐藏层来克服线性模型的限制, 使其能处理更普遍的函数关系类型。 要做到这一点,最简单的方法是将许多全连接层堆叠在一起。 每一层都输出到上面的层,直到生成最后的输出。 我们可以把前 −1 层看作表示,把最后一层看作线性预测器。 这种架构通常称为多层感知机(multilayer perceptron),通常缩写为MLP。
多层感知机在输出层和输入层之间增加一个或多个全连接隐藏层,并通过激活函数转换隐藏层的输出。
为了发挥多层架构的潜力, 我们还需要一个额外的关键要素: 在仿射变换之后对每个隐藏单元应用非线性的激活函数(activation function) 。 激活函数的输出(例如, (⋅) )被称为活性值(activations)。 一般来说,有了激活函数,就不可能再将我们的多层感知机退化成线性模型。
给定元素 ,ReLU函数被定义为该元素与 0 的最大值ReLU()=max(,0)。
通俗来讲,就是将所有负元素变为0,保留所有正元素。
对于一个定义域在 ℝ 中的输入, sigmoid函数将输入变换为区间(0, 1)上的输出。
sigmoid()=1/[1+exp(−)]。
当输入接近0时,sigmoid函数接近线性变换。
tanh(双曲正切)函数也能将其输入压缩转换到区间(-1, 1)上。
tanh ( x ) = 1 − exp ( − 2 x ) 1 + exp ( − 2 x ) \operatorname{tanh}(x) = \frac{1 - \exp(-2x)}{1 + \exp(-2x)} tanh(x)=1+exp(−2x)1−exp(−2x)