神经网络基础Convolutional neural networks

卷积神经网络Convolutional Neural Networks深度解析I 知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己! 对于文章中出现的任何错误请大家批评指出,会及时做出修改! 有任何想要讨论和学习的问题可联系我:cittaksana@qq.com 卷积神经网络Convolutional Neural Networks深度解析IConvolutional Neural Networks历史Convolutional Neura. 阅读详情

基于 BP 神经网络的识别手写体数字 - 神经网络基础

 发表于 2016-05-29

文章目录
  1. 1. 前言
  2. 2. 感知器 Perceptron
  3. 3. sigmoid 神经元
  4. 4. 神经网络的结构

前言

上个月,公司内部举办了机器学习比赛,内容是识别手写体数字。

我提交的方案参考 Michael Nielsen。以下大部分内容也参考了他写的深度学习在线电子书。

人类视觉系统其实非常神奇,恐怕自己都没意识到,考虑以下的手写数字:

504192504192

大部分人能够识别出数字为 504192。人脑每一半球都有着近 1.4 亿个神经元,之间有数以百亿的连接,能够进行复杂的图像处理。相当于每个人随身携带了一台超级计算机,数百万年的进化让该系统训练有素,能够适应并理解视觉世界。

当真正开始编写程序时,就会意识到手写数字中复杂之处。在教小孩认数字 9 时,可能会 “这个数字顶上有个圈,右下角有个垂直的竖线。。”,或者你给他看一眼写的 9,他就能学会了。但这些步骤根本无法用传统的算法来描述,因为一个手写数字有着无限的细节。

神经网络算法则用另一种方法来解决问题。首先,会准备如下的训练数据,

训练数据训练数据

然后,系统便以此为基础学习。换句话说,神经网络能够使用这些训练数据自动推导出识别手写数字的规则。并且,训练集越多,神经网络准确率越高。所以虽然上图只展示了 100 个数字,但如果有上百万个训练集的话,我们的手写数字识别器效果会更好。

神经网络是一个简单易实现的算法,不会超过 100 行代码。我们也会在将来探讨更为复杂的深度学习算法。

感知器 Perceptron

什么是神经网络?我们从感知器说起。

感知器是上世纪 50 年代,Frank Rosenblatt 受 Warren McCulloch 和 Walter Pitts 工作的启发,所提出的概念。如今,其他的人工神经元模型更常用,最广泛的是 sigmoid 神经元。现在先让我们看看感知器模型,它将帮助我们了解为什么 sigmoid 神经元更受欢迎。

感知器如何工作呢?一个感知器有多个二进制输入, x1,x2,… x1x2,并只有一个二进制的输出:

感知器模型感知器模型

这个例子中,感知器有三个输入, x1,x2,x3 x1x2x3。通常输入数目由需要而定。Rosenblatt 给每一个输入引入一个权重, w1,w2,… w1w2,在输出增加一个阈值,超过阈值时才会输出 1,以下为输出与输入的关系:

output=⎧⎩⎨⎪⎪⎪⎪⎪⎪0,∑jwjxj≤threshold1,∑jwjxj>threshold(1) (1)output0jwjxjthreshold1jwjxjthreshold

这个简单的公式就是感知器的工作原理!

下面给出一个简单的模型,虽然不是实际例子,但易于理解。假设周末即将来临,你听说自己所在的城市会举办奶酪节。你太喜欢奶酪了,但还是得考虑一下周末的天气情况。你将根据下面三个因素来做决定:

  1. 天气怎样?
  2. 你的女朋友和你一起去吗?
  3. 节日举办地驾车方便吗?

将这三种因素量化成二进制数  x1,x2,x3 x1x2x3。比如如果天气好,则  x1=1 x11,否则为  x1=0 x10。其他三种因素同理。现在假设你太喜欢奶酪了,以至于女朋友和交通不遍都不太影响你,但你又怕糟糕的天气弄脏衣服。我们可以将感知器设计为:天气权重 w1=6 w16,女朋友权重  w2=2 w22 和交通状况权重  w3=2 w32。可以看到天气占了很大的权重。最后将感知器阈值设为 5 便得到了我们需要的决策模型。一旦天气不好,感知器输出为 0,天气晴朗就输出 1。而女朋友同去与否和交通状况都没法影响感知器输出。

通过改变加权系数和阈值,便能得到不同的决策系统。比如将阈值调整为 3,这样女朋友就对你很重要啦,她要是想去,天气再糟你也得跟着一起受罪。

虽然感知器并不是人类决策系统的完整模型,但其能对各种条件做加权。而且似乎越复杂的网路越能做出微妙的决策:

复杂网络复杂网络

在这个网络中,第一列感知器 - 我们也称作感知器第一层,只是简单地对输入做加权。而第二层感知器则对第一层决策的结果再一步加权,做出更复杂更抽象的决定。同样还可以增加神经网络的层数来作出更复杂的决定。

顺便提一句,上述定义中,感知器只有一个输出,但是上述网络似乎有多个输出。事实上,这仍然是单输出系统,只是单个输出连接到了下一层的多个输入而已。

让我们来简化一下感知器的数学表达式,原来的判断条件  ∑jwjxj>threshold jwjxjthreshold 略显累赘。首先用点积形式简化,记  w⋅x≡∑jwjxj wxjwjxj,其中  w w 是权重向量, x x 是输入向量。然后将阈值移到不等式左边,并用偏移的概念取代它,记  b≡−threshold bthreshold。感知器规则可重写如下:

output={0,w⋅x+b≤01,w⋅x+b>0(2) (2)output0wxb01wxb0

偏移的概念可用来度量感知器的“兴奋”程度,假如偏移值很大,那么很小的输入就会在输出端反应出来。但若偏移值很小,则说明感知器比较“迟钝”,输入很大时,输出才有变化。接下来的文章中,都会使用偏移而不是阈值的概念。

sigmoid 神经元

自学习的 idea 听起来太棒了。如何为神经网络设计算法呢?假设我们的神经网络全部由感知器构成,输入为手写体数字扫描图的每一个原始像素点。我们希望神经网络能够自调整权重和偏移值,从而能对手写数字准确分类。为了解自学习过程,我们来做一个思想实验,假设我们在权重或偏移做一个小的改变,我们期望输出也会有相应小的变化:

神经网络神经网络

比如神经网络错误地将数字 9 认为为数字 8,我们就可以对参数做微调(可能某个人写的 9 像 8),修正输出,不断重复上述过程,从而使输出符合我们的预期。

实际中,由感知器组成的神经网络并不如所愿。由于感知器的输出不是连续的,0 到 1 是阶跃变化,上述参数的微调往往带来输出的剧烈变化。这下便导致自学习过程完全不可控,有时一点小小的噪声,输出就天壤之变。

针对这个问题,我们可以换用 sigmoid 神经元。sigmoid 神经元和感知器是类似的,但输出是连续且变化缓慢的。这个微小的不同使神经网络算法化成为了可能。

好,让我来描述一下 sigmoid 神经元。其结构和感知器一样:

sigmoid 神经元sigmoid 神经元

同样有输入  x1,x2,… x1x2。不同是,输入可以取 0 到 1 之间的任何值,比如 0.638。sigmoid 对每一个输入有一个权重, w1,w2,… w1w2,以及全局的偏移  b b。但是 sigmoid 的输出不再限于 0 和 1,而是

σ(z)≡11+e−z.(3) (3)σz11ez

将  z=w⋅x+b zwxb 展开,可得

11+exp(−∑jwjxj−b).(4) (4)11expjwjxjb

初看上去,sigmoid 神经元似乎与感知器有着天壤之别,其代数表达式也显得晦涩难懂。然而他们之间是有很多相似之处的。

假设当  z≡w⋅x+b zwxb 趋向于正无穷,则  e−z≈0 ez0 和  σ(z)≈1 σz1。换句话说,当输入很大时,sigmoid 神经元的输出趋向于 1,这和感知器是一样的。相反的,当  z≡w⋅x+b zwxb 趋向于负无穷,则  e−z→∞ ez∞,且  σ(z)≈0 σz0。这和感知器又是一样的。只有当输入不大时,才会与感知器表现不同。

让我们看一下 sigmoid 函数和阶跃函数的图像:

sigmoid 函数sigmoid 函数

阶跃函数阶跃函数

如果  σ σ 是阶跃函数,那么 sigmoid 神经元就会退化成感知器,也就是说 sigmoid 神经元是平滑了的感知器。函数  σ σ 的平滑度意味着,权重的微小变化  Δwj Δwj 和偏移的微小变化  Δb Δb 会在输出有相应的变化  Δoutput Δoutput,运用泰勒公式可得:

Δoutput≈∑j∂output∂wjΔwj+∂output∂bΔb,(5) (5)Δoutputj∂output∂wjΔwj∂output∂bΔb

其中,求和是对所有的权重和偏移变化求和。  ∂output/∂wj ∂output∂wj 是  output output 对  wj wj 的偏导数, ∂output/∂b ∂output∂b 是  output output 对  b b 的偏导数。从这个近似表达式可以看出, Δouput Δouput 是  Δwj,Δb ΔwjΔb 的线性函数。比起感知器那种非线性的输出输入关系,线性化便于调试,也有利于算法化。

如何理解 sigmoid 神经元的输出呢?显然最大的不同是 sigmoid 神经元不只输出 0 或 1,而是 0,1 之间所有的实数,比如 0.4 来指出一幅图片是 9 的概率为 40%,60% 的概率不是 9。

神经网络的结构

神经网络的结构:

神经网络的结构神经网络的结构

如上所述,最左边的那一层被称做输入层,其中的神经元是输入神经元。最右或者输出层包含了输出神经元,该例中只有一个输出神经元。由于中间的神经元既不是输入也不是输出,中间那层被称为隐藏层。该例中只有一个隐藏层,有些神经网络有多个隐藏层,比如下面这张图中有两个隐藏层:

两个隐藏层两个隐藏层

神经网络输入输出的设计通常很直接。比如手写数字,假设扫描图是  28×28=784 2828784 的灰度图像,输入就有 784 个神经元,输出就是每个数字的概率,一共 10 个输出神经元。

卷积神经网络(convolutional neural networks, CNN) 卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 它包括卷积层(convolutional layer)和池化层(pooling layer)。经典的多层感知机由一系列全连接层组成,卷积神经网络中除全连接层外,还有卷积层和池化(pooling)层。 (1) 卷积层 为什... 阅读详情

相关推荐

Convolutional Neural Networks (卷积神经网络)

刚进实验室,被叫去看CNN。看了一些博客和论文,消化了很久,同时觉得一些博客存在一些谬误。我在这里便尽量更正,并加入自己的思考。如果觉得本文有哪里不妥或疑惑,请在下面发表评论,大家一起探讨。 ps: 本篇博文原本来自我在cnblogs的博客,但是在那里好像没什么人讨论这个,所以干脆连博客也迁回了csdn,还是这里朋友多。   卷积神经网络(CNN)是deep learning的基础。传统的全连

Ace_Yom 1587

神经网络基础详解

神经网络基础 1、感知机:计算机模拟大脑经行信息处理的过程。有n个输入数据,通过权重与各数据之间的计算和,比较激活函数结果,得出输出。解决分类问题。 http://playground.tensorflow.org

yangke 1万+

深度卷积神经网络——Deep Convolutional Neural Networks

本文是对深度学习大牛Hinton于2012年发表在NIPS上面的论文《ImageNet Classification with Deep Convolutional Neural Networks》进行学习的笔记。 1.关于对数据集ImageNet的处理: 研究者将图片down-sample到固定像素256*256。对于一个矩形图片,先放缩图片使短边长度为256,才取此时图片中间的256*25

lhaof的博客 6553

神经网络基础

接下来详细讲一下梯度的计算。对于一个具有 1 个输出和。

si_ying的博客 1万+

卷积神经网络(Convolutional Neural Networks)概述

卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有...

u014678284的博客 1392

论文阅读随笔:一维卷积神经网络 Deep Pyramid Convolutional Neural Networks for Text Categorization

论文地址: 笔者实验室研究的主要方向是血管图像分割,以及利用生理信号评价脑血流自动调节功能。此文章是笔者在实验室会议中分享过的,以加水印PPT的形式贴上来,会附上原文链接(部分专栏文章会包含源码项目),感兴趣的读者可以自行更深入了解。 转载或作个人使用请标注出处,具有版权效力。 ...

海不辞水故其深 2670

【神经网络】 神经网络基础

机器学习、深度学习、神经网络 这几个相似名词,可以浅浅辨析一波。机器学习是一个广泛的概念,它包括了各种让计算机从数据中学习的技术和方法。神经网络是机器学习中的一个特定领域,它使用类似于人脑神经元的节点和连接来模拟学习过程。深度学习则是神经网络的一个子集,它利用多层神经网络结构来学习数据的深层表示,并在许多任务上取得了显著的性能提升。简而言之,机器学习是一个大的领域,神经网络是机器学习的一个子集,而深度学习是神经网络的一个进阶方向。

weixin_44715777的博客 2498

NeuralNetwork(神经网络)

从搭建简单神经网络逐步深入到深度学习,采用python语言编写

神经网络基础知识

神经网络基础知识简介

哈喽 4391

基于航天宏图PIE-SAR软件的高分三号(GF-3)SAR影像的预处理

软件官网 航天宏图—国内领先的卫星运营与应用服务提供商(官网) 一、数据导入 数据导入-GF-3-根据模式选择 参数文件导入解压后GF-3数据的XML文件 通道自动填充 设置输出目录 确定 等待,加载图像、自动构建金字塔 二、复数数据转换 强度/幅度特征是SAR影像最主要的特征之一,基于SAR强度/幅度影像可以提取地物目标信息,因此需要将SAR复数数据转换为SAR强度/幅度数据。导入输入影像,设置参数类型,输出目录、命名、类型; 漫长的等待 三、多视 为提...

weixin_52127098的博客 9002

SOLIDWORKS无法获得下列许可 无效的使用许可号码(-8,544,0) 解决办法大全

SOLIDWORKS无法获得下列许可 无效的使用许可号码(-8,544,0) 解决办法大全。版本:SolidWorks2021。电脑:惠普战66四代。软件安装不困难!

qq_43596278的博客 11万+

神经网络基础(NN)

这篇文章详细介绍了神经网络的基础知识、组成要素、优化方法、正则化策略以及一个完整的案例——使用神经网络构建手机价格分类模型。文章从神经网络的定义、神经元模型讲起,逐步深入到激活函数、权重初始化、损失函数、优化器等内容,并通过手机价格分类案例展示了从数据预处理到模型构建、训练、优化和部署的全过程,适合深度学习初学者系统学习。

gorgor在码农 3373

cut&tag学习笔记

上图是我得到的结果,下图是教程的结果,比对结果有一些差异,我也不知道具体原因是啥。谷歌了一下,发现原因可能是因为环境变量的问题,系统不知道picard的具体位置,需要设置全局环境变量,遂查了一下picard的位置。我发现我做出来的结果测序深度一致,但是比对的结果有一点差异,不知道是我的操作问题,还是参考基因组更新了导致比对结果出现了些许不同。上图是我得到的结果,下图是教程的结果,除了IgG_rep1外比对结果一致。上图是我的结果,下图是教程的结果,结果不太一致,不知道是具体的原因是什么。

weixin_52073820的博客 2422

Convolutional Neural Networks卷积神经网络

一:前导 Back Propagation反向传播算法 网络结构 经典的BP网络是三层结构:输入层X、输出层O和隐层Y。 输入向量:X = (x1,x2,…,xn)T 隐层输出:Y = (y1,y2,…,ym)T    权值 V = (v1,v2,…,vm)T 输出向量:O = (o1,o2,…,ol)T    权值W = (w1,w2,…,wl)T

lcj1105的专栏 884

高杂合度基因组组装实战:Hifiasm参数调优与purge_dups过滤效果对比(附猪毛菜案例)

本文深入探讨了高杂合度基因组组装中Hifiasm参数调优与purge_dups过滤的实战效果对比,通过猪毛菜案例详细解析了两种方法的适用场景与优化策略。文章重点分析了purge_dups在contig过滤中的显著效果,为基因组组装提供了关键的技术参考。

weixin_29232121的博客 495

英飞凌ADS开发环境搭建全流程:从安装到第一个程序烧录

本文详细介绍了英飞凌ADS开发环境搭建的全流程,包括环境准备、ADS安装与配置、MemTools烧录技巧等关键步骤。针对嵌入式开发者,特别提供了从安装到第一个程序烧录的实战指南,涵盖常见问题解决方案和优化建议,帮助开发者快速上手英飞凌AURIX系列微控制器的开发工作。

qsc901234的博客 333

卷积神经网络小结(Convolutional Neural Networks)

CNNs应用的最成功的一个例子:Yann LeCun(曾经是Hinton组的research associate) http://yann.lecun.com/exdb/lenet/index.html   code project上的一个C++写的例子,有很详细的文档说明: http://www.codeproject.com/Articles/16650/Neural-

xiaolu的专栏 1077

PCB布线避坑指南:晶振布局的5个致命错误(附正确示例图)

本文深入解析PCB布线中晶振布局的5个致命错误,包括底层布线、电容布局、地平面处理等关键问题,并提供实战解决方案。通过真实案例和量化数据,帮助硬件开发者避免常见陷阱,提升电路稳定性和性能。特别针对晶振这一高敏感元件,给出布线参数黄金法则和三维避让原则。

weixin_29215391的博客 428

Python----经典神经网络(《ImageNet Classification with Deep Convolutional Neural Networks》论文和AlexNet网络构建)

《ImageNet Classification with Deep Convolutional Neural Networks》这篇论文介绍了一种大型深度卷积神经网络,用于将ImageNet LSVRC-2010竞赛中的120万张高分辨率图像分为1000个不同的类别 [cite: 1, 2, 3]。该网络在测试数据上取得了显著优于现有技术水平的结果,top-1和top-5的错误率分别为37.5%和17.0% [cite: 2]。

weixin_64110589的博客 2158

Apollo Planning决策规划算法代码详细解析 (2):Scenario执行

上一章节讲Scenario的决策逻辑,当确认当前Scenario后,本章节继续深入讲解在代码中,Scenario的执行过程。Scenario的Process()函数根据配置文件顺序执行stage,并判断目前处于哪个stage。当确认好stage后调用该stage对应的Process()函数,来进行具体的规划任务。 码字不易,喜欢的朋友们麻烦点个关注与赞。 在本文你将学到下面这些内容: Scenario的Process()函数的作用于调用方式; Scenario对象的初始化方法; 如何给每个Scen

自动驾驶Player的博客 5608

RK3588开发笔记-ISP模块参数调试

本文详细介绍了基于RK3588平台的ISP模块参数调试流程。主要内容包括:硬件准备(RK3588板卡、IMX415摄像头等)、软件环境搭建(Ubuntu系统、RKISP_Tuner工具)、IMX415摄像头基础使用验证、RKISP2.x Tuner工具的使用方法(新建/加载IQ参数文件、Sensor配置、Raw图采集)以及最终IQ文件的部署。文章重点强调了基础标定的重要性,建议开发者分场景调试并参考官方文档,通过合理配置ISP参数来优化图像质量。该调试流程适用于RK3588平台的图像采集类项目开发。

flypig has a dream! 836

卷积神经网络(Convolutional Neural Networks,CNN)

卷积神经网络(Convolutional Neural Networks,CNN)是一种深度学习架构,它在图像和视频识别、分类以及相关的视觉识别任务中非常有效。CNN基于人脑处理视觉信息的方式,特别是视觉皮层中神经元的层次结构和连接模式。

weixin_43156294的博客 2874

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

探索高效神经网络:Local Binary Convolutional Neural Networks (LBCNN)

探索高效神经网络:Local Binary Convolutional Neural Networks (LBCNN) 项目介绍 Local Binary Convolutional Neural Networks (LBCNN) 是由卡内基梅隆大学和密歇根州立大学的研究团队开发的一种新型卷积神经网络(CNN)架构。该项目基于CVPR'17论文《Local Binary Convolutional...

gitblog_00346的博客 1114

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

卷积神经网络(Convolutional Neural Networks, CNN)

卷积神经网络(Convolutional Neural Networks, CNN)是深度学习领域中用于处理具有网格结构的输入(如图像和视频)的神经网络模型。

qq_34376868的博客 1843

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: Lexicographical order, dictionary order, permutation
下一篇: Fiddler
screaming
博客等级 码龄19年 60粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值