深度学习学习笔记(3)多层感知机

多层感知机

现实世界里的规律不总是线性或单调的。

我们可以通过在网络中加入一个或多个隐藏层来克服线性模型的限制, 使其能处理更普遍的函数关系类型。

\begin{split}\begin{aligned} \mathbf{H} & = \mathbf{X} \mathbf{W}^{(1)} + \mathbf{b}^{(1)}, \\ \mathbf{O} & = \mathbf{H}\mathbf{W}^{(2)} + \mathbf{b}^{(2)}. \end{aligned}\end{split}

然而由于仿射函数的仿射函数还是仿射函数,以上模型实际上等价于线性回归模型。为了发挥多层架构的潜力, 我们还需要在仿射变换之后对每个隐藏单元应用非线性的激活函数:

\begin{split}\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}\end{split}

为了构建更通用的多层感知机, 我们可以继续堆叠更多的隐藏层。

虽然一个单隐藏层网络能学习任何函数, 但并不意味着我们应该尝试使用单隐藏层网络来解决所有问题。 事实上,通过使用更深(而不是更广)的网络,我们可以更容易地逼近许多函数。

常见的激活函数:
ReLU\operatorname{ReLU} 函数让参数通过或消失:

ReLU(x)=max(x,0).\operatorname{ReLU}(x) = \max(x, 0).

sigmoid\operatorname{sigmoid} 函数将范围 (,)(-\infty, \infty)中的任意输入压缩到区间 (0,1)(0, 1) 中:

sigmoid(x)=11+exp(x).\operatorname{sigmoid}(x) = \frac{1}{1 + \exp(-x)}.

还有 tanh\tanh 函数等。