前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【动手学深度学习笔记】之多层感知机(MLP)

【动手学深度学习笔记】之多层感知机(MLP)

作者头像
树枝990
发布2020-08-20 07:51:18
1.3K0
发布2020-08-20 07:51:18
举报
文章被收录于专栏:拇指笔记拇指笔记

1. 多层感知机

本节将以多层感知机为例,介绍多层神经网络的概念。

1.1 隐藏层

下图为一个多层感知机的神经网络图。

多层感知机在单层神经网络的基础上引入了一到多个隐藏层(hidden layer)。如图所示的隐藏层一共有5个隐藏单元。由于输入层不涉及计算,因此这个多层感知机的层数为2。如图所示的多层感知机中的隐藏层和输出层都是全连接层。

对于一个只有一个隐藏层且隐藏单元个数为h的多层感知机,记它的输出为H。因为这个多层感知机中的隐藏层和输出层都是全连接层,所以可以设:隐藏层的权重参数和偏差参数分别为和,输出层的权重参数和偏差参数分别为和

由此我们可以得到单隐藏层神经网络输入、隐藏层输出和输出之间的关系

将两个式子联立起来,得到输入与输出之间的关系。

由上式不难看出,这样的神经网络虽然引入了(一个或多个)隐藏层,却依然等价于一个单层神经网络。引起该问题的根源是全连接层,全连接层只是对数据进行仿射变换,而多个仿射变换叠加仍然为一个仿射变换。为了解决这样的问题,引入了非线性变换,即激活函数。

1.2 激活函数

非线性函数是指对隐藏变量使用暗元素运算的非线性函数进行变换,然后再做为下一个全连接层输入。这个非线性函数叫做激活函数。

下面介绍几种常用的激活函数。

1.2.1 ReLU函数(线性整流函数)

ReLU函数

  • 功能:ReLU函数只保留正数元素,并将负数元素清零。
  • 定义:
  • 函数图像和导数图像:
  • 绘制程序
代码语言:javascript
复制
%matplotlib inlineimport torchimport numpy as npimport matplotlib.pylab as plt
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)y = x.relu()
y.sum().backward()z = x.grad
x = x.detach().numpy()y = y.detach().numpy()plt.ylim(ymin=-1,ymax=7)plt.plot(x, y)plt.xlabel('x')plt.ylabel('ReLU(x)')
plt.figure(2)
plt.ylim(ymin=-0.05,ymax=1.05)plt.xlim(xmin=-8,xmax=8)plt.plot(x,z)plt.xlabel('x')plt.ylabel('grad of ReLU(x)')

1.2.2 sigmoid函数(S型函数)

sigmoid函数

  • 功能:sigmoid函数可以将元素的值变换到0和1之间。
  • 定义:
  • 函数图像和导数图像:
  • 绘制程序
代码语言:javascript
复制
%matplotlib inlineimport torchimport numpy as npimport matplotlib.pylab as plt
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)y = x.sigmoid()
y.sum().backward()z = x.grad
x = x.detach().numpy()y = y.detach().numpy()plt.ylim(ymin=-0.1,ymax=1.1)plt.plot(x, y)plt.xlabel('x')plt.ylabel('sigmoid(x)')
plt.figure(2)plt.ylim(ymin=-0.05,ymax=0.3)plt.xlim(xmin=-8,xmax=8)plt.plot(x,z)plt.xlabel('x')plt.ylabel('grad of sigmoid(x)')

1.2.3 tanh函数(双曲正切函数)

tanh函数

  • 功能:可以将元素的值变换到-1和1之间
  • 定义:
  • 函数图像和导数图像
  • 绘制程序
代码语言:javascript
复制
%matplotlib inlineimport torchimport numpy as npimport matplotlib.pylab as plt
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)y = x.tanh()
y.sum().backward()z = x.grad
x = x.detach().numpy()y = y.detach().numpy()plt.ylim(ymin=-1.1,ymax=1.1)plt.plot(x, y)plt.xlabel('x')plt.ylabel('tanh(x)')
plt.figure(2)plt.ylim(ymin=-0.05,ymax=1.1)plt.xlim(xmin=-8,xmax=8)plt.plot(x,z)plt.xlabel('x')plt.ylabel('grad of tanh(x)')

1.3 多层感知机(MLP)

多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换 。多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。

式中表示激活函数,通过对输出层进行操作,我们可以将多层感知机和之前的线性回归模型及softmax回归模型相结合。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拇指笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 隐藏层
  • 1.2 激活函数
    • 1.2.1 ReLU函数(线性整流函数)
      • 1.2.2 sigmoid函数(S型函数)
        • 1.2.3 tanh函数(双曲正切函数)
        • 1.3 多层感知机(MLP)
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档