深度学习入门总结

作者 Xiangyu Pu 日期 2017-07-07
深度学习入门总结

传统的模式识别算法有着很大的局限性,就拿人脸识别来说,传统的人脸识别算法主要有基于人脸特征点的识别算法(Feature-based recognition algorithms)、基于整幅人脸图像的识别算法(Appearance-based recognition algorithms)、基于模板的识别算法(Template-based recognition algorithms)等,这些算法受环境光照,姿态,遮挡的影响较大,从目前的论文来看,人们越来越多地利用神经网络进行识别的算法(Recognition algorithms using neural network),识别的准确性也有很大的提高。这里就不得不提到深度学习。

人工智能、机器学习、深度学习之间的关系

如下图,人工智能是最早出现的,也是最大、最外侧的同心圆;其次是机器学习,稍晚一点;最内侧,是深度学习,当今人工智能大爆炸的核心驱动。

history

简单来说,机器学习是人工智能的子集,而深度学习又是机器学习的子集。而深度学习造成了前所未有的巨大的影响。

机器学习—— 一种实现人工智能的方法

机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。

可以这么说,Machine Learning ≈ Looking for a Function,架构可以简化成下图:

framework

深度学习——一种实现机器学习的技术

所谓深度学习,就是具有很多个隐层的神经网络。主要分为输入层、隐层、输出层。

network

简单地来说,深度学习是一个不断磨合训练的过程,刚开始定义一个标准参数,然后不断地修正,得出每个节点间的权重。这个时候我们就需要训练集和测试集,训练集就是带有正确标签的图片,而测试集就是用来验证模型的准确度。从上图可知,从左往右算起来容易,那反过来呢?这时我们需要反向传播法(BP算法)。

BP

BP算法建立在梯度下降法的基础上,它的学习过程由正向传播过程和反向传播过程组成。在正向传播过程中,输入信息通过输入层经隐含层,逐层处理并传向输出层。如果在输出层得不到期望的输出值,则取输出与期望的误差的平方和作为目标函数,转入反向传播,逐层求出目标函数对各神经元权值的偏导数,构成目标函数对权值向量的梯量,作为修改权值的依据,网络的学习在权值修改过程中完成。误差达到所期望值时,网络学习结束。

这里面需要注意是为了让整个网络具有非线性特征,我们在计算权重的时候会加一个bias,即激活函数(深度学习中的激活函数导引),激活函数是神经网络强大的基础,好的激活函数(根据任务来选择)还可以加速训练:

sigmoid

深度网络的实现基于逐层贪心训练算法,而随着模型的深度逐渐增加,会产生梯度消失或梯度爆炸的问题,梯度爆炸一般采用阈值截断的方法解决,而梯度消失不易解决;网络越深,这些问题越严重,这也是深度学习的核心问题,出现了一系列的技术及衍生模型。

mordern

总结了深度学习中的基本模型并再次解释部分相关的技术概念(Deeper的回答):

summarize

深度学习开源平台TensorFlow

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。

TensorFlow支持CNN、RNN和LSTM算法,这都是目前在Image,Speech和NLP最流行的深度神经网络模型。具体文档可参考:TensorFlow中文社区,这也是下一步学习的工具。

相关学习资料推荐

coursera – 用 Python 玩转数据

机器学习 – 李宏毅教授主页

李宏毅深度学习视频