通过阅读周志华老师的《机器学习》,收货颇丰,突然意识到神经网络的构成,我认为,就是神经网络模型+优化算法,以下内容如有侵权,立即删除。
1.神经元模型
神经网络的核心单元是神经元模型,如图一,M-P神经元,图片来着周志华老师的《机器学习》。每个神经元接收多个输入信号,这些信号分别与特定的权重(w)相关联,权重反映了各输入的重要程度。神经元首先对输入信号进行加权求和,然后将结果与预设阈值进行比较,最后通过激活函数(Activation Function)进行非线性转换,从而产生输出信号。

其数学表达式为:
其中:
为神经元输出值(这里我加了帽子,和图中有所差距,以便后面理解,其含义为预测值);
为输入;
为权重;
为阈值;
为激活函数,典型的有sigmoid(x),sgn(x)函数,这里读者可以自己去搜索一下,此文不过多介绍激活函数。
2.感知机
神经网络重最简单的模型,感知机模型,它只由两层神经网络构成,输入层与输出层,也可以理解为就是一个神经元模型。基本模型不过多赘述,与M-P神经元模型相同,这里我介绍一下感知觉是如何寻找最优的权重和阈值的。
2.1对阈值的处理
在进行优化寻优时,如果要将权重与阈值
作为不同目标进行优化,这可能会增加代码的复杂性,这时我们可以引入“哑结点”,将阈值
也作为一个待优化的第n+1个权重,但其输入固定为-1。就是说将阈值
也看做一个权重,但其输入固定为1。这样就可以单纯化为权重优化:
2.2权重优化算法
其中为学习率,大小于(0,1)之间,
为真实值-预测值,可以衡量他们之间的差距,当真实值大于
小于0,
就会减小,
也就会变小,从而使
接近
。理论上听起来是不是可以解决的问题挺多的,但实际上由于感知机的结构过于简单,其只能处理一下简单的线性可分问题,这里我用《机器学习》中的一张图解释。

3.多层神经网络
在输出层与输入层直接,增加隐藏层,其就变成了多层神经网络,图三,如果优化多层神经网络中的权重和阈值,由于继续使用2.2中的优化算法,显然不行了。

其中:
我写的黑色字分布为输出该层的阈值,输出有l个,输入有d个,隐藏层神经节点有q个,其余可根据图中意义理解一下,不赘述了哈。
3.1BP优化算法
其中一共有l*(q+1)+q*(h+1)个待优化的参数。
现假设训练集中一个训练例,这只是一个训练集中的一个例子,假设其神经网络预测值为
,
为1到
之间应该任意的数,则有
均分误差为:
这里引入是为了方便后面求导。类似于之前的更新公式:
根据链式法则:
最终计算得到:
类似该过程,可得到其余参数的更新策略。
在上述过程中,我们只是考虑了训练集中的一个例子,还有许多例子未曾考虑进去,假设有n个例子,我们可以通过计算累计误差:
考虑所有例子的误差,来更新权重。
不至于BP优化算法来寻得权重与阈值的最优解,还可以通过其他算法,比如遗传算法,模拟退火算法、粒子群算法等启发式算法来寻找最优解。
3.2防止过拟合
改变误差函数:
通过引入与正规项,我们可以使E更偏向于比较小的w,通过调整
的大小,通过调整这种偏差的大小。
补充:例子代码改天再写吧,今日有点累了。