2016-12-16 19:51:32 xierhacker 阅读数 2326
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40544 人正在学习 去看看 唐宇迪

像机器学习的那个笔记一样,首先先把看的书和视频列出来。
《Neural Networks and Deep Learning》Michael Nielsen
UFLDL Tutorial
《Deep Learning》Ian Goodfellow and Yoshua Bengio and Aaron Courville
CS231n: Convolutional Neural Networks for Visual Recognition

后面就不再强调了,所有的都在这里了。

2019-08-22 10:48:06 weixin_44411760 阅读数 1773
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40544 人正在学习 去看看 唐宇迪

~~**

  • 深度学习规划

**~~
刚开始学深度学习总会走各种弯路,你不知道什么是深度学习,不知道深度学习的应用,可以实现什么?只是觉得很热门会好找工作?不管是大学生还是研究生,毕竟小学生都开始学python 了。当你开始想学深度学习了 ,看什么书籍?我推荐在脑子发热买任何书籍前看一遍吴恩达老师的深度学习视频,在b站上免费带你深度学习入门。你会明白深度学习可以实现哪些内容。再选择一些适合你的方向,或许是计算机视觉的人脸识别,或许是自然语言处理(nlp)。边看边记笔记,收获颇多。

2019-01-14 14:51:41 qq_43234191 阅读数 2092
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40544 人正在学习 去看看 唐宇迪

#深度学习
我与这世间所有的羁绊,一旦连上,就再也断不开。
羁绊越深,痛苦便越深。
关于这篇深度学习的文章,总共六章。
综述而已。
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学习笔记

如果没有贫富差距,没有自然选择,优胜劣汰。
我会享受那下午两点的阳光,和爱的人散步。
不过在那之前,要加油。

2017-11-05 21:23:46 zheyanyishhi 阅读数 8292
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40544 人正在学习 去看看 唐宇迪

1.1 什么是学习?

  赫伯特·西蒙教授(Herbert Simon,1975年图灵奖获得者、1978年诺贝尔经济学奖获得者)曾对“学习”给了一个定义:“如果一个系统,能够通过执行某个过程,就此改进了它的性能,那么这个过程就是学习”

  学习的核心目的,就是改善性能

1.2 什么是机器学习?

  对于某类任务(Task,简称T)和某项性能评价准则(Performance,简称P),如果一个计算机程序在T上,以P作为性能的度量,随着很多经验(Experience,简称E)不断自我完善,那么我们称这个计算机程序在从经验E中学习了

  对于一个学习问题,我们需要明确三个特征:任务的类型衡量任务性能提升的标准以及获取经验的来源

1.3 学习的4个象限

这里写图片描述

1.4 机器学习的方法论

  “end-to-end”(端到端)说的是,输入的是原始数据(始端),然后输出的直接就是最终目标(末端),中间过程不可知,因此也难以知。

  就此,有人批评深度学习就是一个黑箱(Black Box)系统,其性能很好,却不知道为何而好,也就是说,缺乏解释性。其实,这是由于深度学习所处的知识象限决定的。从图1可以看出,深度学习,在本质上,属于可统计不可推理的范畴。“可统计”是很容易理解的,就是说,对于同类数据,它具有一定的统计规律,这是一切统计学习的基本假设。

  在哲学上讲,这种非线性状态,是具备了整体性的“复杂系统”,属于复杂性科学范畴。复杂性科学认为,构成复杂系统的各个要素,自成体系,但阡陌纵横,其内部结构难以分割。简单来说,对于复杂系统,1+1≠2,也就是说,一个简单系统,加上另外一个简单系统,其效果绝不是两个系统的简单累加效应,而可能是大于部分之和。因此,我们必须从整体上认识这样的复杂系统。于是,在认知上,就有了从一个系统或状态(end)直接整体变迁到另外一个系统或状态(end)的形态。这就是深度学习背后的方法论。

  “Divide and Conquer(分而治之)”,其理念正好相反,在哲学它属于“还原主义(reductionism,或称还原论)”。在这种方法论中,有一种“追本溯源”的蕴意包含其内,即一个系统(或理论)无论多复杂,都可以分解、分解、再分解,直到能够还原到逻辑原点。

  在意象上,还原主义就是“1+1=2”,也就是说,一个复杂的系统,都可以由简单的系统简单叠加而成(可以理解为线性系统),如果各个简单系统的问题解决了,那么整体的问题也就得以解决。

  经典机器学习(位于第Ⅱ象限),在哲学上,在某种程度上,就可归属于还原主义。传统的机器学习方式,通常是用人类的先验知识,把原始数据预处理成各种特征(feature),然后对特征进行分类。

  然而,这种分类的效果,高度取决于特征选取的好坏。传统的机器学习专家们,把大部分时间都花在如何寻找更加合适的特征上。故此,传统的机器学习,其实可以有个更合适的称呼——特征工程(feature engineering)。这也是有好处的,因为这些特征是由人找出来的,自然也就为人所能理解,性能好坏,可以灵活调整。

1.5 什么是深度学习?

  机器学习的专家们发现,可以让神经网络自己学习如何抓取数据的特征,这种学习的方式,效果更佳。于是兴起了特征表示学习(feature representation learning)的风潮。这种学习方式,对数据的拟合也更加的灵活好用。于是,人们终于从自寻“特征”的中解脱出来。

  但这种解脱也付出了代价,那就是机器自己学习出来的特征,它们存在于机器空间,完全超越了人类理解的范畴,对人而言,这就是一个黑盒世界。为了让神经网络的学习性能,表现得更好一些,人们只能依据经验,不断地尝试性地进行大量重复的网络参数调整。于是,“人工智能”领域就有这样的调侃:“有多少人工,就有多少智能”。

  再后来,网络进一步加深,出现了多层次的“表示学习”,它把学习的性能提升到另一个高度。这种学习的层次多了,就给它取了个特别的名称——Deep Learning(深度学习)。

  深度学习的学习对象同样是数据。与传统机器学习所不同的是,它需要大量的数据,也就是“大数据(Big Data)”。

2.2 深度学习的归属

这里写图片描述
  把深度学习和传统的监督学习和无监督学习单列出来,自然是有一定道理的。这就是因为,深度学习是高度数据依赖型的算法,它的性能通常随着数据量的增加而不断增强,也就是说它的可扩展性(Scalability)显著优于传统的机器学习算法

这里写图片描述

  如果训练数据比较少,深度学习的性能并不见得就比传统机器学习好。其原因在于,作为复杂系统代表的深度学习算法,只有数据量足够多,才能通过训练,在深度神经网络中,将蕴含于数据之中的复杂模式表征出来

机器学习要想做得好,需要走好三大步:

(1) 如何找一系列函数来实现预期的功能,这是建模问题
(2) 如何找出一组合理的评价标准,来评估函数的好坏,这是评价问题
(3) 如何快速找到性能最佳的函数,这是优化问题(比如说,机器学习中梯度下降法)。

2.4 为什么要用神经网络?

  深度学习的概念源于人工神经网络的研究。含多隐层的多层感知机就是一种深度学习结构。所以说到深度学习,就不能不提神经网络。

  “神经网络,是一种由具有自适应性的简单单元构成的广泛并行互联的网络,它的组织结构能够模拟生物神经系统对真实世界所作出的交互反应。”

那为什么要用神经网络学习呢?

  在人工智能领域,有两大主流。第一个是符号主义。符号主义的理念是,知识是信息的一种表达形式,人工智能的核心任务,就是处理好知识表示、知识推理和知识运用。核心方法论是,自顶向下设计规则,然后通过各种推理,逐步解决问题。很多人工智能的先驱(比如CMU的赫伯特•西蒙)和逻辑学家,很喜欢这种方法。但这个的发展,目前看来并不太好。

  还有一个就是试图编写一个通用模型,然后通过数据训练,不断改善模型中的参数,直到输出的结果符合预期,这个就是连接主义。连接主义认为,人的思维就是某些神经元的组合。因此,可以在网络层次上模拟人的认知功能,用人脑的并行处理模式,来表征认知过程。这种受神经科学的启发的网络,被称之人工神经网络(Artificial Neural Network,简称ANN)。这个网络的升级版,就是目前非常流行的深度学习。

  机器学习在本质就是寻找一个好用的函数。而人工神经网络最“牛逼”的地方在于,它可以在理论上证明:只需一个包含足够多神经元的隐藏层,多层前馈网络能以任意进度逼近任意复杂度的连续函数。这个定理也被称之为通用近似定理(Universal Approximation Theorem)。这里的“Universal”,也有人将其翻译成“万能的”,由此可见,这个定理的能量有多大。换句话说,神经网络可在理论上解决任何问题。

3.1 M-P神经元模型是什么?

  现在所讲的神经网络包括深度学习,都在某种程度上,都是在模拟大脑神经元的工作机理,它就是上世纪40年代提出但一直沿用至今的“M-P神经元模型”。

  在这个模型中,神经元接收来自n个其它神经元传递过来的输入信号,这些信号的表达,通常通过神经元之间连接的权重(weight)大小来表示,神经元将接收到的输入值按照某种权重叠加起来,并将当前神经元的阈值进行比较,然后通过“激活函数(activation function)”向外表达输出(这在概念上就叫感知机)。

这里写图片描述

3.3 激活函数是怎样的一种存在?

  神经元的工作模型存在“激活(1)”和“抑制(0)”等两种状态的跳变,那么理想型的激活函数(activation functions)就应该是阶跃函数,但这种函数具有不光滑、不连续等众多不“友好”的特性。为什么说它“不友好”呢,这是因为在训练网络权重时,通常依赖对某个权重求偏导、寻极值,而不光滑、不连续等通常意味着该函数无法“连续可导”。

这里写图片描述

  因此,我们通常用Sigmoid函数来代替阶跃函数。这个函数可以把较大变化范围内输入值(x)挤压输出在(0,1)范围之内,故此这个函数又称为“挤压函数(Squashing function)”。

3.4 卷积函数又是什么?

  所谓卷积,就是一个功能和另一个功能在时间的维度上的“叠加”作用。

  由卷积得到的函数h一般要比f和g都光滑。利用这一性质,对于任意的可积函数f,都可简单地构造出一列逼近于f的光滑函数列,这种方法被称之为函数的光滑化或正则化。

  在时间的维度上的“叠加作用”,如果函数是离散的,就用求累积和来刻画。如果函数是连续的,就求积分来表达。

4.1机器学习的三个层次

大致可分为三类:

(1)监督学习(Supervised Learning):
  监督学习基本上就是“分类(classification)”的代名词。它从有标签的训练数据中学习,然后给定某个新数据,预测它的标签(given data, predict labels)。
  简单来说,监督学习的工作,就是通过有标签的数据训练,获得一个模型,然后通过构建的模型,给新数据添加上特定的标签。
  整个机器学习的目标,都是使学习得到的模型,能很好地适用于“新样本”,而不是仅仅在训练样本上工作得很好。通过训练得到的模型,适用于新样本的能力,称之为“泛化(generalization)能力”。

(2)非监督学习(Unsupervised Learning):
  与监督学习相反的是,非监督学习所处的学习环境,都是非标签的数据。非监督学习,本质上,就是“聚类(cluster)”的近义词。
  简单来说,给定数据,从数据中学,能学到什么,就看数据本身具备什么特性(given data, learn about that data)。我们常说的“物以类聚,人以群分”说得就是“非监督学习”。这里的“类”也好,“群”也罢,事先我们是不知道的。一旦我们归纳出“类”或“群”的特征,如果再要来一个新数据,我们就根据它距离哪个“类”或“群”较近,就“预测”它属于哪个“类”或“群”,从而完成新数据的“分类”或“分群”功能。

(3)半监督学习(Semi-supervised Learning):
  这类学习方式,既用到了标签数据,又用到了非标签数据。
  给定一个来自某未知分布的有标记示例集L={(x1, y1), (x2, y2), …, (xl, yl)},其中xi是数据,yi是标签。对于一个未标记示例集U = {xl+1, x l+1, … , xl+u},I《u,于是,我们期望学得函数 f:X→Y 可以准确地对未标识的数据xi预测其标记yi。这里均为d维向量, yi∈Y为示例xi的标记。
  半监督学习就是以“已知之认知(标签化的分类信息)”,扩大“未知之领域(通过聚类思想将未知事物归类为已知事物)”。但这里隐含了一个基本假设——“聚类假设(cluster assumption)”,其核心要义就是:“相似的样本,拥有相似的输出”。

5.2 认识“感知机”

  所谓的感知机,其实就是一个由两层神经元构成的网络结构,它在输入层接收外界的输入,通过激活函数(含阈值)的变换,把信号传送至输出层,因此它也称之为“阈值逻辑单元(threshold logic unit)”。

  所有“有监督”的学习,在某种程度上,都是分类(classification)学习算法。而感知机就是有监督的学习,所以,它也是一种分类算法。

5.3 感知机是如何学习的?

  对象本身的特征值,一旦确定下来就不会变化。因此,所谓神经网络的学习规则,就是调整权值和阈值的规则(这个结论对于深度学习而言,依然是适用的)。

假设我们的规则是这样的:

这里写图片描述

其中ep = y- y’,y为期望输出,y’是实际输出,所以,具体说来,ep是二者的差值。

5.4 感知机的训练法则

  感知机的学习规则:对于训练样例(x,y)(需要注意的是,这里粗体字x表示训练集合),若当前感知机的实际输出y’,假设它不符合预期,存在“落差”,那么感知机的权值依据如公式规则调整:
这里写图片描述
其中,η∈(0,1)称为学习率(learning rate)

  这里需要注意的是,学习率η的作用是“缓和”每一步权值调整强度的。它本身的大小,也是比较难以确定的。如果η太小,网络调参的次数就太多,从而收敛很慢。如果η太大,容易错过了网络的参数的最优解。因此,合适的η大小,在某种程度上,还依赖于人工经验

5.5 感知机的表征能力

这里写图片描述

  1969年,马文·明斯基和西摩尔· 派普特(Seymour Papert)在出版了《感知机:计算几何简介”》一书[2], 书中论述了感知机模型存在的两个关键问题:
(1)单层的神经网络无法解决不可线性分割的问题,典型例子如异或门电路(XOR Circuit);
(2)更为严重的问题是,即使使用当时最先进的计算机,也没有足够计算能力,完成神经网络模型所需要的超大的计算量(比如调整网络中的权重参数)。
  鉴于明斯基的江湖地位(1969年刚刚获得大名鼎鼎的图灵奖),他老人家一发话不要紧,直接就把人工智能的研究,送进一个长达近二十年的低潮,史称“人工智能冬天(AI Winter)”。

6.1 复杂网络解决“异或”问题

  感知机之所以当初无法解决“非线性可分”问题,是因为相比于深度学习这个复杂网络,感知机太过于简单”。

  想解决“异或”问题,就需要使用多层网络。这是因为,多层网络可以学习更高层语义的特征,其特征表达能力更强。因此,我们在输入层和输出层之间,添加一层神经元,将其称之为隐含层(“隐层”)。于是隐层和输出层中的神经元都有激活函数。
这里写图片描述

  1958年Frank Rosenblatt提出感知机的概念。1965年Alexey Grigorevich Ivakhnenko提出了多层人工神经网络的设想。而这种基于多层神经网络的机器学习模型,后来被人们称为“深度学习”。

6.2 多层前馈神经网络

  常见的多层神经网络如图所示。在这种结构中,每一层神经元仅仅与下一层的神经元全连接。而在同一层,神经元彼此不连接,而且跨层的神经元,彼此间也不相连。这种被简化的神经网络结构,被称之为“多层前馈神经网络(multi-layer feedforward neural networks)”。
这里写图片描述
  在多层前馈神经网络中,输入层神经元主要用于接收外加的输入信息,在隐含层和输出层中,都有内置的激活函数,可对输入信号进行加工处理,最终的结果,由输出层“呈现”出来。

  这里需要说明的是,神经元中的激活函数,并不限于我们前面提到的阶跃函数、Sigmod函数,还可以是现在深度学习常用的ReLU(Rectified Linear Unit)和sofmax等。

  简单来说,神经网络的学习过程,就是通过根据训练数据,来调整神经元之间的连接权值(connection weight)以及每个功能神经元的输出阈值。换言之,神经网络需要学习的东西,就蕴含在连接权值和阈值之中。

6.3 误差逆传播算法

  对于相对复杂的前馈神经网络,其各个神经元之间的链接权值和其内部的阈值,是整个神经网络的灵魂所在,它需要通过反复训练,方可得到合适的值。而训练的抓手,就是实际输出值和预期输出值之间存在着“误差”。

  在机器学习中的“有监督学习”算法里,在假设空间中,构造一个决策函数f,对于给定的输入X,由f(X)给出相应的输出Y,这个实际输出值Y和原先预期值Y’可能不一致。于是,我们需要定义一个损失函数(loss function),也有人称之为代价函数(cost function)来度量这二者之间的“落差”程度。这个损失函数通常记作L(Y,Y)= L(Y, f(X)),为了方便起见,这个函数的值为非负数(请注意:这里的大写Y和Y’,分别表示的是一个输出值向量和期望值向量,它们分别包括多个不同对象的实际输出值和期望值)。

常见的损失函数有如下3类:
这里写图片描述
  损失函数值越小,说明实际输出和预期输出的差值就越小,也就说明我们构建的模型越好。

  神经网络学习的本质,其实就是利用“损失函数(loss function)”,来调节网络中的权重(weight)。

  调神经网络的权值,有两大类方法比较好使。第一种方法就是“误差反向传播(Error Back propagation,简称BP)”。简单说来,就是首先随机设定初值,然后计算当前网络的输出,然后根据网络输出与预期输出之间的差值,采用迭代的算法,反方向地去改变前面各层的参数,直至网络收敛稳定。

  BP算法非常经典,在很多领域都有着经典的应用,当时它的火爆程度在绝不输给现在的“深度学习”。但后来大家发现,实际用起来它还是有些问题。比如说,在一个层数较多网络中,当它的残差反向传播到最前面的层(即输入层),其影响已经变得非常之小,甚至出现梯度扩散(gradient-diffusion),严重影响训练精度。

  再后来,第二类改进方法就孕育而生了。它就是当前主流的方法,也就是“深度学习”常用的“逐层初始化”(layer-wise pre-training)训练机制,不同于BP的“从后至前”的训练参数方法,“深度学习”采取的是一种从“从前至后”的逐层训练方法。

7.3到底什么是梯度?

  在单变量的实值函数中,梯度就可以简单地理解为只是导数,或者说对于一个线性函数而言,梯度就是线的斜率。但对于多维变量的函数,它的梯度概念就不那么容易理解了。

  在向量微积分中,标量场的梯度其实是一个向量场(vector field)。对于特定函数的某个特定点,它的梯度就表示从该点出发,该函数值增长最为迅猛的方向(direction of greatest increase of a function)。

  梯度最明显的应用,就是快速找到多维变量函数的极(大/小)值。

  “梯度递减”的问题所在,那就是它很容易收敛到局部最小值。

7.5 重温神经网络的损失函数

  相比于神经网络输入、输出层设计的简单直观,它的隐含层设计,可就没有那么简单了。依赖于“工匠”的打磨,它就是一个体力活,需要不断地“试错”。

  但通过不断地“折腾”,研究人员掌握了一些针对隐层的启发式设计规则(如下文即将提到的BP算法),以此降低训练网络所花的开销,并尽量提升网络的性能。

  为了达到理想状态,我们希望快速配置好网络参数,从而让这个损失函数达到极小值。这时,神经网络的性能也就接近最优!

8.1 BP神经网络

BP算法,是一个典型的双向算法。更确切来说,它的工作流程是分两大步走:
  (1)正向传播输入信号,输出分类信息(对于有监督学习而言,基本上都可归属于分类算法);
  (2)反向传播误差信息,调整全网权值(通过微调网络参数,让下一轮的输出更加准确)。

8.2.1正向传播信息
  类似于感知机,每一个神经元的功能都可细分两大部分:(1)汇集各路链接带来的加权信息;(2)加权信息在激活函数的“加工”下,神经元给出相应的输出
这里写图片描述

  到第一轮信号前向传播的输出值计算出来后,实际输出向量与预期输出的向量之间的误差就可计算出来。下面我们就用“误差”信息反向传播,来逐层调整网络参数。为了提高权值更新效率,这里就要用到下文即将提到的“反向模式微分法则(chain rule)”。

8.2.2 求导中的链式法则

一般化的神经网络示意图:
这里写图片描述
  为了简化理解,暂时假设神经元没有激活函数(或称激活函数为y=xy=x),于是对于隐含层神经元,它的输出可分别表示为:
        这里写图片描述
  然后,对于输出层神经元有:
        这里写图片描述
  于是,损失函数L可表示为公式:
        这里写图片描述
  这里Y为预期输出值向量(由y1,y2,...,yi,...等元素构成),实际输出向量为fi(w11,w12,...,wij,...,wmn)
  对于有监督学习而言,在特定训练集合下,输入元素xi和预期输出yi都可视为常量。由此可以看到,损失函数L,在本质上,就是一个单纯与权值wij相关的函数(即使把原本的激活函数作用加上去,除了使得损失函数的形式表现得更加复杂外,并不影响这个结论)。
  于是,损失函数L梯度向量可表示为公式:
        这里写图片描述
其中,这里的eij是正交单位向量。为了求出这个梯度,需要求出损失函数L对每一个权值wij的偏导数。

链式求导示例图:
这里写图片描述


这里写图片描述
  当网络结构简单时,即使XZ的每一个路径都使用前向模式微分(forward-mode differentiation)”,也不会有很多路径,但一旦网络结构的复杂度上去了,这种“前向模式微分”,就会让求偏导数的次数和神经元个数的平方成正比。这个计算量,就很可能是成为机器“难以承受的计算之重”。

  为了避免这种海量求导模式,数学家们另辟蹊径,提出了一种称之为“反向模式微分(reverse-mode differentiation)”。取代之前的简易的表达方式,我们用下面的公式的表达方式来求XZ的偏导:
        这里写图片描述

  前向模式微分方法,其实就是我们在高数课堂上学习的求导方式。在这种求导模式中,强调的是某一个输入(比如X)对某一个节点(如神经元)的影响。因此,在求导过程中,偏导数的分子部分,总是根据不同的节点总是不断变化,而分母则锁定为偏导变量“X”,保持定不变。

  反向模式微分方法则有很大不同。首先在求导方向上,它是从输出端(output)到输入端进行逐层求导。其次,在求导方法上,它不再是对每一条“路径”加权相乘然后求和,而是针对节点采纳“合并同类路径”和“分阶段求解”的策略。先求Y节点对Z节点的”总影响”(反向第一层),然后,再求节点X对节点Z的总影响(反向第二层)。

  特别需要注意的是,Z/Y已经在第一层求导得到。在第二层仅仅需要求得Y/X,然后二者相乘即可得到所求。这样一来,就大大减轻了第二层的求导负担。在求导形式上,偏导数的分子部分(节点)不变,而分母部分总是随着节点不同而变化。

  利用链式法则,反向模式微分方法就能避免冗余对所有路径只求一次导数,大大加快了运行速度!BP算法把网络权值纠错的运算量,从原来的与神经元数目的平方成正比,下降到只和神经元数目本身成正比。其功劳,正是得益于这个反向模式微分方法节省的计算冗余。

8.2.3 误差反向传播

  误差反向传播通过梯度下降算法,迭代处理训练集合中的样例,一次处理一个样例。对于样例d,如果它的预期输出和实际输出有“误差”,BP算法抓住这个误差信号Ld,以“梯度递减”的模式修改权值。也就是说,对于每个训练样例d,权值wji的校正幅度为Δwji(需要说明的是,wjiwij其实都是同一个权值,wji表示的是神经元j的第i个输入相关的权值,这里之所以把下标“j”置于“i”之前,仅仅表示这是一个反向更新过程而已):
        这里写图片描述
  在这里,Ld表示的是训练集合中样例d的误差,分解到输出层的所有输出向量,Ld可表示为:
        这里写图片描述
其中:
yj表示的是第j个神经单元的预期输出值。
y'j表示的j个神经单元的实际输出值。
outputs的范围是网络最后一层的神经元集合。

  下面我们推导出Ld/wji的一个表达式,以便在上面的公式中使用梯度下降规则。
  首先,我们注意到,权值wji仅仅能通过netj影响其他相连的神经元。因此利用链式法则有:
        这里写图片描述
在这里,netj=iwjixji,也就是神经元j输入的加权和。xji表示的神经j的第i个输入。需要注意的是,这里的xji是个统称,实际上,在反向传播过程中,在经历输出层、隐含层和输入层时,它的标记可能有所不同。

  由于在输出层和隐含层的神经元对“纠偏”工作,承担的“责任”是不同的,至少是形式不同,所以需要我们分别给出推导。
(1)在输出层,对第i个神经元而言,省略部分推导过程,上一公式的左侧第一项为:
        这里写图片描述
  为了方便表达,我们用该神经元的纠偏“责任(responsibility)” δ(1)j描述这个偏导,即:
        这里写图片描述
  这里δ(1)j的上标“(1)”,表示的是第1类(即输出层)神经元的责任。如果上标为“(2)”,则表示第2类(即隐含层)神经元的责任,见下面的描述。
(2)对隐含层神经元jj的梯度法则(省略了部分推导过程),有:
        这里写图片描述
其中:
  fj表示神经单元jj的计算输出。
  netj表示的是神经单元jj的加权之和。
  Downstream(j)表示的是在网络中神经单元jj的直接下游单元集合。

  在明确了各个神经元“纠偏”的职责之后,下面就可以依据类似于感知机学习,通过如下加法法则更新权值:
对于输出层神经元有:
        这里写图片描述
对于隐含层神经元有:
        这里写图片描述
在这里,η(0,1)表示学习率。在实际操作过程中,为了防止错过极值,η通常取小于0.1的值。hj为神经元j的输出。xjk表示的是神经单元j的第k个输入。

题外话:
LeCun成功应用BP神经网络在手写邮编识别之后,与LeCun同在一个贝尔实验室的同事Vladimir Vapnik(弗拉基米尔·万普尼克),提出并发扬光大了支持向量机 (Support Vector Machine) 算法。
SVM作为一种分类算法,对于线性分类,自然不在话下。在数据样本线性不可分时,它使用了所谓“核机制(kernel trick)”,将线性不可分的样本,映射到高维特征空间 (high-dimensional feature space),从而使其线性可分。自上世纪九十年代初开始,SVM在图像和语音识别等领域,获得了广泛而成功的应用。
在手写邮政编码的识别问题上,LeCun利用BP算法,把错误率整到5%左右,而SVM在1998年就把错误率降到低至0.8%。这远超越同期的传统神经网络算法。
就这样,万普尼克又把神经网络研究送到了一个新的低潮!

2019-06-29 21:27:59 qq_32896115 阅读数 317
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40544 人正在学习 去看看 唐宇迪

关于深度学习如何入门的一些建议


操作系统:ubuntu18.04
显卡:GTX1060
python版本:2.7(3.7)
QQ群加入深度学习交流群 获取更多环境配置细节和学习资料 (147960154)


  • 深度学习的大致学习顺序
  • 学习资料的建议
  • 关于项目和比赛

学习顺序建议

写的比较简单,每一块都有很多细节,这是只是大概介绍。

Sept 1 掌握计算机语言
python , C++

Sept 2 linux操作系统
ubuntu18.04, ubuntu16.04

Sept 3 机器学习
sklearn

Sept 4 深度学习常用库
numpy, matplotlib

Sept 5 深度学习原理
Andrew Ng

Sept 6 深度学习框架
TensorFlow,Pytorch

Sept 7 图像处理
opencv, opengl

Sept 7 kaggle,项目…


学习资料的建议

每个人的思维方式不同,学习方法也不同,这里的分享仅供参考 (最好的老师:Google

python:
python适合编程0基础来入手,相对来说比较简单
建议学习时间:2 周
学习资料:python菜鸟教程B站小甲鱼零基础入门python
建议:学到面对对象的编程就可以了, 之后的网络爬虫,小游戏开发等看个人兴趣
pycharm:
一个不错的编译器,推荐给大家

Linux:
做深度学习的话,建议大家尽量抛弃win, 单纯做开发而言 Linux优点数不胜数
建议学习时间:Linux安装好了,慢慢就熟练上手了,刚开始不习惯很正常
建议学习资料:鸟哥的Linux私房菜(书)
主要学习如何用命令行来操作电脑,记住一些常用的命令就OK了,同时了解一下操作系统的基本原理


机器学习:
深度学习是机器学习的一个分支,机器学习的重要性可想而知
建议学习时间:看个人悟性(大概一个月)
学习资料:Andrew NG(原理) ,sklearn(代码)西瓜书(书),机器学习白板手推(公式)机器学习经典算法(算法)
建议:机器学习深挖下去,可以挖很深(学到老),这里建议大家学习几种主流的机器学习算法,并将其掌握透彻即可,原理一定要搞懂

深度学习常用库:
numpy(一个高效的矩阵运算工具), matplotlib(强大的绘图能力),python之所以流行和numpy有密不可分的关系,总之python在加持了numpy和matplotlib这两个武器后,和matlab相差无几
建议学习时间:三天即可
学习资料:numpy教程莫烦python数组操作
建议:numpy的一些常用操作要熟稔于心,都是工具类型的,边学边用。

深度学习原理:
深度学习最重要的三个部分: 数据预处理神经网络目标函数(loss function
建议学习时间: 3~4周
学习资料:网易云课堂Andraw NG deep learing, Andrew NG课后作业
建议:跟随大佬的步伐,认认真真把课后作业做完,不要复制粘贴

深度学习框架:
目前学术界主流:Pytorch, 工业界主流: tensorflow
建议学习时间: 2周
学习资料:Pytorch官网教程莫烦Python
建议:学习框架的同时熟悉几个深度学习经典的网络模型

深度学习综述

阅读数 5508

没有更多推荐了,返回首页