深入浅出了解深度学习

深度学习

对于深度学习,大部分未接触的人都处于模糊的阶段。每次说到这块,都会联想到机器统治人类。觉得高大上,并且里面的逻辑晦涩难懂。但其实,他没有我们想象中的高大上,也没有我们想象里的那么难。我们离所谓的机器人统治革命其实还差得远。因此,本文会简化深度学习各类的模型和尽量使用通俗的指代和描述,旨在以简单直观的方式进行表达。普及并解决下面一些疑问:到底什么是深度学习?深度学习和机器学习有什么不同?深度学习要解决哪些问题。深度学习中的激励函数,损失函数作用是什么等等问题。

如果你对此产生了兴趣,不妨往下阅读, 进行更深入的了解。

image.png

深度学习的由来

说的这个问题,我们不得不聊一下深度学习的历史。可以说深度学习 = 神经网络 + 机器学习,从另一种角度来说他的发展也十分有趣。

深度学习的本源其实就是神经网络的在机器学习中的应用。他是机器学习的子集。

他起源于1980年福岛邦彦提出的感知机。但因计算代价过大, 训练时间过长。导致未能进行实际的应用。并且神经网络这个名词, 可能因为和生物相关, 投资者们都认为赚不了钱。研究的经费也有所减少。自此,神经网络在机器学习的应用如打入冷宫,一直不温不火。但深度学习的萌芽已经种下。只等随着科技的研究与发展,在未来进行一轮革命性的爆发。

经过一段漫长的沉寂与暗中生长。2006年,Geoffrey Hinton等人在Science杂志上发表Deep Belief Networks的文章。为了能更好的骗经费, 忽悠信徒。率先使用了“深度”这个词。重新激活了神经网络的研究,开启了深度神经网络的新时代。

自此, 学术界和工业界对深度学习热情高涨,并逐渐在语音识别、图像识别、自然语言处理等领域获得突破性进展。深度学习在语音识别领域获得相对20%到30%的准确率提升,突破了近十年的瓶颈。2012年图像识别领域在ImageNet图像分类竞赛中取得了85%的top5准确率 ,相比前一年74%的准确率有里程碑式的提升,并进一步在2013年获得89%的准确率。事实证明, 改名字真的能改变命运!

什么是人工神经网络?

在了解深度学习前,我们不得不先说明什么是神经网络。神经网络准确来说是被命名为 人工神经网络。他旨在用数学的方法,模拟我们细胞中的神经元反应。处理解决实际中的问题。

人工神经网络与反射弧

让我们来复习复习初中的知识,神经反射是如何产生的。他的组成部分有哪些? 神经反射源于反射弧。简单来分它由:感受器, 神经中枢, 效应器三部分组成。

肌肉受到刺激,感受器向中枢神经发送兴奋。通过中枢神经的阈值判断强度,引起效应器进行响应。肌肉马上对刺激做出应激反应,收缩肌肉。

image.png

神经兴奋与阀值

并非所有 刺激 (兴奋) 都可以引起细胞的的 应激反应 。就像轻风拂过和, 针刺钉扎的区别。细胞的反应取决于刺激的程度。而决定这一现象的因数被称为 阀值。只有总刺激度超过细胞阀值时,细胞才会做出反应。

神经的兴奋与反应阀值

但刺激的来源往往不是单一的。他的组成要素可能有很多,因此他更类似于如下模型。刺激的来源可能不只一种。并且每种来源的兴奋,对中枢神经的刺激程度也不一样。就像我们在玩真心话大冒险时,被逼喝下一碗混合 蜜糖酱油辣椒的崂山神水。甜,咸,辣每种味道对舌根的刺激都是不同的。如果是吃不得辣的广东人喝了估计就要被辣出翔。而被湖南人吃了,只觉得是甜到腻。

image

​ 因此,每种刺激对中枢神经的说都有不同的权重。假设三种味觉分别a1, a2, a3。他们的权重即为w1, w2, w3。可得一个神经元的刺激总和 z 为:

image.png

​ 如果刺激从 3 种延伸到 k 种可得:

image.png

​ 为了更具有普遍性,一般会在末尾带上常熟变量b, 我们就得到了单个神经元神经网络最基本的通项公式。

一个神经元的刺激 = 每种刺激 x 每种刺激对应的权重 , 即:

image.png

​ 但总所周知, 我们人处理事物时, 往往不是一个而是多个神经元决定的。就如我们辨认人的声音,可能会有音色,尖细(频率), 大小 多个阀值决定。因此继续推导,假设我们判断事物需要有 j 个神经元参与。分别为z1, z2, z3 … zj-1, zj。可得每个神经元的通项公式:

image.png

而我们决断的最终结果就等于他们的总合。即把z1 … zj求和。一个简单事物的判断 = 多个神经元的总刺激, 他便变成了我们刚一直觉得看似晦涩难懂的公式:

image.png
image

机器学习的分类

说完神经网络,将该说机器学习了。学习的分类一般分为三种: 有监督学习无监督学习 , 半监督式学习。他们的关系也非常直观。

训练机器就正如养孩子。所谓的无监督学习就是把孩子散养。让熊孩子们自己去耍,从不干预。让他自己去区分和理解事物。直到某一天认为他们认知够了,就查看他们价值观是否符合自己的期望。如果符合就把他送去做苦力,不符合就悄悄把他干掉, 再重新养一个 (丧心病狂! = = )

期间没有人为干涉,不需要给机器定制目标, 标识出我们需要的特征。而是通过某些特征的距离算法,让他们自己把具有相似性的事物归类在一块,没有经过专门的学习(所谓的社会大学毕业生)。就如把孩子放在宠物堆中,通过接触猫狗小动物。孩子们很容易就能够区分他们是两种类型的事物。但只是没有经过人为的教导,并不知道其中一类命名为 “狗”,而另一类命名为 “猫” 而已。

但无监督算法的缺点也非常明显,便是分离结果只能通过特征的表象。因为缺少家长人为的干预与监督,“孩子” 们并不知道家长的期望是怎么样的。他也没有基本的伦理道德,很容易就走歪了。并且事物的归类标准并不单一。万物互联,所有事物都具有相似性。我们也很难说哪些是正确的。如下图,长发的狗和人虽为同一物种。但无监督学习很可能就把他们分为同一类别,虽说从某种角度来说也是有一定正确性。但对人的参考性就没那么大了。因此,无监督学习普遍识别率并不高。多用于数据预处理。面对于数据量巨大,不好人为提取的抽象特征的数据集。

image

那么有监督学习是怎么样的呢。不妨先让我们看看下面这个耳熟能详的实验。

image

研究人员为了揭示了传统是如何形成的。五只猴子被关进笼子里,笼子一角挂着一串香蕉,如果有猴子试图摘取香蕉,就会被开水泼到。猴子们吃了几次苦头之后,就再也不想摘香蕉了。

此时用一只新猴子替换老猴子,新猴子看到有香蕉刚想去摘,就被老猴子们拉住一顿暴打。新猴子挨了几次打之后,也不再去摘香蕉了。

此时再换进一只新猴子,它也看到香蕉想去摘,也被老猴子们一顿暴打,下手最狠的恰恰是那一只没被开水烫到过的。

最后老猴子们都被换干净了,仍然没有猴子去碰那串香蕉,因为它们知道——碰香蕉意味着被打,而为什么会被打,没有猴子知道。

这个实验非常有趣,体现了有监督学习的最大优势。能够对机器制定目标。 就像上文中的猴子一样,让他们的行为都按照我们期望的方向发展。最后能优秀的为我们所用。

有监督学习与无监督学习相反。都是些每天望子成龙虎爸虎妈,天天监督孩子学习。不是就是兴趣组就是补习班。就怕你以后考不到个好学校。我们会人为的给数据打上标签,并给出指标,给孩子们直接指出名为 “正确” 的答案。经过这一系列的应试教育,孩子成绩不好也难。因此有监督学习的识别率普遍比无监督高许多。某些算法在 MNIST 数据集的正确率上都已经高达92%, 93%了。

​ 看起来非常的好啊。只要经过不断的训练和学习,便能一朝飞上枝头,光宗耀祖。但这样你就too young了,这样训练的目的性太强。 容易制造精致的利己主义者。应试教育培养出来的考试机器,并不能应付现实中多变的场景。往往容易问题稍微的偏离考试大纲他就马上懵逼(过拟合情况)。并且现在家长们 (开发者) 的生存压力也大,哪有时间一步步给他标出 特征 来学习。

因此有监督学习多用于有明确结果的数据有限的集合,这样能得到更准确的数据模型。同时能更为节省训练哈飞的周期。

针对于上述两种学习方式, 都有其优点与不足。因此,提出了第三种学习方式——半监督试学习。半监督学习把无监督学习和有监督学习相结合。在孩子幼年期,进行手把手教育,标注出有用特征。给他传授基本的伦理与社会道德。而剩下的数据则让他在已有的基本道德与准则下自我学习与发展。因此半监督学习会有小部分已标注的训练集用于初始化学习,而留下一大部分未标注的训练数据让其自我学习。

深度学习

深度学习中的 “深度”

从上面的层层推到, 我们很容易就能理解人工神经网络公式由来。那么他和深度又有什么关系呢。“深度” 一词到底是深在哪里?单层的神经网络为什么就不能叫深度学习?

虽然我在上文中很不地道的揣测了 Geoffrey Hinton 改变神经网络命名用以骗经费的意图, 但深度学习的深度一词的提出,确实是有确切含义的。非常明显,深度一词自然是与浅度相对应的。而单层的神经网络,就是所谓的 “浅层学习”。

如下图,他只有简单的单层细胞结构,包含:刺激 输入层 (有N个则表示他的识别特征或刺激有N种),一层的神经元 隐式层(蓝色),反应 输出层(绿色,同时有两个圈则表示输出结果有两种)。而深度学习与浅层学习最大的区别在于神经元的层数,他的结果是通过过逐级深化的形式进行判断的。

image

就像我们识别一个人其实也是通过模糊到具体, 从面部轮廓,眼睛大小,发色,第二性征(性别),等多个维度去判断的。每个神经元的阀值判断,在宏观上都会表现为区分事物的一个 特征(后文特征即指代为上图隐层每个判断的神经元)。因此每一层的神经元相当于一个特征组。而通过多个特征组一步步判断识别事物便是 深度学习

​ 那么,深度学习为什么能更优于浅层学习呢。其实是和我们大脑辨别事物的方式类似的。深度学习多层的结构更利于提取模糊特征。从轮廓到细节一步步去判定。这样有两个好处。一是慢慢深入,结果自然准确。二是比起单层的结构,前期能有效的筛选出有用的数据集。

​ 如我们要辨别出人的四类分类:长发女生,长发男生,短发女生,短发男生。单层的神经网络需要对等的判断4类情况。即每个样本要进行4次判断。而在实际中短发女生的数量较少,长发男生更是占男生总数不到10%。不应该为每种情况平均的分配资源

而深度网络可以先提取 头发长度 作为一层神经元的筛选。如果恰好筛选出为长发。那么在筛选出来的集合里,我们已经可以大概率的认为这个样本90%的概率是为女性了。

深度学习中的 “学习”

从前文,我们可以了解到 深度学习 = 神经网络 + 机器学习。那么深度学习又是怎么学习的呢?神经网络是从生命科学发展而来。因此,深度的学习方式也与细胞体一致。细胞会通过细胞负反馈来学习。如下图血压的负反馈调节。控制部分会通过感受器获取现在的血压指标。如果过低则指令提高血压。反之则降低血压。深度学习的优化学习算法于此原理相同。他会通过衡量当前数值与期望值偏差数值。反向调控自己的敏感度(梯度下降法,见后文),改变刺激的权重(上文w1,w2,w3…wk)。从而达到负反馈调节的目的。那么,在深度学习中我们该怎么衡量指标的偏差值呢。

image

深度学习中的误差衡量——损失函数

在深度学习中,衡量实际与期望差误的函数称为损失函数(或 代价函数 ),两种几乎可以认为是完全一样,只是在不同层面的叫法。那么回想我们的高中知识, 当我们计算线性回归的拟合函数时。是怎么计算他的误差的呢?没错,就是最简单的平方误差 函数 (注意不是 平方差 函数, 一字之别, 差之千里) 。平方误差的公式等于平方误差 = (当前期望值 - 实际值) 的平方总和

image.png

在线性回归问题中,我们只要让平方误差 L 降低,就能提高我们最后结果的正确率。并且平方误差越低,正确率越高。至于原因,可能下图两条数据拟合线段的误差能更为直观的阐述。

image

由公式不难看出,平方误差的总和,就等于黄色小球到拟合函数的垂直距离平方总和。所以,平方误差函数越小,数据坐标点就越近似拟合函数,拟合度就越高。右图的拟合函数明显优于左图。因此深度学习中误差衡量也使用了平方误差函数。

可能在这之中你会有个疑问, 为什么误差衡量要使用 平方误差 而不使用 均方误差 呢。

原因在于平方形式对大误差的惩罚会更大。为了得到更好的拟合度,误差的惩罚并非线性了。而是以凸函数的形式单向增长。误差会以平方的形式放大。这样误差越大,纠正(学习)的力度也会倍增。使误差更尖锐和明显,加快学习的能力。

另外, 常见的损失函数有: 。各类互有优劣,但我认为平法差能更好地理解。

既然已经有了 神经网络模拟函数 和 衡量误差的平方差函数。那么,要让神经网络学习起来,我们就只剩下最后一个问题了。怎么让神经网络进行反馈与自我学习。

权重的自我学习——梯度下降法

​ 所谓自我学习,其实只是找到损失函数最小值的一个过程。但实际上因硬件限制许多方程我们无法找到全局最优解。因此机器学习中我们的算法都是寻求局部最优解的一个过程。而在计算机中,求解的过程特别适合于 迭代算法,就相当于计算机的学习过程。

那么,我们要怎么去找到损失函数的局部最优解呢。从大学数学的理论中,很容易得出。局部最小值便是函数的极值点,准确来说是极小值点。并且,当函数为凸函数是,极小值点便是最小值点。否则则为局部最小值点。这点我就不予证明了。所以深度学习的学习算法中最大的问题就是怎么找到这些极值点了。

最自然的想法,当然是求导拉。连续函数中,导函数为0的点即为极值点。使方程倒数为0就能够得出所有极值的横坐标x。再通过比较 y 轴的值大小。不就能找出最小值了吗?但是,实际上。前文也说道,这样的方程我们现在的计算机并一定能解出他的解。并且数据量过于巨大,也太花费时间,而方程的解也不一定是有穷的。这样问题就相当大了。又该如何得到损失函数的局部最优解呢?

这里最常见的便是使用一种迭代法——梯度下降法

我们来模拟一个场景:

假如你到了一座陌生小山上,并且不认识路, 你只能看到周围的环境, 你要怎么能保证下山的速度最快呢?

image

最直观的想法便是 —— 向坡度向下的地方走便是了!既然不认识路。我们只要朝坡度向下的地方行进,自然而然的就能朝山下去了。机器学习也同理。我们只要朝向下斜率的地方前进便是了。

但是一个问题随之出现。山体是凹凸不平的。我们这样走很容易只是到了一个山沟沟里,而不能真正的找到下山的路。这也是这种算法的弊端,梯度下降法到达的只能是一个局部最优点。

image

正如上图所示一般。 我们再山体不同的地方出发,朝下走去。到达的可能是不一样的极小值点。并且他到达的是哪个极小值点取决于他的初始位置。并且很有可能我们会错过最小值点。

原理我们知道了,我们要怎么把上面的想法映射成算法呢。便是我们的反向梯度。我们对损失函数当前位置求导。如果导函数为正则,减去当前的梯度。如果导函数为负则加上他的梯度。以达到局部最小值。如下图所示:

image

小球在左侧, 梯度小于0,这时候减去他的斜率(梯度),则向右运动。在右侧类似。经过不断迭代,当斜率为0时小球停下。则得到此时的局部最优解。

​ 这时候我们就能得出神经网络权重的新公式, 权重W = 当前值 - 损失函数L对当前权重w求导

image.png

这样我们所有的特征权重都会根据当前平方误差而变化迭代,直到到达局部最优解。

为了能更好的控制梯度下降的速度,我们为公式添加一个常量系数α, 称之为学习率。此时,公式便变成:

image.png

既然α是个常熟, 在公式中有什么用呢。他又该设成多大呢?α称之为学习率。在我们上述例子中,就相当于我们迈的步子的步长。步子迈的大,下山便下得快。但在接近最低点时,容易因为步子太大而在最低的左右移动,而无法到达。而如果步子迈的太小,则下山速度过于缓慢。不能达到我们对时间的要求。因此学习率的设定没有一个具体数值。需要具体问题具体分析。即使是同一个模型,学习率不同。最后得出的模型的识别率也会相差很大。下图是学习率设置的不同的三个值。如果设的太大(红线),结果一直徘徊在最低点附近。但设的太小(蓝线),需要学习的时间就会太长。而合理的值(黄线),既能到达局部最优处,也能快速的完成训练。

image.png

深度学习最基本的几个环节都已经进行说明了。但如果是有相关学习的朋友是不是觉得少了什么?激励函数到哪去了?

深度学习中的非线性因素——激励函数

其实激励函数又称激活函数。上文的深度学习虽已经有了最基本的组成。但是要到达高学习率这些仅仅是不够的。上述的模型中有一个很大的缺点:就是所有函数都是线性的,他不能很好的拟合某些边界场景。什么意思呢?

其实就如下图所示,添加激活函数后,边界从直线变成了圆滑曲线,不再那么分明。

image
image

其实激活函数的作用就是用来加入非线性因素的,因为线性模型的表达能力不够。

我们用线性的线段去逼近一条曲线的时候,边角过于规则。有一种“跃迁”的感觉。因此,我们必须引入非线性的元素。让他的边界不那么棱角分明,而能适用于更多情况。我就不进行公式推导了。可以参考知乎回答

文章参考:
什么是无监督学习?
神经网络激励函数的作用是什么?有没有形象的解释?
网易公开课 - 斯坦福大学公开课 :机器学习课程
谷歌机器学习课程
Deep Learning Tutorial-李宏毅

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 第二个Topic讲深度学习,承接前面的《浅谈机器学习基础》。 深度学习简介 前面也提到过,机器学习的本质就是寻找最...
    我偏笑_NSNirvana阅读 15,576评论 7 49
  • 并不是每个人都有勇气面对死亡,但更不是每个人都有勇气面对活着。 事实上,任何人都不可能真正乐观的面对死亡。所以这部...
    方建阅读 756评论 0 2
  • 杨絮在春风里肆无忌惮地翻着筋斗云,突然啪的一声给了我一个耳光,然后面露邪笑的说:小样儿,生病了吧! 我捂着惨白...
    东方愚阅读 293评论 0 0
  • Cookie Cookie 的翻译是“小甜饼”,可想而知,Cookie 是一个非常小的数据(4K 左右),主要用来...
    辉夜乀阅读 512评论 0 0
  • 1.推荐算法工程师 1. 参与各个产品线的个性化推荐系统的研发; 2. 分析用户行为数据,并设计合理的推荐算法模型...
    TonyLan阅读 533评论 0 0