微软公司宣布不再支持你正在使用的 IE浏览器,这会严重影响浏览网页,请使用微软最新的Edge浏览器
厂商专区
产品/技术
应用分类

技能补给站 | 零基础成为深度学习高手(一)

2018-08-28 09:59 来源:网络整理 编辑:Janet

一提到人工智能和深度学习,很多人会觉得比较难,相信这篇文章会给你一些启发。下面让我们由浅入深一起来学习火爆的人工智能和深度学习技术吧。本文分享的内容分四部分,分别是入门、基础、进阶和发展趋势。

深度学习简单入门

2016年3月份,AlphaGo以4:1战胜韩国围棋手李世石,一举震惊了世界。

人工智能一下就引爆了整个世界。有种趋势就是,不谈人工智能,就落伍了。

以前资本圈融资都谈的是“互联网+”,现在都在谈“AI+”了。

有人说,马上人工智能时代就要来了,甚至有人宣扬人工智能威胁论。

那么,当我们谈论人工智能的时候,我们究竟在谈论什么呢?

我们先来讨论下“人工智能”的定义。

什么叫做智能呢?所谓智能,其实就是对人某些高级功能的模拟,让计算机去完成一些以前只有人才能完成的工作,比如思考、决策、解决问题等等。

比如以前只有人可以进行数学计算,而现在计算机也可以进行计算,而且算的比人还准,还快,我们说计算机有一点智能了。

人工智能的发展经历了好几个发展阶段,从最开始的简单的逻辑推理,到中期的基于规则(Rule-based)的专家系统,这些都已经有一定的的智能了,但距离我们想象的人工智能还有一大段距离。直到机器学习诞生以后,人工智能界感觉终于找到了感觉。基于机器学习的图像识别和语音识别在某些垂直领域达到了跟人相媲美的程度。人工智能终于能够达到一定的高度了。

118016579_3_20171204013204512_副本

当前机器学习的应用场景非常普遍,比如图像识别、语音识别,中英文翻译,数据挖掘等,未来也会慢慢融入到各行各业。

118016579_4_20171204013204684

虽然都是机器学习,但是背后的训练方法和模型是完全不同的。

根据训练的方法不同,机器学习算法可以大致分类为监督学习、无监督学习和强化学习三种。

118016579_5_20171204013204918

监督学习,就是训练数据是有标签的,也就是每个数据都是标注过的,是有正确答案的。训练的时候会告诉模型什么是对的,什么的错的,然后找到输入和输出之间正确的映射关系,比如物体种类的图像识别,识别一张图片内容是只狗,还是棵树。

非监督学习,就是训练数据没有标签的,只有部分特征。模型自己分析数据的特征,找到数据别后隐含的架构关系,比如说自己对数据进行学习分类等等,常见的算法有聚类算法,给你一堆数据,将这数据分为几类。比如在银行的数据库中,给你所有客户的消费记录,让你挑选出哪些可以升级成VIP客户,这就是聚类算法。

还有一种是强化学习,目标是建立环境到行为之间的最佳映射。强化学习的训练是不需要数据的,你告诉他规则或者给他明确一个环境,让模型自己通过不断地尝试,自己根据结果来自己摸索。

Deep Mind的AlphaGo Zero就是通过强化学习训练的,号称花了3天的训练时间就能100:0打败AlphaGo。

比较适合强化学习的一般是环境到行为之间的结果规则比较明确,或者环境比较单一、不太容易受噪音干扰等等,比如下围棋的输赢等等,还可以模拟直升机起降、双足机器人行走等等。

我们今天讨论的就是基于监督学习在图像识别领域的应用。

接下来我们再看下人工智能的历史。

虽说我们感觉人工智能最近几年才开始火起来,但是这个概念一点也不新鲜。

起源于上世纪五、六十年代就提出人工智能的概念了,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果,当时的人们对此非常乐观,号称要在10年内解决所有的问题。但是,单层感知机有一个严重得不能再严重的问题,即它对稍复杂一些的函数都无能为力(比如最为典型的“异或”逻辑),连异或都不能拟合。当时有一个专家叫明斯基,号称人工智能之父,在一次行业大会上公开承认,人工智能连一些基本的逻辑运算(比如异或运算)都无能为力,于是政府所有的资助全部都停掉了,于是进入人工智能的第一个冬天。

随着数学的发展,这个缺点直到上世纪八十年代才发明了多层感知机克服,同时也提出了梯度下降、误差反向传播(BP)算法等当前深度学习中非常基础的算法。之前被人诟病的问题已经被解决了,希望的小火苗又重新点燃了,于是人工智能开始再次兴起。

但是没过多久大家发现了,虽然理论模型是完善了,但是并没有实际用途,还不能解决实际问题,于是又冷下去了,人工智能的第二个冬天降临。


直到2012年开始第三次兴起,也就是最近几年人工智能的热潮。

118016579_6_20171204013205105

下面我们就来第三次热潮是如何兴起的。

在这之前,我们先介绍一个比赛。这个比赛是一项图像识别的挑战赛,给你大量图片去做图像识别,比赛看谁的识别错误低。在2012年之前,错误率降低到30%以后,再往下降就很难了,每年只能下降个2,3个百分点。

直到2012年,有一个哥们叫Alex,这哥们在寝室用GPU死磕了一个卷积神经网络的模型,将识别错误率从26%下降到了16%,下降了10%左右,一举震惊了整个人工智能界,当之无愧的获得了当年的冠军。

从此之后,卷积神经网络一炮而红。之后每年挑战赛的冠军,胜者都是利用卷积神经网络来训练的。2015年,挑战赛的错误率已经降低到3.5%附近,而在同样的图像识别的任务,人眼的辨识错误率大概在5.1%,也就是目前的深度学习模型的识别能力已经超过了人眼。

118016579_7_20171204013205230

下图是最近几年比较有代表性的模型的架构。

大家可以看出来,深度学习的模型的发展规律,深,更深。没有最深,只有更深。

118016579_8_20171204013205371

那么Alex的卷积神经网络这么厉害,是因为这个哥们是个学术大牛,有什么独创性的学术研究成果么?

其实并不是。

他所采用的模型是1998年Yann Lecun就提出了这个模型,当时Yann Lecun把这个模型应用在识别手写邮编数字的识别上,取得了很好的效果,他搭建的网络,命名为Lenet。这个人的名字——Yann Lecun,大家一定要记住,因为我们后面的内容将会以Lenet作为范本来讲解。

这个模型是1998年提出来的,可为什么时隔这么多年才开始火起来呢?

118016579_9_20171204013205543

人工智能突然爆发背后深层次的原因是什么?我总结了一下,背后的原因主要有三个:

118016579_10_20171204013205652

1.算法的成熟,尤其是随机梯度下降的方法的优化,以及一些能够有效防止过拟合的算法的提出,至于什么是随机梯度下降和过拟合,后面我们会详细讲到

2.数据获取,互联网的爆发,尤其是移动互联网和社交网络的普及,可以比较容易的获取大量的互联网资源,尤其是图片和视频资源,因为做深度学习训练的时候需要大量的数据。

3.计算能力的提升,因为要训练的数据量很大(都是百万级以上的数据),而且训练的参数也很大(有的比较深的模型有几百万甚至上千万个的参数需要同时优化),而多亏了摩尔定律,能够以较低的价格获取强大的运算能力,也多亏了Nvida,开发了GPU这个神器,可以大幅降低训练时间。

118016579_11_20171204013205777

GPU的运算速度是CPU的5-10倍左右,同样的模型需要训练,如果用CPU训练需要一个礼拜的话,那使用GPU,只需要一天时间就可以了。

截止到目前,我们汇总下我们的学习内容,我们了解了人工智能的简单介绍,大致了解了人工智能的算法分类以及发展历史。


深度学习基础知识

接下来我们了解一下基础知识。

我们上面也提到了,我们这次主要以卷积神经网络在图像识别领域的应用来介绍深度学习的。

卷积神经网络,这个词听起来非常深奥。

但其实没什么复杂的,我们可以分开成两个词来理解,卷积和神经网络。

先看下卷积。

卷积时数学的定义,在数学里是有明确的公式定义的。

118016579_12_20171204013205887

是不是觉得公式太抽象,看不明白?没关系,我们举个栗子就明白了。

118016579_13_20171204013205965

还是以图像识别为例,我们看到的图像其实是由一个个像素点构成的。

一般彩色图像的是RGB格式的,也就是每个像素点的颜色,都是有RGB(红绿蓝三原色混合而成的),是三个值综合的表现。

118016579_14_2017120401320643

假设f函数为5x5(对应到图片上即为5x5像素)为例,h函数为3x3的函数,大家可以理解为为一个手电筒(也就是筛选器),依次扫过这个5x5的区间。在照过一个区域,就像对应区域里的值就和框里的数据去做运算。最终输出为我们的输出图。

手电筒本身是一个函数,在3x3的区域内,他在每个位置都有参数,它的参数和对应到图片上相应位置的数字,先相乘,然后再把相乘的数字相加的结果输出,依次按照这些去把整个图片全部筛选一遍,就是我们所说的卷积运算了。

还是比较抽象,没关系,看下面这个图片就清楚了。

118016579_15_20171204013206168

那我们为什么要做卷积呢?我们其实就是建立一个输入和输出的函数,图像识别的目的就是把输入的信息(像素点信息)对应到我们输出结果(识别类别)上去,所以是逐层提取有用特征,去除无用信息的过程。

比如下图所示,第一层可以识别一些边缘信息,后面逐层抽象,汇总到最后,就可以输出我们想要的结果,也就是我们的识别结果。

118016579_16_20171204013206246

虽然我们知道特征是逐层抽象提取的,但是不幸的是,我们并不知道那一层是具体做什么的,也就不知道那个层数具体是什么意思。

也就是说,其实深度学习网络对于我们而言,是个黑盒子,我们只能通过他的输出来判断其好坏,而不能直接去调整某个参数。

那么,什么是神经网络呢?其实这个模型来自于心理学和神经学,人工智能的专家借鉴了这个结构。

118016579_17_20171204013206371

左侧为神经元,神经元接收外界的输入刺激或者其他神经元的传递过来的信号,经过处理,传递给外界或者给其他神经元。

右侧为我们根据神经元的生物学特征抽象出来的数学模型,其中x是输入,包括一开始数据来源(外部刺激)的输入,也包括其他节点(神经元)的输入。

w为参数(weight),每个节点还有一个b,这个b其实是一个偏置。

大家在学习新东西的时候,凡事多问个为什么?只有知道背后的原因了,这样你才能理解的更深刻。有句话说得好,还有什么比带着问题学习更有效率的学习方法呢?

为什么要加这个b呢?大家想想看,如果没有b的话,当输入x为0的时候,输出全部为0,这是我们不想看到的。所以要加上这个b,引入更多的参数,带来更大的优化空间。

大家看一下,目前为止,这个神经元里的函数(对输入信号的处理)都还是线性的,也就是说输出与输入是线性相关的,但是根据神经元的生物学研究,发现其接受到的刺激与输入并不是线性相关的,也为了能够表征一些非线性函数,所以必须要再引入一个函数,也就是下面我们要讲的激活函数(activation function)。

为什么需要激活函数?因为需要引入一些非线性的特性在里面。


常见的激活函数有这些。

118016579_18_20171204013206434

以前是sigmoid比较常见,但是现在ReLU用的比较多一些。

就类似于下图这样,在节点经过线性运算后,经过非线性的ReLU,然后进入下一层的下一个节点。中间的w和b,就是我们卷积神经网络的参数,也是我们模型中需要训练的对象。

118016579_19_20171204013206527

大家看LeNet模型中,就是在输入数据多次进行卷积神经网络的处理。

118016579_20_20171204013206605

对于模型而已,我们习惯把输入的数据叫做输入层,中间的网络叫做隐藏层,输出的结果叫做输出层。中间层数越多,模型越复杂,所需要训练的参数也就越多。

所谓的deep learning中的deep,指的就是中间层的层数,右图中GoogLenet有22层。

118016579_21_20171204013206699

一般说来,模型越复杂,所能实现的功能也越强大,所能达到的精度也越高,目前最深的模型大概有10的7次方个神经元,其神经元比相对原始的脊椎动物如青蛙的神经系统还要小。

自从引入隐藏单元,人工神经网络的大小大约每 2.4 年翻一倍,按照现在的发展速度,大概要到2050年左右才能达到人类大脑的神经元数量的规模。

118016579_22_20171204013206793

损失函数

怎么判断一个模型训练的好坏呢?我们需要一个评价指标(也就是KPI考核指标),也就是损失函数。

习大大教导我们不忘初心 ,那我们最初的目标是什么?是建立输入输出的映射关系。

比如我们的目标是判断一张图片上是只猫,还是一棵树。那这张图片上所有的像素点就是输入,而判断结果就是输出。

那怎么表征这个模型的好坏呢?很简单,大家应该很容易想到,就是把模型输出的答案和正确答案做一下比对,看一下相差多少。

我们一般用下面这个公式(平均平方误差,即MSE)来评估我们的模型好坏。

11

我们就是通过对比输出结果与预期结果的差异,其中带帽子的yu就是预期的结果(也就是标签值,即是真值),而前面的不带帽子的yu就是实际的输出结果。当训练结果非常好的时候,比如说是全对的时候,平均误差就是0。当训练结果非常差的时候,比如说全错的时候,误差即为1.

于是我们知道了,这个E越小越好,最好变成0.

大家注意下,这个求和的标识,表示是所有的数据的和,而不是一个的数值。我们常说大数据来训练模型,其实这就是大数据。我们训练的时候需要上百万张的图片,最终得出来的误差,就是这里,然后再除以数量,取平均值。

那怎么去降低这个误差呢?要回答这个问题,就涉及到卷积神经网络的核心思想了,也就是反向传播。

来自: 幸运符hjssc716 > 《人工智障》

继续阅读→  技能补给站 | 零基础成为深度学习高手(二)

声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。

相关阅读

微信关注
技术专题 更多>>
研发工程师的工具箱
智慧生活 创新未来

头条推荐

电子行业原创技术内容推荐
客服热线
服务时间:周一至周五9:00-18:00
微信关注
获取一手干货分享
免费技术研讨会
editor@netbroad.com
400-003-2006