机器学习发展历史回顾_机器学习历史-程序员宅基地

技术标签: 机器学习  

机器学习发展历史回顾

本文为回溯机器学习发展历史阅读笔记,全文链接:机器学习发展历史回顾
在之后的学习中会以此为学习路线,逐步阅读所有机器学习方面的经典论文,并对本文中简略提及的算法进行总结和详细分析。

1 概述

机器学习是现阶段解决很多人工智能问题的主流方法。最早的机器学习算法可以追溯到20世纪初,到今天为止,已经过去了100多年。从1980年机器学习称为一个独立的方向开始算起,到现在也已经过去了近40年。

2 分类

总体上,机器学习算法可以分为有监督学习无监督学习强化学习 3种类型。半监督学习可以认为是有监督学习与无监督学习的结合,不在本文讨论的范围之类。

2.1 有监督学习

定义: 通过训练样本学习得到一个模型,然后用这个模型进行推理。
关键词: 有样本训练
举例: 识别水果图像 (分类问题)

  1. 人工标注
  2. 样本训练得到模型
  3. 利用模型对未知水果进行判断(预测)

若上述预测的是一个实数,如根据一个人的学历、工作年限、所在城市、行业等特征来预测这个人的收入,则属于回归问题

2.2 无监督学习

定义: 没有训练过程,给定一些样本数据,让机器学习算法直接对这些数据进行分析,得到数据的某些知识。
关键词: 没有训练过程
举例: 网页归类 (聚类)

  1. 抓取1w个网页
  2. 聚类算法对网页进行归类

无监督学习的另外一类典型算法是数据降维,它将一个高维向量变换到低维空间中,并且要保持数据的一些内在信息和结构。

2.3 强化学习

定义: 强化学习是一类特殊的机器学习算法,算法要根据当前的环境状态确定一个动作来执行,然后进入下一个状态,如此反复,目标是让得到的收益最大化。
关键词: 有优化过程,启发式搜索
举例: 围棋游戏
在每个时刻,要根据当前的棋局决定在什么地方落棋,然后进行下一个状态,反复的放置棋子,直到赢得或者输掉比赛。这里的目标是尽可能的赢得比赛,以获得最大化的奖励。

2.4 总结

总结来说,这些机器学习算法要完成的任务是:

分类算法-是什么? 即根据一个样本预测出它所属的类别。

回归算法-是多少? 即根据一个样本预测出一个数量值。

聚类算法-怎么分? 保证同一个类的样本相似,不同类的样本之间尽量不同。

强化学习-怎么做? 即根据当前的状态决定执行什么动作,最后得到最大的回报。

3 详细介绍

3.1 有监督学习

下图列出了经典的有监督学习算法(深度学习不在此列):
有监督学习中的经典算法

3.1.1 线性判别分析(LDA)

来历:1936年,Fisher
Fisher, R. A. (1936). The Use of Multiple Measurements in Taxonomic Problems. Annals of Eugenics. 7 (2): 179–188.
类别:有监督的数据降维算法
介绍:通过线性变换将向量投影到低维空间中,保证投影后同一种类型的样本差异很小,不同类的样本尽量不同。

3.1.2 贝叶斯分类器

来历:1950年代
类别:分类器
介绍:基于贝叶斯决策理论,把样本分到后验概率最大的那个类。

3.1.3 logistic回归

来历:1958年
Cox, DR (1958). The regression analysis of binary sequences (with discussion). J Roy Stat Soc B. 20 (2): 215–242.
类别:解决回归问题
介绍:它直接预测出一个样本属于正样本的概率,在广告点击率预估、疾病诊断等问题上得到了应用。

3.1.4 感知器模型

来历:1958年
Rosenblatt, F. (1958). “The Perceptron: A Probalistic Model For Information Storage And Organization In The Brain”. Psychological Review. 65 (6): 386–408.
类别:线性分类器
介绍:它过于简单,甚至不能解决异或问题,因此不具有实用价值,更多的起到了思想启蒙的作用,为后面的算法奠定了思想上的基础。
个人理解:非黑即白的分类器

3.1.5 KNN

来历:1967年
Thomas M Cover, Peter E Hart. Nearest neighbor pattern classification. IEEE Transactions on Information Theory, 1967.

介绍:这是一种基于模板匹配思想的算法,虽然简单,但很有效,至今仍在被使用。

总结: 在1980年之前,这些机器学习算法都是零碎化的,不成体系。但它们对整个机器学习的发展所起的作用不能被忽略。
从1980年开始,机器学习才真正成为一个独立的方向。在这之后,各种机器学习算法被大量的提出,得到了快速发展。

3.1.6 决策树

来历:1980年代到1990年代初期,三种典型实现——ID3[4],CART[5],C4.5[6]
[4] Quinlan, J. R. 1986. Induction of Decision Trees. Mach. Learn. 1, 1 (Mar. 1986), 81–106
[5] Breiman, L., Friedman, J. Olshen, R. and Stone C. Classification and Regression Trees, Wadsworth, 1984.
[6] Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan Kaufmann Publishers, 1993.

介绍:简单,但可解释性强,这使得决策树至今在一些问题上仍被使用。

3.1.7 反向传播算法

来历:1986年
David E. Rumelhart, Geoffrey E. Hinton, and Ronald J. Williams. Learning internal representations by back-propagating errors. Nature, 323(99): 533-536, 1986.
介绍:这是现在的深度学习中仍然被使用的训练算法,奠定了神经网络走向完善和应用的基础。

3.1.8 卷积神经网络

来历:1989年
Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, L. D. Jackel, Backpropagation Applied to Handwritten Zip Code Recognition. 1989.
介绍:1989年,LeCun设计出了第一个真正意义上的卷积神经网络[13],用于手写数字的识别,这是现在被广泛使用的深度卷积神经网络的鼻祖。

总结: 在1986到1993年之间,神经网络的理论得到了极大的丰富和完善,但当时的很多因素限制了它的大规模使用。

3.1.9 SVM

来历:1995年
介绍:SVM代表了核技术的胜利,这是一种思想,通过隐式的将输入向量映射到高维空间中,使得原本非线性的问题能得到很好的处理。

3.1.10 AdaBoost

来历:1995年
介绍:代表了集成学习算法的胜利,通过将一些简单的弱分类器集成起来使用,居然能够达到惊人的精度。

3.1.11 LSTM

来历:2000年
介绍:在很长一段时间内一直默默无闻,直到2013年后与深度循环神经网络整合,在语音识别上取得成功。

3.1.12 随机森林

来历:2001年
介绍:与AdaBoost算法同属集成学习,虽然简单,但在很多问题上效果却出奇的好,因此现在还在被大规模使用。

总结: 从1980年开始到2012年深度学习兴起之前,有监督学习得到了快速的发展,这有些类似于春秋战国时代,各种思想和方法层出不穷,相继登场。另外,没有一种机器学习算法在大量的问题上取得压倒性的优势,这和现在的深度学习时代很不一样。

3.2 无监督学习

相比于有监督学习,无监督学习的发展一直和缓慢,至今仍未取得大的突破。下面我们按照聚类数据降维两类问题对这些无监督学习算法进行介绍。

3.2.1 聚类

聚类算法的历史与有监督学习一样悠久。层次聚类算法出现于1963年[26],这是非常符合人的直观思维的算法,现在还在使用。它的一些实现方式,包括SLINK[27],CLINK[28]则诞生于1970年代。
聚类算法的发展

3.2.1.1 k均值算法

聚类算法中知名度最高的,其历史可以追溯到1967年,此后出现了大量的改进算法,也有大量成功的应用,是所有聚类算法中变种和改进型最多的。

3.2.1.2 EM算法

诞生于1977年,它不光被用于聚类问题,还被用于求解机器学习中带有缺数数据的各种极大似然估计问题。

3.2.1.3 Mean Shift算法

Mean Shift算法[32]早在1995年就被用于聚类问题,和DBSCAN算法[30],OPTICS算法[31]一样,同属于基于密度的聚类算法。

3.2.1.4 谱聚类算法

诞生于2000年左右,它将聚类问题转化为图切割问题,这一思想提出之后,出现了大量的改进算法。

3.2.2 数据降维

经典的PCA算法[14]诞生于1901年,这比第一台真正的计算机的诞生早了40多年。LDA在有监督学习中已经介绍,在这里不再重复。
数据降维算法发展历史

3.2.2.1 核PCA

来历:1998年
介绍:非线性降维算法。这是核技术的又一次登台,与PCA的结合将PCA改造成了非线性的降维算法。

3.2.2.2 局部线性嵌入LLL

来历:2000年
介绍:非线性方法。此后,拉普拉斯特征映射,局部保持投影,等距映射等算法相继提出[17-19]。流形学习在数学上非常优美,但遗憾的是没有多少公开报道的成功的应用。

3.2.2.3 t-SNE算法

降维算法中年轻的成员,诞生于2008年,虽然想法很简单,效果却非常好。

3.3 概率图模型

概率图模型是机器学习算法中独特的一个分支,它是图与概率论的完美结合。在这种模型中,每个节点表示随机变量,边则表示概率。有些晦涩,但理解了之后并不难。
概率图模型发展历史

3.3.1 隐马尔可夫模型

诞生于1960年,在1980年代,它在语音识别中取得了成功,一时名声大噪,后来被广泛用于各种序列数据分析问题,在循环神经网络大规模应用之前,处于主导地位。

3.3.2 马尔可夫随机场

马尔可夫随机场诞生于1974年[23],也是一种经典的概率图模型算法。

3.3.3 贝叶斯网络

贝叶斯网络[22]是概率推理的强大工具,诞生于1985年,其发明者是概率论图模型中的重量级人物,后来获得了图灵奖。

3.3.4 条件随机场

条件随机场[24]是概率图模型中相对年轻的成员,被成功用于中文分词等自然语言处理,还有其他领域的问题,也是序列标注问题的有力建模工具。

3.4 强化学习

相比有监督学习和无监督学习,强化学习在机器学习领域的起步更晚。虽然早在1980年代就出现了时序差分算法[42-44],但对于很多实际问题,我们无法用表格的形式列举出所有的状态和动作,因此这些抽象的算法无法大规模实用。
强化学习发展历史

神经网络与强化学习的结合,即深度强化学习46-50],才为强化学习带来了真正的机会。在这里,深度神经网络被用于拟合动作价值函数即Q函数,或者直接拟合策略函数,这使得我们可以处理各种复杂的状态和环境,在围棋、游戏、机器人控制等问题上真正得到应用。神经网络可以直接根据游戏画面,自动驾驶汽车的摄像机传来的图像,当前的围棋棋局,预测出需要执行的动作。其典型的代表是DQN[46]这样的用深度神经网络拟合动作价值函数的算法,以及直接优化策略函数的算法[47-50]。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shirlleyHan/article/details/108882975

智能推荐

关于静态方法与静态属性的访问问题_静态内部类中的静态属性可以直接访问吗-程序员宅基地

文章浏览阅读3.8k次。在java中,static关键字代表的含义为"静态的",只要在方法或者属性前面加上了static关键字,这个方法或属性就属于类了,如果没有static关键字,方法或属性是属于这个类的对象。我们称加上static关键字的属性和方法为静态属性和静态方法,不加static关键字的属性和方法我们称为为普通属性和普通方法。普通属性和普通方法可以随着对象的多次创建而被重复使用,而静态属性和静态变量是唯一的,只..._静态内部类中的静态属性可以直接访问吗

echarts实现西安地铁图_echarts地铁图-程序员宅基地

文章浏览阅读4.6k次,点赞11次,收藏28次。前言: echarts实现西安地铁图效果图:官网入口实现代码:var data = [ { name: "地铁一号线", tooltip: { formatter: "{b}: 19999<br />" }, symbolSize: 0.1, value: [5, 750], x: 800, ..._echarts地铁图

不同传输类型_等比例压缩传输和变比例传输的区别-程序员宅基地

文章浏览阅读155次。类型   速率 距离 标准 编码 工作模式   10BASE-T UTP 10Mbps 100m IEEE802.3i       10BASE-2 200m       10BASE-5 500m       100Base-TX UTP-5类或匹配电阻为150Ω的STP 100Mbps 100M IEEE802.3 4B/5B曼_等比例压缩传输和变比例传输的区别

微信小程序--第一个新手项目_进公司第一天写微信小程序的项目-程序员宅基地

文章浏览阅读307次。这里写自定义目录标题页面设计全局三个文件Pages 目录文件创建页面把内容单元封装在view内部插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入页面设计全局三个文件分别是app.jsapp.jsonapp.wxss名称不可更改Pages 目录文件用来放各个页面的标_进公司第一天写微信小程序的项目

关于C++的string字符串拼接问题(和“字符转字符串”问题有关)_c++字符串拼接缺失-程序员宅基地

文章浏览阅读1.4k次。(只有气到我肺都炸了的情况下我才可能废一些时间去写博客(主要是写一些气话),但现在气消得差不多了我也骂不出什么话了。正文1、字符串拼接分软拼接和硬拼接(“软硬拼接”是我自己发明的词~实际上到底有没有这种说法我就没去管了)2、所谓软拼接,就是字符串后面加的是【字符串】;硬拼接就字符串后面加的是【字符】 3、软拼接,只会拼接'\0'之前的有效字符;硬拼接,是什么字符都能硬加进去,包括'\0'4、硬拼接如果拼接的是'\0',在判等的时候很大概率翻车。(在map的find函数里会要用到判等的。没错我就这翻_c++字符串拼接缺失

LVS集群基础概念-程序员宅基地

文章浏览阅读86次。当服务器遇到性能瓶颈需要进行扩展时,一般来说有两种解决思路:Scale-up 和 Scale out,也称作垂直扩展和水平扩展。常见的负载均衡器根据工作在的协议层划分可划分为:四层负载均衡:根据请求报文中的目标地址和端口进行调度七层负载均衡:根据请求报文的内容进行调度,这种调度属于「代理」的方式根据软硬件划分:硬件负载均衡:F5 的 BIG-IPCitrix 的 NetSca...

随便推点

sdut oj 数据结构实验之二叉树五:层序遍历(数组模拟)_数组模拟树的层次遍历-程序员宅基地

文章浏览阅读339次。链表二叉树链接如下sdut oj 数据结构实验之二叉树五:层序遍历 (链表).数组模拟方式见下文Description已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。Input输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据。每行是一个长度小于50个字符的字符串。Output输出二叉树的层次遍历序列。SampleInput2abd,,eg,,,cf,,,xnl,,i,,u,,Outpu_数组模拟树的层次遍历

ListView分页加载数据_listview按页请求数据-程序员宅基地

文章浏览阅读598次。ListView分页加载数据ListView分页加载 在Android中是一个经常用到的技术,当我们需要加载大量的数据到列表显示时,假如一次性把所有数据加载完毕,可能会导致整个ListView列表卡顿,给用户的体验也非常不好。因而,我们可以将数据分为多次加载,每次加载其中的一部分,用户有需求的时候再加载其他部分,这样的设计会更加友好。 ListView分页原理在日常开发中,我们可能会遇到以下两种情_listview按页请求数据

前端控制权限隐藏按钮 vue自定义指令v-has-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏37次。1.通过请求获取权限,放入localStorage:(这里是多个权限,保存为字符串,用逗号隔开)window.localStorage.setItem("permissionPage", "editPage,detailPage");window.localStorage.setItem("permissionButton", "canEdit,canDelete");2.在main.ts中引入:import hasPermission from '@/common/utils/hasPermi_v-has

用java代码实现九九乘法表_java用循环和分支结构写九九乘法表-程序员宅基地

文章浏览阅读6.8k次,点赞8次,收藏23次。分析乘法表发现,整体有九行,第一行是一列,第二行是两列,第三行三列.....第九行对应有九列,所以它的行数对应就有多少列,这样我们可以通过借助行数来控制它的列数,以此来实现乘法表的打印。具体代码实现:for循环public class MultTable { public static void main(String[] args) { //此处调用九九乘法表方法实现打印 multMethod(); } public static void multMethod() { /_java用循环和分支结构写九九乘法表

数据库学习整理之常见运算符_数据库运算符-程序员宅基地

文章浏览阅读6.1k次。运算符概述1) 算术运算符执行算术运算,例如:加、减、乘、除等。2) 比较运算符包括大于、小于、等于或不等于、等等。主要用于数值的比较、字符串的匹配等方面。3) 逻辑运算符包括与、或、非和异或、等逻辑运算符。其返回值为布尔型,真值(1 或 true)和假值(0 或 false)。4) 位运算符包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算符。位运算必须先将数据转换为补码,然后在根据数据的补码进行操作。运算完成后,将得到的值转换为原来的类型(十进制数),返回_数据库运算符

龙芯软件开发(24)-- PCI设备初始化2_龙芯pci中断绑定-程序员宅基地

文章浏览阅读87次。龙芯软件开发(24)-- PCI设备初始化2 ..._龙芯pci中断绑定

推荐文章

热门文章

相关标签