《神经网络与深度学习35042.pptx》由会员分享,可在线阅读,更多相关《神经网络与深度学习35042.pptx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、神经网络&深度学习基础知识图像的特征m计算机图像是由一定数量的点阵像素构成的。如上所示,我们看到的是一辆车,但实际上计算机理解的是一个由各像素点的灰度值组成的矩阵,它并不能直接理解“这是一辆车”。m我们需要将“这是一辆车”这个事实用完全逻辑化的语言描述出来,让计算机建立一个函数,这个矩阵自变量 x 所对应的结果因变量 y 就是“车”。难度可想而知。m我们先看一个简单的例子。一个数字 9,我们如何描述它的形状?m现在有这么一种描述方法:这个数字的上半部分是一个圆,下半部分是靠右的一撇。用数学语言表达就是,上半部分能够以方程 x12+y12=r12(r10)拟合,下半部分能以 x22+y22=r2
2、2(x20,y20)拟合,那么就能说明这个图形极有可能是数字 9。m特征:用来描述一个对象具体表现形式的逻辑语言。m如前页所述,“上半部分是圆,下半部分是靠右的一撇”就是数字 9 的形状特征。m特征是构成一个对象的必要但不充分条件,因为一个对象是由无数个特征组成的,在有限数量的特征里,我们永远只能预估该对象,而不能 100%确定该对象究竟是什么。经典的图像特征之Haar 特征m思考:我们一眼就能看出来这幅图像上有一栋房子。但任何一幅图像都是由一定数量的像素点组成的,我们是怎么从这些单纯的像素点里发现了房子的呢?m这个问题还可以换一种问法:我们怎么知道一幅图像中是有前景对象的,对于一张纯色画布,
3、我们为什么无法发现任何对象?m这涉及到一个现象:颜色突变。上图所圈出的区域中,都是颜色变化较大的区域。而我们就会自然地认为,这是物体的边缘,而由封闭边缘构成的区域就是物体。m不仅是房子这个整体,房子里的门、窗户等元素我们都能发现,而原因自然也是颜色突变。m思考:人能看见绝对透明(100%透明)的玻璃吗?m我们定义一个形状的时候,本质上就是在定义其产生颜色突变的像素点的大致相对位置。比如圆,在一个直角坐标系的图象上上,存在所有满足(x-a)2+(y-b)2=r2 条件的坐标点的某个小邻域内有较大的颜色突变,那么这幅图像上就有一个圆的形状。左上方是一幅色盲测试图,不色盲的朋友都能看到左下角有一个蓝
4、色的圆,而且是一个空心圆。m思考:我们该如何用颜色突变的方式定义一辆车?(先不考虑前身后身等复杂情况,假设所有的车都是像左下图这样固定角度)mHaar 特征:对大量同类的图像样本进行学习,找出这些图像所有的产生了颜色突变的相对坐标位置,将这些同类图片作为正样本,同时给出不属于该类的,远多于同类图片的负样本,让机器对这些样本进行学习,并最终生成一个对象识别模型,用来正确寻找一幅图像中你所需要寻找的元素。因此,Haar 特征广义上来说就是图像的形状特征。mHaar 特征对于邻域的规定有三种:边缘特征、中心特征、对角线特征,其中边缘特征又分横向和纵向。通过计算白色区域像素亮度和与黑色区域像素亮度和之
5、差来反映图像的颜色突变区域,即边缘区域。特别地,对于 C 模型,需要将黑色区域乘以 2 作为其像素亮度和。Haar 特征实例人脸检测m我们用 OpenCV 中的一个训练得较好的人脸检测 Haar 模型,对一张照片进行人脸检测。结果如上。Haar 特征的不足之处mHaar 特征本质上是检测图像中的颜色突变的,所以对图像的形状较为敏感,同时对其他的特征(如颜色等)敏感度较低。而且 Haar 只适用于刚性运动物体的检测,而不适用于物体精细化的识别。人脸检测和人脸识别难度上完全不是一个数量级的。m事实上,任何一种单一图像特征都是不全面的,是不能适应所有场景的。其实,图像本身只是由像素点组成的,图像的特
6、征那是我们人为整理出来的,严格地说它并不属于图像的一部分。那我们能不能从图像的像素点本身来寻找一些算法呢?最基本的决策模型感知器m生活中我们经常要对一些事情做出决策。但不论我们最终选择了什么,都一定是有原因的,而且原因往往不止一个。m现在我们来玩一个情景游戏。假如周末公司组织员工外出旅游,你是去还是不去呢?这是一个最简单的感知器,最终结果只有两种,Yes 和 No。只是,结果虽然简单,但是你会考虑诸多因素,最终决定结果。m假设你考虑以下三个因素:A.天气如何;B.可否带伙伴一起去;C.费用、伙食、旅馆等条件是否符合个人预期。m假设你是这样想的:和同事一块出去玩,是很难得的一件事,能带伙伴一起去
7、那是锦上添花,不能也没关系;但天气是挺重要的,阴雨绵绵玩得不开心;旅馆嘛,这么多人一起,不会太好,但也不会太差,最重要的是享受。那么这时候,你的决策就和当地天气唯一相关,其他两个因素没有任何影响。m感知器的本质就是对各个输入量的加权和进行分析,做出 Yes or No 的决策的模型。m上述你考虑的三个因素可以作为感知器的三个输入量 x1,x2,x3,并设积极的结果为 1,消极的结果为 0。三者都有对应的权重量w1,w2,w3。现计算它们的加权和 w1x1+w2x2+w3x3,同时加上一个偏差值 b。若其为正(大于 0),则最终的回答是 Yes,否则(小于或等于 0)回答 No。m如果你的想法如
8、前所述,那么你的感知器模型可以是这样的:w1=6,w2=2,w3=2,b=-5,即判断 6x1+2x2+3x2 5 的正负。在所有的输入量均只能取 0 和 1 的前提下,我们可以很明显地看到,唯独当 x1=1 时,结果才为正,即决策为 Yes,只要 x1=0,决策就必然为 No。m思考:若将 b 改为-3,其他权重量不变,那么决策会变成什么样?较为复杂的感知器多层感知器m非诚勿扰,一个非常流行的电视节目。男嘉宾上台后,在场的女嘉宾首先给男嘉宾打印象分,然后通过前后播放的多个不同的 AVR 以及各种提问对【自己是否愿意跟男嘉宾走】这个问题给出回答。m点评:m很多事情的决策,并不是评估多个彼此独立
9、的条件,往往某个条件是和之前的一些条件相关的。比如上面这个案例,第一印象好坏算作感知器的输入量 x1,只有当它等于 1 时,后面的输入量才有意义。但也不是它等于 1 就一定表示最终的结果是 Yes,还需要分析其他的输入量才能得出最终结果。m那么,这种经过多层判断,得出最终结果的感知器,就叫多层感知器。如下图所示,是一个双层感知器,第二层的神经元的决策是跟第一层的决策相关的。m其实,本质上来讲,多层感知器也同样可以展开成单层感知器,任何一个决策都是可以用标准与或式来表达的。而感知器的本质恰恰就是逻辑电路。m那么感知器和逻辑电路两者的区别是什么呢?两个字:学习。感知器可以通过给定的数据,通过一定的
10、算法来学习各个输入量的权重,以及全局偏差值。而这是已经固定成型的逻辑电路所做不到的。m多层感知器的存在,也是为了建立一个符合常规思考方式的学习模型而存在的,展开成单层感知器后,学习目的不明显,学习效果会下降。m学习是靠要大量样本的积累的。每一个样本都有一定数量的输入量(考察条件)和一个理想输出值(理应如此),不必给出各输入量的权重以及最终偏差值,机器通过不断自我调整寻找这些量,使得尽可能多的样本匹配上其理想输出值。(注:有时候样本之间可能会因为各种原因出现矛盾的理想输出值,所以不能保证所有的样本都匹配)m但是这里有一个问题,我们目前的决策是非此即彼的,非常机械化的决策。比如一个数字 9,如果下
11、方的那一撇写得不弯,变成了一条直线,那是不是这个数字就不是 9 了呢?我们是不是应该有一个过渡的过程呢?不再非此即彼Sigmoid 神经元m回想一下我们以前的数学考试,一道解答题 12 分,老师批改时重点看的是过程,就算结果错了,只要过程是对的,也绝不会把 12 分全扣完。m但是,现在的感知器,因为结果是非此即彼的,所以它做的就是把 12 分全扣完的事,俗话叫【一棍子打死】。这样的话,即使我们知道做错了,我们也并不知道错在哪里,也很难修正错误。mSigmoid 神经元解决了这样的问题。每一个输入量不再像感知器那样只能是 0 或 1,而可以是 01 之间的实数。最终输出结果也一样,不再是斩钉截铁
12、的 Yes(1)或 No(0),同样也可以是 Not sure(between 01)。我们的最终输出结果其实是一种概率,结果为积极的概率,通常被叫做 Sigmoid 函数。它的表达式和图像如上图所示。mSigmoid 神经元其实是由如左上所示的感知器函数图像平滑而来的。函数图像平滑,当任何一个输入量 x 只变化了一点点 x 时,最终输出量 y 也只会变化一点点 y。任何时候,当 x0 时,一定有 y0,而这是感知器做不到的。这使得决策不会产生突变,更有利于学习,如右上图所示。多层 Sigmoid 神经元神经网络m神经网络的本质就是多层感知器/多层 Sigmoid 神经元。它同样由输入样本、输
13、入量、对应权重、全局偏差值,以及最终决策构成,只是最左端的输入量成为了输入层、最右侧的最终决策成为了输出层,中间的运算量构成了隐藏层。它并不是那么神秘的事物。建立神经网络自学习模型m现在,假设我们已经有一个手写体数字图像数据集,并且都已正确归类为 09 中的一种。那么我们要让机器对这些模型进行学习,并能对一个未知的手写体数字尽可能正确分类。m这些样本都是 28x28 大小的黑白图像,也就是说一个样本有 28x28=784 个输入量,它们非0(黑)即1(白)。输出量一共有 10 个,分别代表对应输入量的数字是 09 各自的可能性,各输出量之和必为 1。m如左图所示,这就是我们建立的手写体数字识别
14、神经网络。它有若干个输入样本,每一个输入样本都有 784 个输入量,隐藏层有 15 个隐藏神经元,输出量共 10 个,表示结果为各自对应数字的概率值。m最终我们要找的就是输出值最大的那个输出量所对应的数字,这也就是我们的神经网络所识别出的数字值。成本函数m我们知道,评价一个网络最重要的是其识别精度。但这里我们引入一个中间量,叫成本函数。如果我们将每个输入量 x 的理想决策值(即已经规定好的决策值)设为 A,将实际决策值(即通过加权计算出的决策值)设为 y,这里 y 可以表示为 x 的函数,即 y=y(x),那么我们可以定义下面这样一种成本函数。这实际上就是均方差。m很明显,实际输出值 A 越接
15、近理想输出值 y(x),成本(均方差)就越低,网络的识别性能就越好。m我们学习的过程,其实是通过不断微调各权重量和全局偏差值,以至于这样的权重和偏差值可以使得成本函数尽可能小,精度尽可能高。m当然了,成本函数不只是均方差这一种,还有很多函数能担当起成本函数的责任。寻找成本函数的极小值梯度下降算法m回归简单,我们将成本函数 C 简化为和两个自变量相关的形式:C=f(v1,v2)。实际上这里 v1 就是权重向量,v2 就是全局偏差值,只是做了简化而已。m那么,当我们对 v1 及 v2 做了微小的变化时,成本函数的全微分 C 可以这样表示:m现在定义一个新的概念“梯度”,它是一个函数针对所有自变量的
16、偏导数所组成的矩阵的转置。它和自变量的变化程度息息相关。我们知道,当 C 减少时,C 及 C 的梯度必然为负,我们也正是要寻找这样一组权重量和全局偏差值,使得 C 及 C 的梯度为负。m我们之前所说的“颜色突变”,本意就是那个区域内的像素亮度梯度过大。m那么怎么才能让梯度不断下降呢?我们不妨设v=C=C2,在这里是一个很小的正数,通常称为学习率。然后,因为C2恒为正,C 就会不断下降。m依此类推,对于我们的成本函数,则相应的梯度下降规则就应当是下面这样:梯度下降的改良随机梯度下降m在深度学习的过程中,往往伴随着大量训练样本的出现。梯度下降是针对每一个样本都要做一次相应的运算,会浪费掉相当多的宝
17、贵时间。m现在我们每次只随机取部分样本,然后对这一部分样本统一进行梯度下降,然后再去抓取其他的样本。等所有样本都抓取完后,再重头开始。这种方法叫做随机梯度下降。很明显,因为每次都不是所有样本均参与训练,所以最终的梯度下降幅度肯定是没有完整梯度下降算法要强的。但我们只要求网络达到一定的精度就行了,不完全要做到理论上的最好。总结深度神经网络的学习过程1.准备一个拥有明确标签的数据集,并将其拆分为训练集和测试集两部分。2.根据数据集的性质,建立一个合适的神经网络。特别注意,每个样本的输入量个数=该图像的分辨率彩色通道数;输出量=标签种类数。3.针对网络设置合适的训练参数,如学习率、随机梯度的小批次容量n,以及迭代次数。4.开始训练。根据随机梯度下降法的规则不断优化各输入量的权值,以及全局偏差值。5.训练过程中不断统计训练集和测试集上的精度及成本函数值,确保训练过程正常。Thx