们用一个运行的例子来讲一下最近热门的机器学习里面的基础算法神经元网络算法。例子一共40行代码,在文章最后有下载方法。运行环境如下:
操作系统:win10 64位
anaconda:Anaconda3-4.4.0-Windows-x86_64
python:3.6
tensorflow:为anaconda管理安装,看anaconda是1.1版本。
神经元网络算法实际是仿生人体神经元。人体神经元,之间互相链接,传递信息,做出决策。人工智能中最热门的机器学习的神经元网络算法就是仿生人的大脑的。人脑中的神经元就有3个基本功能。 1.接受信号。 2.决定是不是让信号通过。 3.发出信号给别的神经元。 人脑的信号是生物电信号,而计算机的则是0-1之间的小数数字信号。
仿生神经元
它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。这是最简单的神经元图解。汇总输入信号后,通过激活函数输出一值。输入值都有权重。比如构成一个人,头和胳膊的权重是不同的,一个人可以没胳膊,不能没有头。如果输入是人体各个部分的有无,那么输出就是一个是否为人的概率?!
神经元数学模型
从基础知识上了解了神经元,但是实际工作中,为什么叫机器学习呢?因为大部分神经元网络,在最初期是没有输入权重和对应的偏置(就像一个线段在图像中的角度和位移,角度即为权重,上下左右位移就为偏置)。我们有的往往是输入值和对应输出值,这时候我们就需要机器来学习这些数据,得到对应的权重wi和偏置b。这个程序就是一个最简单的训练程序,通过梯度下降算法求得wi和偏置b,再通过bp(back propagation)来优化。
主程序
程序主题部分,通过001,111,101,011输入,对应输出0,1,1,0进行训练。最后调用模型输入1,0,0,算出输出结果。
训练函数
以上是训练函数,通过梯度下降算法,把神经元中的权重和偏置计算出来。
这是运行结果,训练3000次后,输入1,0,0,输出结果为0.999近似等于1.
需要程序的,可以在这里下载
关注我们,后面我们会详细讲解后面算法。ai昂钛客专注人工智能社群,提供最简案例!
angtk