30行python代码实现最简单的神经网络

这篇文章算是看了吴恩达老师的deeplearning视频的课后笔记吧,感谢吴恩达老师致力于机器学习、深度学习的普及。coursera中可以搜到相关课程,讲的真的非常简单易懂,并且老师对于AI所抱有的那份热情真的感染到我,希望有一日也可以在人工智能的领域作出一点贡献。

第一周的视频中提到了用sigmoid函数\frac{1}{1+e^-z } 作为最简单的神经网络解释前向传播和反向传播的过程。

网络设计如下


图来自网易云课堂吴恩达深度学习p p t

现在我们给定一组数据(3,6,9)分别表示(x1,x2,b)输入网络,的到隐藏层z=3x1+6x2+9,把他带入sigmoid函数的到a=\frac{1}{1+e^-3x1-6x2-9 } ,最后求出损失值L(a,y)。然后利用链式求导法则求w1,w2关于L的偏导数并且利用梯度下降法收敛函数。

上面都是吴恩达老师课程里提到的,一种由简入深让人醍醐灌顶。从最简单的入手,既然明白了运作原理那就必须赶快写一个例子实现一下。

于是我用上述的模型选取了一组数据看看一效果。

代码如下:


python实现

选取学习率为0.01,数据(3,6,1),初始权重(0,0,0)

运行结果:


运行结果

可以看到随着迭代次数的增加损失越来越小了,最后返回的w1,w2,b分为为3,6,0 带入原式中的到最后的结果(更新,没注意输出的变成了x1,x2,更新一次w1,w2)



很好的拟合了测试数据

小结:这里网络结构很简答而且也只用了一组数据,真是的情况当然更复杂。不过这种最简单的形式真的很能帮助人理解神经网络的基础运行原理。最后安利一下吴恩达老师的人工智能相关课程(想要入门机器学习或者深度学习又不知道怎么办就看这个!)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容