基于深度学习的图像处理(1)深度学习与神经网络
1. 是什么?
第一章节主要描述一下神经网络和深度学习的基础概念,即他们是什么?有什么作用?如果要弄清楚神经网络与深度学习是什么,则要从人工智能和机器学习讲起。
2. 人工智能
人工智能是由图灵提出的概念,简单的说就是让机器模仿人类交流达到以假乱真的地步,即为人工智能,这需要机器具备理解语言、学习、记忆、推理、决策等能力。
人工智能存在两个流派,符号主义(定义符号并进行逻辑操作,可解释)和连接主义(大量简单信息处理单元组成的互联网络,非线性、并行、局部计算,不可解释)。这里的可解释是指从输入到输出,其中的参数含义明确,对结果的影响存在逻辑上的明确关联;连接主义的不可解释性主要来源于其复杂性,其参数动辄上万、百万甚至更多。从目前的实际效果来看,连接主义更占优势,但是也有人在尝试融合这两个流派。
3. 机器学习
机器学习是实现人工智能的一种方式(也是目前最优的方式),即从有限的数据中学习出一般性规律,并使用该规律去预测未知数据。
一个最简单的例子就是挑西瓜,西瓜的色泽、敲击声音等为特征,西瓜成熟与否为标签,通过一些确定的案例来学习,最终来预测一个未知西瓜是否成熟。
这里有限的数据即为样例数据,所谓的训练集、测试集均出自于此,而学习到的一般性规律,可以以函数的形式来表示,而使用该函数去预测未知数据,则称为泛化。
而机器学习的目标,就是获得一个最优函数(也可以被称为模型),获得这个函数的过程就称为学习/训练。
机器学习除了关乎到计算机领域的知识,其底层涉及诸多数学原理,如线性代数、统计学、概率论、数学优化、计算复杂性等。
3.1. 机器学习三要素之模型
即函数,可能为线性,可能为非线性,可能为线性和非线性的组合。
3.2. 机器学习三要素之学习准则
如何去评估函数是否优秀呢?当然是通过函数在数据集中的偏差(也被称为期望风险)来判断了。期望风险越小,则函数越好。至于如何去量化期望风险,可以使用方差、错误率等参数来衡量,而这些衡量方式就被称作损失函数。
训练过程中采用的数据为训练集,在最小化偏差(训练集上称为经验风险)的时候,可能会出现过拟合,即函数在训练集上表现得过于优秀,但是在整体数据集上表现得较差(泛化能力变差)。为了解决这个问题,需要引入参数的正则化或者添加验证集数据来提前停止训练,限制经验风险过度最小化。但是这些限制又可能会导致欠拟合(与过拟合相反),需要根据实际情况来均衡和微调,这个过程可以通过偏差-方差分解来进行分析和指导。
不限制经验风险最小化的情况称为经验风险最小化学习准则,限制则称为结构风险最小化学习准则。还有一些特殊的准则比如最大似然估计、最大后验估计等,在此略过不提。
根据不同的学习准则,机器学习算法可以分为统计方法和非统计方法。
3.3. 机器学习三要素之优化算法
如何从数学上去求解这个最优化问题?最常用的就是梯度下降算法:
- 批量梯度下降算法
- 随机梯度下降算法
- 小批量梯度下降算法
数学求解可以求解函数中需要自动学习的参数,而一些额外参数(比如神经网络层数、梯度下降步长等)的优化,依赖人员手动调整,则称为超参数优化。
3.4. 机器学习分类
- 监督学习:数据集包括特征和标签,主要用于回归(标签为连续值)、分类(标签为离散值)、结构化学习(标签为结构化对象)等任务
- 无监督学习:数据集仅包括特征,不含标签,主要用于聚类、密度估计、降维等任务
- 强化学习:训练中通过实时或延时反馈来优化,深度学习就可以看作是一种强化学习
- 半监督学习/弱监督学习:在监督学习的基础上弱化对标签的需求,降低数据标注成本
3.5. 机器学习的评价指标
评价指标主要包括如下:
- 准确率(Accuracy):分类正确的数量 / 样本总数量
- 错误率(Error Rate):分类错误的数量 / 样本总数量
- 精确率(Precision):分类正确的正类 / 所有预测出来的正类,即预测出来为正类中真正的正类所占的比例(查准率)
- 召回率(recall):分类正确的正类 / 实际正类,即预测出来正确的正类占所有真实正类的比例(查全率)
- F值(F Measure):精确率和召回率的调和平均
- 宏平均、微平均等其他指标
为了降低随机数据分割对模型评价的影响,还会采用交叉验证的方法来更好地衡量模型。
3.6. 浅层学习与深度学习
3.6.1. 浅层学习
机器学习有两个步骤,一个是特征抽取(包括数据预处理、特征提取、特征转换),一个是学习预测。如果特征抽取依赖于人工或者为单独步骤,而非模型本身,则称为浅层学习。这种情况下,特征抽取对最终结果影响巨大,机器学习的核心变成了特征工程,而非模型构建(即学习/训练)。由于本文的重点是深度学习,所以特征工程涉及到的特征搜索选择、特征抽取、降维等知识在此按下不表。
3.6.2. 表示学习
如果将特征抽取也交给算法,那么就可以称为表示学习。而为了获取到一个优秀的表示(即特征),通常需要将底层特征经过多层的非线性转换,这种多层的深度结构,可以增加特征的重用性,进而指数级的增加表示能力,获取到优秀的表示。
3.6.3. 神经网络
神经网络是机器学习中的一种算法,属于连接主义,因其结构类似人脑神经元连接方式而得名,即单个节点(亦称为神经元)接收其他节点的输入,对输入值加权并通过激活函数变换后,输出到后续节点。初始节点作为输入数据,最终节点作为输出数据,借助反向传播算法(自动微分是反向传播算法的一种拓展),寻找拟合度和泛化能力最佳的权值,即为学习过程。
3.6.4. 深度学习
深度学习指输入到输出经过多个线性或非线性的组件,符合表示学习的多层深度结构需求,其核心在于各个组件的贡献度分配问题。长路径的复杂神经网络(超过一层即可,一般情况下,路径越长,效果越好)可以很好地解决这个核心问题,所以,深度学习主要采用神经网络模型。但是,深度学习亦可以采用其他模型来达到最终需求,如深度信念网络(概率图模型)。
端到端学习:指不分解任务,直接以任务的总体目标进行学习,目前大部分的深度学习均为端到端学习。
4. 写在最后的参考文档
《神经网络与深度学习》邱锡鹏