神经网络与深度学习
阔活洵信
WHUER、GISER
展开
-
Python与人工神经网络(1)——开一个新坑
《教女朋友学Python》基础篇完结之后,有的人的手就开始热得发烫了,总想用Python搞点大事情。于是我们就来搞点大事,开个新坑《Python与人工神经网络》,作为《教女朋友学Python》的续作,屌不屌。人工神经网络是一听就是个能唬住人的词,起码我是不懂的,接都没接触过,所以我找了一本书,准备半翻译半自我发挥,就当作是我的学习笔记吧,每四天更新一期,与《刘小玩美食教程》交替发布在微信公原创 2017-02-05 14:15:04 · 2408 阅读 · 1 评论 -
Python与人工神经网络(14)——其他技术
随着将MINST数据集识别的事情做完,作者的书也接近尾声。在这个过程中,我们了解到了很多神经网络和深度学习的核心概念,比如随机梯度下降、反向传播、卷积神经网络、正则化等等。但实际上在神经网络和深度学习领域,还有很多东西是没有提及到的,比如递归神经网络、长期记忆单元、深度信念网络、生成式模型和波尔兹曼机等。这里简单的介绍一下这些概念,有了前面的基础,这些概念通过自己看资料,也是比较好理解的除原创 2017-04-24 22:26:36 · 588 阅读 · 0 评论 -
Python与人工神经网络(13)——实现卷积神经网络
上期我们说了卷积神经网络的原理,今天来实现他。与之前我们改进神经网络时一样,新建一个network3.py文件,来写实现的代码。同样,代码已经推送到了网上:https://git.oschina.net/zxhm/Neural-NetWork-and-Deep-Learning,我把原作者基于python 2.7的代码修改成了基于python3.x的,感兴趣的小伙伴可以下下来瞄一瞄。和往期原创 2017-04-24 22:23:10 · 6844 阅读 · 1 评论 -
Python与人工神经网络(12)——卷积神经网络
前面近十期的内容,我们学习了用浅层次的神经网络识别MNIST手写数字数据集,并且取得了不错的成果,识别率可以超过96%,实际上当隐藏层的神经元数量是100的时候,识别率可以高达98%。在上一期,我们说到了深度神经网络会有更好的效果,然而更难训练。这一期我们将使用一些技术,来训练深度神经网络,这就是卷积神经网络(Convolutional Neural Network)。卷积神经网络才用了三原创 2017-04-24 22:17:39 · 1886 阅读 · 0 评论 -
Python与人工神经网络(11)——为什么深度神经网络很难训练
之前十期,我们彻头彻尾的介绍了神经网络技术,然而用到的都是只有一个隐藏层的。那种有多个隐藏层的神经网络,叫深度神经网络,比如这种:在神经网络中,比较浅的隐藏层会处理一些比较简单的任务,比较深的层会处理比较复杂的任务。比如在人脸识别上,可能第一层用于识别这个图片的轮廓,第二层用于识别有没有鼻子眼睛耳朵嘴巴什么的,第三层用于识别眼睛特征、耳朵特征等等。所以理论上来说,在我们的识别MINST的数原创 2017-04-12 18:58:44 · 1827 阅读 · 0 评论 -
Python与人工神经网络(10)——神经网络可以干什么
这可能是最难写的一期。实际上这期的内容,在作者原作上并不长,而且我看前面的就已经明白后面的是什么意思了。所以我只看了一个晚上,后面的部分就范范的翻了一下,看大概跟自己的理解没太大区别,就过了。之所以我这么快理解,是因为作者做了很多交互动画,大概是这样的:然而我没法把所有的交互都拿动画录下来,因为这种交互的体验实在是录不下来,所以强烈建议各位去看看原文:http://neuralne原创 2017-04-12 18:51:57 · 7836 阅读 · 1 评论 -
Python与人工神经网络(9)——其他改进技术介绍
我们用四期的时间,优化了最初的神经网络,代码量也层最初的一百四十行(包括注释)到了三百四十行。实际上在针对于某些特定的情况,还有一些优化的技术,这里做一个简单的介绍,以后不一定会用到,但是我自己觉得在看的过程中会加深对神经网络的理解。Softmax神经网络在介绍softmax之前,我先对第二期介绍的S曲线神经元系统时犯的错误做一个更正。我在第二期介绍S曲线神经元时,说S曲线函数σ的定义域是原创 2017-04-12 18:44:16 · 770 阅读 · 0 评论 -
Python与人工神经网络(7)——其他正则化方法
上期的文章详细说到了L2正则化方来减少过度拟合,我当时说既然有L2,就应该有L0,L1。我也确实说对了,然而没想到作者在这本书里面没有讲到L0,除了L1之外,作者还讲了两种方法,一种叫Dropout(我不知道怎么翻译,也没有查到),另一种是数据集扩增法。我们先从L1法开始吧。L1L1跟我们上期说的L2非常类似,只不过L2的成本函数是这样的:而L1的成本函数是这样的:原创 2017-03-22 20:35:57 · 1630 阅读 · 0 评论 -
Python与人工神经网络(8)——改进神经网络
花了三期的篇幅来改进我们的神经网络:第五期讨论了二次方程成本函数引起的训练变慢的问题,引入了交叉熵成本函数;第六期提到了过度拟合及其解决办法——正则化,并详细论述了L2正则化的原理;第七期主要概括的讲了其他的三种正则化方法,还有一些数据和初始权重设定的技巧。现在是时候改进神经网络的代码了。但是在微信公众号贴代码和贴公式都是一个很蛋疼的事情,所以我不会在下面贴大段的代码。完整的代码在:https原创 2017-03-29 13:14:49 · 916 阅读 · 0 评论 -
Python与人工神经网络(6)——过度拟合与正则化
上期我们将二次成本函数改进成了交叉熵成本函数C,显著的提高了训练的效率。可以确定的是,每个周期的训练,成本函数都在减小,以此优化神经网络中的参数。然而有没有人想过,C的减少真的在优化参数么?,特别是结合第三期的这张图看:可以确定的是,周期27的C一定是比周期26小的,然而识别率并没有相应的提高,那么下一个周期我们训练出来的参数还靠谱么。作者为了更好的说明这个问题,做了一个实验。他选取5原创 2017-03-19 14:32:21 · 2325 阅读 · 0 评论 -
Python与人工神经网络(5)——交叉熵成本函数
我们花了两篇文章的篇幅,建立了一个神经网络来识别手写图像,看起来效果相当不错,超过95%的正确率,实际上如果第二层使用100个隐藏神经元的时候,准确率可以再提升一个百分点。在这个过程中我们主要使用了随机梯度下降算法和反向传播算法,并且从原理到实现,都走了一遍。现在作者给了我们一个练习,有这么一个神经网络,只有一个输入神经元,一个输出神经元,所以他只有一个w和一个b值,现在输入值x是1,期望的输原创 2017-03-19 14:21:04 · 3574 阅读 · 2 评论 -
Python与人工神经网络(4)——反向传播算法
上期的文章写的比较晦涩难懂,也留下了一个问题,就是反向传播算法(backpropagation algorithm)。写的这么晦涩一来是因为我确实看的比较艰难,从看书,到敲代码、调试运行代码,用了太长时间,要保证定期发送,写文章的时间就不够了,加上看的艰难,写起来就更艰难,写加修改竟然花了十个小时左右。另一方面我的数学确实太渣,文中好多数学公式,我解释的并不是很清楚。所以这一期有两个任务,第一个是原创 2017-03-08 23:28:30 · 2186 阅读 · 0 评论 -
Python与人工神经网络(3)——随机梯度下降算法
上期我们建立了一个人工神经网络,那么到底怎样运用这个神经网络来让计算机学习识别手写的图像呢?这就会用到我们题目中提到的随机梯度下降算法。在介绍这个算法之前,先介绍一些必要的东西。首先,我们说人工神经网络是让计算机从训练数据中学习,所以第一步就是数据了。我们用到的数据集的叫MNIST数据集,这是从NIST(National Institute of Standards and Techn原创 2017-03-08 23:07:34 · 2155 阅读 · 1 评论 -
Python与人工神经网络(2)——使用神经网络识别手写图像
人体的视觉系统是一个相当神奇的存在,对于下面的一串手写图像,可以毫不费力的识别出他们是504192,轻松到让人都忘记了其实这是一个复杂的工作。实际上在我们的大脑的左脑和右脑的皮层都有一个第一视觉区域,叫做V1,里面有14亿视觉神经元。而且,在我们识别上面的图像的时候,工作的不止有V1,还有V2、V3、V4、V5,所以这么一看,我们确实威武。但是让计算机进行模式识别,就比较复杂了,主要困原创 2017-02-19 17:43:13 · 3872 阅读 · 2 评论 -
Python与人工神经网络(15)——结语和前言
这是Python与人工神经网络的最后一期,也恰好如开篇时所说,写了15期。本系列是我读Michael Nielsen的书《Neural Networks and Deep Learning》的半翻译半笔记的产物,也是《教女朋友学Python》的衍生品。再一次介绍原作者Michael Nielsen:量子物理学家,科技作者,程序员。再一次贴原作的地址:http://neuralnetwork原创 2017-04-24 22:28:27 · 790 阅读 · 0 评论