Python_BP神经网络实现(鸢尾花分类测试)
简介
人工神经网络模型种类很多,其中根据网络内数据流向进行分类可以分为前馈网络、反馈网络和自组织网络。
通过对Andrew
Ng的深度学习课程的学习,本文总结其中浅层神经网络一章的知识点(本文重点不在于公式讲解,而是算法的简单实现,具体理论可看——深度学习工程师)。在此介绍和利用Python实现BP神经网络,BP神经网络是一种典型的前馈神经网络。
结构
BP神经网络分为三层分别是输入层、隐层和输出层,其中隐层的层数可以扩展,且每一层的神经元个数也可以增减。每一层中神经元与前后层神经元相连接,但是同一层神经元之间无连接。可看下方示意图。
原理
当我们使用BP神经网络来对数据进行分类或者预测的时候,每对有连接的神经元之间都有一个权重,记为w;同时还有偏移量,记为b。每个神经元中还有一个激活函数,记为σ(x),要注意的是这不是一个函数,有多个函数可以作为激活函数:Sigmoid、tanh、Relu等。
在每一次迭代计算中,正向运算(输入层开始),我们会计算出一个值,然后计算出该值与标准值的误差;反向运算(输出层开始),按照减小误差方向,修正各连接权。通过一次次的迭代计算,直到误差减小到给定的极小值,就可以结束迭代,完成训练。
Python实现思路
通过python实现BP神经网络,主要有以下几个步骤:
神经网络结构确定
权重和偏移量参数初始化
正