#深度学习
我与这世间所有的羁绊,一旦连上,就再也断不开。
羁绊越深,痛苦便越深。
关于这篇深度学习的文章,总共六章。
综述而已。
01:研究背景 02:深度学习网络 03:深度学习框架
04:深度学习应用 05:未来挑战和潜在研究方向 06:未来展望
关于本文引用CSDN资料,将会在最后给出链接。
##研究背景
谈及深度学习,必须要考虑其前身机器学习。下面是关于机器学习的介绍,网上找的…
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E .
“一个电脑程序要完成任务(T),如果电脑获取的关于T的经验(E)越多就表现(P)得越好,那么我们就可以说这个程序‘学习’了关于T的经验。
简单来说,解释什么叫“机器的学习”,如果输入的经验越多表现的越好。
其实跟人做事一样,做的事情次数多了,自然知道怎么办。这就是经验。
只不过,我们把经验告诉机器,让机器来做。懒惰使人进步!
举个栗子!**风暴预测系统
我们首先浏览所有的历史风暴数据,从这些大量的数据中学习出某些“模式”,这些“模式”包含了具体的哪些条件可以导致风暴。比如我们也许可以通过学习历史数据发现:温度超过40度,湿度在80-100之间,就容易发生风暴。
“温度”、“湿度”等等指标,就是机器学习中的“特征“,而这些特征都是人工设置好的。就是说,我们在做这样一个预测系统的时候,首先由专家通过分析哪些“特征”是重要的,然后机器就通过分析历史数据中的这些特征的数据,来找到相应的模式,也就是怎样的特征的组合会导致怎样的结果。
当然这是网友回答,但我觉得解释的很好。
所以嘛!
机器学习算法的效率高度依赖于输入数据**的良好表示。
与良好的数据表示相比,糟糕的数据表示通常会导致较低的性能。
因此,特征工程长期以来一直是机器学习的一个重要研究方向,它注重从原始数据中构建特征,并导致了大量的研究。此外,特征工程通常是非常具体的领域,需要大量的人力投入。划重点,特征工程!
既然费事费力,还要依靠专家, 有木有更轻松的办法!
有!深度学习呗。
“Deep learning is a particular kind of machine learning that achieves great power and flexibility by learning to represent the world as nested hierarchy of concepts, with each concept defined in relation to simpler concepts, and more abstract representations computed in terms of less abstract ones.”
深度学习是一种特殊的机器学习,它通过学习将世界表示为概念的嵌套层次结构来获得强大的能力和灵活性,每一个概念由更简单的概念相连,抽象的概念通过没那么抽象的概念计算。
其实我觉得nest这个单词形容的很贴切,鸟巢。层层相扣,化繁为简的艺术
举个栗子!!!识别正方形和圆!
你看这个正方形它又大又圆,就像这个文章又长又宽。
我们的眼睛第一件要做的事情,就是看看这个形状有没有4条边。如果有的话,就进一步检查,这4条边是不是连在一起,是不是等长的,是不是相连的互相垂直。如果满足上面这些条件,那么我们可以判断,是一个正方形。
从上面的过程可以看出,我们把一个复杂的抽象的问题(形状),分解成简单的、不那么抽象的任务(边、角、长度)。深度学习从很大程度上就是做这个工作,把复杂任务层层分解成一个个小任务。
化繁为简,而且要实现自动化!这才是关键!
相比之下,深度学习算法以自动化的方式进行特征提取,使得研究者可以用最少的领域知识和人力去提取有区别的特征。
这些算法包括数据表示的分层架构,其中高级功能可以从网络的最后一层提取,而低级功能可以从较低层提取。
深度学习的根源在于传统的神经网络,它的表现明显优于前人。它利用神经元间转换的图形技术来开发多层次的学习模型。许多最新的深度学习技术已经被展示出来,并在不同类型的应用。
我们的大脑可以从不同的场景中自动提取数据表示。输入是眼睛接收到的场景信息,输出是分类对象。这突出了深度学习的主要优势。它模仿了人类大脑的工作方式。
据说人的大脑有三分之一在进行图像处理,这就是为啥,我们可以不假思索的说出周围的各个事物,甚至在遇见老朋友的时候,忘记他叫啥了,但可以记住他的脸。
我可以忘了你的名字,但永远忘不了你的脸。
该死,我就是这么深情。
既然这样,对比一下,机器学习和深度学习
识别狗和猫:
如果是传统机器学习的方法,我们会首先定义一些特征,如有没有胡须,耳朵、鼻子、嘴巴的模样等等。总之,我们首先要确定相应的“面部特征”作为我们的机器学习的特征,以此来对我们的对象进行分类识别。
深度学习的方法则更进一步。深度学习自动地找出这个分类问题所需要的重要特征。
比如人脸的识别!
可以看到4层,输入的是Raw Data,就是原始数据,这个机器没法理解。于是,深度学习首先尽可能找到与这个头像相关的各种边,这些边就是底层的特征(Low-level features),这就是上面写的第一步;然后下一步,对这些底层特征进行组合,就可以看到有鼻子、眼睛、耳朵等等,它们就是中间层特征(Mid-level features),这就是上面写的第二步;最后,我们队鼻子眼睛耳朵等进行组合,就可以组成各种各样的头像了,也就是高层特征(High-level features)这个时候就可以识别出或者分类出各种人的头像了。
这样,把这个过程交给计算机,那么会很迅速解决问题。
小结一下,机器学习–特征。深度学习–nest。
###深度学习的历史
了解完机器学习和深度学习的自我介绍,我们要追根溯源,看看深度学习的历史。
起源于公元前300年–亚里士多德提出(associationism)联合心理学
开创了人类试图理解大脑的历史,因为这种想法要求科学家们理解人类识别系统的机制。联合心理学家,把人思考世界分为感知和心理活动,深度学习想做的就是这件事,让机器像人一样思考。
深度学习的现代史始于1943年–(MCP)模型被引入,并被称为人工神经模型的原型。
他们基于模拟人脑新皮质的神经网络建立了一个计算机模型,算法和数学的结合被称为阈值逻辑,用来模拟人类的思维过程,而不是学习。
MCP之后,自然环境中的生物系统的赫布理论(Hebbian)理论得以实现
我们可以假定,反射活动的持续与重复会导致神经元稳定性的持久性提升……当神经元A的轴突与神经元B很近并参与了对B的重复持续的兴奋时,这两个神经元或其中一个便会发生某些生长过程或代谢变化,致使A作为能使B兴奋的细胞之一,它的效能增强了。这一理论经常会被总结为“连在一起的神经元一起激活”(Cells that fire together, wire together)。这可以用于解释“联合学习”(associative learning)
你看看这英文解释的,一起燃烧,疯狂给对方打电话。简直就是虐狗。
1958–第一个被称为感知系统中的感知机(Perceptron)的电子设备被引入。
人总是会被新鲜事物所吸引,疯狂追捧,忘记了初衷。
总有理智的人,证明了感知机致命的缺点,无法解决异或问题。
迎来了人工智能的冬季(AI WINTER)
冬天再冷,春天就在前面等你。
在第一个人工智能冬季结束时,反向宣传家的出现成为另一个里程碑
Werbos引入了反向传播(backpropagation),即在训练深度学习模型中使用错误,这打开了通向现代神经网络的大门。其实这就是经典的BP算法。后面会简单介绍一下下。
1980年,启发卷积神经网络的新感知机引入了。
1986年–递归神经网络(RNNs)。
20世纪90年代,LeNet在使深层神经网络(DNNs)实际工作(硬件的限制)。
2006年左右,深度信念网络(DBNs)和分层预训练框架被开发出来。
深度学习最近一个鼓舞人心的应用是谷歌AlphaGo,它在2017年初完全震惊了世界。经过几十年的发展,与其他机器学习算法相比,深度学习是最有效的工具之一。
阿尔法狗,有三代。
一代是五段的围棋少年,贼菜。二代两个五段,互相PK升级到九段。
三代,告诉它下棋规则,吃一堑长一智,比九段还厉害。
其实小时候学国际象棋的时候,那时候就有深蓝跟国象大师下棋,只不过是方法不太一样。
简单回顾一下历史
1.神经元模型
神经元有两种状态:兴奋和抑制。
一般情况下,大多数的神经元是处于抑制状态,但是一旦某个神经元收到刺激,导致它的电位超过一个阈值,那么这个神经元就会被激活,处于“兴奋”状态,进而向其他的神经元传播化学物质(其实就是信息)。
根据这个呢,人们思考出了MCP模型。
2.MCP模型
θ–神经元的激活阈值
函数f(·)也被称为是激活函数。w是权值,x是输入。
函数f(·)可以用一个阶跃方程表示
大于阈值激活;否则则抑制。
但是这样有点太粗暴,因为阶跃函数不光滑,不连续,不可导,因此我们更常用的方法是用sigmoid函数来表示函数f(·)
其实找到更棒的函数,发文章是不是超级快。
#sigmoid函数
这个函数比起阶跃函数,0和1突变,可是圆滑多了。盘盘就好了。
3.感知机模型
w为感知机输入层到输出层连接的权重
b表示输出层的偏置
打个比方 有点(1,1) 属于1类 点(2,2)属于2类,请问是否能从原点画一条线把他们分开,不可以,所以需要偏置值b,这样线段就不从(0,0)点出发了
其实这就是分类问题。
前面说了嘛,人们丧失了理智,疯狂追捧。
Minsky指出这点时,事态就发生了变化。
Minsky在1969年出版了一本叫《Perceptron》的书里面用详细的数学证明了感知器的弱点(数学家真是闹不住啊),尤其是感知器对XOR(异或)这样的简单分类任务都无法解决。进入了AI winter,然后就是BP反向传播打破了这个僵局。
4.BP算法
原谅我,不想贴图了,大家可以看看这个博客,关于BP,安排的明明白白。
https://www.cnblogs.com/charlotte77/p/5629865.html
其实呢,你会发现,就是在修正权重。如何自动化的修正权重就很厉害了。
相当于在修正误差,把误差减小到最小。
有点类似于电力系统的潮流计算,这看来知识都是相通的!
BP之后就迎来的各种神经网络,就不一一介绍了。
##流行的深度学习网络
经过第一章,你会发现,深度学习整体框架就有了。那么有一些比较流行的
RVNN.RNN.CNN.DGN
分别是递归神经网络、循环神经网络、卷积神经网络、深层神经网络。
####递归神经网络
同样是根据前面的模型,分输入层、隐含层、输出层。
通过RvNN可以在层次结构中进行预测,使用组合向量对输出进行分类。
RvNN的开发主要受到递归自联想内存(RAAM)的启发,是一种用于处理任意形状的对象的体系结构,如树或图形。方法是采用可变大小的递归数据结构,生成固定宽度的分布式表示。
为了训练网络,引入了结构学习方案(BTS)。BTS采用类似于标准反向传播算法的方法,并且能够支持树状结构。
下面是两个生动的栗子,很好吃。
不用过多解释,也看的懂,把一个图像、一个句子,分类处理,组合。
这就是前面提到的nest这个单词嘛。化繁为简。
Socher等人提出了一种能够处理不同方式输入的RvNN体系结构。上图展示了两个使用RvNN对自然图像和自然语言句子进行分类的例子。一个图像被分成不同的兴趣部分时,一个句子被分成单词。RvNN计算可能的对的得分,以合并它们并构建语法树。对于每一对单元,RvNN计算合并的合理性得分。然后将得分最高的一对组合成一个复合向量。
因为可能用到递归技巧,简单解释一下。
程序调用自身的编程技巧称为递归(recursion)。递归作为一种算法在程序设计语言中广泛应用。
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
假设我们现在都不知道什么是递归,我们自然想到打开浏览器,输入到谷歌的网页,我们点击搜索递归,然后我们在为维基百科中了解到了递归的基本定义,在了解到了递归实际上是和栈有关的时候,你又蒙圈了,什么是栈呢?数据结构没学清楚,此时的你只能又打开谷歌,搜索什么是栈.接下来你依次了解了内存/操作系统.在你基本了解好知识之后,你通过操作系统了解了内存,通过内存了解了栈,通过栈了解了什么是递归这下你恍然大悟!原来这就是递归啊!(斐波那契数列、兔子问题)
知识的海洋太宽广,我有点受不了。
####循环神经网络
最重要的区别,在于,隐含层之间也有了联系!
但即便如此,自己的输出还是跟自己的输入层有直接的联系。
RNN的一个主要问题是它对消失和爆炸梯度的敏感性。换句话说,梯度可能由于训练过程中大量的大小导数的乘积而衰减或爆炸成指数级。
看完BP那篇文章,就会懂。会涉及大量求导问题。
在修正参数的时候,会出现消失或者爆炸!导致无法继续更新权重。
随着时间的推移,这种灵敏度会降低,这意味着网络会忘记新输入的初始输入。
因此,长短期内存通过在其循环连接中提供内存块来处理这个问题。
再来介绍一下各个符号的含义:
x是输入
h是隐层单元
o为输出
L为损失函数
y为训练集的标签
t时刻的输出:
最终模型的预测输出:
前面说了,会用到sigmoid函数,看一下它的图像以及求导图像。
在求导过程中,就会出现越求越小,这就是前面说的梯度消失与爆炸。
总结一下,sigmoid函数的缺点:
1、导数值范围为(0,0.25],反向传播时会导致“梯度消失“。tanh函数导数值范围更大,相对好一点。
2、sigmoid函数不是0中心对称,tanh函数是,可以使网络收敛的更好。
上面是tanh函数,
tanh函数作为激活函数,那tanh函数的导数最大也才1,而且又不可能所有值都取到1,那相当于还是一堆小数在累乘,还是会出现“梯度消失“
那为什么还要用它做激活函数呢?原因是tanh函数相对于sigmoid函数来说梯度较大,收敛速度更快且引起梯度消失更慢。
反正都是消失,消失的慢一点更好嘛。
如果幸福终究会消失,那么消失的越慢越好。
就像香水,多沉浸一秒也值得。
####CNN卷积神经网络
CNN在深度学习中也是一种流行且广泛使用的算法,它广泛应用于NLP、语音处理、计算机视觉等多种应用中它模拟了猫大脑中包含复杂细胞序列的视觉皮层。
CNN有三个主要优势,即参数共享、稀疏交互和等变表示。
为了充分利用输入数据的二维结构(如图像信号),使用网络中的本地连接和共享权,而不是传统的全连通网络。这个过程产生的参数非常少,这使得网络更快、更容易训练。(不展开了!)
####卷积计算
特殊的矩阵运算,对应元素相乘。不是行列那种。
####稀疏交互
前面说了三个特点,参数共享**、稀疏交互、**等变表示
参数共享是指在一个模型的多个函数中使用相同的参数。
等边表示,对于卷积,参数共享的特殊形式使得神经网络具有对平移等变的性质。
如果一个函数满足输入改变,输出也以同样的方式改变,就说它是等变的。
而上图就是关于稀疏交互,个人理解。
第一张图,如果一个输入想对应所有输出,那么看起来会非常错综复杂
第二张图,通过加入隐含层,不但使互相有了交流,而且最终个别输入所能到达的输出增加。
####深层生成网络
DBN(深层信念网络)、(DBM)深玻尔兹曼机、生成对抗性网络(GAN)和变分自编码器(VAE),实在不想写了,贴几张图,想研究啥查啥。
以上四种就是混合概率生成模型,通过定义能量概率模型进行分析。
具体不展开了,以后到具体问题在分析吧。
###深度学习技术和框架
这是一个简单的框架,以及各个开发平台和适用的语言。
###深度学习的各种应用
在各个招聘平台上看,真的挣钱呀。好好学习,天天向上。
过自己想要的生活,做自己喜欢的事,改变自己想改变的事。
更重要的,爱自己想爱的人。
###未来的挑战及潜在研究方向
###未来挑战
引用链接如下,肯定有遗忘的,如原博主看到,不要生气,请温柔联系我
后续补上。
http://www.cnblogs.com/maybe2030/p/5597716.html神经网络基础
https://baijiahao.baidu.com/s?id=1595509949786067084&wfr=spider&for=pc深度学习和机器学习的对比
https://www.cnblogs.com/charlotte77/p/5629865.html一文弄懂神经网络中的BP算法
https://blog.csdn.net/yinkun6514/article/details/79281278
https://blog.csdn.net/tkkzc3E6s4Ou4/article/details/83422720机器学习高质量数据大合集
http://lib.csdn.net/article/deeplearning/59097?knId=1746 RBM原理
https://www.jianshu.com/p/998cf8e52209 GAN学习笔记
如果没有贫富差距,没有自然选择,优胜劣汰。
我会享受那下午两点的阳光,和爱的人散步。
不过在那之前,要加油。