本随笔参考文章:《BP神经网络详解与实例》(链接: https://pan.baidu.com/s/1e2niIvD9KtLXEqwXtgdXxw 密码: vb8d)
本随笔原创,转发请注明原处:https://www.cnblogs.com/nanyunan/p/9494946.html
1 神经网络单元示例
2 神经网络示例
3 几个重要公式
3.1 单元前向公式
y=f[sum(wi*xi)-θ]
其中,wi是输入权重,xi是输入值,sum是求和函数,θ是阈(yu)值,f是激发函数
其中,f激发函数主要有:sgn,Sigmoid
其中,sgn是符号函数(https://baike.baidu.com/item/sign/115763)
其次,Sigmoid是S型函数(https://baike.baidu.com/item/Sigmoid%E5%87%BD%E6%95%B0/7981407?fr=aladdin)
3.2 单元后向公式
权重迭代公式
假设有n个样本训练网络,p表示当前训练样本,p-1表示上一个训练样本。
ωlp(i,j)=ωlp-1(i,j)+ηδlpαl-1p(j)
其中,ωlp(i,j)表示第l层第i个神经单元的第j个输入权重
其中,ωlp(i,j)表示新的权重
其中,ωlp-1(i,j)表示旧的权重
其中,η是学习效率,取值(0,1)之间,一般默认取值0.1。η过小,收敛过慢,精度高。η过大,收敛快,优解容易丢失。
其中,δlp(i)=f’Sum[δl+1p(j)ωl+1p-1(j,i)]
其中,f’是激发函数f的导函数
其中,δl+1p(j)表示下一层第j个神经单元的δ值
其中,ωl+1p-1(j,i)表示下一层第j个神经单元第i个权重的旧值
其次,δLp(i)=f’(tp(i)-aLp(i))
其中,L表示最后一层
其中,tp(i)表示最后一层第i个输出神经单元的真值
其中,aLp(i)表示最后一层第i个输出神经单元的输出值
4 编程实例
使用语言:C#
源代码(链接: https://pan.baidu.com/s/1nsh8T2VCISZFQb0fU_wBXg 密码: y8pi)
实例(包含程序,说明书,样本)(链接: https://pan.baidu.com/s/1sWkEOGqKXC6uMCGzD9eg_Q 密码: sjfh)
样本(链接: https://pan.baidu.com/s/1O9XlLOGXRbC0PfAVo9LULA 密码: b9st)
4.1 样本
4.2 样本文件
4.3 创建网络大小
4.4 训练
4.5 询问