EdmondFrank's 时光足迹

この先は暗い夜道だけかもしれない それでも信じて進むんだ。星がその道を少しでも照らしてくれるのを。
或许前路永夜,即便如此我也要前进,因为星光即使微弱也会我为照亮前途。
——《四月は君の嘘》

深度学习入门简介



深度学习入门简介

背景

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

概念

深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。

原理

深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。

(以上内容摘取自百度百科)

个人理解:如果说机器学习是为了找出一个能够代表输入变量和输出变量的关系的函数的话;那么深度学习就是先根据输入和输出变量之间的关系,列出一系列能够代表他们之间关系的函数,然后再从这个函数集之中提取一个最优的函数。

结构

神经元

随着神经网络的应用和深度学习在人工智能领域的大放异彩,很多人都说神经网络的是最成功的仿真模型。那么他的结构究竟是怎样子的呢?

nn.png

一个简单的神经网咯函数(一般称作:神经元),就如上图所示。

他的主要执行过程:

多个输入a X 各自的权重w + 偏置值b => 激活函数 => 输出

其中,在这个流程之中,我们可能比较迷惑的是那个激活函数Activation function。

Activation Function:即激活函数,目前的常用的激活函数由挺多的,例如,Simmoid Function,tanh,relu等等。虽然形式上不同,但是他们大体的目的都是较为一致的,就是用来加入非线性因素的,因为线性模型的表达能力不够。

同时,激活函数可以将非常大或非常小的数据映射到“逻辑空间”[-1,1]之间,这样映射过后的数据更适合在反向传播算法中进行梯度下降。

连接方式

上面我们提及的仅仅是神经网络中的一个神经元,他是神经网络之中最基本的组成单位。但是如果要构建一个强大智能的神经网络,仅仅靠一个神经元是不行的。于是,我们便可以将多个神经元分层连接起来,这样才构成了我们所知道的神经网络。

既然,神经网络的构成本质就是神经元的连接,那么不同的连接方式就会形成不同的神经网络结构如全连接前馈网络,多层感知器,卷积神经网络,循环神经网络等等。

全连接前馈网络

在众多的连接之间,全连接的前馈网络不仅较为简单,也是很多深层网络的基础。他的基本连接方式如下图片所示:

feedforward.png

其中,一般来说神经网络的第一层通常都是输入层,而最后一层便是输出层以及中间的都统一称作隐藏层。深度神经网络中的“深”便代表了这个网络中间有非常多的隐藏层。

输出层

通常,输出层一般为Softmax 层,并且其可以为任意值。在应用中,输出的结果通常用概率的形式表达,其具体形式如下图所示:
output.png

那么,我们知道了神经网络的组成之后,我们要是想自己构建一个神经网络,我们又该如何确定神经网络的层数和每层的神经元的个数呢?

就目前来说,并没有相当的严谨的理论来指导神经网络的构建。我们往往需要依靠直觉和训练测试结果的误差反馈来一步一步选择我们的层数和神经元数以达到要求的效果。