机器学习笔记(7)——神经网络初探_九十年代 神经网络算力限制-程序员宅基地

技术标签: # 机器学习笔记  机器学习  人工智能  神经网络  

上一篇:机器学习笔记(6)——过拟合与正则化

之前我们已经学完了基本的线性回归与逻辑回归算法以及相关的正则化技巧,下面我们就要进入令人激动的神经网络的世界

前言

之前我们讲线性回归和逻辑回归举的例子中样本都只有少数几个特征,现在我们来看一个如下有100个原始特征的分类问题(下面的样本分布图只是一种抽象的表述,不必在意,高维空间也画不出来),如果想要拟合出比较好的决策边界,我们可能需要加入很多多项式,使得最终拟合函数中有成千上万个特征,这计算起来就很复杂了
在这里插入图片描述
而机器学习中的问题通常都有大量的特征,如果你觉得100个特征用逻辑回归似乎也还能处理,那么下面我们再来看一个计算机视觉中的一个经典问题——汽车图片识别,我们之所以看到一张汽车图片时能识别出汽车,是因为我们的视网膜接收到这片光信号后转换为电信号,然后传输给大脑的神经网络进行特征分析卷积处理,最后得出汽车的概念,但是对于计算机本身来说一张图片就是一片像素点矩阵,不同的图片对于计算机而言就是不同大小的像素点矩阵以及矩阵中像素点值的不同(也就是还停留在视网膜接收光信号转换为电信号的阶段),例如下图中汽车图片的一个门把手,对于计算机而言就是一个包含不同像素强度值的像素点矩阵(但这个矩阵中的像素强度值肯定是某种特别的分布,我们人眼才会识别出这是一个门把手)。那么计算机视觉要做的通过大量不同的样本图片进行学习,建立一个分类器,分析图片中每个区域块的像素强度特征,以此来分类图片中是否有汽车
在这里插入图片描述
如下图,假设从每个样本图片中选择同样位置的两个像素点的强度值pixel 1和pixel 2作为图片的特征,那么我们可能最终会发现汽车图片和非汽车图片在特征空间中分布在不同的区域,我们就可以通过一个非线性假设拟合出预测函数。然而就算图片只有50x50像素,也有2500个特征(如果是RGB彩色图片,即每个像素点由三个值构成,那么就有7500个特征),如果我们要通过包含所有的二次项特征(就是前面讲的多项式特征,x1x2这样,很容易得出共有C22500项)来做逻辑回归,就有近300万个特征了,那不知道要计算多久才能迭代出总代价函数的最低点了,因此我们就需要一种算法能够处理有巨量特征的机器学习问题,能够像我们的人脑一样快速的判断出一张图片中的信息,这就是神经网络
在这里插入图片描述

一、神经网络(Neural Networks)思想的起源

神经网络的思想其实早在上个世纪四五十年代就出现了,最开始是想通过模仿大脑思考的方式来制造出类人智能算法,在八九十年代被广泛使用,九十年代后期由于各种原因(比如神经网络的计算量较大,当时计算机算力不够)应用逐渐减少了,但随着近年来机器学习的火热,以及计算机算力的提升使得大规模神经网络得以运行,神经网络又得到了广泛的应用和发展。

神经网络的思想起源于大脑,而人类的大脑是如此神奇,可以处理声音、处理触觉、处理图像等,如果我们想模仿大脑是否就要编写上千个复杂程序来分别模拟这些功能呢?其实不然,我们可以假设大脑只使用了一种学习算法来实现这些功能,而且这种假设也是有相关证据的,我们能听到声音是因为耳朵收到声音信号后将信息传递给了大脑中专门处理声音的听觉皮层进行处理,而科学家们曾经在动物身上做过一种叫神经重连的实验,把动物耳朵到听觉皮层的神经切断,然后将视觉神经连接到听觉皮层上,发现听觉皮层会学会看这一功能(也就是能处理图像),这就引申出一个理念:如果一块脑组织能处理光、声音和触觉信号,那么也许就存在一种学习算法,可以同时处理视觉、听觉和触觉信息,而不是需要上千种算法来模拟大脑的各种功能。
在这里插入图片描述

漫谈:我们可以这样假设,对于大脑来说声音信号、视觉信号、触觉信号等都属于“信号”这一大类,耳朵、眼睛、皮肤等这些功能部位接收到这些不同类别的信息后经过各自的转换接口向上转型为“信号”大类的对象然后交给大脑皮层处理,因此让其他一个功能的大脑皮层处理其它类型的信号时经过学习适应也能处理,不会出现完全不兼容的情况,是不是有一点面向对象的感觉了?(当然这只是我思维漫游时的一种猜想,扯远了hh)

二、大脑神经元的工作原理

俗话说,大道至简,前面我们说了大脑各种复杂的功能可以抽象为一块脑组织进行处理,而复杂的脑组织的工作单元也主要是由大量简单(抽象的简单)的神经元构成,现在我们就来看下大脑的最小计算单元——神经元的工作原理。

如下是一个大脑神经元细胞(Neuron)的主体结构,它有许多可以接收信息的输入通道树突(Dendrite),可以接收来自其它神经元的信息;负责对接收的信息进行变换处理的细胞体(Cell body);一条用来输出计算出的信息的通道轴突(Axon),可以向其它神经元传递信号。神经元从输入通道接收一定数目的信息,然后经过细胞体的计算,最后通过输出通道将结果传递到其它节点,这就是一个神经元的工作原理。
在这里插入图片描述
下面是一组神经元的示意图,神经元的轴突连接着其它神经元的树突,如果一个神经元需要与另一个神经元沟通,就通过轴突给另一个神经元传递电流信号,另一个神经元通过树突接收到信号后就进行计算然后执行下一步的动作,这就是我们人类思考、感知和刺激肌肉工作最基本的原理,大道至简如此
在这里插入图片描述

三、模拟神经元的模型

那么我们很容易就可以将上述神经元抽象为一个逻辑单元,现在我们用一个简化的神经元模型来模拟我们之前学过的逻辑回归的预测函数,如下图,它可以接收三个输入,每条输入通道上可以有一个权重系数w(也称为参数,就是将输入乘以一个系数再传递给计算单元),然后经过称为激活函数(Activate Function)的计算单元g(z)的计算后,最后通过输出通道输出一个值。这就是神经网络算法中最基本的运算单元
在这里插入图片描述

但有人可能会想,这看起来好像没有什么神奇的,不就是把之前学的函数换了一个形式表述嘛,但这就就像大脑的神经元一样,明明单个结构看起来挺简单的,组合在一起却能完成非常复杂的功能。那么现在我们就来看下多个神经元构成的神经网络的结构

如下图的神经网络,网络中的第一层即前三个输入称为输入层(input layer),最后一层的神经元称为输出层(output layer),输出最终的计算结果,而包含三个神经元的第二层称为隐藏层(hidden layer),其中每个神经元都有自己的激活函数,它们接收后面传递过来的数据信息,经过计算后再传递给下一层的神经元。这种输入经过中间隐藏层神经元计算转化不断向前传播,最后经过输出层神经元计算得到最终结果的神经网络就叫前馈神经网络,这种传播方式也叫前向传播(Forward Propagation,FP)

神经网络的结构可以有很多种,比如如下神经网络有两个隐藏层,Layer3接收Layer2的计算结果作为输入然后计算压缩出更复杂的特征(也称为隐藏特征,在某些模型中可以用中间的隐藏特征得出一些有趣的结论),最后汇聚到输出层计算出最终结果。
在这里插入图片描述

旁白:目前我们可能还很难直接体会到神经网络这种结构的妙处,但是应该能隐约感觉到,这是一个样本特征值流动、转换、信息压缩最后提取汇集成一个我们想要的特征的过程,就像我们看一张汽车图片,图片上有很多特征,但是最后在我们脑中汇集成了汽车这一概念,相比于逻辑回归,神经网络这种算法是不是更符合我们人类思考的模式呢?并且相比于逻辑回归直接一个式子,这种结构拆分成了多层函数来处理,我们还能在中间做观察和调整,就显得了更加精妙和更多的可能性。不过只有经过后续大量的实战后我们才能比较明确的认识到神经网络的作用,现阶段只需要记住它的大概形式即可。

四、神经网络的简单例子

下面我们就用神经网络的结构实现几个简单的分类器。如下图左样本分布(下图右的简化版本),每个样本有x1、x2两个特征,我们可以看出来它是大概满足y = x1 XNOR x2这样一个异或非(XNOR,即相同时取1,不同时取0)函数的
在这里插入图片描述

那么我们在神经网络中实现对输入的异或非呢?我们知道异或非的运算规则是 (a ∧ b) ∨ (¬a ∧¬b),那么我们就先分别来看与、或、与非是怎样实现的

1. 神经元实现与(AND)运算

首先我们加入一个偏置单元(bias unit)即常数特征1,通过推算可得出当这三个输入的权重参数分别为-30、20、20时,即激活函数g(z)=g(-30+20x1+20x2),可以将样本分为两类,一类(至多只有一个特征为1的)样本输出值接近0,另一类(特征x1、x2都为1的)样本输出值接近1,这就实现了类似与(x1 AND x2)的运算
在这里插入图片描述

2. 神经元实现或(OR)运算

通过调整上述神经元的权重参数,同样可以实现类似或(x1 OR x2)的运算,如下
在这里插入图片描述

3. 神经元实现与非(NAND)运算

有了上述经验我们很容易就能得出非运算就是给输入值x乘上一个较大的负权重,这样当x为0时激活函数g(z)输出值就接近1,当x为1时g(z)输出值就接近0。那么与非运算就是特征值x1、x2都乘上一个较大的负权重,那么只有当x1、x2同时为0时输出值才为1
在这里插入图片描述

4. 神经元组合成神经网络实现XNOR分类

有了上述三个神经元,我们就可以将它们组合起来实现异或非运算。如下图,隐藏层的 与运算神经元 和 与非神经元 接收输入层输入然后计算输出,输出层的 或运算神经元 接收来自隐藏层的三个输入(还有一个是偏置神经元输出为常数1),最后计算输出结果。这样我们就实现了一个小型的神经网络,可以对样本进行XNOR分类,当样本有且只有一个特征的值为1时,它的输出值接近0,当样本的两个特征同时为0或同时为1时,它的输出值接近1。
神经网络就是这样接收输入,然后通过第一层隐藏层计算出一系列特征,再通过前面的隐藏层计算出更复杂的特征,最后归纳到最后一层计算出结果,体会到了吗?
在这里插入图片描述

旁白:可能有人会想了,不就是一个异或非嘛,干嘛弄得这么复杂?不要忘了这是为了实现我们开始那个简化版样本分布的分类器(而且这个网络也不是真正的异或非,输出的结果不是精确的0和1而是为1的概率),我们完全可以通过灵活调整这个网络中的参数实现对那个更复杂的样本分布的分类,这就是这个网络结构的意义所在。

五、用神经网络进行多元分类

神经网络还有一个显著优点就是可以同时进行多元分类,而不仅仅是二分类。如下图我们的样本中有四类图片,分别是行人、汽车、摩托车和货车,这样的图片分类就是一个四分类问题,我们只需要通过设计网络结构让输出层有四个神经元,每个神经元输出为一类图片的可能性,这样我们就实现了同时多分类。
在这里插入图片描述
到这里我们已经掌握了神经网络的大体结构,那么对于一个实际的问题我们应该如何设计中间的隐藏层,如何得到合适的权重参数呢?且听下回分解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_56602092/article/details/123517430

智能推荐

什么是内部类?成员内部类、静态内部类、局部内部类和匿名内部类的区别及作用?_成员内部类和局部内部类的区别-程序员宅基地

文章浏览阅读3.4k次,点赞8次,收藏42次。一、什么是内部类?or 内部类的概念内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。public class TestA{ class TestB {}}二、 为什么需要内部类?or 内部类有什么作用?1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。2、内部类可以对同一个包中的其他类隐藏起来。3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。三、 内部类的分类成员内部_成员内部类和局部内部类的区别

分布式系统_分布式系统运维工具-程序员宅基地

文章浏览阅读118次。分布式系统要求拆分分布式思想的实质搭配要求分布式系统要求按照某些特定的规则将项目进行拆分。如果将一个项目的所有模板功能都写到一起,当某个模块出现问题时将直接导致整个服务器出现问题。拆分按照业务拆分为不同的服务器,有效的降低系统架构的耦合性在业务拆分的基础上可按照代码层级进行拆分(view、controller、service、pojo)分布式思想的实质分布式思想的实质是为了系统的..._分布式系统运维工具

用Exce分析l数据极简入门_exce l趋势分析数据量-程序员宅基地

文章浏览阅读174次。1.数据源准备2.数据处理step1:数据表处理应用函数:①VLOOKUP函数; ② CONCATENATE函数终表:step2:数据透视表统计分析(1) 透视表汇总不同渠道用户数, 金额(2)透视表汇总不同日期购买用户数,金额(3)透视表汇总不同用户购买订单数,金额step3:讲第二步结果可视化, 比如, 柱形图(1)不同渠道用户数, 金额(2)不同日期..._exce l趋势分析数据量

宁盾堡垒机双因素认证方案_horizon宁盾双因素配置-程序员宅基地

文章浏览阅读3.3k次。堡垒机可以为企业实现服务器、网络设备、数据库、安全设备等的集中管控和安全可靠运行,帮助IT运维人员提高工作效率。通俗来说,就是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。由于堡垒机内部保存着企业所有的设备资产和权限关系,是企业内部信息安全的重要一环。但目前出现的以下问题产生了很大安全隐患:密码设置过于简单,容易被暴力破解;为方便记忆,设置统一的密码,一旦单点被破,极易引发全面危机。在单一的静态密码验证机制下,登录密码是堡垒机安全的唯一_horizon宁盾双因素配置

谷歌浏览器安装(Win、Linux、离线安装)_chrome linux debian离线安装依赖-程序员宅基地

文章浏览阅读7.7k次,点赞4次,收藏16次。Chrome作为一款挺不错的浏览器,其有着诸多的优良特性,并且支持跨平台。其支持(Windows、Linux、Mac OS X、BSD、Android),在绝大多数情况下,其的安装都很简单,但有时会由于网络原因,无法安装,所以在这里总结下Chrome的安装。Windows下的安装:在线安装:离线安装:Linux下的安装:在线安装:离线安装:..._chrome linux debian离线安装依赖

烤仔TVの尚书房 | 逃离北上广?不如押宝越南“北上广”-程序员宅基地

文章浏览阅读153次。中国发达城市榜单每天都在刷新,但无非是北上广轮流坐庄。北京拥有最顶尖的文化资源,上海是“摩登”的国际化大都市,广州是活力四射的千年商都。GDP和发展潜力是衡量城市的数字指...

随便推点

java spark的使用和配置_使用java调用spark注册进去的程序-程序员宅基地

文章浏览阅读3.3k次。前言spark在java使用比较少,多是scala的用法,我这里介绍一下我在项目中使用的代码配置详细算法的使用请点击我主页列表查看版本jar版本说明spark3.0.1scala2.12这个版本注意和spark版本对应,只是为了引jar包springboot版本2.3.2.RELEASEmaven<!-- spark --> <dependency> <gro_使用java调用spark注册进去的程序

汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用_uds协议栈 源代码-程序员宅基地

文章浏览阅读4.8k次。汽车零部件开发工具巨头V公司全套bootloader中UDS协议栈源代码,自己完成底层外设驱动开发后,集成即可使用,代码精简高效,大厂出品有量产保证。:139800617636213023darcy169_uds协议栈 源代码

AUTOSAR基础篇之OS(下)_autosar 定义了 5 种多核支持类型-程序员宅基地

文章浏览阅读4.6k次,点赞20次,收藏148次。AUTOSAR基础篇之OS(下)前言首先,请问大家几个小小的问题,你清楚:你知道多核OS在什么场景下使用吗?多核系统OS又是如何协同启动或者关闭的呢?AUTOSAR OS存在哪些功能安全等方面的要求呢?多核OS之间的启动关闭与单核相比又存在哪些异同呢?。。。。。。今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCXrdI0k-1636287756923)(https://gite_autosar 定义了 5 种多核支持类型

VS报错无法打开自己写的头文件_vs2013打不开自己定义的头文件-程序员宅基地

文章浏览阅读2.2k次,点赞6次,收藏14次。原因:自己写的头文件没有被加入到方案的包含目录中去,无法被检索到,也就无法打开。将自己写的头文件都放入header files。然后在VS界面上,右键方案名,点击属性。将自己头文件夹的目录添加进去。_vs2013打不开自己定义的头文件

【Redis】Redis基础命令集详解_redis命令-程序员宅基地

文章浏览阅读3.3w次,点赞80次,收藏342次。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。此时,可以将系统中所有用户的 Session 数据全部保存到 Redis 中,用户在提交新的请求后,系统先从Redis 中查找相应的Session 数据,如果存在,则再进行相关操作,否则跳转到登录页面。当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。_redis命令

URP渲染管线简介-程序员宅基地

文章浏览阅读449次,点赞3次,收藏3次。URP的设计目标是在保持高性能的同时,提供更多的渲染功能和自定义选项。与普通项目相比,会多出Presets文件夹,里面包含着一些设置,包括本色,声音,法线,贴图等设置。全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,主光源和附加光源在一次Pass中可以一起着色。URP:全局只有主光源和附加光源,主光源只支持平行光,附加光源数量有限制,一次Pass可以计算多个光源。可编程渲染管线:渲染策略是可以供程序员定制的,可以定制的有:光照计算和光源,深度测试,摄像机光照烘焙,后期处理策略等等。_urp渲染管线

推荐文章

热门文章

相关标签