动手学深度学习——多层感知机

对着背影说爱祢 提交于 2020-02-15 10:35:21

多层感知机

多层感知机是一种简单的神经网络,包含输入层、隐藏层以及输出层。如下图所示。
在这里插入图片描述

多层感知机的计算过程

输入层为小批量样本XRn×d\boldsymbol{X} \in \mathbb{R}^{n \times d},批量大小为nn,输入个数为dd。上述图的多层感知机为单隐藏层,隐藏层输出为HHHRn×h\boldsymbol{H} \in \mathbb{R}^{n \times h}hh为隐藏层单元个数。网络各层之间全连接,设隐藏层的权重参数和偏差参数分别为WhRd×h\boldsymbol{W}_{h} \in \mathbb{R}^{d \times h}bhR1×h\boldsymbol{b}_{h} \in \mathbb{R}^{1 \times h}。输出层的权重和偏差参数分别为WoRh×q\boldsymbol{W}_{o} \in \mathbb{R}^{h \times q}boR1×h\boldsymbol{b}_{o} \in \mathbb{R}^{1 \times h}
多层感知机的输出为:
O=(XWh+bh)Wo+bo \boldsymbol{O}=(\boldsymbol{X}\boldsymbol{W}_{h}+\boldsymbol{b}_{h})\boldsymbol{W}_{o}+\boldsymbol{b}_{o}

激活函数

神经网络的最大特点之一是能够拟合数据之间的非线性关系,其关键在于激活函数的使用。激活函数主要包括ReLU函数Sigmoid函数tanh函数
(1)ReLU函数
ReLU(x)=max(x,0) \\ReLU(x) = max(x,0)
ReLU函数只保留正数元素,并将负数元素清零。其函数图像为:在这里插入图片描述
ReLU函数求导:
在这里插入图片描述
(2)Sigmoid函数
Sigmoid函数可以将元素的值变换到0和1之间。
sigmoid(x)=1/(1+exp(x)) \\sigmoid(x) = 1/(1+exp(-x))
在这里插入图片描述
sigmoid函数求导:
在这里插入图片描述
(3)tanh函数
tanh函数是将元素值变换到-1和1之间:
tanh(x)=(1exp(2x))/(1+exp(2x)) \\tanh(x) = (1-exp(-2x))/(1+exp(-2x))
在这里插入图片描述
tanh函数求导:
在这里插入图片描述
(4)三种激活函数的选择

  • 用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。
  • 在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。
  • 在选择激活函数的时候可以先选用ReLu函数如果效果不理想可以尝试其他激活函数。

注:以上资源来源于伯禹平台《动手学深度学习》的学习笔记

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!