本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
本文在《感知机的原理》的基础上,
进一步介绍matlab工具箱中的感知机神经网络(newp)
通过本文,理解matlab感知机神经网络的用途、原理、求解方法
本节介绍matlab中的感知机神经网络的模型结构和数学表达式
并辨析它与一般的感知机有什么区别
matlab工具箱的感知机神经网络
matlab中的感知机神经网络是由感知机演变而来,
它是一个两层的神经网络,只有输入层与输出层
感知机神经网络的拓扑结构
这里举例说明,
一个2输入3输出的感知机神经网络拓扑图如下:
输出层的激活函数支持hardlim和hardlims,两者的区别如下:
当输出层的激活函数为hardlim每个输出的输出值是0或1
而当输出层的激活函数为hardlims每个输出的输出值是-1或1
备注:mamtlab中默认激活函数为hradlim
感知机神经网络的数学表达式
激活函数为hardlim时,
感知机神经网络的数学表达式为:
激活函数为hardlims时
感知机神经网络的数学表达式为:
✍️ 辨识:matlab工具箱的感知机神经网络与一般书箱介绍的感知机的区别
(1) 上篇感知机介绍的为二分类,只有一个输出,而这里的感知机神经网络支持多输出。
(2) matlab感知机神经网络默认使用的激活函数为hardlim,而上篇的二分类感知机是hardlims
总的来说,matlab的感知机神经网络默认输出格式为one-hot编码,即[0 1 0 0]这类的格式
✍️特别说明
由于matlab的默认激活函数为hardlim,
而hardlim和hardlims两者没有本质的区别
因此,下面下我们只介绍hardlim,即输出为{0,1}
本节介绍matlab中的感知机神经网络的损失函数
作为下节讲解感知机神经网络的训练的基础知识
感知机神经网络的训练目标
感知机的误差评估函数为预测错误样本个数的占比:
其中,
m:输出个数
n:样本个数
:第i个样本的第j个输出。
:网络对第i个样本第j个输出的预测值
感知机的训练目标就是找出一组w,b,使E最小化
感知机神经网络的损失函数
损失函数的思路
感知机神经网络的训练可以使用梯度下降法,
但由于误差评估函数,不方便求导,
所以先构造一个与误差评估函数相关的损失函数,
然后用损失函数的梯度来引导w,b的调整
损失函数表达式
可以用以下函数作为损失函数,来引导w,b的迭代方向
✍️补充:关于损失函数的意义
损失函数的意义如下:
(1) 当网络对第i个样本预测正确时:
为正,为 1,即为1, 则为负
为负,为 0,即为-1, 则 为负
(2) 当网络对第i个样本预测错误时:
为正,为0,即为-1, 则为正
为负,为1,即为1, 则为正
总的来说,
预测正确时,为负,
预测错误时,为正,
即,网络越正确,L(w,b)越小,网络越错误,L(w,b)越大
则我们要令L更小,只要往w和b的负梯度方向调整即可
本节讲解感知机是如何训练的,及其梯度公式的推导
感知机神经网络的训练
感知机一般用单样本训练,即逐个样本训练w、b
感知机的训练算法简述如下:
逐样本训练
往当前样本的负梯度方向更新w,b
退出训练条件:达到最大训练次数或误差已极小
具体的训练细节参考《matlab工具箱的感知机算法流程》《matlab工具箱的感知机的代码复现》
✍️补充:关于梯度公式
迭代过程需要用到单样本的损失函数对w,b的梯度,
梯度的公式为
梯度公式的推导
整体样本的梯度推导
可算得损失函数L中 w 和 b 的梯度如下:
w的梯度
b的梯度
单样本时w,b的梯度推导
感知机一般用单样本训练,
由上可算得对于单个样本训练时,w,b的梯度为:
上式也可以改写成如下形式:
其中,是网络对的预测值
End