美文网首页
【深度学习实践】03. 多层感知机

【深度学习实践】03. 多层感知机

作者: 砥砺前行的人 | 来源:发表于2022-01-21 17:15 被阅读0次

模型的复杂度决定了模型的拟合上限,这里的复杂度通常指模型的深度和每层的神经元的个数。当感知机隐藏层的个数大于等于1层时,则称为多层感知机。

前面我们介绍了线性模型,线性意味着单调假设: 任何特征的增大都会导致模型输出的增大(如果对应的权重为正), 或者导致模型输出的减小(如果对应的权重为负)。 有时这是有道理的。 例如,如果我们试图预测一个人是否会偿还贷款。 我们可以认为,在其他条件不变的情况下, 收入较高的申请人总是比收入较低的申请人更有可能偿还贷款。 但是,虽然收入与还款概率存在单调性,但它们不是线性相关的。 收入从0增加到5万,可能比从100万增加到105万带来更大的还款可能性。 处理这一问题的一种方法是对我们的数据进行预处理, 使线性变得更合理,如使用收入的对数作为我们的特征。然而我们可以很容易找出违反单调性的例子。 例如,我们想要根据体温预测死亡率。 对于体温高于37摄氏度的人来说,温度越高风险越大。 然而,对于体温低于37摄氏度的人来说,温度越高风险就越低。 在这种情况下,我们也可以通过一些巧妙的预处理来解决问题。 例如,我们可以使用与37摄氏度的距离作为特征。但是,如何对猫和狗的图像进行分类呢? 增加位置 (13,17) 处像素的强度是否总是增加(或降低)图像描绘狗的似然? 对线性模型的依赖对应于一个隐含的假设, 即区分猫和狗的唯一要求是评估单个像素的强度。 在一个倒置图像后依然保留类别的世界里,这种方法注定会失败。与我们前面的例子相比,这里的线性很荒谬, 而且我们难以通过简单的预处理来解决这个问题。 这是因为任何像素的重要性都以复杂的方式取决于该像素的上下文(周围像素的值)。

处理这种问题的方式是将原先感知机的模型增加隐藏层,并且引入非线性,这样模型能够处理更普遍的函数关系模型,而不仅仅是线性关系。


多层感知机

这个多层感知机有4个输入,3个输出,其隐藏层包含5个隐藏单元。 输入层不涉及任何计算,因此使用此网络产生输出只需要实现隐藏层和输出层的计算。 因此,这个多层感知机中的层数为2。 注意,这两个层都是全连接的。 每个输入都会影响隐藏层中的每个神经元, 而隐藏层中的每个神经元又会影响输出层中的每个神经元。

全连接层的参数数量很多

引入非线性

由于线性模型相加或者复合都为线性模型,所以如果仅仅是增加隐藏层,模型最后仍然是属于线性模型。证明如下:
\mathbf{O} = (\mathbf{X} \mathbf{W}^{(1)} + \mathbf{b}^{(1)})\mathbf{W}^{(2)} + \mathbf{b}^{(2)} = \mathbf{X} \mathbf{W}^{(1)}\mathbf{W}^{(2)} + \mathbf{b}^{(1)} \mathbf{W}^{(2)} + \mathbf{b}^{(2)} = \mathbf{X} \mathbf{W}+\mathbf{b}

所以,除了在隐藏层中添加额外的神经元意外,还需要在每个神经元后架设引入非线性的激活函数(activation function)\sigma。引入激活函数后,多层感知机则不会退化为线性模型:
\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}^{(1)} =\sigma_1(\mathbf{X} \mathbf{W}^{(1)} + \mathbf{b}^{(1)})\mathbf{H}^{(2)} = \sigma_2(\mathbf{H}^{(1)} \mathbf{W}^{(2)} + \mathbf{b}^{(2)}), 一层叠一层,从而产生更有表达能力的模型。

通用近似定理

多层感知机可以通过隐藏神经元,捕捉到输入之间复杂的相互作用, 这些神经元依赖于每个输入的值。 我们可以很容易地设计隐藏节点来执行任意计算。 例如,在一对输入上进行基本逻辑操作,多层感知机是通用近似器。 即使是网络只有一个隐藏层,给定足够的神经元和正确的权重, 我们可以对任意函数建模,尽管实际中学习该函数是很困难的。 你可能认为神经网络有点像C语言。 C语言和任何其他现代编程语言一样,能够表达任何可计算的程序。 但实际上,想出一个符合规范的程序才是最困难的部分。

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

激活函数

最受欢迎的激活函数是修正线性单元(Rectified linear unit,ReLU), 因为它实现简单,同时在各种预测任务中表现良好。 [ReLU提供了一种非常简单的非线性变换]。 给定元素x,ReLU函数被定义为该元素与0的最大值:
\operatorname{ReLU}(x) = \max(x, 0).

通俗地说,ReLU函数通过将相应的活性值设为0,仅保留正元素并丢弃所有负元素。 为了直观感受一下,我们可以画出函数的曲线图。 正如从图中所看到,激活函数是分段线性的。

Relu

使用ReLU的原因是,它求导表现得特别好:要么让参数消失,要么让参数通过。
这使得优化表现的更好,并且ReLU减轻了困扰以往神经网络的梯度消失问题(稍后将详细介绍)。

ReLU函数有许多变体,包括参数化ReLU 该变体为ReLU添加了一个线性项,因此即使参数是负的,某些信息仍然可以通过:
\operatorname{pReLU}(x) = \max(0, x) + \alpha \min(0, x).

pytorch 实现

import torch
from torch import nn
from d2l import torch as d2l

net = nn.Sequential(nn.Flatten(),
                    nn.Linear(784, 256),
                    nn.ReLU(),
                    nn.Linear(256, 10))

def init_weights(m):
    if type(m) == nn.Linear:
        nn.init.normal_(m.weight, std=0.01)

net.apply(init_weights);

batch_size, lr, num_epochs = 256, 0.1, 10
loss = nn.CrossEntropyLoss()
trainer = torch.optim.SGD(net.parameters(), lr=lr)

train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)

相关文章

  • 【深度学习实践】03. 多层感知机

    模型的复杂度决定了模型的拟合上限,这里的复杂度通常指模型的深度和每层的神经元的个数。当感知机隐藏层的个数大于等于1...

  • 反馈神经网络

    1、Reference 多层感知机MLP(机器学习5)多层感知机原理详解 & Python与R实现深度学习笔记——...

  • TensorFlow HOWTO 4.1 多层感知机(分类)

    4.1 多层感知机(分类) 这篇文章开始就是深度学习了。多层感知机的架构是这样: 输入层除了提供数据之外,不干任何...

  • 深度学习-多层感知机

    多层感知机 概念:多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变...

  • 深度学习:多层感知机

    @[toc] 多层感知机 multilayer perceptron 线性模型可能出错 线性模型的单调性并不是所有...

  • 一文理清深度学习前馈神经网络

    ? Index 多层感知机(MLP)介绍 深度神经网络的激活函数 深度神经网络的损失函数 多层感知机的反向传播算法...

  • TensorFlow 深度学习基本概念

    1. 深度学习 特性: 多层:单层神经网络其实就是感知机(1958年由Frank Rosenblatt提出),感知...

  • ML4 - 深度学习 Deep Learning

    6. Deep Learning 简介 最先开始的是感知机,然后是多层感知机,深度学习其实就是多加了隐藏层。 全连...

  • 深度学习-1

    深度学习基础 介绍单层神经网络:线性回归和softmax回归多层神经网络:多层感知机 1.线性回归 例如房价预测,...

  • 动手学深度学习(三) 多层感知机

    多层感知机 多层感知机的基本知识 使用多层感知机图像分类的从零开始的实现 使用pytorch的简洁实现 多层感知机...

网友评论

      本文标题:【深度学习实践】03. 多层感知机

      本文链接:https://www.haomeiwen.com/subject/dnqshrtx.html