1. 神经网络的基本概念

  • 神经网络的分层:神经网络由输入层、隐藏层、输出层组成。
  • 神经元之间的连接:层与层之间有神经元连接、而层内之间没有神经元连接。连接的神经元都有对应的权重。
  • 输入层:负责接收输入的数据。
  • 输出层:从这层获取神经网络输出数据。
  • 隐藏层:输入层与输出层之间的是隐藏层。

隐藏层可以有多层。

神经网络输出为nan 神经网络输出函数_神经网络

 

 

 

2. 激活函数

 激活函数可以使神经网络逼近任意非线性函数,使得神经网络可以应用到众多的非线性模型中。

神经网络输出为nan 神经网络输出函数_神经网络_02

 

 

 常用的激活函数

  • sigmoid
  • relu

最开始,神经网络中经常使用的一个激活函数就是sigmoid函数,函数公式如下:

sign={−1+1x<0xgeq0

函数图像如下图所示:

神经网络输出为nan 神经网络输出函数_神经网络_03

sigmoid函数是一条平滑的曲线,输出随着输入发生连续的变化。而阶跃函数以0为界,输出发生急剧兴的变化。sigmoid函数的平滑性对神经网络的学习具有重要意义。

sigmoid函数在x过大或过小时,函数变化非常小,即梯度非常接近0,随着神经网络的加深,在使用梯度下降方法的时候,由于梯度接近0,参数更新接近0,网络开始学不到东西,即梯度消失。所以现在常使用relu激活函数,函数公式如下:

relu(x)={0xx<0xgeq0

函数图像如下图所示:

神经网络输出为nan 神经网络输出函数_神经网络_04

relu函数在x大于等于0时,输出的是x本身,函数变化率恒为1,这样就避免了梯度消失的情况。当x小于0时,输出为0,即神经元不被激活,这样也符合人脑内并不是所有神经元同时被激活的情况。并且,relu函数计算成本非常低,所以在神经网络过深时常使用relu函数作为激活函数。

 

3. 反向传播算法

 

4. 使用pytorch搭建卷积神经网络识别手写数字