神经网络基本组成
神经网络由输入层(input layer),隐藏层(hidden layers),输出层(output layer)三部分组成,如下图。
输入层(input layer)是由训练集的样本特征向量传入。
每层由神经元(neuron)或单元(unit)组成。
经过连接节点的权重(weight)传入下一层,上一层的输出是下一层的输入,一层中的加权求和,然后根据非线性方程转化为下一层的输入。
即一个神经元,可以把它分成左半球和右半球两部分。左半球为上一层加权求和的结果,为此神经元的输入。右半球为加权求和结果即左半球值通过非线性方程转化后的值,为此神经元的输出。
激活函数
这个非线性方程就是激活函数,通过激活函数就可以把线性的值转成非线性的值。
常用的激活函数有三种,Sigmoid,Tanh和ReLU。其中sklearn中神经网络默认选择的是ReLU。
下图为这三种激活函数的结果,可以看出:Sigmoid和Tanh都是曲线,Sigmoid是把x归一化到0到1范围,Tanh归一化到-1到1范围。ReLU是折线,若x<0则输出0,否则y=x。
MLP (Multi-Layer Perceptron) 多层感知器
单层MLP
MLP为多层感知器,我们首先来看只有一个隐含层的MLP,如下图。
和上面介绍过的一样,h0的输入值就是x0*w00+x1*w10+x2*w20+x3*w30,输出值就是用激活函数,即tanh(x0*w00+x1*w10+x2*w20+x3*w30)。
最后y的值就是前一层即隐含层的权重和。