您的位置:首页 > 其它

深度学习入门

2017-09-14 13:26 239 查看
人工智能(AI)是近两年来最热门的词之一了,自16年Google DeepMind的AlphaGo打败了世界围棋大师李世石后,人们在惊叹之余,也意识到人工智能时代的正式开始。从此,人工智能、机器学习和深度学习就成为了热门词汇,而它们的关系如下图1所示。



人工智能的概念起源于1956年,所谓的人工智能就是给机器赋予人的智能,让机器能够像人一样地思考问题,做出决策。而一种较为有效的、可行的实现人工智能的方法就是机器学习,机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。实现机器学习的一种重要框架是深度学习,它的出现使机器学习能够实现更多的应用,包括无人驾驶汽车,预防性医疗保健,甚至是更好的电影推荐。

本文以下是通过参考台湾李宏毅教授的介绍深度学习的ppt,“”Deep Learning Tutorial “”,再加上自己的理解,简单介绍下深度学习的实现原理。下面的介绍主要分为两大部分,第一部分主要介绍深度学习的实现过程,第二部分介绍如何创建一个简单的深度学习模型。

深度学习的过程就是使用多个处理层对数据进行高层抽象,得到多重非线性变换函数的过程。就目前而言,深度学习主要是与人工神经网络相结合的,因此这里的深度学习算法框架也可以成为深度神经网络算法框架。

深度学习通过构建深层神经网络,来模拟人类大脑的工作原理。如下图所示,深层神经网络由一个输入层,数个隐层,以及一个输出层构成。每层有若干个神经元,神经元之间有连接权重。每个神经元模拟人类的神经细胞,而结点之间的连接模拟神经细胞之间的连接。深度学习框架的基本结构如下图3所示。



深度学习的实现过程


机器学习的过程就是相当于寻找一个通用函数(变换)的过程。如:

语音识别,就是将一连串的语音信号作为自变量,通过一个函数,转换为一个自然语句:



Alpha Go的输入的是一个棋局作为自变量,通过一个函数,输出为下一步的走法:



像sari这种对话系统,将用户说的话通过一个函数,去查找相对应的输出,作为系统应答:



我们就图像识别应用,来直观地了解深度学习的一般框架,如下图所示。简单地说,深度学习过程就是选择一个最佳函数的过程,也可以说成为函数寻找最佳参数的过程。如下图左所示,深度学习过程主要分为三步:

1、输入一系列的函数作为待训练模型

2、评价各个函数的好坏,使用误差率作为标准

3、通过每个函数的输出与正确的结果对比,来选择最佳的匹配函数。下面分别介绍下每一步所做的工作。




1.1  定义一系列的函数作为待训练模型

神经网络中一个神经元就相当于一个简单的线性函数,线性函数的定义如下:

其中,w1…wk就是作为函数的参数,也是神经元每个输入的权重值,b作为函数的偏移量。神经元的结构如下图5所示。途中除了函数的定义中存在的权重值w和偏移量b以外,还存在一个激活函数。



激活函数是用来引入非线性因素的。网络中仅有线性模型的话,表达能力不够。比如一个多层的线性网络,其表达能力和单层的线性网络是相同的。常见的激活函数有sigmod函数,relu函数和tanh函数。




1.2 确定函数好坏的方法

下图6所示为使用深度学习来训练给定的一张数字图像所代表的实际数字的例子。给定一张2的数字图像作为输入,输入层为256个像素点,而输出层则为0-9这10个数字对应的softmax值,根据softmax值的大小来选择最优的结果作为输出。



Softmax回归模型是logistic回归模型在多分类问题上的推广,在多分类问题中,待分类的类别数量大于2,且类别之间互斥。比如我们的网络要完成的功能是识别0-9这10个手写数字,若最后一层的输出为[0,0.7,0.2, 0.1, 0, 0, 0, 0, 0, 0],则表明我们网络的识别结果为数字1。

一个好的函数应该能够保证对于整个样本集作为输入,输出的总误差是尽可能小的,误差可以表示为计算的输出值和真实值之间的距离。如下图7所示,针对下图神经网络,每个输出的误差可以用来计算结果值和实际值之间的差来表示。



总误差L等于多个输出误差之和,用下面的公式表示:


1.3 挑选最佳函数的方法  

要在一系列的函数中寻找最佳的函数,也就是总的误差最小的函数,就是为这个函数寻找最佳的参数,在神经网络中称为权重值。对于下图8一个拥有三个输入神经元的两层前反馈全连接神经网络来讲,光是第一层就有9个权重值,若输入神经元1000,那光这一层神经网络就有1000000个权重值。



因此枚举出所有可能的值并从中选择一组最优的权重值是不可能的,那么如何找到一个最优的参数值,使得结果的误差总和最小呢,深度学习中采用的是梯度下降法,如下图9所示。这里假设横坐标为权重值w,w是一个m*1的矩阵。对于单连接网络,m代表神经元的个数,对于全连接网络,m代表神经元个数的平方,纵坐标为总的误差值L,w和L的关系可用一条不规则的曲线表示。寻找最佳w的计算过程如下:

1.首先,初始化权重w

2.然后,计算每个神经元输出的总的误差值,计算误差值对权重值的偏导 数,也就是下图曲线的斜率。

3.如果偏导数小于零,说明曲线处于下降趋势,即随着w的增加,误差在减少,因此这时需要继续增加w的值。

4.如果偏导数大于零,说明曲线处于上升趋势,即随着w的增加,误差在增大,因此这时需要减少w的值,

5.回到步骤2,重复以上过程,直到偏导数趋近于零,也就是处于说在一定的范围内,误差L相对于w处于最小值状态,此时的w可作为较优的一组参数。

使用梯度下降法寻找最优权重值的较为形象的过程如下图11。此图近似为一个山的等高线,海拔越低代表总的误差越小。要想找到最优解,首先我们选定一个初始的下山位置,然后通过偏导计算我们现在是处于上山还是下山方向,如果是下上方向,则选择一个步长继续下山,直到每一次处于上山方向,就代表我们已经找到山脚。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: