机器学习入门笔记01-机器学习综述
机器学习与人工智能的发展历程
AI发展阶段 |
时间轴 |
机器学习理论 |
代表性成果 |
|
逻辑推理阶段 |
AI诞生前期 |
二十世纪五十年代 |
AI研究处于推理期 |
A. Newell和H. Simon的Logic Theorist证明了数学原理,General Problem Solving程序。 |
机器学习相关研究出现 |
1952年,Arthur Samuel在IBM研制了一个西洋跳棋程序。 |
|||
AI发展黄金时代、AI史上第一次寒冬 |
二十世纪五十年代中后期 |
开始出现基于神经网络的“连接主义”(Connectionism)学习 |
F. Rosenblatt提出了感知机(Perceptron),B. Widrow提出Adaline。 |
|
二十世纪六七十年代 |
基于逻辑表示的“符号主义”(Symbolism)学习技术蓬勃发展 |
P. Winston的结构学习系统,R. S. Michalski的基于逻辑的归纳学习系统,以及E. B. Hunt的概念学习系统。 |
||
以决策理论为基础的学习技术 |
|
|||
强化学习技术 |
N. J. Nilson的“学习机器”。 |
|||
统计学习理论的一些奠基性成果 |
支持向量,VC维,结构风险最小化原则。 |
|||
知识工程阶段,专家系统大量推广 |
AI发展繁荣期、AI史上第二次寒冬 |
二十世纪八十年代至九十年代中期 |
机械学习(死记硬背式学习) 示教学习(从指令中学习) 类比学习(通过观察和发现学习) 归纳学习(从样例中学习) |
学习方式分类 |
从样例中学习的主流技术之一:(1)符号主义学习 (2)基于逻辑的学习 |
1)决策树(decision tree)。 (2)归纳逻辑程序设计(Inductive Logic Programming, ILP)具有很强的知识表示能力,可以较容易地表达出复杂的数据关系,但会导致学习过程面临的假设空间太大,复杂度极高,因此,问题规模稍大就难以有效地进行学习。 |
|||
从样例中学习的主流技术之二:基于神经网络的连接主义学习 |
1983年,J. J. Hopfield利用神经网络求解“流动推销员问题”这个NP难题。1986年,D. E. Rumelhart等人重新发明了BP算法,BP算法一直是被应用得最广泛的机器学习算法之一。 |
|||
二十世纪八十年代是机器学习成为一个独立的学科领域,各种机器学习技术百花初绽的时期 |
连接主义学习的最大局限是“试错性”,学习过程涉及大量参数,而参数的设置缺乏理论指导,主要靠手工“调参”,参数调节失之毫厘,学习结果可能谬以千里。 |
|||
机器学习阶段 |
AI稳健发展时期 |
二十世纪九十年代中期 |
统计学习(Statistics Learning) |
支持向量机(Support Vector Machine,SVM),核方法(Kernel Methods)。 |
繁荣发展时期 |
二十一世纪初至今 |
深度学习(Deep Learning) |
深度学习兴起的原因有二:数据量大,机器计算能力强。 |
机器学习基础知识
(一)类型
1.监督学习
监督学习是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。在监督学习的过程中会提供对错指示,通过不断地重复训练,使其找到给定的训练数据集中的某种模式或规律,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入和输出,主要应用于分类和预测。监督学习常用于分类问题和回归问题,常见算法包括对数几率回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)。
2.无监督学习
与监督学习不同,在无监督学习中,无须对数据集进行标记,即没有输出。其需要从数据集中发现隐含的某种结构,从而获得样本数据的结构特征,判断哪些数据比较相似。因此,非监督学习目标不是告诉计算机怎么做,而是让它去学习怎样做事情。常见的关联规则及聚类都属于无监督学习,常见算法包括Apriori算法及k-means算法等。
3.半监督学习
半监督学习是监督学习和非监督学习的结合,其在训练阶段使用的是未标记的数据和已标记的数据,不仅要学习属性之间的结构关系,也要输出分类模型进行预测。在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。
4.强化学习
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal difference learning)。
(二)常见模型
常见的机器学习算法
(三)损失函数
损失函数(loss function)或代价函数(cost function)是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。(来源“百度百科”)
损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型度量的好坏。(来源《统计学习方法》)
1.0-1损失函数:
2.绝对值损失函数:
3.平方损失函数:一般用在线性回归中
4.log对数损失函数:(logistics回归)
5.指数损失函数:(Adaboost)
6.Hinge损失函数:(SVM)
期望风险与经验风险 损失函数值越小,模型就越好。期望损失就是对损失函数求期望: 学习的目标就是选择期望风险最小的模型。模型f(x)关于训练数据集T的平均损失称为经验风险(empirical risk)或经验损失(empirical loss),记为Remp, 期望风险是模型关于联合分布的期望损失,经验风险是模型关于训练样本集的平均损失。最直接的方法是用经验风险估计期望风险。(现实中由于样本有限,这样做往往不理想,需要对经验风险进行一定的矫正。) |
经验风险最小化(ERM)与结构风险最小化(SRM) 经验风险最小化是寻找经验风险最小的模型作为最优模型(样本足够大时效果较好)。 结构风险是在经验风险上加上表示模型复杂度的“正则化项”(或称“惩罚项”)。设J(f)为模型复杂度,λ为权衡经验风险和模型复杂度的非负系数,由下式可以看出,模型f越复杂,J(f)就越大。 结构风险最小化就是求使结构风险最小的模型:
|
损失函数与代价函数的区别 损失函数(Loss function)是定义在单个训练样本的损失/误差。 代价函数(Cost function)是定义在整个训练集整体的误差描述,是所有样本的误差的总和的平均,也是损失函数的总和的平均。 |
(四)优化方法
- (全量)梯度下降:
- 随机梯度下降:
随机梯度下降每次在梯度下降的基础上,每次迭代随机选择,使得结果不陷入局部最小值而趋近全局最小值。
- 小批量梯度下降:
小批量梯度下降每次用一小部分样本来近似整体。
- 引入动量的梯度下降:
动量梯度下降法在梯度下降的基础上,引入了移动加权平均。
- 自适应学习率梯度下降:
在训练过程中修改学习率以达到更好地收敛。
- 牛顿法:
输入:目标函数f(x),梯度g(x)=gradf(x),海塞矩阵H(x),精度要求ε;
输出:f(x)的极小值点x’
- 取初始点x0,置k=0;
- 计算gk=g(xk)
- 若||gk||<ε,则停止计算,得近似解x’=xk
- 计算Hk=H(xk),并求pk,Hkpk=-gk
- 置xk+1=xk+pk
- 置k=k+1,转第二步
(五)评价指标(性能度量)
- MES(Mean Squared Error,均方误差):常用于回归任务
- MAE(Mean Absolute Error,平均绝对误差):
MAE表示预测值和观测值之间绝对误差的平均值。
- RMSE(Root Mean Squared Error,均方根误差):
RMSE表示残差(预测值和观测值之间差异)的样本标准差,说明样本的离散程度。
标准差是用来衡量一组数自身的离散程度,而均方根误差是用来衡量观测值同真值之间的偏差,它们的研究对象和研究目的不同, 均方根误差是观测值与标签间的计算,而标准差是样本与样本均值间的计算。
- Top-k准确率:
top-1——预测的标签中取最后概率向量中最大的作为预测结果,如果预测结果中概率最大的分类正确,则预测正确,否则预测错误。
top-5——最后概率向量最大的前五名中,只要出现了正确概率即为预测正确。
- 混淆矩阵:
真实情况 |
预测结果 |
|
正例 |
反例 |
|
正例 |
TP(真正例) |
FN(假反例) |
反例 |
FP(假正例) |
TN(真反例) |
ROC(Receiver Operating Characteristic,受试者工作特征),ROC曲线纵轴是“真正例率”(TPR),横轴是“假正例率”(FPR)。若一个学习器的ROC曲线被另一个的完全包住,则后者性能优于前者;若两学习器的ROC曲线发生交叉,则可通过比较各曲线所围面积大小,即AUC(Area Under ROC Curve)。AUC判断分类器(预测模型)优劣的标准为:
- AUC = 1 是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器;
- 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值;
- AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
(六)模型选择(评估方法)
- 交叉验证:
所有数据分为三部分:训练集、交叉验证集和测试集。交叉验证集不仅在选择模型时有用,在超参数选择、正则项参数(或公式)和评价模型中也很有用。
- k-折交叉验证:
随机地将已给数据切分为k个互不相交的大小相同的子集,然后用k-1个子集的数据训练模型,利用余下的子集测试模型;将这一过程对可能的k种选择重复进行,最后选出k此评测中平均测试误差最小的模型。
- 偏差(Bias)&方差(Variance),欠拟合与过拟合及解决方法
欠拟合一般表示模型对数据的表现能力不足,通常是模型的复杂度不够,并且Bias高,训练集的损失值高,测试集的损失值也高。欠拟合一般继续进行大量训练就可解决。
过拟合一般表示模型对数据的表现能力过好,通常是模型的复杂度过高,并且Variance高,训练集的损失值低,测试集的损失值高。过拟合对训练样本的拟合程度很高,但对预测样本的拟合度很低。
解决高方差的方法:增加训练样本,减少特征维数,减小模型复杂度;
解决高偏差的方法:增加特征维数,增加模型复杂度。
(七)参数调优
- 网格搜索
一种调参手段;穷举搜索:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果
- 随机搜索
与网格搜索相比,随机搜索并未尝试所有参数值,而是从指定的分布中采样固定数量的参数设置。它的理论依据是,如果随即样本点集足够大,那么也可以找到全局的最大或最小值,或它们的近似值。通过对搜索范围的随机取样,随机搜索一般会比网格搜索要快一些。
- 贝叶斯优化算法
贝叶斯优化用于机器学习调参由J. Snoek(2012)提出,主要思想是,给定优化的目标函数(广义的函数,只需指定输入和输出即可,无需知道内部结构以及数学性质),通过不断地添加样本点来更新目标函数的后验分布(高斯过程,直到后验分布基本贴合于真实分布。简单的说,就是考虑了上一次参数的信息,从而更好的调整当前的参数。
参考资料
- 人工智能通识-AI发展简史-讲义全篇https://www.jianshu.com/p/0fed5efab3e5
- 人工智能发展历史概述https://blog.****.net/weixin_40651515/article/details/95965675
- http://www.360doc.com/content/18/0418/08/7358098_746548911.shtml
- 机器学习的发展史https://www.jianshu.com/p/e519dbc6c87e
- 机器学习发展历史回顾https://blog.****.net/SIGAI_****/article/details/82428499
- 机器学习的分类与主要算法对比https://www.cnblogs.com/aabbcc/p/8554514.html
- 理解损失函数(理论篇)机器学习你会遇到的“坑”https://baijiahao.baidu.com/s?id=1611678624768980723&wfr=spider&for=pc
- 几种常见的损失函数https://www.cnblogs.com/lliuye/p/9549881.html
- 机器学习总结(三)——损失函数https://blog.****.net/chkay399/article/details/81878157
- 常见损失函数总结https://www.jianshu.com/p/a07a65d664cc
- 对数损失函数(Logarithmic Loss Function)的原理和 Python 实现https://www.cnblogs.com/klchang/p/9217551.html
- 第6章 损失函数与代价函数http://www..com/article/8941712617/
- 常用度量--MAE(平均绝对误差)和RMSE(均方根误差) https://blog.****.net/wydbyxr/article/details/82894256
- 显著性目标检测模型评价指标(一)——平均绝对误差:Mean Absolute Error(MAE) https://blog.****.net/stupidautofan/article/details/79556087
- 方差、标准差、均方根误差、平均绝对误差的总结https://blog.****.net/ZZh1301051836/article/details/82079103
- top1错误率、top5正确率https://blog.****.net/ha010/article/details/80742906
- 深度学习:混淆矩阵,准确率,top1,top5,每一类的准确率https://blog.****.net/shanshangyouzhiyangM/article/details/84943011
- 如何理解随机梯度下降(stochastic gradient descent,SGD)?https://www.zhihu.com/question/264189719
- 初探梯度下降之随机梯度下降(SGD)https://www.jianshu.com/p/1d5b7057ea41?from=timeline
- AI数学基础22——动量梯度下降法https://www.jianshu.com/p/bc7d00c948ac
- 使用动量的梯度下降法https://blog.****.net/Solo95/article/details/84837711
- 网格搜索法https://blog.****.net/xiachong27/article/details/82154825
- ML模型超参数调节:网格搜索、随机搜索与贝叶斯优化https://www.jianshu.com/p/5378ef009cae
- 教程 | 拟合目标函数后验分布的调参利器:贝叶斯优化http://www.sohu.com/a/165565029_465975
- https://github.com/datawhalechina/team-learning/blob/master/%E5%88%9D%E7%BA%A7%E7%AE%97%E6%B3%95%E6%A2%B3%E7%90%86/Task1_ml_overvirew.md