赞
踩
本文作为个人学习使用,侵删
从根源上来说,深度学习是机器学习的一个分支,是指一类问题及解决这类问题的方法,即从有限样例中通过算法总结出一般性的规律,并可以应用到新的未知数据上。其次深度学习采用的模型一般比较复杂,指样本的原始输入到输出目标之间的数据流经过多个线性或非线性的组件。因为每个组件都会对信息进行加工,并进而影响后续的组件,所以当最后得到输出结果时,并不清楚每个组件的贡献是多少。这样的贡献度分配问题是一个关键问题,关系到如何学习每个组件中的参数。而人工神经网络(简称神经网络)可以用于解决贡献度分配问题。
神经网络是一种受人脑神经系统的工作方式启发而构造的数学模型。它是由人工神经元及神经元之间的连接构成,其中有两类特殊的神经元:一类用于接收外部信息,另一类用来输出信息。即,神经网络可以看作信息从输入到输出的信息处理系统。如果将神经网络看作一组参数控制的复杂函数,并用来处理一些模式识别任务,神经网络的参数可通过机器学习的方式来从数据中学习。因为神经网络模型一般比较复杂,从输入到输出信息传递路径比较长,所以复杂神经网络的学习可以看成是一种深度的机器学习,即深度学习。
深度学习和神经网络并不等价。深度学习可以采用神经网络模型,也可以采用其他模型(比如深度信念网络是一种概率图模型),但由于神经网络模型可以比较容易地解决贡献度分配问题,神经网络成为深度学习中主要采用模型。
人工智能就是让机器的行为像人所表现出的智能行为一样,大体包括一下几个方面:
(1)感知
模拟人的感知能力,感知和加工外部刺激信息。主要研究领域语音信息处理和计算机视觉
(2)学习
模拟人的学习能力,主要研究如何从样例或从环境的交互中进行学习。主要研究领域有监督学习、无监督学习和强化学习
(3)认知
模拟人的认知能力,主要研究领域包括知识表示、自然语言处理、推理、规划、决策等
从有限、高维、有噪声的观测数据中学习出具有一般性的规律,并利用这些规律对未知数据进行预测。
机器学习一般会包含一下几个步骤:
(1)数据预处理
对数据的原始形式进行初步数据清洗(去除缺失或冗余)和加工,构建可用于训练机器学习模型的数据集
(2)特征提取
从数据的原始特征中提取一些对待定机器学习任务有用的高质量特征。如图像提取边缘、尺度不变特征变换,文本分类中去除停用词
(3)特征转换
对特征进一步加工,如降维和升维
(降维:特征抽取和特征选择。常用特征转换方法:主成分分析 PCA、线性判别分析 LDA)
(4)预测
机器学习的核心部分,学习一个函数并进行预测
浅层学习不涉及特征学习,特征主要是依靠人工经验或特征转换方法抽取。由于不同预测模型的性能相差不多,而前三步的特征处理对系统的准确性有十分关键的作用,因此很多机器学习的问题变成了特征工程问题。
机器学习方法可以粗略分为:
(1)模型
输入空间 X 和输出空间 Y 构成一个样本空间。对于样本空间中的样本 (x, y) 之间的关系可以通过一个未知的真实函数 y=g(x) 或真实条件概率 p(y|x) 来描述。机器学习的目标就是找到一个模型来近似真实映射函数 g(x) 或真实条件概率 p(y|x)
(2)学习准则
一个好的模型应该在所有 (x,y) 的可能取值上都与真实映射函数或真实条件概率分布一致
学习的准则不仅仅是拟合训练集上的数据,同时也要使泛化错误最低
损失函数是一个非负实数,用来量化模型预测与真实标签之间的差异
插播小知识:
过拟合:给定一个假设空间 T,一个假设 f 属于 T,如果存在其他假设 g 也属于假设空间 T,使得在训练集上 f 的损失比 g 小,但在整个样本空间上 g 的损失比 f 小,那么就说 f 过度拟合训练数据。也即是模型在训练集上错误率很低,在未知数据上错误率很高。
导致过拟合的原因:训练数据集少和噪声以及模型能力强等
解决方法:
(1)在经验风险最小化的基础上再引入参数的正则化来限制模型能力
(经验风险是指训练集上的平均损失,经验风险最小化是指在一切可行的学习准则里找到一组参数使得经验风险最小)
(2)提前停止训练
使用验证集测试模型,并计算错误率。如果在验证集上错误率不再下降,就停止迭代
欠拟合:模型不能很好的拟合训练数据集,在训练数据集上的错误率比较高
导致欠拟合的原因:由于模型能力不足造成的
(3)优化算法
确定训练集 D、假设空间 T 和学习准则后,就是找寻最优模型问题。机器学习训练过程就是最优化问题的求解过程
优化分为参数优化和超参数优化
(1)参数
模型 f(x;) 中的 为模型的参数,可以通过优化算法进行学习
(2)超参数
用于定义模型结构或优化策略的参数称为超参数。比如:聚类算法类别个数、梯度下降法的步长(学习率)、正则化项系数、神经网络层数等。超参数的选取一般是组合优化问题,很难通过优化算法来自动学习,所以这是一个经验性很强的技术,通常是按照人的经验或者通过搜索的方法对一组超参数组合进行不断试错调整的
批量梯度下降法 BGD:每次迭代时需要计算每个样本上损失函数的梯度并求和。(当训练集中的样本数量 N 很大,空间复杂度比较高,每次迭代的计算开销也很大)
随机梯度下降法 SGD:每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数。当经过足够多次数的迭代时,随机梯度下降也可以收敛到到局部最优解
批量梯度下降和随机梯度下降之间的区别在于,每次迭代的优化目标是对所有样本的平均损失函数还是对单个样本的损失函数.由于随机梯度下降实现简单,收敛速度也非常快,因此使用非常广泛.随机梯度下降相当于在批量梯度下降的梯度上引入了随机噪声.在非凸优化问题中,随机梯度下降更容易逃离局部最优点
小批量梯度下降法 Mini-Batch SGD:每次迭代随机取一小部分训练样本来计算梯度并更新参数(是批量梯度下降和随机梯度下降的折中)
深度,是指原始数据进行非线性特征转换的次数。如果把一个表示学习系统看作一个有向图结构,深度也可以看作从输入节点到输出节点所经过的最长路径的长度
深度学习是将原始数据特征通过多步的特征转换得到的一种特征表示,并进一步输入到预测函数得到结果。
人工神经网络是模拟生物神经网络而设计的计算模型,由多个节点(人工神经元)互相连接而成,可用来对数据之间的复杂关系进行建模,不同节点之间的连接被赋予了不同的权重,每个权重代表了一个节点对另一个节点的影响大小。每个节点代表一种特定的函数,来自其他节点的信息经过相应的权重综合计算,输入到一个激活函数并得到一个新的活性值(兴奋或抑制)。从系统上看,人工神经元网络是由大量神经元通过极其丰富和完善的连接而构成的自适应非线性动态系统。
最初神经网络可以用作一个通用的函数逼近器,一个两层的神经网络可以逼近任意的函数。理论上,只要有足够多的训练数据和神经元数量,人工神经网络就可以学到很多复杂的函数
监督学习 | 无监督学习 | 强化学习 | |
定义 | 机器学习的目标是建模样本的特征 x 和标签 y 之间的关系,并且训练集中每个样本都有标签 | 从不包含目标标签的训练样本中自动学习到一些有价值的信息 | 通过交互学习的机器学习算法。智能体根据环境的状态做出一个动作,并得到 即时或延迟的奖励。智能体在和环境的交互中不断学习并调整策略,以取得最大化的期望总回报 |
训练样本 | 需要每个样本都有标签 | 不需要标签 | 智能体和环境交互的轨迹和累积奖励 |
优化目标 | y=f(x) 或 p(y|x) | p(x) 或带隐变量 z 的 p(x|z) | 期望总回报 |
学习准则 | 期望风险最小化 最大似然估计 | 最大似然估计 最小重构错误 | 策略评估 策略改进 |
针对的问题 | 回归、分类、结构化学习 | 聚类、密度估计、特征学习、降维 | 不需要显示地以“输入/输出对”的方式给出训练样本,是一种在线学习机制 |
(1)图像特征
如果图像是一张大小为 M*N 的图像,其特征向量可以简单表示为 M*N 维的向量,每一维的值为图像中对应像素的灰度值。为了提高模型准确率,也会经常加入一个额外的特征,比如直方图、宽度比、笔画数、纹理特征、边缘特征等
(2)文本特征
使用词袋模型将样本 x 从文本转为向量形式。假设训练集合中的词都来自一个词表 v,大小为 |v|,则每个样本可以表示为一个 |v| 维向量
(3)表示学习
让机器自动学习出有效的特征,在一定程度上可以减少模型的复杂性、缩短训练时间、提高模型泛化能力、避免过拟合
准确率(Accuracy)是所有类别整体性能的平均,如果希望对每个类进行性能估计,就需要计算精确率(Precision)和召回率(Recall)
精确率是所有预测为类别 c 的样本中预测正确比例
召回率是所有真实标签为类别 c 的样本中预测正确的比例
F 值(F Measure)是一个综合指标,为精确率和召回率的调和平均
线性模型 | 激活函数 | 损失函数 | 优化方法 |
线性回归 | 最小二乘、梯度下降 | ||
Logistic 回归 | 梯度下降 | ||
Softmax 回归 | 梯度下降 | ||
感知器 | 随机梯度下降 | ||
支持向量机 | 二次规划、SMO等 |
6、前向传播和后向传播
(1)前向传播
从输入层到输出层。从输入层开始,经过一层层的 layer,不断计算每层得到结果 z 及经过激活函数得到结果 a,最后输出 y^ 的过程
(2)后向传播
前向传播计算出了预测值 y^,根据预测值与真实值计算损失函数。反向传播就是根据损失函数反方向计算每一层的层输出 z、激活值 a、权值 w、偏置 b 的偏导数(梯度),从最后一层逐层向前改变每一层的权重,也就是更新参数,其核心是损失函数对每一层的每一个参数求梯度的链式求导法则
假设神经网络有两个输出,损失应该是两个输出神经元损失的和
对参数 w5 求偏导可以看出 w5 对整体误差产生的影响,总体误差对 w5 求偏导的链式规则如下
w5 求偏导进行整合,求出偏导数之后,进行梯度下降更新参数
神经网络就是通过不断的前向传播和反向传播不断调整神经网络的权重,最终到达预设的迭代次数或者对样本的学习已经到了比较好的程度,就停止迭代,这样一个神经网路就训练好了
分类任务
多标签分类问题使用 sigmoid 函数。构建分类器,解决有多个正确答案的问题,非独占输出。
sigmoid 函数是一种 logistic 函数,它将任意值转换到 [0,1] 之间,表达式为:
优点:sigmoid 函数的输出在 (0, 1) 之间,输出范围有限,优化稳定,可以作为输出层。连续函数,便于求导
缺点:两侧导数逐渐趋近于 0,容易造成梯度消失;函数为指数形式,计算复杂度高。
多类别分类问题使用 softmax 函数。构建分类器解决只有唯一正确答案的问题。softmax 函数的分母综合了原始输出值的所有因素,可以得到不同概率之间相互关联。softmax 函数又称为归一化函数,表达式为:
softmax 函数将原来的输出映射成为 (0,1) 的值,而这些值累和为 1,在最后选取输出结点的时候可以选取概率最大的结点作为预测的目标
总结:
1、如果模型输出为非互斥类别,且可以同时选择多个类别,则采用 sigmoid 函数计算网络的原始输出值
2、如果模型输出为互斥类别,且只能选择一个类别,则采用 softmax 函数计算网络的原始输出值
3、sigmoid 函数解决多标签问题,softmax 函数解决单标签问题
4、对于某个分类 场景,当 softmax 函数能用时,sigmoid 函数一定可以用
分类和回归都是监督学习,对输入数据进行预测
1、分类的输出结果是离散的,是物体所属的类别;回归的输出结果是连续的,是物体的值,在一段范围内
连续与离散是表象,本质区别在于输出的标签是否有距离度量
2、分类任务没有距离度量,把 1 分类为 2 与 1 分类为 3 没有区别;回归任务有距离度量,可乐的真实价格是 5 元,预测为 4 元,误差为 1 元,或预测为 2 元,误差为 3 元
3、分类的目的是寻找决策边界,得一个决策面,对数据集中的数据进行分类,如判断图片中的动物是猫还是狗;回归的目的是找到最优拟合线,这个线最好接近数据集中的各个点。如预测股票、预测房价等
在目标检测任务中,分类分支用来目标识别,回归分支用来目标定位。很多检测器使用 shared sibling head 方式来实现,这使得两个分支共享了大部分的参数,只有最后一个 fc 是 task specific,但识别和回归在特征学习时关注的特征是不同的,却“深深地纠缠着”,在一定程度上限制了目标检测性能的提升
IoU-Net 指出分类置信度高不能表示对应的框预测的准,而标准的非极大值抑制 NMS 是以分类置信度由高到低排序然后进行冗余框的剔除,这可能使得一些 IoU 值高但分类置信度低的框被剔除掉。IoU-Net 引入新分支来预测 IoU 值作为定位的置信度,用 IoU-guided NMS 剔除冗余框
Double-Head RCNN 设计实现了分类和回归的解耦。文中指出全连接更适合分类任务,卷积更适合回归任务,但由于输入到这两个分支的是同一个 proposal ROI pooling 之后的特征,所以分类和回归的冲突问题依然存在
Sibling Head 从空间维度上来解耦目标检测中的分类和回归问题(作者观察到分类和回归存在空间维度上的不对齐),即两个任务在特征学习时关注的点是不一样的,某些显著区域的特征可能具有丰富的分类信息,而边界附近的特征更有利于位置回归
4、分类任务需要平移不变性(即把一个物体在图像上平移产生相同的特征,不影响它的分类结果),回归任务是平移可变的
共享的头结构最初在 Fast RCNN 中提出,可以提高检测速度。随着目标检测的发展,发现耦头结构的局限性,考虑到分类和回归所关注的内容不同,采用不同的分支来计算,提出了 Double-Head、Decoupled head 的结构来提升效果。同时为了避免计算量的大量增加,YOLOX 的 Decoupled head 会先进行 1x1 的降维操作
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。