《深度学习入门》第5期-从感知机到神经网络-码农解书
前两期的节目介绍了感知机的内容,本期节目将开始解读《深度学习入门》这本书的第3章神经网络的内容,将从感知机迈入神经网络的世界,重点介绍感知机与神经网络的区别。
这里需要说明的是,这本书中,在使用“感知机”一词时,没有严格统一它所指的算法。一般而言,“朴素感知机”是指单层网络,指的是**函数使用了阶跃函数(后述)的模型。“多层感知机”是指神经网络,即使用sigmoid函数(后述)等平滑的**函数的多层网络。
感知机与神经网络有很多共同点,为了引出对神经网络的介绍,这里主要介绍二者的区别。首先给出结论,然后再给出解释说明。
感知机与神经网络的区别
1. 从构建的角度来看:二者确定参数的方式不同
- 对于感知机而言,设定参数的工作,即确定合适的、能符合预期的输入与输出的参数,是由人工进行的;
- 对于神经网络而言,自动地从数据中学习到合适的参数。
在这本书第2章感知机的介绍中,我们结合与门、与非门、或门的真值表人工决定了合适的参数。关于神经网络如何自动学习合适的参数,将会在后面的章节中介绍。
2. 从实现的角度来看:二者所使用的**函数不同:
- 感知机中使用了阶跃函数作为**函数;
- 神经网络中使用了sigmoid函数、ReLU函数等作为**函数。
下面我们就来看一下什么是**函数。
**函数
首先从感知机的**函数说起。
1. 感知机公式第1版:
我们先来回顾一下感知机的公式表示:
2. 感知机公式第2版:
我们引入一个新的函数,那么感知机就可以表示为如下形式:
3. **函数登场:
刚刚登场的这个函数就是**函数,它所起到的作用是,将输入信号的总和转化为输出信号。为了能更清楚地表示**函数的作用,我们对其进行进一步地改写:
这样修改以后,就表示加权输入信号和偏置的总和,然后用函数将转化为输出。
我们可以使用图形来明确地显示**函数的计算过程:
最右侧表示神经元的中明确显示了**函数的计算过程,即信号的加权总和为节点,然后节点被**函数转换成节点。
至此,**函数已经闪亮登场。**函数是连接感知机和神经网络的桥梁。我们再来回顾一下前面提到的内容:感知机的**函数是阶跃函数,神经网络的**函数是sigmoid、ReLU的函数,下面我们就来依次看一下这几个函数的情况。
常用的**函数
1. 阶跃函数(感知机)
-
公式:
-
图形:
-
说明
阶跃函数以0为界,输出从0切换为1(或者从1切换为0)。它的值呈阶梯式变化,所以称为阶跃函数。
2. sigmoid函数(神经网络)
-
公式:
-
图形:
- 说明:
与阶跃函数对比,sigmoid函数的“平滑性”不同。sigmoid 函数是一条平滑的曲线,输出随着输入发生连续性的变化。而阶跃函数以0为界,输出发生急剧性的变化。sigmoid函数的平滑性对神经网络的学习具有重要意义。
另一个不同点是,相对于阶跃函数只能返回0或1,sigmoid函数可以返回0.731 . . .、0.880 . . .等实数(这一点和刚才的平滑性有关)。也就是说,感知机中神经元之间流动的是0或1的二元信号,而神经网络中流动的是连续的实数值信号。
3. ReLU函数(神经网络)
- 公式:
- 图形:
- 说明:
ReLU 函数在输入大于 0 时,直接输出该值;在输入小于等于 0 时,输出0。
小结
在感知机中,我们实际上已经使用了**函数(阶跃函数),当我们使用新的**函数(sigmoid、ReLU函数)后,就由感知机进入了神经网络的世界。
更多内容请参见第5期视频:
《深度学习入门》第5期-从感知机到神经网络-码农解书
欢迎大家留言关注,多提意见,谢谢!