用神经网络识别手写数字

人类的视觉系统是是大自然的奇迹。考虑下面手写数字序列:

大多数人能够轻易地是识别出是504192。在我们大脑的每个半球都有一个基础的皮质,这就是我们熟知的V1区,它包含了14亿个神经元,并有着数十亿级的神经元连接。然而人类地视觉不仅包含V1区,同时还有一系列地视觉皮质——V2,V3,V4,V5——它们进行着复杂地图像处理。我们头脑携带着一个超级计算机,经过数百万年的进化,能够很好地适应视觉的世界。识别手写数字并不容易。但是,我们人类惊人地擅长将我们所见之物转化成脑中有意义地东西。当然这些工作都是在无意识地情况下完成的。因此,通常我们不会感受到我们地视觉系统在处理着怎样的难题。

当你尝试写程序去解决上述手写数字识别时,你就会发现这个问题有多难。我们大脑轻易在瞬间完成地事情变得相当困难了。一个简单地例子能描述我们识别形状为何变得不容易用算法表达——“一个9上面时一个环形,下面是一个钩”。当你想表达更加精细时,你会很快陷入特例的沼泽。这个问题看起来相当令人绝望。

神经网络用另一种方式来解决这个问题。思想就是利用大量的手写数字,即我们熟知的训练数据,然后能通过学习这些训练数据来发展一个系统。

换句话说,神经网络能够利用这些例子自动地学习识别手写数字地内在规则。另外,如果增大训练样本,那么神经网络能够学到更多手写数字的信息,因此能够提高它的准确率。尽管我们上面地图只有100个训练样本,但是在实际中可能会用到数以亿计的训练样本。

在这章我将写一个程序来实现一个神经网络能够学习识别这些手写数字。这段代码只有仅仅74行,没有用到任何神经网络的库。但是这段代码在没有人工的干预下达到超过96%的准确率。另外,在稍后地章节我们会用其他的一些想法来把我们的准确率提高到99%以上。实际上,最好的商用神经网络能够很好地用于银行识别支票,邮局识别地址等等。

我们关注手写数字识别是因为它是个很好的一个原型能够帮助我们学习神经网络地通用原理。作为一个模型,它有两点好处:首先它是个有挑战性的项目-识别手写数字是个不小地壮举-但是它也不是需要一个及其复杂地模型或者强大的计算能力。另外,它也能帮助我们学习更高级的技术,例如深度学习,打下良好的基础。因此,在这本书我一直会贯穿手写数字识别问题。在这本书的稍后章节,我将会讨论如何将这些思想应用到计算机视觉,语音识别,自然语言处理等领域。

当然,如果这章地内容仅仅关于如何写一段程序识别手写数字,那么篇幅会大大缩短!但我们将会学习神经网络地一些关键思想,包括两个重要的人工神经元(分类器和sigmoid神经元),神经网络地标准学习算法即我们熟知的梯度下降法(stochastic gradient descent)。我将会关注为何它们能起到这样的作用,用来建立你对神经网络地一些直觉。我不仅会给出基本数学原理,还会花费更长的篇幅来讨论,但我觉得如果你能收获更深层次的理解,这也是值得的。我们将会在本章的最后理解什么是深度学习以及为什么它们如此重要。

(译者注:欢迎大家访问我的小站:http://zhaohuaipeng.com/ 文章会同步更新)

【译】神经网络与深度学习 Ch1-Section0的更多相关文章

  1. (转)神经网络和深度学习简史(第一部分):从感知机到BP算法

    深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...

  2. [DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 吴恩达采访Geoffrey Hinton NG:前几十年,你就已经发明了这么多神经网络和深度学习相关的概念,我其实很好奇,在这么多你发明的东西中 ...

  3. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验【中英】

    [中英][吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第二周测验 第2周测验 - 神经网络基础 神经元节点计算什么? [ ]神经元节点先计算激活函数,再计算线性函数(z = Wx + ...

  4. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】

    [吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和“AI是新电力”相类似的说法是什么? [  ]AI为我们的家庭和办公室的个人设备供电 ...

  5. 对比《动手学深度学习》 PDF代码+《神经网络与深度学习 》PDF

    随着AlphaGo与李世石大战的落幕,人工智能成为话题焦点.AlphaGo背后的工作原理"深度学习"也跳入大众的视野.什么是深度学习,什么是神经网络,为何一段程序在精密的围棋大赛中 ...

  6. 如何理解归一化(Normalization)对于神经网络(深度学习)的帮助?

    如何理解归一化(Normalization)对于神经网络(深度学习)的帮助? 作者:知乎用户链接:https://www.zhihu.com/question/326034346/answer/730 ...

  7. 【神经网络与深度学习】卷积神经网络(CNN)

    [神经网络与深度学习]卷积神经网络(CNN) 标签:[神经网络与深度学习] 实际上前面已经发布过一次,但是这次重新复习了一下,决定再发博一次. 说明:以后的总结,还应该以我的认识进行总结,这样比较符合 ...

  8. 【神经网络与深度学习】【CUDA开发】caffe-windows win32下的编译尝试

    [神经网络与深度学习][CUDA开发]caffe-windows win32下的编译尝试 标签:[神经网络与深度学习] [CUDA开发] 主要是在开发Qt的应用程序时,需要的是有一个使用的库文件也只是 ...

  9. 【神经网络与深度学习】【Matlab开发】caffe-windows使能Matlab2015b接口

    [神经网络与深度学习][Matlab开发]caffe-windows使能Matlab2015b接口 标签:[神经网络与深度学习] [Matlab开发] 主要是想全部来一次,所以使能了Matlab的接口 ...

  10. 【神经网络与深度学习】【python开发】caffe-windows使能python接口使用draw_net.py绘制网络结构图过程

    [神经网络与深度学习][python开发]caffe-windows使能python接口使用draw_net.py绘制网络结构图过程 标签:[神经网络与深度学习] [python开发] 主要是想用py ...

随机推荐

  1. jQuery 2.2 和 1.12 新版本发布

    新年新气象,jQuery 团队于昨日发布了两个新版本:1.12 和 2.2.这两个版本都包含了大量的Bug修正和功能改进.基本上这会是3.0之前最后一次发布.不过由于3.0不做向下兼容,所以届时 jQ ...

  2. iOS:界面适配--iPhone不同机型适配 6/6plus

    iOS:界面适配--iPhone不同机型适配 6/6plus        机型变化 坐标:表示屏幕物理尺寸大小,坐标变大了,表示机器屏幕尺寸变大了: 像素:表示屏幕图片的大小,跟坐标之间有个对应关系 ...

  3. 编译recovery及过程中的部分错误解决

    你必须使用32位或64位Ubuntu系统,关于如何建立编译环境和同步源码的指导,请自己查找有关指导的文章. 1, 安装所需要的包 2, 建立编译的环境,并同步CWM所需的源码,CyanogenMod源 ...

  4. 开始使用Logstash

    开始使用Logstash 本节将指导处理安装Logstash 和确认一切是运行正常的, 后来的章节处理增加负载的配置来处理选择的使用案例. 这个章节包含下面的主题: Installing Logsta ...

  5. VMWare 虚拟机

    http://pan.baidu.com/share/link?shareid=5873&uk=941708466 VMWare是虚拟化解决方案厂商,旗下有多款虚拟机软件产品,其中最知名的要数 ...

  6. 华为u8800怎样root?

    用SuperOneClick就可以root了 .在手机上面进入设置-应用程序-开发-三个都要勾选.用数据线连接到电脑,确认可正常连接.不行就使用豌豆夹连接,豌豆夹会自动帮你安装手机的驱动.运行Supe ...

  7. 好用的QT连接

    QT属性控件项目https://github.com/lexxmark/QtnProperty比特币交易软件https://github.com/JulyIGHOR/QtBitcoinTrader导航 ...

  8. Beyond Compare 忽略两个文件内容的顺序比较文件内容(xjl456852原创)

    有时两个文件内容的顺序是不固定的,对比时需要忽略文件顺序进行对比. 可以这样设置: 点击菜单下面工具栏按钮: 点击Format旁的三角,选择Sorted,就会按文件的顺序排序比较.忽略了文件内容顺序的 ...

  9. Web Service工作原理

    Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  10. python查看删除你微信的账号

    #应用环境:python2.7 #!/usr/bin/env python # coding=utf-8 from __future__ import print_function import os ...