机器学习(八):神经网络(1)

神经网络和深度学习(二)——一个简单的手写数字分类网络 一个简单的手写数字分类网络接上一篇文章,我们定义了神经网络,现在我们开始手写体的识别。我们可以将识别手写数字这个问题划分为两个子问题,一,我们需要将一幅包含了许多数字的图像分解为一系列独立的图像,每一幅图像包含了一个数字。比如,我们需要把下图分解: 将该图分解为6幅独立的图像: 我们人可以很轻松的将其分开,但是计算机可不那么认为。一旦图片被分割后,程序需要将每个数字单独识别。因此,举个例 阅读详情

(主要参考书籍《神经网络与深度学习》)

1. 什么是神经网络

1.1 从感知器说起……

什么是感知器?很简单,前面我们已经说过了:
这里写图片描述

output=sign(wTx)

什么意思呢?我们有一些输入,我们会根据这些输入做出一个决定:YES OR NOT。我们可能会想这么简单有什么用呢?那我们得想一下电脑——CPU和人脑的组成了。

先从简单的CPU说起:只需要简单与或非三个门电路,我们就能组合出足够复杂的CPU!同理,只要我们把感知器视为一个个单元,经过组合,就能模拟实现足够复杂的功能。
用感知器实现与或门:
这里写图片描述
假设 x1,x2∈{ 0,1} ,
只要令 w=(−1,1,1)T ,输出 y=sign(−1+x1+x2) ——这就是一个与门;
只要令 w=(−1,2,2)T ,输出 y=sign(−1+2x1+2x2) ——这就是一个或门;
这里写图片描述
只要令 w=(1,−2)T ,输出 y=sign(1−2x1) ——这就是一个非门;

有了这三个基本元件,我就就可以用感知器组合出无限复杂的数字电路!譬如异或门: XOR(x1,x2)=OR(AND(NOT(x1),x2),AND(x1,NOT(x2))
但是呢,这里注意一点。异或是由NOT-AND-OR三种基本单元串联/级联而成。无论与或非门怎么并联也无法实现复杂的功能。所以说,只有当多个感知器按层次组织起来的时候,才能发挥出巨大的功能。

再说人脑。我们知道人脑是由很多神经元以某种复杂结构组合而成。当信号刺激某一神经元,且刺激强度超过某一阈值,那么此神经元就会被激活,将传导冲动到与它先连接的神经元。——每个神经元与上述的感知器类似。

根据上面的论述,我们知道感知器应该以类似如下的形式组织:
这里写图片描述
第⼀列感知器——我们称其为第⼀层感知器——通过权衡输⼊依据做出三个⾮常简单的决定。那第⼆层的感知器呢?每⼀个都在权衡第⼀层的决策结果上做出决定。以这种⽅式,⼀个第⼆层中的感知器可以⽐第⼀层中的做出更复杂和抽象的决策。在第三层中的感知器甚⾄能进⾏更复杂的决策。以这种⽅式,⼀个多层的感知器⽹络可以从事复杂巧妙的决策。这种形式称为神经网络。

理论上来讲,神经网络可以实现任何函数。

1.2 神经网络的基本形式

通过将感知器与与非门的对比,看起来感知器只是另一种形式的逻辑电路——跟传统电路没什么区别。其实不然。

感知器运算的通⽤性既是令⼈⿎舞的,⼜是令⼈失望的。令⼈⿎舞是因为它告诉我们感知器⽹络能和其它计算设备⼀样强⼤。但是它也令⼈失望,因为它看上去只不过是⼀种新的与⾮⻔。

然⽽,实际情况⽐这⼀观点认为的更好。其结果是我们可以设计学习算法,能够⾃动调整⼈⼯神经元的权重和偏置。这种调整可以响应外部的刺激,⽽不需要⼀个程序员的直接⼲预。这些学习算法是我们能够以⼀种根本区别于传统逻辑⻔的⽅式使⽤⼈⼯神经元。有别于显式地设计与⾮或其它⻔,我们的神经⽹络能简单地学会解决问题,这些问题有时候直接⽤传统的电路设计是很难解决的。

1.2.1 S型神经元/感知器

(下文中我们将神经元与感知器混用,其含义是一致的。)
根据上面的论述,我们知道神经网络的关键在于设计学习算法来自动调整权重和偏置。更确切地说,任何权重(或偏置)中的微小改变能引起一个输出的微小改变——这是学习算法能自动调整权重和偏置的基础:
这里写图片描述
假设我有一个神经网络用于手写数字识别。现在输入一个手写字图像“8”,它的输出是“9”。那么我们可以根据“对权重(或者偏置)的微⼩的改动仅仅引起输出的微⼩变化”,我们能够计算出怎么对权重和偏置做些⼩的改动,这样⽹络能够接近于把图像分类为“ 8”。然后我们要重复这个⼯作,反复改动权重和偏置来产⽣更好的输出。这时⽹络就在学习。

但是对于我们的感知器,“对权重(或者偏置)的微⼩的改动仅仅引起输出的微⼩变化”这件事不会发生。根据 f(x)=sign(wTx+b) ,⽹络中单个感知器上⼀个权重或偏置的微⼩改动有时候会引起那个感知器的输出完全翻转,如 0 变到 1。那样的翻转可能接下来引起其余⽹络的⾏为以极其复杂的⽅式完全改变。因此,虽然你的“ 9”可能被正确分类,⽹络在其它图像上的⾏为很可能以⼀些很难控制的⽅式被完全改变。这使得逐步修改权重和偏置来让⽹络接近期望⾏为变得困难。也许有其它聪明的⽅式来解决这个问题。但是这不是显⽽易⻅地能让⼀个感知器⽹络去学习。

问题出在了sign函数阶跃性上,我们如果选用一个平滑的函数来代替sign函数,那么问题就得到了解决,根据我们在logistic regression算法的讲述,我们知道s型函数就是一个非常好的选择。这里我们用σ来表示: σ(x)=11+exp(−x)
这里写图片描述

1.2.2 神经网络基本构架

这里写图片描述
其中的每个单元都是S型神经元。
这个⽹络中最左边的称为输⼊层,其中的神经元称为输⼊神经元。最右边的,即输出层包含有输出神经元,中间层,既然这层中的神经元既不是输⼊也不是输出,则被称为隐藏层。

输入层就是输入空间x,如果是64*64手写数字图像,那么输入层神经元为4906,且数值为像素的灰色值。输入层非常直观简单。

输出层
如果是二分类问题,则输出层只需要一个神经元即可,回答0/1。
但是对于手写数字图像来说,我们要识别数字,这是一个10分类问题,那么直觉上来说输出层需要10个神经元,输入为一个向量。其中 (1,0,0,0,0,0,0,0,0,0)T 表示输出为0,…, (0,0,0,0,0,0,0,0,0,9)T 表示输出为9。

那么一个自然而言的问题是:⼀个看起来更⾃然的⽅式就是使⽤ 4 个输出神经元,把每⼀个当做⼀个⼆进制值,结果取决于它的输出更靠近 0 还是 1
。四个神经元⾜够编码这个问题了,因为 24 = 16 ⼤于 10 种可能的输⼊。为什么我们反⽽要⽤ 10 个神经元呢?

经验主义的回答是:我们可以实验两种不同的⽹络设计,结果证明对于这个特定的问题⽽⾔, 10 个输出神经元的神经⽹络⽐ 4 个的识别效果更好。

而我们想探究的是:有没有启发性的的⽅法能提前告诉我们⽤ 10 个输出编码⽐使⽤ 4
个输出编码更有好呢?(这有助于我们理解神经网络是在做什么)

⾸先考虑第⼀个输出神经元,它告诉我们⼀个数字是不是
0。它能那么做是因为可以权衡从隐藏层来的信息。隐藏层的神经元在做什么呢?假设隐藏层的第⼀个神经元只是⽤于检测如下的图像是否存在:
这里写图片描述

隐藏层
我们来总结一下:对于二分类问题,输出层只需要一个神经元;对于多分类问题,输出层是一个向量——这足够简单直观。相比之下。隐藏层的设计则堪称⼀⻔艺术。特别是,通过⼀些简单的经验法则来总结隐藏层的设计流程是不可⾏的。相反,神经⽹络的研究⼈员已经为隐藏层开发了许多设计最优法则,这有助于⽹络的⾏为能符合⼈们期望的那样。

1.3 迈向深度学习

我们考虑这样一个问题:识别图片中有没有人脸。我们如何做呢?
我们受到启发的⼀个想法是将这个问题分解成⼦问题:图像的左上⻆有⼀个眼睛吗?右上⻆有⼀个眼睛吗?中间有⼀个⿐⼦吗?下⾯中央有⼀个嘴吗?上⾯有头发吗?诸如此类。如果⼀些问题的回答是“是”,或者甚⾄仅仅是“可能是”,那么我们可以作出结论这个图像可能是⼀张脸。相反地,如果⼤多数这些问题的答案是“不是”,那么这张图像可能不是⼀张脸。
当然,这仅仅是⼀个粗略的想法,⽽且它存在许多缺陷。也许有个⼈是秃头,没有头发。也许我们仅仅能看到脸的部分,或者这张脸是有⻆度的,因此⼀些⾯部特征是模糊的。不过这个想法表明了如果我们能够使⽤神经⽹络来解决这些⼦问题,那么我们也许可以通过将这些解决⼦问题的⽹络结合起来,构成⼀个⼈脸检测的神经⽹络。
这里写图片描述
子网络也可以继续分解:
这里写图片描述
这些⼦问题也同样可以继续被分解,并通过多个⽹络层传递得越来越远。最终,我们的⼦⽹络可以回答那些只包含若⼲个像素点的简单问题。举例来说,这些简单的问题可能是询问图像的⼏个像素是否构成⾮常简单的形状。这些问题就可以被那些与图像中原始像素点相连的单个神经元所回答。

最终的结果是,我们设计出了⼀个⽹络,它将⼀个⾮常复杂的问题——这张图像是否有⼀张⼈脸——分解成在单像素层⾯上就可回答的⾮常简单的问题。它通过⼀系列多层结构来完成,在前⾯的⽹络层,它回答关于输⼊图像⾮常简单明确的问题,在后⾯的⽹络层,它建⽴了⼀个更加复杂和抽象的层级结构。包含这种多层结构——两层或更多隐藏层——的⽹络被称为深度神经⽹络。


还是跟之前所说的一样,这仅仅是一个启发性的想法。我们并不能知道神经网络具体做了什么,怎么做的。

2. 学习一个神经网络

一个典型地神经网络结构:
这里写图片描述
我们还是将偏置和权重放置在一起。其中 w(l)ij 代表的是连接第l层第j个神经元到第(l+1)层第i个神经元的权重(注意i和j的顺序,你可能觉得反过来更加合理。接下来会告诉你为什么要这样做)。
那么就有:

s(l+1)j=∑iw(l)jia(l)i=w(l)j⋅a(l)
机器学习入门--神经元模型 人工神经元模型我们高中都学习过神经元大概是个什么样子。通常是由一个神经细胞都有树突、轴突、细胞核等等。树突可以接受其他神经元传来的信号,然后对这些信号进行一下处理传递给下一个神经元。在这里我们通过一个数学模型来描述一下这个过程。在上面这副图里面、…这些带表神经元从前面的神经元所接受到的信号;、…表示权重即表示这个输入对输出有多大的影响,有一个函数f(*)表示神经元对于信号的处理过程;是输出打下一个... 阅读详情

相关推荐

【AI】用iOS的ML(机器学习)创建自己的AI App

在机器学习中,一切都始于模型,这是进行预测或识别的系统。教计算机学习涉及使用训练数据的机器学习算法进行学习。从训练中生成的输出通常称为机器学习模型。有不同类型的机器学习模型来解决同一个问题(例如对象识别),但使用不同的算法。是其中一些机器学习算法。

欧阳天涵的专栏 5758

机器学习、深度学习、神经网络还傻傻分不清吗?

目录 一.人工智能、机器学习、深度学习、神经网络是什么 二.机器学习的分类 一.人工智能、机器学习、深度学习、神经网络是什么 简单来说,人工智能的概念是最大最空的;机器学习其次,它是实现人工智能的一个重要途径;深度学习是机器学习中的一类方法,而深度学习是从神经网络基础上发展得到的,核心还是人工神经网络算法,最基本的算法没有变。 1.人工智能:可以像人类大脑一样思考的机器,拥有人类的智慧。 科学家对AI未来的发展畅想了三个阶段,我们目前处于弱人工智能阶段,正在探索强人工智能...

王青宇的博客 4万+

iOS 11: CORE ML—浅析

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/OWD5UEiVu5JpYArcd2H9ig 作者:liujizhou 导语:在刚刚过去的WWDC上,苹果发布了Core ML这个机器学习框架。现在,开发者可以轻松的使用Core ML把机器学习功能集成到自己的应用里,让应用变得更加智能,给用

腾讯Bugly的专栏 3124

机器学习和PHP的神经网络 PHP ML库

机器学习和PHP的神经网络 PHP ML库

hffyfdt的博客 660

PHP-ML 学习/机器学习和PHP的神经网络

HomePHP-ML - Machine Learning library for PHP 前段时间看见了关于PHP,机器学习,神经算法的这个库,但是没有中文翻译,就萌生了,翻译这个库,然后用自己的学习过程,写点什么。于是就有了这个。 在PHP中,机器学习的新方法。算法、交叉验证、预处理、特征提取以及更多在这个库中PHP-ML必须PHP>7.0一个简单的分类 use Phpml\Class

余农场主 1032

使用神经网络做二分类,输出层需要几个神经元?应该选择哪一种激活函数?如果要处理minst数据、输出层需要几个神经元?使用那种激活函数?如果使用神经网络预测房价,输出层需要几个神经元、使用什么激活函数?

使用神经网络做二分类,输出层需要几个神经元?应该选择哪一种激活函数?如果要处理minst数据、输出层需要几个神经元?使用那种激活函数?如果使用神经网络预测房价,输出层需要几个神经元、使用什么激活函数? 使用神经网络做二分类,输出层需要几个神经元?应该选择哪一种激活函数? 答:使用神经网络进行二分类模型构建的时候、输出层只需要一个神经元即可。而且在二分类模型中我们往往需要估算所属类别的概率,那么一般使用的激活函数就是sigmoid激活函数。 例如,我们判断收到的邮件是否是垃圾邮件、我们新

data+scenario+science+insight 4802

Unity中的机器学习ML-Agents

一:介绍 二:搭建环境 ——升级Python版本 因为mac自带的是python2.7.X的版本, 查看当前python版本:python -V ——搭建Python环境 安装Anconda:https://www.anaconda.com/products/individual

L的博客 8317

SAP 零售 FMS 物料主数据(一)

SAP 零售 FMS 物料主数据(一) SAP 对于鞋服行业最新的解决方案-FMS(相当于原来的AFS+Retail);更偏向与零售; 商品主数据与原来的AFS大不相同,取消了原来的Grid的网格概念,取而代之的是变式;商品主数据维护也偏向于Retail的维护模式;事物代码也不是MM01而是MM41 /MM46; 在维护商品主数据前,需要与商品部沟通定义各种商品相关的规范如编码规则,大中小类 ,颜色库,尺码库等,此处不赘述; 创建商品需要确定哪些物料是变式物料,哪些是常规不带特性的单一物料;这决定了在创建商

weixin_45518759的博客 5061

Mac 环境配置jdk、Maven

3、终端打开配置jdk时候建好的脚本文件: open -e .bash_profile。4、查看maven是否安装成功和系统能不能识别maven/mvn命令:⬇️。输入⬇️并保存: 其中第一行JAVA_HOME替换为自己下的jdk路径。,安装编译好的二进制版本,具体安装zip还是tar.gz我看的。5、查看jdk是否安装成功和系统能不能识别java命令:⬇️。至此,我的Mac系统的环境配置jdk、Maven完成!然后就发现我的maven命令还是没作用,不识别,下载后直接安装即可,很快,点几下就OK了。

weixin_42416791的博客 4401

基于CANopenNode协议栈在正点原子探索者开发板上进行移植

配置好之后进行采用keil IDE进行代码生成即可,还需要进行CANopenNode的代码集成,并参照demo进行代码移植。发送完成后心跳包以1s的周期重新开始发送。正点原子的开发板引出的是CAN1接口。这里的心跳时间间隔设置为100ms。则将心跳包周期设置为0。

wangfandashe的博客 4697

【电子元件篇】电容的九大作用与选型指南-超简单解读

本文系统介绍了电容的基础概念、核心功能及实际应用。电容作为存储电荷的被动元件,其容值公式为C=Q/V,单位包括法拉及常用派生单位。文章重点解析了电容的九大功能:滤波(通过RC低通电路抑制噪声)、耦合(传递交流隔离直流)、去耦(稳定供电)、储能(短暂供电)、定时(RC延时)、谐振(RLC振荡)、旁路(高频通路)、电压调节(DC-DC转换)以及保护(吸收浪涌)。同时详细阐述了电容分类(陶瓷/电解/薄膜等)、参数选型要点(耐压/容值/精度/温度)及PCB设计注意事项,并针对不同应用场景提供了具体选型建议和常见误区

2301_81299416的博客 4011

SAR成像专栏目录

为方便大家阅读,我做了一个专栏目录,蓝色字有超链接,可以直接打开。 本专栏默认读者已具备雷达系统的基本知识或者已阅读过雷达导论专栏中的文章。 1. 概述 SAR成像概述 星载SAR的各项指标解读(史上最全) SAR成像算法的实现途径与算力分析 2. SAR成像原理与SAR系统简介 雷达与分辨率 SAR成像原理与方法 SAR图像的形成和处理 SAR系统设计 3. 点目标仿真 点目标仿真(一)—— 数学模型 点目标仿真(二)—— Matlab仿真 4. 成像算法 更新中 雷达导论专

7467

PHP与Node.js的对比及优缺点分析

PHP和Node.js是两种常用的服务器端编程语言,它们在不同的应用场景下各有优势和劣势。本文将全方位比较PHP和Node.js的特点,以及它们在编程中的优缺点,并提供相应的源代码示例供参考。需要注意的是,本文只是对PHP和Node.js的一些优缺点进行了简要介绍,实际应用中还需要考虑其他因素,如团队经验、项目规模和预算等。最终的选择应该基于全面的评估和需求分析。PHP:PHP是一种同步阻塞的编程语言,它的处理方式是一次只处理一个请求。Node.js:Node.js的性能较高,特别适合处理高并发的请求。

ByteSparkX的博客 888

(八)DDR_PHY架构及功能——(PUB组成、初始化及Training流程、Clock关系)

文章目录一、DDR_PHY结构组成1.1、DDR Memory子系统1.2、DDR_PHY架构组成1.3、PUB模块功能实现流程1.3.1、DDR系统初始化流程1.3.2、PLL初始化流程 一、DDR_PHY结构组成 1.1、DDR Memory子系统   Memory子系统主要由DDR Controller和DDR_PHY(含DDR_IO)两个部分组成。DDR Controller主要承担其它子系统(如CPU)与Memory子系统进行数据交互时的传输效率及调度,DDR_PHY主要负责数据交互过程中的传输速

Mr.翟的博客 1万+

Google Earth Engine ——在 GEE 中计算面积含各类要素计算(土地分类为例)

在遥感应用中工作时,许多操作需要计算面积。例如,需要在监督分类后计算每个类所覆盖的面积,或者找出灾害后区域内受影响的面积。计算栅格和矢量的面积在大多数软件包中是一个简单的操作,但在 Google Earth Engine 中以稍微不同的方式完成 - 这可能会让初学者感到困惑。在这篇文章中,我将概述计算矢量和图像面积的方法。我们将涵盖以下主题,从简单到复杂。 特征的面积计算,即矢量数据 图像的面积计算(单类) 按类别计算图像的面积 按区域按类别计算图像的面积 按年按地区按类别计算图像的面积 准备数据

此星光明博客 4024

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 机器学习(七):集成方法(2)Boost
下一篇: 机器学习(九):神经网络(2)——深度学习
wangyanphp
博客等级 码龄14年 90粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值