神经网络是一种运算模型,模拟大脑神经网络处理、记忆信息的方式进行信息处理。
.
01 结构梳理
搜索神经网络经常会看到这种圈、线图。神经网络定义是由大量的节点之间相互联接构成,每个结点代表什么?每条线代表什么?
节点:f(输入数据*权重)
上图每个圆圆的圈称之为节点,节点就是对输入数据乘上一定的权重后,进行函数处理。
连线:权重
每两个节点间的连接都代表一个权重,这相当于人工神经网络的记忆。
02、节点深入
术语上把上面一个个圆圈叫做“神经元”,深入了解这些圈圈的内部构造。
当这些圈圈(神经元)收到数据输入时,经历三个步骤:
步骤一:输入数据*权值
步骤二:累加步骤一所有的结果
步骤三:使用特定函数处理这组数据
输出的结果又可以作为数据进入下一个神经元。
还有一个“偏置”的定义用来完善步骤二,这里就不提了。
·
03 多层神经网络
有时候会遇到这样的神经网络的图,其实就是把上面两种类型图结合起来。
输入数据经过3层神经网络处理后,输出结果。
不同层数可以有不同数量的神经元。
每个神经元都有对应输入值的权值w,以及一个偏置b,还有一个激活函数f。
每个神经元的权重w、偏置b、激活函数f都可以不一样。
04 权重w计算
在实际计算中,怎样合理对属性进行赋值很重要,因此w的计算推到是值得注意的。一般神经网络采用sigmoid函数作为神经元处理函数。
sigmoid函数具有f(x)'=f(x)[1-f(x)]的特征。下图来源:BP神经网络的公式推导
所以针对这一特性,当神经元函数采用sigmoid函数时,权重的计算:
其中gj计算如下:
这里y为实际分类,y^为预测分类(神经元f处理结果)详细计算
.
04 实际计算
有一组数据,包含4个样本,每个样本有3个属性,每一个样本对于一个已知的分类结果y。(相当于已知结果的训练样本,4个样本,3个特征)
每个样本有3个属性,对应3个权重,进入神经元训练。第一层采用10个神经元进行处理。
步骤一:输入数据*权重
步骤二:代入函数f中计算
上面加权求和后的数据带入函数,这里使用sigmoid函数。
到这一步一层的神经网络就处理好了,比较预测结果和实际y之间的数值差(上面算法中提到的偏差d)为:-0.009664、0.00788003、0.00641069、-0.00786466,相差不多。
步骤三:完善权重w
一开始的权重是随便设置的,故需要根据公式需要完善权重值。
权重计算结果为-0.62737713,-0.30887831,-0.20651647,三个属性重新赋予合适的权重。