当前位置: 首页 > news >正文

深度学习之分类手写数字的网络

面临的问题

        定义神经⽹络后,我们回到⼿写识别上来。我们可以把识别⼿写数字问题分成两个⼦问题:

  • 把包含许多数字的图像分成⼀系列单独的图像,每个包含单个数字;

        也就是把图像 ,分成6个单独的图像

  • 分类单独的数字

        我们将专注于编程解决第⼆个问题,分类单独的数字。这样是因为,⼀旦你有分类单独数字 的有效⽅法,分割问题是不难解决的。

  • ⼀种⽅法是尝试不同 的分割⽅式,⽤数字分类器对每⼀个切分⽚段打分;
    • 如果数字分类器对每⼀个⽚段的置信度都 ⽐较⾼,那么这个分割⽅式就能得到较⾼的分数;
    • 如果数字分类器在⼀或多个⽚段中出现问题, 那么这种分割⽅式就会得到较低的分数
    • 这种⽅法的思想是,如果分类器有问题,那么很可能是 由于图像分割出错导致的。
    • 这种思想以及它的变化形式能够⽐较好地解决分割问题。

数字的分类

我们使用一个三层神经网络来识别单个数字;

                

⽹络的输⼊层包含给输⼊像素的值进⾏编码的神经元。

  • 我们给⽹络的 训练数据会有很多扫描得到的28x28的⼿写数字的图像组成;
  • 所有输入层包含784 = 28 x 28个神经元;
  • 输⼊像素是灰度级的, 值为0.0表⽰⽩⾊,值为1.0表⽰⿊⾊,中间数值表⽰逐渐暗淡的灰⾊。

⽹络的第⼆层是⼀个隐藏层;

  • 我们⽤n来表⽰神经元的数量,我们将给实验不同的数值。

⽹络的输出层包含有个神经元;

  • 如果第⼀个神经元激活,即输出≈1,那么表明⽹络认为 数字是⼀个0。
  • 如果第⼆个神经元激活,就表明⽹络认为数字是⼀个1。
  • 依此类推。
  • 更确切地说, 我们把输出神经元的输出赋予编号0到9,并计算出那个神经元有最⾼的激活值;

为什么需要10个输出神经元?

        ⼀个看起来更⾃然的⽅式就是使⽤5个输出神经元, 把每⼀个当做⼀个⼆进制值,结果取决于它的输出更靠近0还是1。

        为什么我们反⽽要⽤个神经元呢?这样做难道 效率不低吗?最终的判断是基于经验主义的:我们可以实验两种不同的⽹络设计,结果证明对于这个特定的问题⽽⾔,10个输出神经元的神经⽹络⽐4个的识别效果更好.

        为了理解为什么我们这么做,我们需要从根本原理上理解神经⽹络究竟在做些什么;

  • 我们⾸先考虑第⼀个输出神经元,它告诉我们⼀个数字是不是0。它能那么做是因为可以权衡从隐藏层来的信息。
  • 隐藏层的神经元在做什么呢?假设隐藏层的第⼀个神经元只是⽤于检测如下图像是否存在
  • 为了达到这个⽬的,它通过对此图像对应部分的像素赋予较⼤权重,对其它部分赋予较⼩的 权重
  • 同理,我们可以假设隐藏层的第⼆,第三,第四个神经元是为检测下列图⽚是否存在

        

  • 就像你能猜到的,这四幅图像组合在⼀起构成了前⾯显⽰的⼀⾏数字图像中的0:
  • 如果所有隐藏层的这四个神经元被激活那么我们就可以推断出这个数字是0。 

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

启发性

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

                

http://www.lqws.cn/news/522991.html

相关文章:

  • 【Linux】Lniux基本指令(1)
  • Acrobat JavaScript 中的 util 对象
  • Windows下安装zookeeper
  • 玛哈特机械矫平机:精密制造的“应力消除师”与“平整度雕刻家”
  • 机器学习01
  • 鸿蒙 GridRow 与 GridCol 组件解析:响应式网格布局指南
  • 局域网环境下浏览器安全限制的实用方法
  • SpringBoot(九)--- HttpClient、Spring Cache、Spring Task、WebSocket
  • RegionServer热点问题解决方案
  • 企业级应用中的编程风格深度剖析与实践指南
  • ROI切割技术详解:从基础到实践
  • Vue计算属性与监视属性
  • 物流涂层科技赋能仓储:创冷科技引领高温环境下的仓储物流安全升级
  • 【GStreamer】减小延时的参数设置、从RTP中获取时间戳
  • npm(或pnpm)时报:证书过期 certificate has expired问题
  • 【网站内容安全检测】之3:获取所有外部域名访问后图像
  • VBA技术资料MF329:获得屏幕分辨率
  • python学习笔记(深度学习)
  • 二维前缀和与差分深度解析
  • Redis:持久化
  • dockerfile命令及构建
  • (C++)vector数组相关基础用法(C++教程)(STL库基础教程)
  • 多线程知识点
  • ffmpeg获取组播中指定视频流、音频流(通过pid、program)首发
  • 盖雅工场 2025 香港 SAP NOW 大会深度解析:AI 重构亚太劳动力管理数字化生态
  • Nginx服务部署与配置
  • DexGraspVLA:面向通用灵巧抓取的分层VLA-2025.5.22-北京大学
  • HTML表格元素
  • Spring 用的是什么动态代理?它是怎么配置的?
  • fluentd + elasticsearch + grafana 不能显示问题