❶ 2019年开设人工智能本科专业的院校名单有哪些
人工智能学制四年属工科 在首批获得人工智能专业建设资格的35所高校中,在京高校共4所,分别为 北京科技大学 、北京交通大学、北京航空航天大学、 北京理工大学 。教育部的审批名单显示,这些专业均属于工学门类,修业年限为4年,并被特别标注为“新专业”。另外,与人工智能行业发展密切相关的是,本次名单中还有101所高校新增机器人工程专业,96所高校新设智能科学与技术专业,50所高校新增智能制造工程专业。
北京交通大学在本科生中已开设人工智能、机器学习等多门人工智能相关课程。在本硕一体化体系中,研究生教学中已连续10余年开设人工智能基础、知识工程、数据挖掘、机器学习等核心课程。人工智能专业的课程体系已经具备雏形。北交大人工智能专业将依托计算机科学与技术一级学科博士点、计算机应用技术北京市重点学科、“交通数据分析与挖掘”北京市重点实验室和医学智能研究所等学科平台,结合计算机学会人工智能与模式识别专委会和人工智能研究院的师资队伍进行专业建设,探索“人工智能+医疗”的复合专业建设新模式。“我校人工智能教师团队一直是国内人工智能领域科学研究的重要活跃力量,在人工智能技术研发与应用方面承担并完成了多项重要科研项目,在交通握判、医疗等行业形成了较大规模应用,社会效益显着。这些成果和经验也带入课堂教学、教材、实验和毕业设计。”北交大招办副主任闫立表示。
北京科技大学 增设人工智能专业。学校招办副主任王进介绍,该专业通过自动化类招生。学生在大一结束后进行专业分流,预设3至4个班(100人左右)。北科大人工智能专业不是简单的“从0到1”专业新增,它前身是2007就开始招生的智能科学与科学技术专业,在国内高校里较早进行智能控制领域专业人才培养。针对人工智能专业,学校专门出台培养方案。本科阶段核心课程包括数理基础、信息技术基础、人文社科基础、工程基础、人工智能理论基础等模块课程;专业选修课程分为智能感知与认知和机器人与无人机系统两个模块。旨在培养具备人文社会科学素养,掌握扎实的自然科学知识,具有段枣改宽广的国际视野和优良的专业综合素质,具备信息获取、传递、处理、决策及执行的完备知识体系,能从事人工智能理论研究、智能信息处理技术研发、智能产品设计和人工智能系统集成等方面的工作,具有团队精神和管理与协调大型工程项目能力的复合型高级工程技术人才。
北京航空航天大学人工智能专业计划每年招收30名本科生,以计算机学院为承载学院,将联合人工智能研究院、数学与系统科学学院、经济管理学院、自动化科学与电气工程学院、大数据科学与脑机智能高精尖中心等单位进行整合,实施专业交叉培养模式。有关老师介绍,北航人工智能专业的核心课程体系具有两个显着特点,首先,数学比重高。除了数学分析、概率、代数外,人工智能专业还设置了最优化方法及智能计算中的数学。其中智能计算中的数学讲授综合运用数学知识解决学科专业核心问题,为学生建立数学与专业间的桥梁;其次,知识面宽泛。由于人工智能具有显着的学科交叉特性,因此人工智能专业必修课中还包含了认知科学与控制科学相关课程。在必修课基础上,人工智能专业将规划大数据智能、智能交互、智能计算体系结构、社会网络数据工程、统计机器学习等若干参考课程模块,并鼓励学生结合个人兴趣与发展规划,自主设计个性化的专业选修课程方案。
南京大学 人工智能学院,初定首批招生规模为60至100名本科生,未来岩碧还会招收硕士生和博士生。学院院长周志华表示,按照目前高校计算机专业的宽口径人才培养模式,150个学分中大约有60个学分是通识课,15个是毕业双创课。人工智能学院将采用全新的课程设置和培养模式。课程设置将会和一般的计算机专业有很大差别,除了为学生安排较强的数学基础课程,帮助他们打牢基础外,还将把人工智能专业所涉及的各方面知识汇集,建立一个全面的教育课程体系。
西安交通大学 去年成立人工智能学院。学校从2017年就开始筹备人工智能本科生试验班,并且成立了人工智能本科专业课程设置工作组,完成了西安交大“2018版人工智能本科专业课程设置”。按课程群分类设置,包括通识教育、数学与统计、科学与工程、人工智能、计算机科学、机器人等11个课程群,共开设64门课程,其中必修课程41门、选修课程23门(完成所需学分需选修其中12门)。2018年,西安交大开始选拔第一批学生,“人工智能拔尖人才培养试验班”正式成立,秋季第一批入学的本科生按照“优中选优”的原则,50%左右通过高考招生选拔,50%左右通过校内新生选拔,在学习过程中施行动态管理与进出机制。最后选出55人作为新成立的西安交大人工智能学院首批本科生。学院有关老师介绍,这55名学生分为两个班,注重全面培养人工智能综合基础知识,在软件和硬件方面会兼顾。
人工智能迎来春天
专业人才的“量产”,是否会在几年内造成人才过剩?人工智能专业未来的发展又将如何呢?
某就职于人工智能领域研究院的业内人士表示,人工智能目前是国家战略,在这个指引下,不同于以往的计算机类的毕业生只能从事IT口的相关职业,未来人工智能的思路和意识是可以渗透进各个行业的。这些人才的就业面会是非常宽泛的。各个行业与人工智能形成合力是未来趋势。每个行业中都要有能动手实现人工智能、用好人工智能的人。特别是下一阶段5G的商用和普及,又有更多新的故事可以讲。有可能再过一段时间,相关知识是每个人必备的素质。
3月底公布的2018年图灵奖获得者中,深度学习三巨头Geoffrey Hinton等获奖。深度学习获得了最高荣誉。三位获奖者在业内被称为“当代人工智能教父”,开创了深度神经网络,而这项技术已经成为计算科学的关键部分,为深度学习算法的发展和应用奠定了基础。不仅如此,Geoffrey Hinton还提出新的神经网络模型Capsule Network(胶囊网络),试图找到解决深度学习缺陷的新方法。这位71岁的老人熬过上世纪最冷的人工智能冬天,并且认定下一个“冬天”不会到来。Hinton认为,不会有人工智能的寒冬,因为人工智能已经在驱动着手机了。在过去人工智能并不是人们日常生活的一部分,但现在它已经是了。
手机可能就是人工智能离我们最近的工具。用美颜相机拍一张美美的自拍照,“刷脸”解锁手机、指纹支付等都是人工智能的范畴。人工智能与各领域的结合也不断加强,推动了许多新兴学科领域的研究发展。人工智能研究和应用进入新阶段。相关理论和知识体系日渐成熟,技术应用逐渐走出实验室,与各类传统产业发生深度联系。比如人工智能+医疗。以肺结节辅助诊断为例,通过大数据的学习,人工智能可以对肺结节CT影像进行智能检测与识别,将探查到的疑似结节标记出来,既可以代替医疗人员进行重复的机械性工作、提高效率,也能帮助医生提高诊断的准确度。
近年来,大数据和深度学习的融合及计算能力的提升使人工智能技术取得突破性进展,推动人类社会从信息化时代走向智能化时代。人工智能技术正在或即将促进制造业、服务业、金融、教育、传媒、法律、医疗、家居、农业、汽车、环境等行业的升级重构。
专业人才储备不再“头痛医头”
因为之前没有“人工智能”这个本科专业,高校无法批量培养,而人工智能行业在迅猛发展,目前的从业者大多来自计算机、软件工程、电子信息等相关专业。原有的计算机专业的课程与现阶段技术发展脱节、课程设置过于基础和陈旧,在实际工作中愈加明显。与此同时,社会上面向在职人员、高校学生的培训班提高班,以“快餐”知识形式把人工智能的技术、基础理论,特别是动手实践的一些任务拿来进行培训,结果是课程缺乏大学通常应有的知识体系系统的完整性连贯性,属于“头痛医头”的层次。
就职于国内某知名人工智能领域企业的李柯(化名)表示,人工智能相关行业的人才缺口目前很大,专业人才培养需要与目前行业发展同步。首批35所院校增设人工智能专业,也是证明了对相关领域的关注和重视。高校开设人工智能本科专业对于增加人才储备,提升全民意识,会有积极的帮助,让大家更认同技术所能创造的价值。数理基础过硬、计算机思维全面,编程动手能力强,思路开阔,对于新事物有极强好奇心,具备全面的分析问题、归纳思路、通过技术合理解决问题的能力和素质,是人工智能业内人士对未来这个专业毕业生的期待。
李柯表示,人工智能专业需要跨多学科领域的知识,需要有很好的数理基础功底,对统计学、概率论等知识需要有很好的理解,同时对于计算机系统、算法也需要有很好的基础素养。另外,由于这个专业领域的发展非常迅速,更多更新的技术跟踪实现也要有良好的英语阅读的功底。有硕士或博士的经历和锤炼会更容易在领域内获得好的发展。目前如BAT、华为等为首的巨头,以及大疆、商汤等一系列新兴独角兽企业,对于人工智能人才的需求都非常巨大。相关行业新人通常是国内名校的计算机系、电子信息系的优秀博士、硕士。他们也是各家争夺的重点。每年的毕业生抢人大战很激烈。硕士起薪在25万至35万年薪,博士会更高,个别优秀博士可以到50万至100万年薪不等。另外这个行业里从业3年至5年的优秀人才,也能够获得60万至100万左右水平的年薪。岗位通常是研发岗。这类岗位压力大,对技术跟踪和实现需要有较强能力,同时对于实际任务中的难题解决,理论结合实际要求很高。
首批35所开设人工智能本科专业高校名单
❷ 胶囊网络是什么
根据CB Insights的报告显示,现在互联网中的神经网络是有无数架构的,并且进来还有一种比较流行的卷积神经网络,由此需要将这些神经网余尺络进行集合。
为了将这些复杂的神经网络进行厅毁咐稽核,从扮纯而就研发出了一个新的架构系统,那就是“胶囊网络”,相关人士表示胶囊网络能够超越卷积神经网络。
现如今流行的卷积神经网络虽然成功性还不错,但是内部是有一定缺陷的,特别是在安全方面,胶囊网络就能够对卷积神经网络的安全缺口进行弥补改善。
在2017年的时候,Geoffrey Hinton就针对胶囊网络的概念进行了介绍,与之前CNN发布的内容相比的话,这次发布的概念对很多缺陷进行了弥补,并且数据准备以及多样性等都得到了提升。
❸ 人工神经网络会秒杀人类哪6大领域
人工神经网络会秒杀人类有关图像和物体识别、电子游戏、语音生成和识别、艺术品和风格的模仿、预测、网站设计修改这六大领域。
神经网络可以研究某一特定艺术作品的笔触、颜色和阴影的图案。在此基础上,它可以根据分析将原始的艺术作品转化为新的图像。
斯坦福大学的研究人员Timnit Gebru选取了5000万张谷歌街景图片,探索一个深度学习网络可以做些什么。结果是,计算机学会了定位和识别汽车。它检测到超过2200万辆汽车,包括它们的制造、型号、体型和年份。这一系统获得的洞见之一就是,选民队伍的起点和终点在哪里。根据这一分析,“如果在15分钟车程中遇到的轿车数量高于皮卡车的数量,那么这座城市可能会在下次总统选举中投票给民主党人(88%的几率),”Timnit Gebru和他的合着者写道。
在网站生成器中集成的人工智能可以帮助网站更新,并对网站进行有用的修改,比人类更快速、更准确。这种系统的基本技术提供了关于网站外观的普通用户的意见,这可以告诉设计师网站设计的好坏。如今,网站建设者们要么利用深层网络来修改设计,要么计划在不久的将来使用它们。该技术可以分析不同的模式,并根据以前的转化率和其他重要指标,创造更好的结果。
❹ 卷积神经网络CNN在图像识别问题应用综述(20191219)
这两天在公司做PM实习,主要是自学一些CV的知识,以了解产品在解决一些在图像识别、图像搜索方面的问题,学习的主要方式是在知网检索了6.7篇国内近3年计算机视觉和物体识别的硕博士论文。由于时间关系,后面还会继续更新图片相似度计算(以图搜图)等方面的学习成果
将这两天的学习成果在这里总结一下。你将会看到计算机视觉在解决特定物体识别问题(主要是卷积神经网络CNNs)的基础过程和原理,但这里不会深入到技术的实现层面。
计算机视觉(Computer vision)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图像处理,用计算机处理成为更适合人眼观察或传送给仪器检测的图像。
————维基网络
通常而言,计算机视觉的研究包括三个层次:
(1)底层特征的研究:
这一层次的研究主要聚焦如何高效提取出图像对象具有判别性能的特征,具体的研究内容通常包括:物体识别、字符识别等
(2)中层语义特征的研究:
该层次的研究在于在识别出对象的基础上,对其位置、边缘等信息能够准确区分。现在比较热门的:图像分割;语义分割;场景标注等,都属于该领域的范畴
(3)高层语义理解:
这一层次建立在前两层的基础上,其核心在于“理解”一词。 目标在于对复杂图像中的各个对象完成语义级别的理解。这一层次的研究常常应用于:场景识别、图像摘要生成及图像语义回答等。
而我研究的问题主要隶属于底层特征和中层语义特征研究中的物体识别和场景标注问题。
人类的视觉工作模式是这样的:
首先,我们大脑中的神经元接收到大量的信息微粒,但我们的大脑还并不能处理它们。
于是接着神经元与神经元之间交互将大量的微粒信息整合成一条又一条的线。
接着,无数条线又整合成一个个轮廓。
最后多个轮廓累加终于聚合我们现在眼前看到的样子。
计算机科学受到神经科学的启发,也采用了类似的工作方式。具体而言,图像识别问题一般都遵循下面几个流程
(1)获取底层信息。获取充分且清洁的高质量数据往往是图像识别工作能否成功的关键所在
(2)数据预处理工作,在图像识别领域主要包括四个方面的技术:去噪处理(提升信噪比)、图像增强和图像修复(主要针对不够清晰或有破损缺失的图像);归一化处理(一方面是为了减少开销、提高算法的性能,另一方面则是为了能成功使用深度学习等算法,这类算法必须使用归一化数据)。
(3)特征提取,这一点是该领域的核心,也是本文的核心。图像识别的基础是能够提取出足够高质量,能体现图像独特性和区分度的特征。
过去在10年代之前我们主要还是更多的使用传统的人工特征提取方法,如PCALCA等来提取一些人工设计的特征,主要的方法有(HOG、LBP以及十分着名的SIFT算法)。但是这些方法普遍存在(a)一般基于图像的一些提层特征信息(如色彩、纹理等)难以表达复杂的图像高层语义,故泛化能力普遍比较弱。(b)这些方法一般都针对特定领域的特定应用设计,泛化能力和迁移的能力大多比较弱。
另外一种思路是使用BP方法,但是毕竟BP方法是一个全连接的神经网络。这以为这我们非常容易发生过拟合问题(每个元素都要负责底层的所有参数),另外也不能根据样本对训练过程进行优化,实在是费时又费力。
因此,一些研究者开始尝试把诸如神经网络、深度学习等方法运用到特征提取的过程中,以十几年前深度学习方法在业界最重要的比赛ImageNet中第一次战胜了SIFT算法为分界线,由于其使用权重共享和特征降采样,充分利用了数据的特征。几乎每次比赛的冠军和主流都被深度学习算法及其各自改进型所占领。其中,目前使用较多又最为主流的是CNN算法,在第四部分主要也研究CNN方法的机理。
上图是一个简易的神经网络,只有一层隐含层,而且是全连接的(如图,上一层的每个节点都要对下一层的每个节点负责。)具体神经元与神经元的作用过程可见下图。
在诸多传统的神经网络中,BP算法可能是性能最好、应用最广泛的算法之一了。其核心思想是:导入训练样本、计算期望值和实际值之间的差值,不断地调整权重,使得误差减少的规定值的范围内。其具体过程如下图:
一般来说,机器学习又分成浅层学习和深度学习。传统的机器学习算法,如SVM、贝叶斯、神经网络等都属于浅层模型,其特点是只有一个隐含层。逻辑简单易懂、但是其存在理论上缺乏深度、训练时间较长、参数很大程度上依赖经验和运气等问题。
如果是有多个隐含层的多层神经网络(一般定义为大于5层),那么我们将把这个模型称为深度学习,其往往也和分层训练配套使用。这也是目前AI最火的领域之一了。如果是浅层模型的问题在于对一个复杂函数的表示能力不够,特别是在复杂问题分类情况上容易出现分类不足的弊端,深度网络的优势则在于其多层的架构可以分层表示逻辑,这样就可以用简单的方法表示出复杂的问题,一个简单的例子是:
如果我们想计算sin(cos(log(exp(x)))),
那么深度学习则可分层表示为exp(x)—>log(x)—>cos(x)—>sin(x)
图像识别问题是物体识别的一个子问题,其鲁棒性往往是解决该类问题一个非常重要的指标,该指标是指分类结果对于传入数据中的一些转化和扭曲具有保持不变的特性。这些转化和扭曲具体主要包括了:
(1)噪音(2)尺度变化(3)旋转(4)光线变化(5)位移
该部分具体的内容,想要快速理解原理的话推荐看[知乎相关文章] ( https://www.hu.com/search?type=content&q=CNN ),
特别是其中有些高赞回答中都有很多动图和动画,非常有助于理解。
但核心而言,CNN的核心优势在于 共享权重 以及 感受野 ,减少了网络的参数,实现了更快的训练速度和同样预测结果下更少的训练样本,而且相对于人工方法,一般使用深度学习实现的CNN算法使用无监督学习,其也不需要手工提取特征。
CNN算法的过程给我的感觉,个人很像一个“擦玻璃”的过程。其技术主要包括了三个特性:局部感知、权重共享和池化。
CNN中的神经元主要分成了两种:
(a)用于特征提取的S元,它们一起组成了卷积层,用于对于图片中的每一个特征首先局部感知。其又包含很关键的阈值参数(控制输出对输入的反映敏感度)和感受野参数(决定了从输入层中提取多大的空间进行输入,可以简单理解为擦玻璃的抹布有多大)
(b)抗形变的C元,它们一起组成了池化层,也被称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。
(c*)激活函数,及卷积层输出的结果要经过一次激励函数才会映射到池化层中,主要的激活函数有Sigmoid函数、Tanh函数、ReLU、Leaky ReLU、ELU、Maxout等。
也许你会抱有疑问,CNN算法和传统的BP算法等究竟有什么区别呢。这就会引出区域感受野的概念。在前面我们提到,一个全连接中,较高一层的每个神经元要对低层的每一个神经元负责,从而导致了过拟合和维度灾难的问题。但是有了区域感受野和,每个神经元只需要记录一个小区域,而高层会把这些信息综合起来,从而解决了全连接的问题。
了解区域感受野后,你也许会想,区域感受野的底层神经元具体是怎么聚合信息映射到上一层的神经元呢,这就要提到重要的卷积核的概念。这个过程非常像上面曾提到的“神经元与神经元的联系”一图,下面给大家一个很直观的理解。
上面的这个过程就被称为一个卷积核。在实际应用中,单特征不足以被系统学习分类,因此我们往往会使用多个滤波器,每个滤波器对应1个卷积核,也对应了一个不同的特征。比如:我们现在有一个人脸识别应用,我们使用一个卷积核提取出眼睛的特征,然后使用另一个卷积核提取出鼻子的特征,再用一个卷积核提取出嘴巴的特征,最后高层把这些信息聚合起来,就形成了分辨一个人与另一个人不同的判断特征。
现在我们已经有了区域感受野,也已经了解了卷积核的概念。但你会发现在实际应用中还是有问题:
给一个100 100的参数空间,假设我们的感受野大小是10 10,那么一共有squar(1000-10+1)个,即10的六次方个感受野。每个感受野中就有100个参数特征,及时每个感受野只对应一个卷积核,那么空间内也会有10的八次方个次数,,更何况我们常常使用很多个卷积核。巨大的参数要求我们还需要进一步减少权重参数,这就引出了权重共享的概念。
用一句话概括就是,对同一个特征图,每个感受野的卷积核是一样的,如这样操作后上例只需要100个参数。
池化是CNN技术的最后一个特性,其基本思想是: 一块区域有用的图像特征,在另一块相似的区域中很可能仍然有用。即我们通过卷积得到了大量的边缘EDGE数据,但往往相邻的边缘具有相似的特性,就好像我们已经得到了一个强边缘,再拥有大量相似的次边缘特征其实是没有太大增量价值的,因为这样会使得系统里充斥大量冗余信息消耗计算资源。 具体而言,池化层把语义上相似的特征合并起来,通过池化操作减少卷积层输出的特征向量,减少了参数,缓解了过拟合问题。常见的池化操作主要包括3种:
分别是最大值池化(保留了图像的纹理特征)、均值池化(保留了图像的整体特征)和随机值池化。该技术的弊端是容易过快减小数据尺寸,目前趋势是用其他方法代替池化的作用,比如胶囊网络推荐采用动态路由来代替传统池化方法,原因是池化会带来一定程度上表征的位移不变性,传统观点认为这是一个优势,但是胶囊网络的作者Hinton et al.认为图像中位置信息是应该保留的有价值信息,利用特别的聚类评分算法和动态路由的方式可以学习到更高级且灵活的表征,有望冲破目前卷积网络构架的瓶颈。
CNN总体来说是一种结构,其包含了多种网络模型结构,数目繁多的的网络模型结构决定了数据拟合能力和泛化能力的差异。其中的复杂性对用户的技术能力有较高的要求。此外,CNN仍然没有很好的解决过拟合问题和计算速度较慢的问题。
该部分的核心参考文献:
《深度学习在图像识别中的应用研究综述》郑远攀,李广阳,李晔.[J].计算机工程与应用,2019,55(12):20-36.
深度学习技术在计算机图像识别方面的领域应用研究是目前以及可预见的未来的主流趋势,在这里首先对深度学习的基本概念作一简介,其次对深度学习常用的结构模型进行概述说明,主要简述了深度信念网络(DBN)、卷积神经网络(CNN)、循环神经网络(RNN)、生成式对抗网络(GAN)、胶囊网络(CapsNet)以及对各个深度模型的改进模型做一对比分析。
深度学习按照学习架构可分为生成架构、判别架构及混合架构。
其生成架构模型主要包括:
受限波尔兹曼机、自编码器、深层信念网络等。判别架构模型主要包括:深层前馈网络、卷积神经网络等。混合架构模型则是这两种架构的集合。深度学习按数据是否具有标签可分为非监督学习与监督学习。非监督学习方法主要包括:受限玻尔兹曼机、自动编码器、深层信念网络、深层玻尔兹曼机等。
监督学习方法主要包括:深层感知器、深层前馈网络、卷积神经网络、深层堆叠网络、循环神经网络等。大量实验研究表明,监督学习与非监督学习之间无明确的界限,如:深度信念网络在训练过程中既用到监督学习方法又涉及非监督学习方法。
[1]周彬. 多视图视觉检测关键技术及其应用研究[D].浙江大学,2019.
[2]郑远攀,李广阳,李晔.深度学习在图像识别中的应用研究综述[J].计算机工程与应用,2019,55(12):20-36.
[3]逄淑超. 深度学习在计算机视觉领域的若干关键技术研究[D].吉林大学,2017.
[4]段萌. 基于卷积神经网络的图像识别方法研究[D].郑州大学,2017.
[5]李彦冬. 基于卷积神经网络的计算机视觉关键技术研究[D].电子科技大学,2017.
[6]李卫. 深度学习在图像识别中的研究及应用[D].武汉理工大学,2014.
[7]许可. 卷积神经网络在图像识别上的应用的研究[D].浙江大学,2012.
[8]CSDN、知乎、机器之心、维基网络
❺ 人工智能的发展前景怎么样
—— 以下数据及分析均来自于前瞻产业研究院《中国人工智能行业市场前瞻与投资战略规划分析报告》。
当前,国内外互联网巨头纷纷将人工智能作为下一次产业革命的突破口,积极加大投资布局,与此同时,随着人工智能技术进步和基础设施建设不断完善的推动下,全球人工智能应用场景将不断丰富,市场规模持续扩大。
“人工智能”一词最初是在1956年美国计算机协会组织的达特矛斯(Dartmouth)学会上提出的,人工智能发展至今经历过经费枯竭的两个寒冬(1974-1980年、1987-1993年),也经历过两个大发展的春天(1956-1974年、1993-2005年)。从2006年开始,人工智能进入了加速发展的新阶段,并行计算能力、大数据和先进算法,使当前人工智能加速发展;同时,近年来人工智能的研究越来越受到产业界的重视,产业界对AI的投资和收购如火如荼。
人工智能技术迈入深度学习阶段
机器学习是实现人工智能的一种重要方法铅启,深度学习(Deep Learning)是机器学习(Machine Learning)的关键技术之一。深度学习自2006年由Jeffery Hinton实证以来,在云计算、大数据和芯片等的支持下,已经成功地从实验室中走出来,开始进入到了商业应用,并在机器视觉、自然语言处理、机器翻译、路径槐瞎如规划等领域取得了令人瞩目的成绩,全球人工智能也正式迈入深度学习阶段。
与此同时,全球人工智能领域对新技术的探索从未停止,新技术层出不穷,例如近年来一些新的类脑智能算法提出来,将脑科学与思维科学的一些新的成果结合到神经网络算法之中,形成不同于深度学习的神经网络技术路线,如胶囊网络等,技术的不断进步是推动全球人工智能的发展的不竭动力,这些新技术的研究和应用将加快全球人工智能的发展进程。
主要经济体加快人工智能战略布局
人工智能作为引领未来的战略性技术,目前全球主要经济体都将人工智能作为提升国家竞争力、维护国家安全的重大战略。自2013年以来,包括美国、中国、欧盟、英国、日本、德国、法国、韩国、印度、丹麦、芬兰、新西兰、俄罗斯、加拿大、新加坡、阿联酋、意大利、瑞典、荷兰、越南、西班牙等20多个国家和地区发布了人工智能相关战略、规划或重大计划,越来越多的国家加入到布局人工智能的队列中,从政策、资本、技术人才培养、应用基础设施建设等方面为本国人工智能的落地保驾护航。
❻ 神经网络中自适应的梯度下降优化算法(二)
Adagrad算法可以针对不同的参数自适应的采用不同的更新频率,对低频出现的特征采用低的更新率,对高频出现的特征采用高的更新率,因此,对于稀疏的数据它表现的很好,很好的提升了SGD的鲁棒性,在Google的通过Youtube视频识别猫的神经网络训练中有很好的表现。
梯度更新规则:
g(t,i)表示在t时刻目标函数对θ(i)的偏导数。SGD的每个参数的更新过程如下:
Adagrad的每个参数更新过程如下:
G(t)是一个对角矩阵,对角线上的每个元素是t时刻前所有θ(i)的梯度的平方和。ε通常取值在1e-8量级,它的存在是为了避免除数为0。一个有趣的现象是,如果没有平方根操作,算法的表现就非常糟糕。
Adagrad的主要缺点是,它的分母是平方梯度的累积,它的值会一直增加,最终导致学习率衰减到非常小,从而使得学习算法无法进行下去。
TensorFlow实现:
tf.train.AdagradOptimizer(learning_rate, initial_accumulator_value=0.1, use_locking=False, name='Adagrad')
Adadelta算法主要解决Adagrad的缺陷,它不再累加过去所有的梯度,而是仅累积过去固定个数的梯度。
Adadelta不是采用平方梯度的简单累加,而是采用 历史 平方梯度的衰减的平均。
γ通常等于0.9
分母相当于梯度的均方根(root mean squared, RMS),即将所有值平方求和,求其均值,再开平方,就得到均方根值。
梯度更新规则:
将学习率η设置为
,我们就不需要提前设定学习率。
RMSprop是Geoff Hinton提出的一种自适应学习率的方法,它与Adadelta方法都是为了解决Adagrad学习率急剧下降问题的。它与Adadelta方法是一致的。
梯度更新规则
超参数设定值:
Hinton建议设定γ=0.9, 学习率η=0.001。
TensorFlow实现:
tf.train.RMSPropOptimizer.__init__(learning_rate, decay, momentum=0.0, epsilon=1e-10, use_locking=False, name='RMSProp')
Adam也是对不同的参数自适应设置不同的学习率。它对 历史 梯度和 历史 平方梯度同时采用指数梯度衰减(exponentially decaying average)。
梯度更新规则
Adam作者观察到,如果m(t)和v(t)初始化为零向量,并且衰减率很小时(比如β1和β2都非常接近于1时),在开始的迭代中,m(t)和v(t)总是向零偏移,所以需要做偏移校正。
然后用校正后的值进行梯度更新:
Adam作者建议β1=0.9,β2=0.999,ε=10^{-8}
,在实践中,Adam比其它算法的效果要好。
TensorFlow实现:
tf.train.AdamOptimizer(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False, name='Adam')
Adam更新规则中的梯度缩放与 历史 梯度的L2范数成反比。
我们可以把这个规则泛化到Lp范数。
当p值增大的时候,Lp的值往往会变得不稳定,所以在实践中L1和L2使用的比较普遍。但是Adamax作者发现L∞可以收敛到一个稳定值。
然后我们可以采用u(t)代替
来更新Adam中的梯度。
同时u(t)不需要做零偏校正。默认取值建议:
❼ 究竟深度学习在干什么
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。 [1]
深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提尺渗出非监督贪心逐层训练算法,为解决深层陵誉脊结构相关的优化难题带来希望虚悔,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。 [1]
❽ 神经网络浅谈
人工智能技术是当前炙手可热的话题,而基于神经网络的深度学习技术更是热点中的热点。去年谷歌的Alpha Go 以4:1大比分的优势战胜韩国的李世石九段,展现了深度学习的强大威力,后续强化版的Alpha Master和无师自通的Alpha Zero更是在表现上完全碾压前者。不论你怎么看,以深度学习为代表的人工智能技术正在塑造未来。
下图为英伟达(NVIDIA)公司近年来的股价情况, 该公司的主要产品是“图形处理器”(GPU),而GPU被证明能大大加快神经网络的训练速度,是深度学习必不可少的计算组件。英伟达公司近年来股价的飞涨足以证明当前深度学习的井喷之势。
好,话不多说,下面简要介绍神经网络的基本原理、发展脉络和优势。
神经网络是一种人类由于受到生物神经细胞结构启发而研究出的一种算法体系,是机器学习算法大类中的一种。首先让我们来看人脑神经元细胞:
一个神经元通常具有多个树突 ,主要用来接受传入信息,而轴突只有一条,轴突尾端有许多轴突末梢,可以给其他多个神经元传递信息。轴突末梢跟其他神经元的树突产生连接,从而传递信号。
下图是一个经典的神经网络(Artificial Neural Network,ANN):
乍一看跟传统互联网的拓扑图有点类似,这也是称其为网络的原因,不同的是节点之间通过有向线段连接,并且节点被分成三层。我们称图中的圆圈为神经元,左边三个神经元组成的一列为输入层,中间神经元列为隐藏层,右边神经元列为输出层,神经元之间的箭头为权重。
神经元是计算单元,相当于神经元细胞的细胞核,利用输入的数据进行计算,然后输出,一般由一个线性计算部分和一个非线性计算部分组成;输入层和输出层实现数据的输入输出,相当于细胞的树突和轴突末梢;隐藏层指既不是输入也不是输出的神经元层,一个神经网络可以有很多个隐藏层。
神经网络的关键不是圆圈代表的神经元,而是每条连接线对应的权重。每条连接线对应一个权重,也就是一个参数。权重具体的值需要通过神经网络的训练才能获得。我们实际生活中的学习体现在大脑中就是一系列神经网络回路的建立与强化,多次重复的学习能让回路变得更加粗壮,使得信号的传递速度加快,最后对外表现为“深刻”的记忆。人工神经网络的训练也借鉴于此,如果某种映射关系出现很多次,那么在训练过程中就相应调高其权重。
1943年,心理学家McCulloch和数学家Pitts参考了生物神经元的结构,发表了抽象的神经元模型MP:
符号化后的模型如下:
Sum函数计算各权重与输入乘积的线性组合,是神经元中的线性计算部分,而sgn是取符号函数,当输入大于0时,输出1,反之输出0,是神经元中的非线性部分。向量化后的公式为z=sgn(w^T a)(w^T=(w_1,w_2,w_3),a=〖(a_1,a_2,a_3)〗^T)。
但是,MP模型中,权重的值都是预先设置的,因此不能学习。该模型虽然简单,并且作用有限,但已经建立了神经网络大厦的地基
1958年,计算科学家Rosenblatt提出了由两层神经元组成(一个输入层,一个输出层)的神经网络。他给它起了一个名字–“感知器”(Perceptron)
感知器是当时首个可以学习的人工神经网络。Rosenblatt现场演示了其学习识别简单图像的过程,在当时引起了轰动,掀起了第一波神经网络的研究热潮。
但感知器只能做简单的线性分类任务。1969年,人工智能领域的巨擘Minsky指出这点,并同时指出感知器对XOR(异或,即两个输入相同时输出0,不同时输出1)这样的简单逻辑都无法解决。所以,明斯基认为神经网络是没有价值的。
随后,神经网络的研究进入低谷,又称 AI Winter 。
Minsky说过单层神经网络无法解决异或问题,但是当增加一个计算层以后,两层神经网络不仅可以解决异或问题,而且具有非常好的非线性分类效果。
下图为两层神经网络(输入层一般不算在内):
上图中,输出层的输入是上一层的输出。
向量化后的公式为:
注意:
每个神经元节点默认都有偏置变量b,加上偏置变量后的计算公式为:
同时,两层神经网络不再使用sgn函数作为激励函数,而采用平滑的sigmoid函数:
σ(z)=1/(1+e^(-z) )
其图像如下:
理论证明: 两层及以上的神经网络可以无限逼近真实的对应函数,从而模拟数据之间的真实关系 ,这是神经网络强大预测能力的根本。但两层神经网络的计算量太大,当时的计算机的计算能力完全跟不上,直到1986年,Rumelhar和Hinton等人提出了反向传播(Backpropagation,BP)算法,解决了两层神经网络所需要的复杂计算量问题,带动了业界使用两层神经网络研究的热潮。
但好景不长,算法的改进仅使得神经网络风光了几年,然而计算能力不够,局部最优解,调参等一系列问题一直困扰研究人员。90年代中期,由Vapnik等人发明的SVM(Support Vector Machines,支持向量机)算法诞生,很快就在若干个方面体现出了对比神经网络的优势:无需调参;高效;全局最优解。
由于以上原因,SVM迅速打败了神经网络算法成为主流。神经网络的研究再一次进入低谷, AI Winter again 。
多层神经网络一般指两层或两层以上的神经网络(不包括输入层),更多情况下指两层以上的神经网络。
2006年,Hinton提出使用 预训练 ”(pre-training)和“微调”(fine-tuning)技术能优化神经网络训练,大幅度减少训练多层神经网络的时间
并且,他给多层神经网络相关的学习方法赋予了一个新名词–“ 深度学习 ”,以此为起点,“深度学习”纪元开始了:)
“深度学习”一方面指神经网络的比较“深”,也就是层数较多;另一方面也可以指神经网络能学到很多深层次的东西。研究发现,在权重参数不变的情况下,增加神经网络的层数,能增强神经网络的表达能力。
但深度学习究竟有多强大呢?没人知道。2012年,Hinton与他的学生在ImageNet竞赛中,用多层的卷积神经网络成功地对包含一千类别的一百万张图片进行了训练,取得了分类错误率15%的好成绩,这个成绩比第二名高了近11个百分点,充分证明了多层神经网络识别效果的优越性。
同时,科研人员发现GPU的大规模并行矩阵运算模式完美地契合神经网络训练的需要,在同等情况下,GPU的速度要比CPU快50-200倍,这使得神经网络的训练时间大大减少,最终再一次掀起了神经网络研究的热潮,并且一直持续到现在。
2016年基于深度学习的Alpha Go在围棋比赛中以4:1的大比分优势战胜了李世石,深度学习的威力再一次震惊了世界。
神经网络的发展历史曲折荡漾,既有被捧上神坛的高潮,也有无人问津的低谷,中间经历了数次大起大落,我们姑且称之为“三起三落”吧,其背后则是算法的改进和计算能力的持续发展。
下图展示了神经网络自发明以来的发展情况及一些重大时间节点。
当然,对于神经网络我们也要保持清醒的头脑。由上图,每次神经网络研究的兴盛期持续10年左右,从最近2012年算起,或许10年后的2022年,神经网络的发展将再次遇到瓶颈。
神经网络作为机器学习的一种,其模型训练的目的,就是使得参数尽可能的与真实的模型逼近。理论证明,两层及以上的神经网络可以无限逼近真实的映射函数。因此,给定足够的训练数据和训练时间,总能通过神经网络找到无限逼近真实关系的模型。
具体做法:首先给所有权重参数赋上随机值,然后使用这些随机生成的参数值,来预测训练数据中的样本。假设样本的预测目标为yp ,真实目标为y,定义值loss,计算公式如下:
loss = (yp -y) ^2
这个值称之为 损失 (loss),我们的目标就是使对所有训练数据的损失和尽可能的小,这就转化为求loss函数极值的问题。
一个常用方法是高等数学中的求导,但由于参数不止一个,求导后计算导数等于0的运算量很大,所以常用梯度下降算法来解决这样的优化问题。梯度是一个向量,由函数的各自变量的偏导数组成。
比如对二元函数 f =(x,y),则梯度∇f=(∂f/∂x,∂f/∂y)。梯度的方向是函数值上升最快的方向。梯度下降算法每次计算参数在当前的梯度,然后让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时截止。一般这个时候,所有的参数恰好达到使损失函数达到一个最低值的状态。下图为梯度下降的大致运行过程:
在神经网络模型中,由于结构复杂,每次计算梯度的代价很大。因此还需要使用 反向传播 (Back Propagation)算法。反向传播算法利用了神经网络的结构进行计算,不一次计算所有参数的梯度,而是从后往前。首先计算输出层的梯度,然后是第二个参数矩阵的梯度,接着是中间层的梯度,再然后是第一个参数矩阵的梯度,最后是输入层的梯度。计算结束以后,所要的两个参数矩阵的梯度就都有了。当然,梯度下降只是其中一个优化算法,其他的还有牛顿法、RMSprop等。
确定loss函数的最小值后,我们就确定了整个神经网络的权重,完成神经网络的训练。
在神经网络中一样的参数数量,可以用更深的层次去表达。
由上图,不算上偏置参数的话,共有三层神经元,33个权重参数。
由下图,保持权重参数不变,但增加了两层神经元。
在多层神经网络中,每一层的输入是前一层的输出,相当于在前一层的基础上学习,更深层次的神经网络意味着更深入的表示特征,以及更强的函数模拟能力。更深入的表示特征可以这样理解,随着网络的层数增加,每一层对于前一层次的抽象表示更深入。
如上图,第一个隐藏层学习到“边缘”的特征,第二个隐藏层学习到“边缘”组成的“形状”的特征,第三个隐藏层学习到由“形状”组成的“图案”的特征,最后的隐藏层学习到由“图案”组成的“目标”的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。
前面提到, 明斯基认为Rosenblatt提出的感知器模型不能处理最简单的“异或”(XOR)非线性问题,所以神经网络的研究没有前途,但当增加一层神经元后,异或问题得到了很好地解决,原因何在?原来从输入层到隐藏层,数据发生了空间变换,坐标系发生了改变,因为矩阵运算本质上就是一种空间变换。
如下图,红色和蓝色的分界线是最终的分类结果,可以看到,该分界线是一条非常平滑的曲线。
但是,改变坐标系后,分界线却表现为直线,如下图:
同时,非线性激励函数的引入使得神经网络对非线性问题的表达能力大大加强。
对于传统的朴素贝叶斯、决策树、支持向量机SVM等分类器,提取特征是一个非常重要的前置工作。在正式训练之前,需要花费大量的时间在数据的清洗上,这样分类器才能清楚地知道数据的维度,要不然基于概率和空间距离的线性分类器是没办法进行工作的。然而在神经网络中,由于巨量的线性分类器的堆叠(并行和串行)以及卷积神经网络的使用,它对噪声的忍耐能力、对多通道数据上投射出来的不同特征偏向的敏感程度会自动重视或忽略,这样我们在处理的时候,就不需要使用太多的技巧用于数据的清洗了。有趣的是,业内大佬常感叹,“你可能知道SVM等机器学习的所有细节,但是效果并不好,而神经网络更像是一个黑盒,很难知道它究竟在做什么,但工作效果却很好”。
人类对机器学习的环节干预越少,就意味着距离人工智能的方向越近。神经网络的这个特性非常有吸引力。
1) 谷歌的TensorFlow开发了一个非常有意思的神经网络 入门教程 ,用户可以非常方便地在网页上更改神经网络的参数,并且能看到实时的学习效率和结果,非常适合初学者掌握神经网络的基本概念及神经网络的原理。网页截图如下:
2) 深度学习领域大佬吴恩达不久前发布的《 神经网络和深度学习 》MOOC,现在可以在网易云课堂上免费观看了,并且还有中文字幕。
3) 《神经网络于深度学习》(Michael Nielsen着)、《白话深度学习与TensorFlow》也是不错的入门书籍。
❾ 胶囊网络(一)
胶囊是一组神经元,其输出代表同一实体的不同属性。
胶囊网络的每一层都包含许多胶囊。
我们描述了一个胶囊的版本,其中每个胶囊都有一个逻辑单元来表示实体的存在和一个4x4矩阵,它可以学习表示实体和观察者之间的关系(姿态)。
一个层中的胶囊通过将其自身的位姿矩阵乘以能够学会表示部分-整体关系的可训练的视点不变变换矩阵来为上面层中许多不同胶囊的位姿矩阵投票。
每个票数都由分配系数加权。使用期望最大化算法迭代地更新每幅图像的这些系数,这样每个胶囊的输出将被路由到上面一层中接收到一组类似投票的胶囊。
通过在每一对相邻的包膜层之间的展开的EM迭代中反向传播,对变换矩阵进行区分训练。在smallNORB基准测试中,胶囊与最先进的相比减少了45%的测试错误。与我们的卷积神经网络相比,胶囊对白盒对抗攻击也表现出更强的抵抗力。
卷积神经网络基于一个简单的事实,即视觉系统需要在图像的所有位置使用相同的知识。这是通过绑定特征检测器的权重来实现的,这样在一个位置学习到的特征在其他位置也可以使用。卷积胶囊扩展了跨位置的知识共享,包括描述熟悉形状的部分-整体关系的知识。视点变化对像素强度有复杂的影响,但对表示物体或物体部分与观察者之间关系的位姿矩阵有简单的线性影响。胶囊的目的是充分利用这种潜在的线性,既用于处理视点变化,也用于改进分割决策。
胶囊使用高维符合滤波:一个熟悉的对象可以通过寻找其位姿矩阵的一致投票来检测。这些选票来自已经被检测到的部分。一个部件通过将它自己的位姿矩阵乘以一个学习过的变换矩阵来产生一个投票,这个变换矩阵表示部件和整体之间的视点不变关系。当视点改变时,各部分和整体的姿态矩阵将以协调的方式改变,以便来自不同部分的投票之间的任何一致意见将持续存在。
在一团不相关的选票中找到密集的高维投票簇,这是解决将部分分配给整体问题的一种方法。这不是小事,因为我们不能像对低维平移空间网兄轿格化那样对高维位姿空间网格化,以方便卷积。解决这一挑战,我们使用一个快速的迭代过程称为路由协议更新的概樱尘清率部分分配给一个完整的基于距离的选票来自这部分的选票来自其他部分分配给整个。这是一个强大的分割原则,允许熟悉的形状的知识推导分割,而不是仅仅使用低层次的线索,如接近或一致的颜色或速度。胶囊和标准神经网络的一个重要区别是,胶囊的激活是基于对多个传入的姿态预测的比较,而在标准神经网络中,它是基于对单个传入的活动向量和学习的权值向量的比较。
神经网络通常使用简单的非线性,其中非线性函数应用于线性滤波器的标量输出。
他们也可以使用softmax非线性将整个对数向脊前量转换为概率向量。胶囊使用一种更为复杂的非线性,将一层中胶囊的整个激活概率和姿态转换为下一层的激活概率和姿态。
胶囊网由几层胶囊组成。第L层的胶囊集合记为L,每个胶囊有4x4位元矩阵M和激活概率a。这些类似于标准神经网络中的活动:它们依赖于电流输入,不被存储。
在L层的每个胶囊i和L + 1层的每个胶囊j之间是一个4x4可训练的变换矩阵Wij。
这些Wij(以及每个胶囊的两个习得偏差)是唯一存储的参数,它们是有区别地习得的。胶囊的姿态矩阵转换,维琪投票Vij = MiWij胶囊的姿态矩阵j。所有的胶囊层的姿态和激活在层L + 1使用非线性路由程序计算,得到即输入Vij和ai对所有i ∈ ΩL, j ∈ ΩL+1.
非线性过程是期望最大化过程的一个版本。它迭代地调整L+1层中胶囊的均值、方差和激活概率以及所有i ∈ ΩL, j ∈ ΩL+1之间的分配概率。在附录1中,我们简单直观地介绍了协议路由,并详细描述了它与拟合高斯混合的EM算法之间的关系。
在最近改善神经网络处理视点变化能力的多种尝试中,有两大主流。
一个流试图实现视点的不变性,而另一个流试图实现视点的等方差。
Jaderberg等人(2015)提出的《空间变压器网络》(Spatial Transformer Networks)通过根据仿射变换的选择改变cnn的采样来寻求视点不变性。
De Brabandere等人(2016)扩展了空间变压器网络,在推理过程中根据输入调整滤波器。它们为特征图中的每个局部生成不同的过滤器,而不是对所有的过滤器应用相同的转换。他们的方法是传统模式匹配框架(如标准的CNNs)向输入协方差检测迈出的一步(LeCun et al., 1990)。Dai等人(2017)对空间变压器网络进行了改进,推广了滤波器的采样方法。我们的工作有很大的不同,因为单元不是根据过滤器的匹配分数激活的(在推理过程中固定或动态改变)。在我们的例子中,一个胶囊被激活,只有当转换的姿态来自下面的层相互匹配。这是捕获协方差的一种更有效的方法,并导致模型具有更少的参数,从而更好地泛化。
CNNs的成功促使许多研究人员将嵌入到CNNs中的翻译等方差扩展到旋转等方差(Cohen & Welling (2016), Dieleman等人(2016),Oyallon & Mallat(2015))。
谐波网络中最近的方法(Worrall et al.(2017))通过使用圆形谐波滤波器和使用复数返回最大响应和方向来实现旋转等变特征映射。这与“胶囊”的基本表征思想相同:通过假设一个位置上只有一个实体实例,我们可以使用几个不同的数字来表示它的属性。他们使用固定数量的流的旋转命令。通过强制沿任何路径的旋转顺序和相等,它们实现了贴片方向的旋转等方差。这种方法比数据增加方法、复制特征图或复制过滤器更具有参数效率(Fasel & Gatica-Perez(2006)、Laptev等人(2016))。我们的方法编码一般的视点等方差,而不是仅仅仿射二维旋转。对称网络(Gens & Domingos(2014))使用迭代的Lucas-Kanade优化来找到最低级特征支持的姿势。它们的主要缺点是迭代算法总是以相同的姿态开始,而不是以自底向上投票的均值开始。
Lenc & Vedaldi(2016)提出了一种特征检测机制(DetNet),它与仿射变换是等变的。DetNet被设计用于检测在不同视点变化下的图像中的相同点。这与我们的工作是正交的,但是DetNet可能是实现第一级还原的好方法,它激活了主胶囊层。
我们的路由算法可以看作是一种注意机制。这个观点中,这与Gregor等人(2015)的工作有关,他们在生成模型中使用高斯核来关注编码器生成的feature map的不同部分,从而提高了解码器的性能。Vaswani等人(2017)在为查询生成编码时,使用softmax函数注意机制来匹配翻译任务的部分查询序列和部分输入序列。它们显示了使用循环架构对以前的转换工作的改进。我们的算法关注的是相反的方向。竞争并不存在于较低级别的胶囊之间,而较高级别的胶囊可能会参与竞争。它是在较高级别的胶囊之间,一个较低级别的胶囊可以发送它的投票。
Hinton等人(2011)在转换自动编码器中使用了一个变换矩阵,该编码器学会了从稍微不同的视角将立体图像对转换为立体图像对。但是,该系统需要从外部提供转换矩阵。最近,协议路由被证明对高度重叠的数字分割是有效的(Sabour等(2017)),但该系统存在一些缺陷,我们在本文中已经克服了这些缺陷
基于Sabour等人(2017)的工作,我们提出了一种新型胶囊系统,其中每个胶囊都有一个物流单元来表示实体的存在,以及一个4x4位姿矩阵来表示该实体的位姿。我们还基于EM算法在胶囊层之间引入了一种新的迭代路由过程,该过程允许将每个低层胶囊的输出路由到上层的胶囊,从而使活动胶囊接收到一组类似的姿态投票。这个新系统在smallNORB数据集上取得了比最先进的CNN更好的精度,减少了45%的错误。我们也证明了它在对抗白盒攻击时比基线CNN更加强大。
SmallNORB是开发新的精确形状识别模型的理想数据集,因为它缺少野外图像的许多附加特征。既然我们的capsule模型在NORB上工作得很好,我们计划实现一个有效的版本,在更大的数据集(比如ImageNet)上测试更大的模型。
❿ AI面试题第二弹(神经网络基础)
提取主要特征,减小网络参数量,减小计算量
层层传递的梯度>1 梯度爆炸
层层传递的梯度<1 梯度消失
与权重有很大关系,激活函数的影响较小。
每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程就是逐层“预训练”(pre-training);在预训练完成后,再对整个网络进行“微调”(fine-tunning)。Hinton在训练深度信念网络(Deep Belief Networks中,使用了这个方法,在各层预训练完成后,再利用BP算法对整个网络进行训练。
这个方案主要是针对梯度爆炸提出的,其思想是设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸。
比较常见的是l1l1l1正则,和l2l2l2正则,在各个深度框架中都有相应的API可以使用正则化
反向传播中,经过每一层的梯度会乘以该层的权重。
举个简单例子:
为了得到一致假设而使假设变得过度复杂称为过拟合(overfitting), 过拟合表现在训练好的模型在训练集上效果很好,但是在测试集上效果差 。也就是说模型的泛化能力弱。
过拟合主要由两个原因造成,数据集太小或模型太复杂
(1). 数据集扩增(Data Augmentation)
(2). 改进模型
·Early Stopping。在模型效果比较好的时候便提前停止训练
·正则化(regularization)
L1:稀疏参数
L2:更小参数
·Dropout
·多任务学习
深度学习中两种多任务学习模式:隐层参数的硬共享和软共享
硬共享机制是指在所有任务中共享隐藏层,同时保留几个特定任务的输出层来实现。硬共享机制降低了过拟合的风险。多个任务同时学习,模型就越能捕捉到多个任务的同一表示,从而导致模型在原始任务上的过拟合风险越小。
软共享机制是指每个任务有自己的模型,自己的参数。模型参数之间的距离是正则化的,以便保障参数相似性。
见后文
leaky relu
输入是x输出是y,正常的流程是:我们首先把x通过网络前向传播,然后把误差反向传播以决定如何更新参数让网络进行学习。使用Dropout之后,过程变成如下:
(1)首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变(图中虚线为部分临时被删除的神经元)
(2) 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)。
(3)然后继续重复这一过程:
恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)
从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。
对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。
不断重复这一过程。
没有对数据进行归一化
忘记检查输入和输出
没有对数据进行预处理
没有对数据正则化
使用过大的样本
使用不正确的学习率
在输出层使用错误的激活函数
网络中包含坏梯度
初始化权重错误
过深的网络
隐藏单元数量错误
网络设计不合理(任务-网络不匹配)
机器学习有个很重要的假设:就是假设训练数据和测试数据是满足独立同分布的,这保障了通过训练数据获得的优秀模型也能够在测试集获得好的效果。但是在机器学习训练中输入层的每个批量(X,Y)中X的分布是不一致的,并且神经网络的隐藏层的输入分布在每次训练迭代中发生变化。 BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。
BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前(激活前)的 输入值 (就是那个x=WU+B,U是输入) 随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近 (对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这 导致反向传播时低层神经网络的梯度消失 ,这是训练深层神经网络收敛越来越慢的 本质原因 , 而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布 ,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是 这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。
但是接下来的问题是:如果都通过BN,那么不就跟把非线性函数替换成线性函数效果相同了,意味着网络的非线性表达能力下降了, 所以BN为了保证非线性的获得,对变换后的满足均值为0方差为1的x又进行了scale加上shift操作(y=scale*x+shift), 每个神经元增加了两个参数scale和shift参数,这两个参数是通过训练学习到的,意思是通过scale和shift把这个值从标准正态分布左移或者右移一点并长胖一点或者变瘦一点,每个实例挪动的程度不一样,这样等价于激活前的值经过标准正太分布归一化后再从正中心周围的线性区往非线性区动了动。核心思想应该是想找到一个线性和非线性的较好平衡点,既能享受非线性的较强表达能力的好处,又避免太靠非线性区两头使得网络收敛速度太慢
Batch Normalization 好处:(1)提高了训练速度,收敛速度也大大加快(2)另外调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等 (3)可以防止梯度消失(4)BN类似于Dropout的一种防止过拟合的正则化表达方式,可以有效防止过拟合,不用太依赖dropou和正则化
以下情况最好不要使用BN:(1)数据不平衡(2)batch_size太小
batch_size是机器学习中的一个重要参数,决定了梯度下降的方向,如果数据集比较小,完全可以采用全数据集的形式计算梯度,由全数据集确定的梯度方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。对于大型数据集则需要使用mini-batch_size,因为随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。
当batch_size=1,即在线学习,模型难以达到收敛 。
合理增加batch_size好处 :
(1)内存利用率提高了,大矩阵乘法的并行化效率提高
(2)跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
(3)在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小
盲目增大 Batch_Size 坏处 :
(1)内存利用率提高了,但是内存容量可能撑不住了
(2)跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同精度所需要的 epoch 数量越来越多,花费的时间越长
(3)大的batchsize收敛到sharp minimum,而小的batchsize收敛到flat minimum,后者具有更好的泛化能力。
总之batchsize在变得很大(超过一个临界点)时,会降低模型的泛化能力。在这个临界点之下,模型的性能变换随batch size通常没有学习率敏感
目标所在的真实框(ground truth) 与算法预测的目标所在的框(bounding box)的交集与并集的比值,我们会用IOU阈值来判定预测的bounding box是否有效。一般阈值会设定在0.5,当IOU的值大于等于0.5时,我们会把这个预测的bounding box 归为正类,而小于0.5的归为负类。
牛顿法使用的是目标函数的二阶导数,在高维情况下这个Hessian(n*n维度)矩阵非常大,计算复杂度是n*n,计算和存储都是问题
(1) 通过控制卷积核个数实现升维或者降维,从而减少模型参数和计算量
(2) 用于不同channel上特征的融合
(3)1x1的卷积相当于全连接层的计算过程,并且加入了非线性激活函数,从而增加了网络的非线性,使得网络可以表达更加复杂的特征。
它能够把输入的连续实值变换为0和1之间的输出,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1
缺点:
(1)函数的饱和区,导致梯度几乎为0,造成梯度消失问题
(2)Sigmoid 的 output 不是0均值,具体解释见 https://blog.csdn.net/tyhj_sf/article/details/79932893
(3)其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。
它解决了Sigmoid函数的不是零均值输出问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。
(1)在正区间解决了梯度消失的问题
(2)函数简单,计算速度快,收敛速度远快于sigmoid和tanh
缺点:
(1)Relu函数输出不是0均值
(2)神经元坏死问题:指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新,有两个主要原因导致这种状况发生
(1) 非常不幸的参数初始化,这种情况比较少见
(2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法
为了解决ReLU函数带来的神经元坏死问题 , 提出了将ReLU的前半段设为αx,α通常设为0.01,,另外一种直观的想法是基于参数的方法PReLU函数, α可由方向传播算法学习出来。
ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及:(1)不会有神经元坏死现象(2)函数输出均值接近于0
但是ELU的小问题就是计算量稍微有点大。
1、使用不同的激活函数,比如Relu,Leak-Relu,PRelu,elu等激活函数代替sigmoid函数
2、使用Batch Normalizaion(批量归一化)
3、使用残差网络
4、预训练加微调
1、梯度裁剪
2、权重正则化
两个3x3的卷积核的感受野比5x5的卷积核的感受野大,在保持相同感受野的同时,用3x3的卷积核可以提升网络的深度,可以很明显的减少计算量。
1、局部连接
2、权值共享:减小参数量
3、池化操作:增大感受野
4、多层次结构:可以提取low-level以及high-level的信息
1、数据集太小,数据样本不足时,深度学习相对其它机器学习算法,没有明显优势。
2、数据集没有局部相关特性,目前深度学习表现比较好的领域主要是图像/语音/自然语言处理等领域,这些领域的一个共性是局部相关性。图像中像素组成物体,语音信号中音位组合成单词,文本数据中单词组合成句子,这些特征元素的组合一旦被打乱,表示的含义同时也被改变。对于没有这样的局部相关性的数据集,不适于使用深度学习算法进行处理。举个例子:预测一个人的健康状况,相关的参数会有年龄、职业、收入、家庭状况等各种元素,将这些元素打乱,并不会影响相关的结果。
作用 :对输入的特征图进行压缩,
一方面使特征图变小,简化网络计算复杂度;
一方面进行特征压缩,提取主要特征。
通常来讲,max-pooling的效果更好,虽然max-pooling和average-pooling都对数据做了下采样,但是 max-pooling感觉更像是做了特征选择,选出了分类辨识度更好的特征,提供了非线性 。 pooling的主要作用一方面是去掉冗余信息,一方面要保留feature map的特征信息,在分类问题中,我们需要知道的是这张图像有什么object,而不大关心这个object位置在哪,在这种情况下显然max pooling比average pooling更合适。在 网络比较深的地方,特征已经稀疏了,从一块区域里选出最大的,比起这片区域的平均值来,更能把稀疏的特征传递下去 。
average-pooling更强调对整体特征信息进行一层下采样,在减少参数维度的贡献上更大一点,更多的体现在 信息的完整传递这个维度 上,在一个很大很有代表性的模型中,比如说DenseNet中的模块之间的连接大多采用average-pooling,在减少维度的同时,更有利信息传递到下一个模块进行特征提取。
average-pooling在 全局平均池化操作 中应用也比较广,在ResNet和Inception结构中最后一层都使用了平均池化。有的时候在模型接近 分类器的末端使用全局平均池化还可以代替Flatten操作 ,使输入数据变成一位向量。
CNN网络中另外一个不可导的环节就是Pooling池化操作,因为Pooling操作使得feature map的尺寸变化,假如做2×2的池化(步长也为2),假设那么第l+1层的feature map有16个梯度,那么第l层就会有64个梯度,这使得梯度无法对位的进行传播下去。其实解决这个问题的思想也很简单,就是把1个像素的梯度传递给4个像素,但是需要保证传递的loss(或者梯度)总和不变。根据这条原则,mean pooling和max pooling的反向传播也是不同的
mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把 某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变 ,图示如下 :
(2) max pooling
max pooling也要满足梯度之和不变的原则 ,max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。那么 反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。 所以max pooling操作和mean pooling操作不同点在于需要记录下池化操作时到底哪个像素的值是最大,也就是max id,这个变量就是记录最大值所在位置的,因为在反向传播中要用到,那么假设前向传播和反向传播的过程就如下图所示 :
28、细粒度分类
29、LSTM&RNN
30、解释LSTM结构(相对于RNN)的好处
31、RNN的梯度消失原因和解决办法
32、Object Detection
33、Unet的介绍
34、FCN和Unet的区别
35、RCNN系列的算法流程和区别
36、Fast RCNN中 bbox 回归的损失函数什么
37、解释 ROI Pooling 和 ROI Align
38、Mask RCNN中 mask branch 如何接入 Faster RCNN中
39、解释 FPN
40、解释 ROI Align
41、简述 YOLO 和 SSD
42、简述 Hough 直线检测、Sobel 边缘检测算法流程
43、Mask RCNN中的anchors如何判定为正负样本
44、简述 NMS 算法流程
45、attention起源是用在哪里?pixel还是frame,是soft还是hard
46、anchor的正负样本比是多少
47、算法和激活函数等
48、BN的原理和作用
49、BN层反向传播,怎么求导
50、BN 的作用和缺陷,以及针对batch_size小的情况的改进(GN)
51、BN层,先加BN还是激活,有什么区别
52、手推BP
53、优化算法举例和他们的区别(SGD、SGDM、RMSprop、Adam)
54、随机梯度下降和梯度下降
55、训练不收敛的原因有哪些
56、简述 SVM 流程、核函数寻参及常见的核函数举例
57、batch_size 和 learning rate 的关系(怎么平衡和调整二者)
58、解释过拟合和欠拟合,以及解决方法
59、激活函数有哪些,各自区别
60、损失函数有哪些
61、Sigmoid 和 ReLu 对比(各自优缺点)
62、为什么不用sigmoid而用relu?做出了哪些改进?
63、梯度消失和梯度爆炸的原因和解决方法
64、Precision 和 Recall 的定义
65、精确率高、召回率低是为什么
66、SVM,线性回归和逻辑回归的原理及区别
67、PCA原理,PCA和SVD的区别和联系
68、正则化怎么选择,有哪些方式
69、L1、L2范数,区别
70、boost、Adaboost
71、dropout和batch normalization
72、讲一下决策树和随机森林
73、讲一下GBDT的细节,写出GBDT的目标函数。 GBDT和Adaboost的区别与联系
74、偏差、方差
75、距离度量公式哪些,区别
76、多标签识别怎么做
77、data argumentation怎么处理的
78、数据不均衡怎么处理、只有少量带标签怎么处理
79、权重初始化方法都有哪些
80、权值衰减这个参数怎么设置
81、分类问题有哪些评价指标?每种的适用场景。
82、无监督学习了解哪些
83、图像处理Opencv
84、边缘检测算子有哪些
85、霍夫变换
86、直方图是什么
87、canny算子是怎么做的
88、图像的特征提取有哪些算法,适用范围、优缺点
参考:
https://blog.csdn.net/bluesliuf/article/details/89389117
https://zhuanlan.hu.com/p/107279000
https://zhuanlan.hu.com/p/56475281