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

多层感知机

多层感知机是一种简单的神经网络,包含输入层、隐藏层以及输出层。如下图所示。
动手学深度学习——多层感知机_第1张图片

多层感知机的计算过程

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

激活函数

神经网络的最大特点之一是能够拟合数据之间的非线性关系,其关键在于激活函数的使用。激活函数主要包括ReLU函数Sigmoid函数tanh函数
(1)ReLU函数
R e L U ( x ) = m a x ( x , 0 ) \\ReLU(x) = max(x,0) ReLU(x)=max(x,0)
ReLU函数只保留正数元素,并将负数元素清零。其函数图像为:动手学深度学习——多层感知机_第2张图片
ReLU函数求导:
动手学深度学习——多层感知机_第3张图片
(2)Sigmoid函数
Sigmoid函数可以将元素的值变换到0和1之间。
s i g m o i d ( x ) = 1 / ( 1 + e x p ( − x ) ) \\sigmoid(x) = 1/(1+exp(-x)) sigmoid(x)=1/(1+exp(x))
动手学深度学习——多层感知机_第4张图片
sigmoid函数求导:
动手学深度学习——多层感知机_第5张图片
(3)tanh函数
tanh函数是将元素值变换到-1和1之间:
t a n h ( x ) = ( 1 − e x p ( − 2 x ) ) / ( 1 + e x p ( − 2 x ) ) \\tanh(x) = (1-exp(-2x))/(1+exp(-2x)) tanh(x)=(1exp(2x))/(1+exp(2x))
动手学深度学习——多层感知机_第6张图片
tanh函数求导:
动手学深度学习——多层感知机_第7张图片
(4)三种激活函数的选择

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

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

你可能感兴趣的:(书籍阅读)