人工智能与机器学习复习笔记
20世纪40年代
-
1943年,Warren McCulloch 和 Wallter Pitts提出了神经网络层次结构模型,确立 了神经网络的计算模型理论,从而为机器学习的发展奠定了基础。
-
1950年,“人工智能之父”图灵提出了著名的“图灵测试”,使人工智能成为了科学 领域的一个重要研究课题。
20世纪50年代
-
1958年,康奈尔大学教授 Frank Rosenblatt提出了Perceptron概念,并且首次用算 法精确定义了自组织自学习的神经网络数学模型,设计出了第一个计算机神经网络。 这个机器学习算法成为了神经网络模型的开山鼻祖。
-
1959年,IBM的A.M.Samuel设计了一个具有学习能力的跳棋程序,曾经战胜了美国保 持8年不败的冠军。这个程序向人们初步展示了机器学习的能力。
-
1962年,Hubel和Wiesel发现了猫脑皮层中独特的神经网络结构可以有效降低学习的 复杂性,从而提出著名的Hubel-Wiese生物视觉模型,这之后提出的神经网络模型均 受此启迪。
-
1969年,人工智能研究的先驱者Marvin Minsky和Seymour Papert出版了对机器学习 研究有深远影响的著作《Perceptron》,其中对于机器学习基本思想的论断:解决问 题的算法能力和计算复杂性,影响深远且延续至今。
20世纪80年代
-
1980年夏,在美国卡内基梅隆大学举行了第一届机器学习国际研讨会(ICML),标志着 机器学习研究在世界范围内兴起。
-
1986年,《Machine Learning》创刊,标志着机器学习逐渐为世人瞩目并开始加速发展。
-
1986年,Rumelhart,Hinton和Williams联合在《自然》杂志发表了著名的反向传播算法 (BP)。
-
1989年,美国贝尔实验室学者Yann LeCun教授提出了目前最为流行的卷积神经网络(CNN) 计算模型,推导出基于BP算法的高效训练方法,并成功地应用于英文手写体识别 附录-人工智能的发展历程 20世纪90年代
-
进入90年代,多种机器学习模型相继问世,诸如Logistic回归、支持向量机等等。
-
这些机器学习算法的共性是数学模型为凸函数的最优化问题,理论分析相对简单,容易从训练样本中学习到内在模式,可以用来完对象识别等初级人工智能的任务。
21世纪
-
2006年,机器学习领域泰斗 Geoffrey Hinton 发表文章,提出了深度学习模型。这 个模型的提出,开启了深度网络机器学习的新时代。
-
2012年,Hinton 研究团队采用深度学习模型赢得了计算机视觉领域最具有影响力的 ImageNet比赛冠军(ILSVRC),标志着深度学习进入第二阶段。
-
2017年5月,AlphaGo Master与围棋世界冠军、职业九段棋手柯洁进行围棋人机大战, 以3:0的总比分获胜。
-
2017年10月18日,DeepMind团队公布了AlphaGo Zero,它能在无任何人类输入的条件 下,从空白状态学起,经过 40 天训练,总计运行了大约 2900 万次自我对弈,并以 89 :11 的比分击败了AlphaGo Master
深度学习,人工智能,机器学习间的关系
-
人工智能:最被认可的定义来源于图灵1950年提出的图灵测试
-
机器学习:人工智能主要发展之一
-
深度学习:未来主要发展方向
二、模型的评估
1. 测试集划分方法
-
留出法 (hold-out)
-
交叉验证法 (cross validation)
-
自助法 (bootstrap)
2. 模型的评估方法
(1)损失函数
① 梯度下降
梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数J(\theta_{0}, \theta_{1}) 的最小值。
(2)训练数据与测试数据
(3)经验风险与期望风险
(4)泛化误差与经验误差
-
泛化误差:在“未来”样本上的误差
-
经验误差:在训练集上的误差,亦称“训练误差”
(5)过拟合(overfitting)& 欠拟合(underfitting)
-
过拟合:具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。
-
欠拟合:欠拟合是指对训练样本的一般性质尚未学好。在训练集及测试集上的表现都不好。
(6)结构风险
3. 模型的性能度量
-
均方误差(MSE)
-
错误率
-
精度
-
查准率
-
查全率
-
P-R图
4. 模型参数
-
算法的参数:一般由人工设定,亦称“超参数”
-
模型的参数:一般由学习确定
-
调参过程相似:先产生若干模型, 然后基于某种评估方法进行选择
参数调得好不好对性能往往对最终性能有关键影响
5. 偏差-方差分解(bias-variance decomposition)
6. 偏差-方差窘境 (bias-variance dilemma)
三、机器学习(Machine Learning)
1. 机器学习的定义
一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。
根据已有的数据,进行算法选择,并基于算法和数据构建模型,最终对未来进行预测。
2. 机器学习的种类
(1)监督学习
-
监督学习是从给定的训练数据集(简称训练集)中学习一个函数(模型)、,新的数据 (测试集)到来时,可以根据这个函数(模型)进行预测;
-
在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的类别标签或结果。
-
在建立模型时,监督式学习建立一个学习过程,将模型的预测结果与“训练集”的真 实结果进行比较,计算误差,不断调整优化模型,直到模型的预测结果达到一个预期的准确率。
常见的监督学习任务包括回归分析和分类。
-
回归(regression)
特征输入→输出是连续值
-
分类(classification)
特征输入→输出是离散值
(2)无监督学习
-
在无监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内 在结构;
-
常见的应用场景包括关联规则的学习以及聚类等。常见算法包括Apriori 算法和 K-Means 算法。
-
监督学习和无监督学习的区别:训练集中的数据是否已被标注。
常见的非监督学习任务包括聚类和关联规则分析。
-
聚类(clustering)
输入一批样本数据→划分为若干簇
-
关联规则分析
给定一批记录→记录中各项的关联关系
(3)强化学习
-
强化学习通过观察来学习,每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断;
-
在强化学习下,输入数据直接反馈到模型,模型必须对此立刻做出调整;
-
常见的应用场景包括动态系统以及机器人控制等。常见算法包括 Q-Learning 以及时间差学习。
(4)半监督学习
-
介于监督学习与无监督学习之间的一种机器学习方式,考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题;
-
应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首 先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测,如图论推理算法(Graph Inference)、拉普拉斯支持向量机(Laplacian SVM)等等。
2. 监督学习
(1)分类问题
① 判别式模型
-
使用决策公式 Y = f(x)或直接对条件概率值建模的分类模型
-
判别式模型估计的是条件概率分布 P(Y|X) (conditional distribution),是给定观测变量X和目标变量Y的条件模型;
-
判别式模型关注的是对于给定的输入X ,应该预测什么样的输出Y
常见方法如:
-
Ada Boosting
-
决策树
-
支持向量机(SVM)
-
分类与回归树(CART)
② 生成式模型
-
生成式模型估计的是联合概率分布 P(X,Y)
-
由数据学习联合概率分布 P(X,Y) ,然后求出条件概率分布 P(Y|X) 作为预测的模型
-
基本思想是先建立样本的联合概率模型P(X,Y),然后得到后验概率 P(Y|X) ,再利用 它进行分类。
-
生成方法关注的是:给定输入 X 产生输出 Y 的生成关系
常见方法如:
-
马尔可夫随机场
-
贝叶斯网络
-
隐马尔可夫模型
-
混合高斯模型
生成式模型和判别式模型的区别
生成算法尝试去找到底这个数据是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,那么那个类别最有可能产生这个信号,这个信号就属于那个类别。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。
(2)线性回归(Linear Regression)
回归模型参数求取: y_{i}=a x_{i}+b(1 \leq i \leq n)
-
记在当前参数下第 i 个训练样本 x_{i} 的预测值为 \hat{y}_{i}
-
x_{i} 的标注值 (实际值) y_{i} 与预测值 \hat{y}_{i} 之差记为 \left(y_{i}-\hat{y}_{i}\right)^{2}
-
训练集中 n 个样本所产生误差总和为: L(a, b)=\sum_{i=1}^{n}\left(y_{i}-a \times x_{i}-b\right)^{2}
目标: 寻找一组a和b, 使得误差总和 L(a, b) 值最小。在线性回归中, 解决如此目标的方法叫最小二乘法。 一般而言, 要使函数具有最小值, 可对L(a, b) 参数a和b分别求导, 令其导数值为零, 再求取参数a和b的取值。
(3)Logistic回归(Logistic Regression)
逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。
极大似然估计
逻辑回归与线性回归的关系
-
逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。
-
因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。
(4)决策树
① 信息熵
信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。
② 信息增益(在ID3决策树中使用)
熵用于表征系统混乱程度,系统越混乱(熵越大),数据集越不纯。决策树的生成便是使用某特征对数据集进行划分,从而使得划分后各数据子集的纯度比划分前的数据集纯度高,这种划分前后纯度(熵)的差值称为信息增益,又称互信息。显然,信息增益越大,该特征越具有决策能力。公式为:
Gain(D,A) = H(D) – H(D|A)
$$
③ 信息增益率(在C4.5决策树中使用)
使用信息增益的缺点就是特征偏向于具有大量取值的特征。就是说如果一个特征所取不同值的个数越多,则该特征就越可能用来做分裂点。最极端的情况就是该特征每个结果都对应一个不同的特征取值,那么,求得信息熵为0,信息增益最大。为弥补ID3缺陷,J.Ross Quinlan在ID3基础上,又提出了一种改进的特征选择准则C4.5,公式为:
Grain𝑅𝑎𝑡𝑖𝑜(𝐴) =\frac{𝐺𝑎𝑖𝑛(𝐴)}{𝐻(𝐴)}
$$
其中,Gain(A)代表使用A特征划分数据集产生的信息增益,H(A)为分类信息。 我们将利用信息增益率递归选择特征划分数据集的方法,称为C4.5。
④ 基尼系数(在CART决策树中使用)
表示在样本集合中一个随机选中的样本被分错的概率。 Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。
⑤ 过拟合问题
对叶子结点不做任何限定可能造成决策树的规模过大,以致于把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合问题。
剪枝(pruning)是解决过拟合问题的主要手段,基本策略有“预剪枝” (prepruning)和“后剪枝” (post pruning) 。
预剪枝:在算法完美划分训练数据之前就停止树生长;
后剪枝:允许树过度拟合训练数据,然后对树进行后修剪。
(5)集成学习(ensemble learning)
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。
-
集成学习先产生一组“个体学习器” (individual learner) ,再用某种策略将 它们结合起来。
-
集成学习分同质集成和异质集成。同质集成中的个体学习器由相同的学习算法生成,个体学习器称为基学习器;异质集成中的个体学习器由不同的学习算法生成 ,个体学习器称为组件学习器。
① 训练样本扰动
-
训练样本扰动通常是用抽样的方法从原始训练样本集中产生出不同的样本子集, 然后再利用不同的样本子集训练出不同的个体学习器。
-
此类方法简单高效,使用也最广,但只对不稳定基学习器有效,比如决策树、神经网络等;对稳定基学习器效果不明显,比如线性学习器、支持向量机、朴素贝叶斯、k-最近邻学习器等。
② 输入属性扰动
-
输入属性扰动通常是从初始属性集中抽取出若干个属性子集,然后利用不同的属性子集训练出不同的个体学习器。
-
此类方法对包含大量冗余属性的数据集有效,但若数据集只包含少量属性,或者冗余属性很少,则不宜使用。
③ 输出标记扰动
-
输出标记扰动通常是对训练样本的类标记稍作变动,比如,可将原来的多分类问题随机转化多个二分类问题来训练基学习器,纠错输出码 [Dietterich and Bakiri, 1995]就是这类方法的典型代表。
-
此类方法对类数足够多的数据集有效,但若数据集包含的类数较少,则不宜使用。
④ 算法参数扰动
-
算法参数扰动通常是通过随机设置不同的参数来训练差别较大的个体学习器。比如,神经网络的隐层神经元数、初始连接权值等。
-
此类方法对参数较多的算法有效,对参数较少的算法,可通过将其学习过程中某些环节用其他类似方式代替?从而达到扰动的目的。
⑤ 混合扰动
-
混合扰动是指在在同一个集成算法中同时使用上述多种扰动方法。比如,随机森林就同时使用了训练样本扰动和输入属性扰动。
⑥ 结合策略
-
绝对多数投票法:即若某标记得票过半数,则分类为该标记,否则拒绝分类。
-
相对多数投票法:分类为得票最多的标记,若同时有多个标记获最高票,则从中随机选取一个。
-
加权投票法:给每个个体学习器预测的类标记赋一个权值,分类为权值最大的标记。这里的权值通常为该个体学习器的分类置信度(类成员概率)。
⑦ 集成树
根据个体分类树的生成方式,目前集成树的产生方法大致可分为两大类:
第一种,个体分类树之间不存在强依赖关系、可同时生成的并行化方法。
第二种,个体分类树之间存在强依赖关系、必须串行生成的序列化方法。
前者的代表是Bagging和随机森林,后者的代表是Boosting。
(6)提升算法(Ada Boosting)
① 基本思想
对于一个复杂的分类任务,可以将其分解为若干个子任务,然后将若干个子任务完成方法综合,最终完成该复杂任务。
将若干个弱分类器组合起来,形成一个强分类器。
② 概率近似正确 (probably approximately correct, PAC)
(7)Bagging算法
从总体中抽出多个训练集,对每个训练集分别建立预测模型,再对由此得到的全部模型求平均,得到最后的模型。
特点:
模型预测能力提升,但是模型可解释性减弱
Bagging算法和Boosting算法的区别
① 样本选择上: Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的. Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化.而权值是根据上一轮的分类结果进行调整. ② 样例权重: Bagging:使用均匀取样,每个样例的权重相等 Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大. ③ 预测函数: Bagging:所有预测函数的权重相等. Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重. ④ 并行计算: Bagging:各个预测函数可以并行生成 Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果
(8)随机森林
随机森林在以决策树为基础构建Bagging分类树的基础上,进一 步在决策树的训练过程中引入了自变量的随机选择,从而达到对树的去相关(decorrelating),实现对Bagging的改进。
在建立这些个体分类树时,每考虑树上的一个分裂点,都要从全部的P个自变量中选出一个包含q(1≤q≤p)个自变量的随机样本作为候选变量。这个分裂点所用的自变量只能从这q个变量中选择。在每个分裂点处都重新进行抽样,选出q个自变量。
若q=p,则随机森林就是Bagging,通常取q为p的平方根。
(9)支持向量机(Support Vector Machine, SVM)
支持向量机(Support Vector Machine, SVM)是一类按监督学习方式对数据进行二元分类的分类器,其决策边界是对学习样本求解的最大边距超平面(maximummargin hyperplane)。
两类样本分别分割在该超平面的两侧;两侧距离超平面最近的样本点到超平面的距离被最大化了。
(10)K-最近邻方法(k-Nearest Neighbor,KNN)
K-最近邻(k-Nearest Neighbor,KNN)分类算法,是最简单的机器学习算法之一。
-
K-最近邻算法是最近邻算法的一个延伸。
-
该方法的思路是:在特征空间中,为了判定未知样本的类别,以全部训练样本作为代表点,计算未知样本与所有训练样本的距离,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。
K-最近邻法的计算步骤如下:
-
算距离:给定测试对象,计算它与训练集中的每个对象的距离;
-
找邻居:圈定距离最近的 K 个训练对象,作为测试对象的近邻;
-
做分类:根据这 K 个近邻归属的主要类别,来对测试对象分类。
K值的选取对分类结果的影响:
-
K 太小,分类结果易受噪声点影响;
-
K 太大,近邻中又可能包含太多的其它类别的点。
-
K 值通常是采用交叉检验来确定。
-
经验规则: K 一般低于训练样本数的平方根
(11)朴素贝叶斯法
优点:
-
算法逻辑简单,易于实现
-
分类过程中时空开销小
缺点:
-
朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的, 在属性个数比较多或者属性之间相关性较大时,分类效果不好。
3. 无监督学习
(1)无监督学习的主要任务与用途
① 无监督学习的定义
无监督学习是从没有标注的数据中,学习数据的统计规律或内在结构的机器学习技术。
② 无监督学习的分类
-
聚类
-
降维
-
概率估计
用途:无监督学习可以用于数据分析或者监督学习的前处理
③ 无监督学习的作用
对给定数据(矩阵数据)进行某种“压缩”,从而找到数据的潜在结构。假定损失最小的压缩得到的结果就是最本质的结构。
考虑发掘数据的纵向结构:
-
把相似的样本聚到同类
-
即对数据进行聚类
考虑发掘数据的横向结构:
-
把高维空间的向量转换为低维空间的向量
-
即对数据进行降维。
同时考虑发掘数据的纵向与横向结构:
-
假设数据由含有隐式结构的概率模型生成得到
-
从数据中学习该概率模型
(2)K 均值聚类算法(k-means)
① K 均值聚类算法
输入:簇的数目K和包含n个对象的数据集D
输出:K个簇的集合。
方法
-
从D中任意选择K个对象作为初始簇的质心;
-
计算每个对象与各簇质心的距离,并将对象划分到距离其最近的簇;
-
更新每个新簇的质心;
-
重复执行第2-3步,直到簇中的对象不再变化
② K 均值聚类算法变种——K众数算法
簇质心的计算问题中,用众数(mode)去替换均值(mean) 。
③ K 均值聚类算法变种——K原型算法
如果要聚类的数据既有数值属性又有名词性属性属性,那么我们只需把数据对象分解到每一维上,然后根据每一维的属性类型分别进行数值属性和名词性属性处理。
④ K 均值聚类算法变种——K中心点算法
K中心点算法不 直接采用簇中对象的均值作为簇中心,而选用簇中离均值最近的实际对象作为簇中心。
⑤ K 均值聚类算法变种——K分布算法
根据联合概率分布划分
(3)主成分分析
算法描述
- 输入: \(n\) 个 \(d\) 维样本数据所构成的矩阵 \(\mathbf{X}\), 降维后的维数 \(l\)
输出: 映射矩阵 \(\mathrm{W}=\left\{w_{1}, w_{2}, \ldots, w_{l}\right\}\) - 算法步骤:
1: 对于每个样本数据 \(x_{i}\) 进行中心化处理: \(\quad \boldsymbol{x}_{i}=\boldsymbol{x}_{i}-\mu, \mu=\frac{1}{n} \sum_{j=1}^{n} x_{j}\)
2: 计算原始样本数据的协方差矩阵: \(\boldsymbol{\Sigma}=\frac{1}{n-1} \mathbf{X}^{\mathrm{T}} \boldsymbol{X}\)
3: 对协方差矩阵 \(\Sigma\) 进行特征值分解, 对所得特征根按其值大到小排序 \(\lambda_{1} \geq \lambda_{2} \geq \cdots \geq \lambda_{l}\)
4: 取前 \(l\) 个最大特征根所对应特征向量 \(w_{1}, w_{2}, \ldots, w_{l}\) 组成映射矩阵 \(\mathrm{W}\)
5: 将每个样本数据 \(\boldsymbol{x}_{i}\) 按照如下方法降维: \(\left(\boldsymbol{x}_{i}\right)_{1 \times d}(\mathbf{W})_{d \times l}=1 \times l\)
四、神经网络
1. 神经元
神经元是构成神经网络的基本单元,其主要是模拟生物神经元的结构和特性,接受一组输入信号并产出输出。
2. 损失函数
损失函数(Loss Function)又称为代价函数(Cost Function),用来计算模型预测值与真实值之间的误差。损失函数是神经网络设计中的一个重要组成部分。通过定义与任务相关的良好损失函数,在训练过程中可根据损失函 数来计算神经网络的误差大小,进而优化神经网络参数。
3. 激活函数
激活函数是用来增强网络的表示能力和学习能力的,具备以下性质:
-
连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数。
-
激活函数及其导函数要尽可能地简单,有利于提高网络计算效率。
-
激活函数的导函数的值域要在一个合适的区间内,不能太大和太小(避免梯度爆炸和梯度消失),否则影响训练的效率和稳定性。
常见激活函数:
Sigmoid、Softmax、Relu、Tanh、Logistics
4. 前馈神经网络
(1)前馈神经网络的定义
前馈神经网络(Feed Forward Neural Network) 是一种单向多层的网络结构,即信息是从输入层开始,逐层向一个方向传递,一直到输出层结束。所谓 的 “前馈” 是指输入信号的传播方向为前向,在此过程中并不调整各层的 权值参数,而反传播时是将误差逐层向后传递,从而实现使用权值参数对特征的记忆,即通过反向传播(BP) 算法来计算各层网络中神经元之间边的权重。BP算法具有非线性映射能力,理论上可逼近任意连续函数,从而实现对模型的学习。
(2)拓扑结构
-
各个神经元接受前一级的输入, 并输出到下一级, 模型中没有反馈。
-
层与层之间通过 “全连接” 进行链接, 即两个相邻层之间的神经元完全成对连接, 但层内的神经元不相互连接。
5. BP(Back Propagation)神经网络
BP (Back Propagation)神经网络也是前馈神经网络, 只是它的参数权重值是由反向传播学习算法进行调整的
(1)拓扑结构
-
BP 神经网络模型拓扑结构包括输入层、隐层和输出层, 利用激活函数来实现从输入到输出的任意非线性映射,从而模拟各层神经元之间的交互。
-
激活函数须满足处处可导的条件。例如, Sigmoid函数连续可微, 求导合适 , 单调递增, 输出值是01之间的连续量, 这些特点使其适合作为神经网络的激活函数q。
(2)梯度消失与梯度爆炸
当权重过大时出现梯度爆炸,权重过小时会导致梯度消失。
(3)防止梯度消失和梯度爆炸的方法:
-
重新设计网络模型
-
使用 ReLU 激活函数
-
使用长短期记忆网络
-
使用梯度截断(Gradient Clipping)
-
使用权重正则化 (Weight Regularization)
(4)常用的防止过拟合的方法有:
-
参数范数惩罚
-
数据增强
-
提前终止
-
Bagging等集成方法
-
Dropout
-
批正则化
五、深度学习
1. 卷积神经网络 (convolution neural network, CNN)
(1)卷积层
感受野:
感受野就是视觉感受区域的大小。在卷积神经网络中, 感受野是CNN中的某一层输出结果的一个元素对应输入 层的一个映射, 即feature map上的一个点所对应的输入图上的区域。
(2)池化层
对输入的特征图片进行下采样,以获得最主要的信息。
常见的池化操作有:
-
最大池化
-
平均池化
池化的作用:
-
减少网络中的参数计算数量, 从而遏制过拟合
-
增强网络对输入图像中的小变形、扭曲、平移的鲁棒性(输入里的微小扭曲不会改变池化输出——因为我们在局部邻域已经取了最大值/平均值)。
-
帮助我们获得不因尺寸而改变的等效图片表征。这非常有用, 因为这样我们就可以探测到图片里的物体, 不论那个物体在哪。
(3)全连接层
-
卷积层和池化层的输出代表了输入图像的高级特征, 全连接层的目的就是类别基于训练集用这些特征进行分类。
-
除了分类以外, 加入全连接层也是学习特征之间非线性组合的有效办 法。卷积层和池化层提取出来的特征很好, 但是如果考虑这些特征之间的组合,就更好了。
(4)卷积神经网络的发展历程
(5)防止过拟合的方法
-
L1/L2正则化
-
Early stopping
-
Dropout
2. 全卷积神经网络
FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。
与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
3. 循环神经网络 (Recurrent Neural Network, RNN)
(1)循环神经网络 (Recurrent Neural Network, RNN)
RNN主要用来处理序列数据,在传统的神经网络模型中,是从输入层到隐含层再到输出层,每层内的节点之间无连接,循环神经网络中一个当前神经元的输出与前面的输出也有关,网络会对前面的信息进行记忆并应用于当前神经元的计算中,隐藏层之间的节点是有连接的,并且隐藏层的输入不仅包含输入层的输出还包含上一时刻隐藏层的输出。理论上, RNN可以对任意长度的序列数据进行处理。
RNN存在的问题——难以应对长期依赖
(2)长短期记忆神经网络 (Long Short-Term Memory, LSTM)
长短期记忆网络能够学习长期依赖关系,并可保留误差,在沿时间和层进行反向传递时,可以将误差保持在更加恒定的水平,让递归网络能够进行多个时间步的学习,从而建立远距离因果联系。
LSTM引入了门(gate)机制用于控制特征的流通和损失
标准 RNN 中的重复模块包含单一的层
LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。
4. 生成对抗网络 (Generative Adversarial Network, GAN)
GAN包含有两个模型,一个是生成模型(generative model),一个是判别模型(discriminative model)。生成模型的任务是生成看起来自然真实的、和原始数据相似的实例。判别模型的任务是判断给定的实例看起来是自然真实的还是人为伪造的(真实实例来源于数据集,伪造实例来源于生成模型)。
六、强化学习
1. 强化学习的定义
强化学习(reinforcement learning)又称为再励学习,是指从环境状态到行为映射的学习,以使系统行为从环境中获得的累积奖励值最大的一种机器学习方法,在智能控制机器人及分析预测等领域有许多应用。
2. 强化学习的特征
-
试错学习:强化学习需要训练对象不停地和环境进行交互,通过试错的方式去总结 出每一步的最佳行为决策,整个过程没有任何的指导,只有冰冷的反馈。所有的学习基于环境反馈,训练对象去调整自己的行为决策。
-
延迟反馈:强化学习训练过程中,训练对象的“试错”行为获得环境的反馈,有时候可能需要等到整个训练结束以后才会得到一个反馈,比如Game Over或者是Win。当 然这种情况,我们在训练时候一般都是进行拆解的,尽量将反馈分解到每一步。
-
时间是强化学习的一个重要因素:强化学习的一系列环境状态的变化和环境反馈等都是和时间强挂钩,整个强化学习的训练过程是一个随着时间变化,而状态&反馈也 在不停变化的,所以时间是强化学习的一个重要因素。
-
当前的行为影响后续接收到的数据:在监督学习&半监督学习中,每条训练数据都是独立的,相互之间没有任何关联。但是强化学习中并不是这样,当前状态以及采取的行动,将会影响下一步接收到的状态。数据与数据之间存在一定的关联性。
七、迁移学习
1. 基于样本的迁移学习
-
基于样本的迁移学习是从源数据中找到合适的样本数据, 并将其迁移到目标领域的训练数据集中, 供模型进行训练。
-
基于传统的AdaBoost算法发展出来的TrAdaBoost算法是一个典型的基于样本的迁移学习算法, 利用boosting的技术过滤掉源数据中与目标训练数据最不符的数据。其中, boosting的作用是建立一种自动调整权重的机制, 增加重要数据的权重。调整权重之后, 这些带权重的辅助训练数据将会作为额外 的训练数据, 与现有训练数据一起来训练模型。
-
前提是两个领域的样本数据差别不大, 否则很难找到可以迁移的样本。
2. 基于特征的迁移学习
-
基本思想: 使用互聚类算法同时对两种数据集进行聚类, 得到一个共同的特征表示, 实现把源样本数据表示在新的空间。
-
假设源数据集和目标数据集具有一些重叠特征, 通过特征变换, 将源域和 目标域的特征变换到相同空间, 使它们具有相同的数据分布, 然后通过传 统的机器学习训练;
-
优点是适用性广,效果较好;
-
缺点是特征变换难度较大, 容易发生过度适配, 误导模型产生错误结果。
-
过程: 建表, 训练可识别子属性模型, 查属性类别对应表
3. 基于模型的迁移学习
-
利用源域模型中的共享参数, 应用到目标域进行训练和预测。
-
例如, 目标模型的任务是识别图片中汽车的品牌, 给定的训练图片数量较 少, 如果直接进行训练容易导致过拟合, 可以利用现有的VGG模型在模型输 出上增加新的网络层, 进行微调来训练模型。这种方法所需要的图片数量 远远少于从无到有训练一个新模型。
-
优点是可以充分利用模型之间的相似性。
-
缺点是模型参数不容易收敛。
八、人工智能发展与挑战
-
挑战一:人类常识知识支持下顿悟与直觉
-
挑战二:元学习(meta-learning)理论
-