Deep Learning近些年来吸引到了很多的关注,并且横跨多领域、横跨多种产品,有非常非常多的应用
深度学习的历史、步骤
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) 。
定义一个函数集
深度学习的结构
如图所示展示了一个神经网络,它是由许多神经元(neuron)组成的一个系统。每一个神经元的参数为:为每个输入分配一个权重wi,一个常数b,一个函数在运算中,每个神经元执行这样的操作:将每个输入xi乘以权重wi后求和,将得到的值加上b作为函数的输入,输出得到的函数值。将这个神经元的输出将作为下个神经元的输入,依次将这些神经元之间进行连接即得到一个神经网络。定义了这些神经元之间的连接方式,也就定义了函数集。
不同的连接方式会形成不同的网络结构
举一个例子来说明神经网络是如何运作的。下图展示了一个简单的神经网络,神经网络的输入为1和-1,第一个神经元对两个输入的权重分别为1和-2,计算1*1+(-1)*(-2)+1=4,将4作为sigmoid函数的输入,输出(4)=0.98。同理计算其他神将元,最后整个神经网络得到的输出为0.62和0.83.
输入——>蓝色——>红色——<绿色——>输出
全连接前馈网络
最常见的连接方式——Fully Connect Feedforward Network(全连接前馈网络)
全连接前馈神经网络是一种常见的神经网络连接方式,指的是层与层的神经元之间使用全连接的方式连接,即一层中每个神经元的输出会参与到下一层每个神经元的输入。它的输入是一个N维向量,输出是一个M维向量。输入称为Input Layer,输出结果的一层神经元称为Output Layer,中间其他的层称为Hidden Layer,通常将使用了很多Hidden Layer的方法称为Deep Learing。
实际上一个neural network在做的事情就是,一个vector乘上matrix+vector,一连串的矩阵运算,gpu可以加速矩阵运算
特征提取取代了特征工程,上图是多分类的问题
举一个小例子(手写数字识别)
input是每一个小方块是否图颜色了,output是不同数字的几率
中间有几个layer,每个layer有多少个neuron是不收到限制的,那么该如何决定它们呢?
通过经验+试错+直觉
从机器学习转化为深度学习,重点从特征工程(抽好的feature)转变成了如何design network structure
语音辨识、影像辨识最早使用深度学习
定义函数的好坏
loss是y和y_hat的cross entropy
(1)在function set找一个function来minimizes total loss
(2)找network的参数来minimizes total loss
并选择最好的函数
依然是使用梯度下降的办法
有这些方法来算微分,具体不需要知道
为什么要用Deep Learning(多层Hidden Layer)
一个已经被证实的理论是,一层Hidden Layer就足以模拟出任何函数,那么为什么还要使用Deep Learning呢?当然是因为Deep Learning的效果更好。如图,同一行的数据使用参数的个数是相似的。可以看出,使用多层Layer的效果明显好于只使用一层的。
只要hidden neurons够多,可以表示成任何一个function