云风的Blog 学习神经网络的一点笔记

云风的 BLOG: 学习神经网络的一点笔记 (codingnow.com)

一开始,我是从维基百科的 Machine learning 开始读的。顺着看了一整天,了解了近年发展的脉络。好多词条,乱七八糟的笔记记了一大堆,感觉快消化不了了。疑问也积累了很多,觉得看下去效率会越来越低。不如换一条路。

然后我开始读 Neural Networks and Deep Learning 这本书。读了两章后,我想,手写数字识别看起来是一个非常好的实践手段,不如自己写一遍最快。有这么一个基础,后面可以继续修修补补,沿着前人的轨迹走一下,可以更好的理解为什么。

 

现在的条件远超 20 年前,训练这么一个简单的前馈神经网络估计在我的机器只要不到一分钟,可以很快得到反馈。有很多现成的代码可以比对,出了 bug 容易查。练习需要的数据也是唾手可得:THE MNIST DATABASE of handwritten digits 。虽然神经网络到底怎么工作的,人类恐怕还无法弄清楚每个神经元传递的信号的意义。这会导致程序出了 bug 很容易被掩盖起来,但有了数据库里的数据,我们还是可以从结果的正确率推测自己有没有实现对。所以用这个手写数字识别这个课题来学习是非常好的。

 

我在一开始觉得 backpropagation 的细节很难理解。后来看了另一篇文章 How Does Backpropagation in a Neural Network Work? 就明白了。原来,现在用的方法并不是人们一开始都知道的。现在我们用的从结果的差异反推来源的 delta ,公式非常简单,但数学原理并不简单。感谢 Andrew Ng 的公式 delta_0 = w . delta_1 . f'(z) ,我们只需要对正向信号传播时,每个神经元上得到的值求导,乘上该神经元输出端的神经元上的 delta 和输出权重就可以得到它的 delta 。总 delta 就是所有输出侧用该公式计算出的 delta 累积量。

 

我写程序的过程中,一共出过两个 bug。其中一个就是在 backpropagation 过程的,主要还是理解不到位引起的手误。花了两个小时重新读书、理解、再审查代码才找出来。

我将代码提交到了 github ,有兴趣的同学可以参考。https://github.com/cloudwu/neuralnet 。

 

书本推荐。深度学习入门,应该是最开始需要看的书

 

作者:Chuck Lu    GitHub    
posted @   ChuckLu  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-03-19 炉石传说 关键词
2022-03-19 毛概
2022-03-19 What is Big Data?
2022-03-19 Chapter 1: What Is an Information System?
2020-03-19 How much business logic should be allowed to exist in the controller layer?
2019-03-19 Kibana --> Getting Started -->Building your own dashboard
2019-03-19 Download and Installation of Kibana
点击右上角即可分享
微信分享提示