1. 神经网络的基本概念
- 神经网络的分层:神经网络由输入层、隐藏层、输出层组成。
- 神经元之间的连接:层与层之间有神经元连接、而层内之间没有神经元连接。连接的神经元都有对应的权重。
- 输入层:负责接收输入的数据。
- 输出层:从这层获取神经网络输出数据。
- 隐藏层:输入层与输出层之间的是隐藏层。
隐藏层可以有多层。
2. 激活函数
激活函数可以使神经网络逼近任意非线性函数,使得神经网络可以应用到众多的非线性模型中。
常用的激活函数
- sigmoid
- relu
最开始,神经网络中经常使用的一个激活函数就是sigmoid
函数,函数公式如下:
sign={−1+1x<0xgeq0
函数图像如下图所示:
sigmoid
函数是一条平滑的曲线,输出随着输入发生连续的变化。而阶跃函数以0
为界,输出发生急剧兴的变化。sigmoid
函数的平滑性对神经网络的学习具有重要意义。
sigmoid
函数在x
过大或过小时,函数变化非常小,即梯度非常接近0
,随着神经网络的加深,在使用梯度下降方法的时候,由于梯度接近0
,参数更新接近0
,网络开始学不到东西,即梯度消失。所以现在常使用relu
激活函数,函数公式如下:
relu(x)={0xx<0xgeq0
函数图像如下图所示:
relu
函数在x
大于等于0
时,输出的是x
本身,函数变化率恒为1
,这样就避免了梯度消失的情况。当x
小于0
时,输出为0
,即神经元不被激活,这样也符合人脑内并不是所有神经元同时被激活的情况。并且,relu
函数计算成本非常低,所以在神经网络过深时常使用relu
函数作为激活函数。
3. 反向传播算法
4. 使用pytorch搭建卷积神经网络识别手写数字