Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度学习入门第四讲

深度学习入门第四讲

作者头像
用户1107453
发布于 2018-06-21 08:30:09
发布于 2018-06-21 08:30:09
4820
举报
文章被收录于专栏:UAI人工智能UAI人工智能

1.4 一个简单的分类手写数字的网络

定义神经网络后,让我们回到手写识别上来。我们可以把识别手写数字的问题分成两个子问 题。首先,我们希望有个方式把包含许多数字的图像分成一系列单独的图像,每个包含单个数 字。例如,我们想要把图像

分成六个单独的图像,

我们人类可以很容易解决这个分割的问题,但是对于计算机程序来说却是个挑战。一旦图像 被分割,那么程序需要把每个单独的数字分类。例如,我们想要我们的程序能识别上面的第一 个数字

是 5。

我们将专注于编程解决第二个问题,分类单独的数字。这样是因为,一旦你有分类单独数字的有效方法,分割问题是不难解决的。有很多途径可以解决分割的问题。一种方法是尝试不同 的分割方式,用数字分类器对每一个切分片段打分。如果数字分类器对每一个片段的置信度都 比较高,那么这个分割方式就能得到较高的分数;如果数字分类器在一或多个片段中出现问题, 那么这种分割方式就会得到较低的分数。这种方法的思想是,如果分类器有问题,那么很可能是 由于图像分割出错导致的。这种思想以及它的变化形式能够比较好地解决分割问题。因此,与 其关心分割问题,我们不如把精力集中在设计一个神经网络来解决更有趣、更困难的问题,即 手写数字的识别。我们将使用一个三层神经网络来识别单个数字:

网络的输入层包含给输入像素的值进行编码的神经元。就像下一节会讨论的,我们给网络的 训练数据会有很多扫描得到的 28 × 28 的手写数字的图像组成,所有输入层包含有 784 = 28 × 28个神经元。为了简化,上图中我已经忽略了 784 中大部分的输入神经元。输入像素是灰度级的, 值为 0.0 表示白色,值为 1.0 表示黑色,中间数值表示逐渐暗淡的灰色。

网络的第二层是一个隐藏层。我们用 n 来表示神经元的数量,我们将给 n 实验不同的数值。 示例中用一个小的隐藏层来说明,仅仅包含 n = 15 个神经元。

网络的输出层包含有 10 个神经元。如果第一个神经元激活,即输出 ≈ 1,那么表明网络认 为数字是一个 0。如果第二个神经元激活,就表明网络认为数字是一个 1。依此类推。更确切地 说,我们把输出神经元的输出赋予编号 0 到 9,并计算出那个神经元有最高的激活值。比如,如 果编号为 6 的神经元激活,那么我们的网络会猜到输入的数字是 6。其它神经元相同。

你可能会好奇为什么我们用 10 个输出神经元。毕竟我们的任务是能让神经网络告诉我们哪 个数字(0, 1, 2, . . . , 9 )能和输入图片匹配。一个看起来更自然的方式就是使用 4 个输出神经元, 把每一个当做一个二进制值,结果取决于它的输出更靠近 0 还是 1 。四个神经元足够编码这个 问题了,因为 24 = 16 大于 10 种可能的输入。为什么我们反而要用 10 个神经元呢?这样做难 道效率不低吗?最终的判断是基于经验主义的:我们可以实验两种不同的网络设计,结果证明 对于这个特定的问题而言,10 个输出神经元的神经网络比 4 个的识别效果更好。但是令我们好 奇的是为什么使用 10 个输出神经元的神经网络更有效呢。有没有什么启发性的方法能提前告诉 我们用 10 个输出编码比使用 4 个输出编码更有好呢?

为了理解为什么我们这么做,我们需要从根本原理上理解神经网络究竟在做些什么。首先考 虑有 10 个神经元的情况。我们首先考虑第一个输出神经元,它告诉我们一个数字是不是 0 能那么做是因为可以权衡从隐藏层来的信息。隐藏层的神经元在做什么呢?假设隐藏层的第一个神经元只是用于检测如下的图像是否存在:

为了达到这个目的,它通过对此图像对应部分的像素赋予较大权重,对其它部分赋予较小 的权重。同理,我们可以假设隐藏层的第二,第三,第四个神经元是为检测下列图片是否存在:

就像你能猜到的,这四幅图像组合在一起构成了前面显示的一行数字图像中的 0:

如果所有隐藏层的这四个神经元被激活那么我们就可以推断出这个数字是 0。当然,这不是 我们推断出 0 的唯一方式 —— 我们能通过很多其他合理的方式得到 0 (举个例子来说,通过上 述图像的转换,或者稍微变形)。但至少在这个例子中我们可以推断出输入的数字是 0。

假设神经网络以上述方式运行,我们可以给出一个貌似合理的理由去解释为什么用 10 个输 出而不是 4 个。如果我们有 4 个输出,那么第一个输出神经元将会尽力去判断数字的最高有效 位是什么。把数字的最高有效位和数字的形状联系起来并不是一个简单的问题。很难想象出有 什么恰当的历史原因,一个数字的形状要素会和一个数字的最高有效位有什么紧密联系。

上面我们说的只是一个启发性的方法。没有什么理由表明这个三层的神经网络必须按照我所 描述的方式运行,即隐藏层是用来探测数字的组成形状。可能一个聪明的学习算法将会找到一 些合适的权重能让我们仅仅用 4 个输出神经元就行。但是这个启发性的方法通常很有效,它会 节省你大量时间去设计一个好的神经网络结构。

练习

1. 通过在上述的三层神经网络加一个额外的一层就可以实现按位表示数字。额外的一层把原 来的输出层转化为一个二进制表示,如下图所示。为新的输出层寻找一些合适的权重和偏 置。假定原先的 3 层神经网络在第三层得到正确输出(即原来的输出层)的激活值至少是0.99,得到错误的输出的激活值至多是 0.01。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 UAI人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习的三个主要步骤!
神经网络类似于人类的神经细胞,电信号在神经元上传递,类似于数值在神经网络中传递的过程。
Datawhale
2021/08/27
2K0
深度学习的三个主要步骤!
卷积神经网络的“封神之路”:一切始于AlexNet
现在,我打开Google Photos,输入“海滩”,就能查看我过去10年里去过的所有海滩的照片。我从来没有浏览过我的照片,也没有一张张给它们贴标签;相反,谷歌是根据照片本身的内容来识别海滩的。
新智元
2019/01/09
1.3K0
深度学习入门教程 第三讲
1.3 神经网络的架构 在下一节我会介绍一个神经网络,我们可以用它来很好地分类手写数字。准备进入下一节时,解释一些可以让我们命名网络中不同部分的术语是很有帮助的。假设我们有这样的网络: 前面提过,这个
用户1107453
2018/06/21
3850
终于有人把深度学习的数学知识讲透了!被50000人奉为入门神作!
对于小白来说,想快速入门的话,《深度学习的数学》深度学习入门最好的书籍,没有之一。浅显易懂,书中有大量插图。
统计学家
2024/10/08
2310
终于有人把深度学习的数学知识讲透了!被50000人奉为入门神作!
深度学习的数学-读书笔记
深度学习毫无疑问会是以后的热门技术了,虽然不可能转行AI了,不过了解下其内部的基本原理也是很不错的,这篇是《深度学习的数学》第一章的读书笔记;
韦东锏
2023/08/26
2130
深度学习的数学-读书笔记
深度学习的 Hello World : 一文读懂什么是 MNIST 的经典入门
如果你刚刚接触深度学习,或者正准备踏入这片神奇的领域,那么你肯定听过 MNIST 数据集。这是深度学习的“入门级”经典教程,就像“Hello World”一样,是你理解机器学习和神经网络如何工作的起点。
不惑
2025/01/18
2.2K0
深度学习的 Hello World : 一文读懂什么是 MNIST 的经典入门
神经网络基本原理及Python编程实现
在生物神经网络中,每个神经元的树突接受来自之前多个神经元输出的电信号,将其组合成更强的信号。如果组合后的信号足够强,超过阀值,这个神经元就会被激活并且也会发射信号,信号则会沿着轴突到达这个神经元的终端,再传递给接下来更多的神经元的树突,如图1所示。
lujohn3li
2021/09/01
2.4K0
一文详解神经网络 BP 算法原理及 Python 实现
最近这段时间系统性的学习了 BP 算法后写下了这篇学习笔记,因为能力有限,若有明显错误,还请指正。 什么是梯度下降和链式求导法则 假设我们有一个函数 J(w),如下图所示。 梯度下降示意图 现在,我们要求当 w 等于什么的时候,J(w) 能够取到最小值。从图中我们知道最小值在初始位置的左边,也就意味着如果想要使 J(w) 最小,w的值需要减小。而初始位置的切线的斜率a > 0(也即该位置对应的导数大于0),w = w – a 就能够让 w 的值减小
AI研习社
2018/03/28
1.9K0
一文详解神经网络 BP 算法原理及 Python 实现
深度学习|神经网络模型简介和梯度下降求解
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 — 回顾 上一篇总结了常用的机器学习算法,论述了为什么需要深度学习,以及一种系统地展开deep learning的学习清单,具体请参考: 为什么要有深度学习?系统学习清单 都知道深度学习地实施一般都借助神经网络模型,因此,接下来,先看一看,神经网络模型是怎么一回事。 02 — 神经网络模型 2.1 神经网络模型组成 一般地,神经网络模型包括
double
2018/04/02
1.4K0
深度学习|神经网络模型简介和梯度下降求解
深度学习入门教程 第一讲
人类视觉系统是世界上众多奇迹之一。看看下面的手写数字序列: 大多数人毫不费力就能够认出这些数字为 504192。这么容易反而让人觉着迷惑了。在人类的 每个脑半球中,有着一个初级视觉皮层,常称为 V1,
用户1107453
2018/06/21
3960
总结 27 类深度学习主要神经网络:结构图及应用
目前深度学习中的神经网络种类繁多,用途各异。由于这个分支在指数增长,跟踪神经网络的不同拓扑有助于更深刻的理解。本文将展示神经网络中最常用的拓扑结构,并简要介绍其应用。
3D视觉工坊
2021/08/25
4.2K0
总结 27 类深度学习主要神经网络:结构图及应用
连载 | 深度学习入门第六讲
1.6 实现我们的网络来分类数字 好吧,现在让我们写一个学习如何识别手写数字的程序,使用随机梯度下降算法和 MNIST训练数据。我们需要做的第一件事情是获取 MNIST 数据。如果你是一个 git 用戶,那么你能够 通过克隆这本书的代码仓库获得数据, git clone https://github.com/mnielsen/neural-networks-and-deep-learning.git 如果你不使用 git,也可以从这里下载数据和代码。 顺便提一下,当我在之前描述 MNIST 数据时,我
用户1107453
2018/06/21
4290
零基础入门深度学习 | 第三章:神经网络和反向传播算法
无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习这个超热的技术,会不会感觉马上就out了? 现在救命稻草来了,《零基础入门深度学习》系列文章旨在讲帮助爱编程的你从零基础达到入门级水平。零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章。虽然文中会有很多公式你也许看不懂,但同时也会有更多的代码,程序员的你一定能看懂的(我周围是一群狂热的Clean Code程序员,所以我写的代码也不会
用户1332428
2018/03/09
3.7K0
零基础入门深度学习 | 第三章:神经网络和反向传播算法
TensorFlow和深度学习入门教程
关键词:Python,tensorflow,深度学习,卷积神经网络 正文如下: 前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络,并把其PPT的参考学习资料给了我们, 这是codelabs上的教程:《TensorFlow and deep learning,without a PhD》 https://codelabs.developers.google.com/codelabs/cloud-tensorflow-mnist/#0 当然需要安装python,教程推荐使用pytho
小莹莹
2018/04/18
1.5K0
TensorFlow和深度学习入门教程
译文 | 与TensorFlow的第一次接触 第四章:单层神经网络
在前言中,已经提到经常使用深度学习的领域就是模式识别。编程初学者都是从打印“Hello World”开始,深度学习中我们则是从识别手写数字开始。 本章中,我会讲解如何在TensorFlow中一步步建立单层神经网络,这个建立的神经网络用来识别手写数字,它是基于TensorFlow官方新手指南中的一个例子改变而来。 根据本书的风格,在本例子中会简化一些概念与理论证明。 如果读者在读完本章后,有兴趣研究例子中相关的理论概念,建议读者去阅读神经网络与深度学习一书,该书同样可在网上获得,该书阐述了本例子中的一些深度理
用户1332428
2018/03/09
9800
译文 | 与TensorFlow的第一次接触 第四章:单层神经网络
明月深度学习实践001:LeNet网络入门学习
之前进行深度学习建模时,基本就是套模型,微调参数,基本也能解决问题。不过最近进行OCR识别,大模型效果其实已经不错了,但是还是有些比较明显的场景下却是没有识别到,而大模型本身也比较笨重,基于上面去调可能效果未必好,于是想建立一个简单的模型来进行识别,因为那些识别不到的不少是一些单独的在单元格里的数字。
明月AI
2021/10/28
3630
明月深度学习实践001:LeNet网络入门学习
【机器学习篇】穿越数字迷雾:机器深度学习的智慧领航
在当今科技飞速发展的时代,机器深度学习已成为推动众多领域变革的核心力量,从语音识别到图像分类,从自然语言处理到自动驾驶,其影响力无处不在。深度学习模拟人类大脑的神经网络结构,使计算机能够自动从大量数据中学习复杂的模式和特征,从而实现对各种任务的精准预测和决策。本文将深入探讨机器深度学习的原理、算法、实践应用,并通过详细的 C++ 代码示例展示其实现过程,帮助读者全面理解这一前沿技术。
羑悻的小杀马特.
2025/01/23
1350
【机器学习篇】穿越数字迷雾:机器深度学习的智慧领航
神经网络与深度学习框架
神经网络和深度学习是当前人工智能领域的热门话题,尤其在图像识别、自然语言处理和语音识别等任务中,神经网络的应用取得了突破性进展。深度学习框架的出现使得构建和训练神经网络变得更加高效和便捷。本文将介绍神经网络的基本概念、如何构建基本的神经网络,并结合深度学习框架进行实现。
LucianaiB
2025/01/20
1220
算法金 | 致敬深度学习三巨头:不愧是腾讯,LeNet问的巨细。。。
更多内容,见微*公号往期文章:有史以来最详细的卷积神经网络(CNN)及其变体讲解!!!(多图)
算法金
2024/07/03
1490
算法金 | 致敬深度学习三巨头:不愧是腾讯,LeNet问的巨细。。。
谷歌云大会教程:没有博士学位如何玩转TensorFlow和深度学习(附资源)
机器之心原创 作者:吴攀、李亚洲 当地时间 3 月 8 日-10 日,Google Cloud NEXT '17 大会在美国旧金山举行。谷歌在本次大会上正式宣布了对数据科学社区 Kaggle 的收购并宣布了多个重量级云 API。机器之心作为受邀媒体也在第一时间从现场发回了报道:《现场直击 | 李飞飞首度亮相谷歌云大会:发布全新 API,解读 AI 民主化》和《现场直击 | 谷歌云大会最后一天解读开放性:从 TensorFlow 开源到开放云平台》。而作为开发者,最关心的则莫过于本次大会中各种更加详细和专一的
机器之心
2018/05/07
9160
谷歌云大会教程:没有博士学位如何玩转TensorFlow和深度学习(附资源)
推荐阅读
相关推荐
深度学习的三个主要步骤!
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档