![](https://img-blog.csdnimg.cn/f9baaba6524f4c34af5fc3fef8b74ba6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
Deep Learning近些年来吸引到了很多的关注,并且横跨多领域、横跨多种产品,有非常非常多的应用
深度学习的历史、步骤?
![](https://img-blog.csdnimg.cn/7f86bc5a0ecf4cf8af445b1ce4d124a4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
1958年,一开始perception的提出引起了轰动, 有人说可以利用perception来分辨坦克和卡车,但结果是拍摄坦克卡车的日子不同,一天是雨天一天是晴天,perception只能够抓到亮度而已
1980年,把多个perception接在一起
1986年,发现超过3个hidden layer的效果是不好的
1989年,认为1个hidden layer就足够好了,multi—layer perception的名字臭掉了
2006年, 利用RBM(受限玻尔兹曼机)找初始的值,这是一个重大的突破
2009年,知道要用GPU来加速
2011年,开始得到认可
2012年,赢得了一个比赛
在机器学习中,执行一个算法通常要经过遵循以下三个步骤:(1)定义一个函数集;(2)定义函数的好坏;(3)训练参数,得到不同的函数,并选择最好的函数
Deep?Learning同样遵循这三个步骤。具体来说,在第一步中,定义的函数集为一个神经网络(neuron?network) 。
定义一个函数集
深度学习的结构
![](https://img-blog.csdnimg.cn/a84ba6b8bf4c43a380f71c14c20a0be7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
如图所示展示了一个神经网络,它是由许多神经元(neuron)组成的一个系统。每一个神经元的参数为:为每个输入分配一个权重wi,一个常数b,一个函数在运算中,每个神经元执行这样的操作:将每个输入xi乘以权重wi后求和,将得到的值加上b作为函数的输入,输出得到的函数值。将这个神经元的输出将作为下个神经元的输入,依次将这些神经元之间进行连接即得到一个神经网络。定义了这些神经元之间的连接方式,也就定义了函数集。
不同的连接方式会形成不同的网络结构
![](https://img-blog.csdnimg.cn/152433bba3324223a557937d87ab3ada.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/3d2dde5bd6364e169f2b5cb2be94cef5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
举一个例子来说明神经网络是如何运作的。下图展示了一个简单的神经网络,神经网络的输入为1和-1,第一个神经元对两个输入的权重分别为1和-2,计算1*1+(-1)*(-2)+1=4,将4作为sigmoid函数的输入,输出(4)=0.98。同理计算其他神将元,最后整个神经网络得到的输出为0.62和0.83.![](https://img-blog.csdnimg.cn/a03ffed4d1a54b3486d3f4ae3914002d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
?输入——>蓝色——>红色——<绿色——>输出
全连接前馈网络
最常见的连接方式——Fully?Connect?Feedforward?Network(全连接前馈网络)
![](https://img-blog.csdnimg.cn/714959bb9bf54150b7b57d457f4750af.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
全连接前馈神经网络是一种常见的神经网络连接方式,指的是层与层的神经元之间使用全连接的方式连接,即一层中每个神经元的输出会参与到下一层每个神经元的输入。它的输入是一个N维向量,输出是一个M维向量。输入称为Input Layer,输出结果的一层神经元称为Output Layer,中间其他的层称为Hidden Layer,通常将使用了很多Hidden Layer的方法称为Deep Learing。
![](https://img-blog.csdnimg.cn/2f253d0ddca348ed88115e70a36d74f5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
?![](https://img-blog.csdnimg.cn/bc5380a9c271426eacdcacd4a291576f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
实际上一个neural network在做的事情就是,一个vector乘上matrix+vector,一连串的矩阵运算,gpu可以加速矩阵运算
![](https://img-blog.csdnimg.cn/103c90abfa064cf6a94763985d1752cd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
特征提取取代了特征工程,上图是多分类的问题
举一个小例子(手写数字识别)
![](https://img-blog.csdnimg.cn/9954090084da4ca1b2259051a1f9ffb7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
input是每一个小方块是否图颜色了,output是不同数字的几率?
![](https://img-blog.csdnimg.cn/65cdf38933854f838dd294dedcb09cc8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/ca3314aa013441b4b29d93b06502bbd4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
中间有几个layer,每个layer有多少个neuron是不收到限制的,那么该如何决定它们呢?
![](https://img-blog.csdnimg.cn/839c70fe7cc94df0a3ac89b63480c4ff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
通过经验+试错+直觉?
从机器学习转化为深度学习,重点从特征工程(抽好的feature)转变成了如何design network structure
语音辨识、影像辨识最早使用深度学习?
定义函数的好坏
![](https://img-blog.csdnimg.cn/7a9c0dcdc93e42c2ae763ae07c87a899.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/4e3bf73e908940d78aa810af0dfd8d7b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
?loss是y和y_hat的cross entropy
![](https://img-blog.csdnimg.cn/0b63c2b0994642e18e57c68f94782376.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
(1)在function set找一个function来minimizes total loss
(2)找network的参数来minimizes total loss
并选择最好的函数
![](https://img-blog.csdnimg.cn/ce0c7e5b567646329ccd913b24ec53fd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
依然是使用梯度下降的办法
![](https://img-blog.csdnimg.cn/2e58d2add0e74dd3af4f26d012eb6007.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
?![](https://img-blog.csdnimg.cn/5a3e4fd168144b4ba79945f9676ed465.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
?有这些方法来算微分,具体不需要知道
为什么要用Deep?Learning(多层Hidden? Layer)
![](https://img-blog.csdnimg.cn/b9189c6f7e044fcd9affe92d36c3a6b8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
一个已经被证实的理论是,一层Hidden?Layer就足以模拟出任何函数,那么为什么还要使用Deep?Learning呢?当然是因为Deep?Learning的效果更好。如图,同一行的数据使用参数的个数是相似的。可以看出,使用多层Layer的效果明显好于只使用一层的。
![](https://img-blog.csdnimg.cn/d0f1037d68444058bd983ed4513b4a0b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR3JhdGVmdWxfRGVhZDQyNA==,size_20,color_FFFFFF,t_70,g_se,x_16)
?只要hidden neurons够多,可以表示成任何一个function
|