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

多层感知机

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

多层感知机的计算过程

输入层为小批量样本 X R n × d \boldsymbol{X} \in \mathbb{R}^{n \times d} ,批量大小为 n n ,输入个数为 d d 。上述图的多层感知机为单隐藏层,隐藏层输出为 H H H R n × h \boldsymbol{H} \in \mathbb{R}^{n \times h} h h 为隐藏层单元个数。网络各层之间全连接,设隐藏层的权重参数和偏差参数分别为 W h R d × h \boldsymbol{W}_{h} \in \mathbb{R}^{d \times h} b h R 1 × h \boldsymbol{b}_{h} \in \mathbb{R}^{1 \times h} 。输出层的权重和偏差参数分别为 W o R h × q \boldsymbol{W}_{o} \in \mathbb{R}^{h \times q} b o R 1 × h \boldsymbol{b}_{o} \in \mathbb{R}^{1 \times 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}

激活函数

神经网络的最大特点之一是能够拟合数据之间的非线性关系,其关键在于激活函数的使用。激活函数主要包括ReLU函数Sigmoid函数tanh函数
(1)ReLU函数
R e L U ( x ) = m a x ( x , 0 ) \\ReLU(x) = max(x,0)
ReLU函数只保留正数元素,并将负数元素清零。其函数图像为:在这里插入图片描述
ReLU函数求导:
在这里插入图片描述
(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函数求导:
在这里插入图片描述
(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函数求导:
在这里插入图片描述
(4)三种激活函数的选择

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

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

发布了19 篇原创文章 · 获赞 17 · 访问量 1466

猜你喜欢

转载自blog.csdn.net/weixin_43839651/article/details/104316663
今日推荐