神经网络
一、神经元
神经元是神经网络的基本单元,有多个输入和一个输出。
一般情况下,每个神经元把上一层所有神经元的输出作为输入,经过一个线性变化(所有输入加权求和后增加一个偏置)作为激活函数的输入最后输出一个在一定范围内的值。
1、加权求和:ys = ∑wi * x + b(i=1,2,...,N,N为上一层神经元的个数)
a、权重w(weight):给每个输入赋予不同的权重
b、偏置b(biases):将所求的和进行一个上下移动
注:经过线性变化得到的结果无论再经过多少次线性变化最终都可以通过一个总的式子来表示所有的过程,所以设计多层网络就失去了意义,因此需要一个激活函数来把线性结构变成非线性结构,打乱其中的线性顺序。
2、激活函数:
常用的激活函数为sigmoid激活函数(常用于输出层),tanh函数(也称双曲正切激活函数)、relu激活函数(常用于隐藏层)、softmax激活函数(进行分类任务时会被用在输出层中)
(激活函数的详细介绍请见我另一篇博客)
二、神经网络的构造
神经网络主要由三部分构成,一个输入层、多个隐藏层、一个输出层
1、输入层(inpute layer):获取想要处理的数据,进行相应的预处理转换
2、隐藏层(hidden layer):进行数据的处理和学习
3、输出层(output layer):输出最终的处理结果
在隐藏层中一般采用的都是全连接方式(下一层的每个神经元都于上一层的所有神经元连接),而在卷积神经网络中采用的则是局部连接(卷积核只与上一层的某一块神经元连接)
三、过程
神经网络包括正向传播和反向传播两个过程
1、正向传播:输入信号通过输入层进入网络,经过若干隐藏层,从输出层得到输出结果(预测)
2、反向传播:误差信号(预测出来的结果与真实结果的差距)从输出层反向传播,经过隐藏层,传到输入层
在此过程中,根据误差信号和向后传播算法,网络自动更新权重和偏置,为了下次得到较小的误差