用神经网络识别手写数字
人类的视觉系统是是大自然的奇迹。考虑下面手写数字序列:
大多数人能够轻易地是识别出是504192。在我们大脑的每个半球都有一个基础的皮质,这就是我们熟知的V1区,它包含了14亿个神经元,并有着数十亿级的神经元连接。然而人类地视觉不仅包含V1区,同时还有一系列地视觉皮质——V2,V3,V4,V5——它们进行着复杂地图像处理。我们头脑携带着一个超级计算机,经过数百万年的进化,能够很好地适应视觉的世界。识别手写数字并不容易。但是,我们人类惊人地擅长将我们所见之物转化成脑中有意义地东西。当然这些工作都是在无意识地情况下完成的。因此,通常我们不会感受到我们地视觉系统在处理着怎样的难题。
当你尝试写程序去解决上述手写数字识别时,你就会发现这个问题有多难。我们大脑轻易在瞬间完成地事情变得相当困难了。一个简单地例子能描述我们识别形状为何变得不容易用算法表达——“一个9上面时一个环形,下面是一个钩”。当你想表达更加精细时,你会很快陷入特例的沼泽。这个问题看起来相当令人绝望。
神经网络用另一种方式来解决这个问题。思想就是利用大量的手写数字,即我们熟知的训练数据,然后能通过学习这些训练数据来发展一个系统。
换句话说,神经网络能够利用这些例子自动地学习识别手写数字地内在规则。另外,如果增大训练样本,那么神经网络能够学到更多手写数字的信息,因此能够提高它的准确率。尽管我们上面地图只有100个训练样本,但是在实际中可能会用到数以亿计的训练样本。
在这章我将写一个程序来实现一个神经网络能够学习识别这些手写数字。这段代码只有仅仅74行,没有用到任何神经网络的库。但是这段代码在没有人工的干预下达到超过96%的准确率。另外,在稍后地章节我们会用其他的一些想法来把我们的准确率提高到99%以上。实际上,最好的商用神经网络能够很好地用于银行识别支票,邮局识别地址等等。
我们关注手写数字识别是因为它是个很好的一个原型能够帮助我们学习神经网络地通用原理。作为一个模型,它有两点好处:首先它是个有挑战性的项目-识别手写数字是个不小地壮举-但是它也不是需要一个及其复杂地模型或者强大的计算能力。另外,它也能帮助我们学习更高级的技术,例如深度学习,打下良好的基础。因此,在这本书我一直会贯穿手写数字识别问题。在这本书的稍后章节,我将会讨论如何将这些思想应用到计算机视觉,语音识别,自然语言处理等领域。
当然,如果这章地内容仅仅关于如何写一段程序识别手写数字,那么篇幅会大大缩短!但我们将会学习神经网络地一些关键思想,包括两个重要的人工神经元(分类器和sigmoid神经元),神经网络地标准学习算法即我们熟知的梯度下降法(stochastic gradient descent)。我将会关注为何它们能起到这样的作用,用来建立你对神经网络地一些直觉。我不仅会给出基本数学原理,还会花费更长的篇幅来讨论,但我觉得如果你能收获更深层次的理解,这也是值得的。我们将会在本章的最后理解什么是深度学习以及为什么它们如此重要。
(译者注:欢迎大家访问我的小站:http://zhaohuaipeng.com/ 文章会同步更新)
【译】神经网络与深度学习 Ch1-Section0的更多相关文章
-
(转)神经网络和深度学习简史(第一部分):从感知机到BP算法
深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...
-
[DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈
觉得有用的话,欢迎一起讨论相互学习~Follow Me 吴恩达采访Geoffrey Hinton NG:前几十年,你就已经发明了这么多神经网络和深度学习相关的概念,我其实很好奇,在这么多你发明的东西中 ...
-
【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验【中英】
[中英][吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第二周测验 第2周测验 - 神经网络基础 神经元节点计算什么? [ ]神经元节点先计算激活函数,再计算线性函数(z = Wx + ...
-
【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】
[吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和“AI是新电力”相类似的说法是什么? [ ]AI为我们的家庭和办公室的个人设备供电 ...
-
对比《动手学深度学习》 PDF代码+《神经网络与深度学习 》PDF
随着AlphaGo与李世石大战的落幕,人工智能成为话题焦点.AlphaGo背后的工作原理"深度学习"也跳入大众的视野.什么是深度学习,什么是神经网络,为何一段程序在精密的围棋大赛中 ...
-
如何理解归一化(Normalization)对于神经网络(深度学习)的帮助?
如何理解归一化(Normalization)对于神经网络(深度学习)的帮助? 作者:知乎用户链接:https://www.zhihu.com/question/326034346/answer/730 ...
-
【神经网络与深度学习】卷积神经网络(CNN)
[神经网络与深度学习]卷积神经网络(CNN) 标签:[神经网络与深度学习] 实际上前面已经发布过一次,但是这次重新复习了一下,决定再发博一次. 说明:以后的总结,还应该以我的认识进行总结,这样比较符合 ...
-
【神经网络与深度学习】【CUDA开发】caffe-windows win32下的编译尝试
[神经网络与深度学习][CUDA开发]caffe-windows win32下的编译尝试 标签:[神经网络与深度学习] [CUDA开发] 主要是在开发Qt的应用程序时,需要的是有一个使用的库文件也只是 ...
-
【神经网络与深度学习】【Matlab开发】caffe-windows使能Matlab2015b接口
[神经网络与深度学习][Matlab开发]caffe-windows使能Matlab2015b接口 标签:[神经网络与深度学习] [Matlab开发] 主要是想全部来一次,所以使能了Matlab的接口 ...
-
【神经网络与深度学习】【python开发】caffe-windows使能python接口使用draw_net.py绘制网络结构图过程
[神经网络与深度学习][python开发]caffe-windows使能python接口使用draw_net.py绘制网络结构图过程 标签:[神经网络与深度学习] [python开发] 主要是想用py ...
随机推荐
-
MySQL的启动脚本
MySQL的启动脚本#!/bin/bashmysql_port=3308mysql_username="admin"mysql_password="password&qu ...
-
程序的链接和装入及Linux下动态链接的实现
http://www.ibm.com/developerworks/cn/linux/l-dynlink/ 程序的链接和装入及Linux下动态链接的实现 程序的链接和装入存在着多种方法,而如今最为流行 ...
-
vim使用详解
1 插入类命令 i // 在当前字符前插入 I // 在当前行首插入 a // 在当前字符后写入 A ...
-
开发版本控制git
git init 在git命令行中依次输入 touch readme.txt并回车, git add . 点代表所有, git commit -m "init first"并回车, ...
-
linq and rest api in sharepoint
//1.make sure your application using the .net fromwork 3.5 //2.create entity classes using the instr ...
-
GIS制图课程目录
由于更新次序跳跃式更新,因此很有必要整理一下全书目录,并将会按照实际学习的顺序进行更新. [前言] GIS制图课程前言 [理论篇] 理论篇-地图学与GIS制图的基础理论(一) 理论篇-地图学与GIS制 ...
-
Spring 学习——Spring AOP——AOP配置篇Advice(有参数传递)
声明通知Advice 配置方式(以前置通知为例子) 方式一 <aop:config> <aop:aspect id="ikAspectAop" ref=" ...
-
剑指offer(24)二叉树中和为某一值的路径
题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 题目分析 这题基本上一看就知道应该深度遍历整个树, ...
-
Server SSL certificate verification failed: certificate has expired, issuer is not trusted
Unable to connect to a repository at URL 'https://xxxxx/svn/include' Server SSL certificate verifica ...
-
黑马2018年JavaEE课程大纲
包含 黑马旅游网 企业级权限管理系统 品优购 十次方 乐优(没有,十次方级别) http://www.itheima.com/course/javaeetext.html 传智 ...