作者:Rockelbel,两年互联网PM,AI转型学习中,偏好NLP方向
这是AI产品经理系列的第一篇文章,约6千字,主要内容为机器学习的几大分类及其基本内涵,后续我会补充关于AI的应用场景、相关技术领域(如计算机视觉、自然语言处理等)的总结。由于目前正在学习,比较严谨的部分我都用摘抄的形式并注明了来源。
一、AI的前世今生
1.AI的诞生
1936年,阿兰图灵发表《论数字计算在决断难题中的应用》,提出一种抽象的计算模型——图灵机,论文英文标题为《On Computable Numbers, with an Application to the Entscheidungsproblem》
1950年,图灵发表论文《计算机器与智能》,提出著名的“图灵测试”,不仅如此,其论文中提到的“机器学习”、“遗传算法”、“强化学习”等理论,成为了日后人工智能领域的重要分支。
(图灵的这两篇文章都可以在网上找到原文,感兴趣的可以去读读,对图灵感兴趣的推荐《图灵的秘密:他的生平、思想及论文解读》以及电影《模拟游戏》。
关于图灵测试,《科学的极致:漫谈人工智能》中给了一个非常有意思的描述。)
1956年达特茅斯会议:AI概念诞生,1956被称为人工智能元年。参与会议的几人如John McCarthy、Marvin Minsky,他们的研究对人工智能的发展有着深远的影响。
2.AI的三大门派
符号主义:计算机始于数理逻辑,使用符号的方式来研究智能推理。代表成果是1957年的数学定理证明程序LT(证明了38条数学定理),随后相继出现了启发式算法->专家系统->知识工程理论与技术。其中专家系统的成功开发与应用,为人工智能走向工程应用和实现理论联系实际具有特别重要的意义。
连接主义:基于神经元网络和深度学习,仿照人类的神经元,用计算机来呈现人的神经模型从而仿造智能,包括现在很火的神经网络、深度学习。首先出现了以感知机(perceptron)为代表的脑模型研究的短暂热潮,随着多层网络中的反向传播算法(即BP算法)的提出,连接主义开始爆发,目前所经历的这场AI热潮正是连接主义的主场。
行为主义:核心是控制论,而控制论的核心是负反馈调节,其认为可以通过不断的反馈-调整实现进化计算从而达到智能。早期的研究工作重点是模拟人在控制过程中的智能行为和作用,如自寻优、自适应、自镇定、自组织和自学习等控制论系统,并进行“控制论动物”的研制。
3.AI的第一次发展热潮(1956-1976)
关键词:符号主义、早期推理系统、早期神经网络(连接主义)、专家系统
这次浪潮的核心是符号主义,图灵提出图灵测试的概念后,数学证明系统、知识推理系统、专家系统相继取得较大的突破,然而受限于计算机性能和算法理论,无法取得更大的突破。
连接主义Minsky发表了文章《K-lines: A Theory of Memory》基本上否定了神经网络大规模学习的能力。在这篇文章影响下,符号主义和连接主义基本上陷入消沉。
4.AI的第二次热潮(1976-2006)
关键词:统计学派、机器学习、神经网络
符号主义没有再兴起,连接主义重获新生。几个重要的进展:自组织网络、感知机(最简单的神经元网络)、反向传播网络(BackPropagation,即著名的BP网络,可以说这次人工智能浪潮的奠基石)
5.AI的第三次热潮
关键词:大数据、深度学习、AlphaGo
连接主义盛行,数据、算法和算力多方面的进步,深度学习取得突破。第二次和第三次浪潮都是以连接主义为核心,区别是深度学习的成功。此外有两个重要的因素——硬件的进步(CPU/GPU参考摩尔定律)、卷积神经网络模型和参数调整技巧的进步(合适的参数与神经模型可以大大增大收敛速度,缩小模型训练时间)。
6.AI的内涵
什么是AI?很多书籍、很多名人大牛都给过他们的见解,我这几摘抄几句。
维基百科对AI的解释:Artificial intelligence (AI, also machine intelligence, MI) is intelligence demonstrated by machines, in contrast to the natural intelligence(NI) displayed by humans and other animals.
AI的不同层次:弱人工智能、强人工智能、超人工智能
7.AI的社会影响
产业变革、失业和社会保障问题、贫富差距问题、地区发展不均衡问题、产业结构问题、服务业变革、教育、人机协同时代的个人成长。
二、AI的技术体系
1.数学基础
关键词:微积分、线性代数、概率论、信息论、集合论和图论、博弈论
相信很多人开始想学习AI,网上都会推荐吴恩达教授的机器学习视频,看过视频的会知道,其中涉及到的数学知识其实很有限,主要是线性代数的知识。
在上面解释AI定义的一张图中,展示了与AI相关联的众多学科,不过从产品的角度来说,并不是要求每一个领域都要精通,知其然即可,当然知识是多多益善啦。
2.计算机基础
关键词:计算机原理、程序设计语言、操作系统、分布式系统、算法原理
这部分属于“产品经理需要懂的技术知识”,前面几点不论是互联网PM还是AI PM都应该有一定的了解。对于算法,AI PM可能需要有更深的理解,因为它的角色定位很不仅是产品的跟进管理等等,可能需要根据实际的目标效果去优化算法模型。不一定要会敲代码去实现算法,但是要知道算法是如何运作的,比如CNN的几个层分别起什么作用、最大值池化和均值池化有什么区别?
关于算法这部分,推荐几本书,《终极算法》、《算法图解》(介绍了比较常见的一些算法,语言主要是容易理解)、《算法神探》(用小说的口吻去介绍算法,略牵强,易理解)、《算法导论》(经典,看完需要毅力)
3.机器学习
提到机器学习,那么肯定绕不过吴恩达教授的教学视频,不多说,去看吧!(这个视频不是必经之路,了解机器学习有很多其他途径,只是这个视频覆盖算比较全,偏实际应用,适合初学者)
3.1 什么是机器学习?
以下是机器学习几个定义:
百度百科:专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
维基百科:Machine learning is a field of computer science that gives computer systems the ability to "learn" (i.e. progressively improve performance on a specific task) with data, without being explicitly programmed.——ArthurSamuel (1959)
通俗的说,机器学习就是让机器自己去学习,通过学习到的知识来指导进一步的判断。我们用大量的带标签的样本数据来让机器进行运算,并设计损失函数,通过不断的迭代,计算机可以学会如何分类使得损失函数最小。这些学习到的分类可以用来进行预测,具体应用覆盖了从通用人工智能应用到专业人工智能应用的大多数领域。(极客研报)
我们常用的Exel中利用散点图来进行回归预测,这实际上就是一种机器学习。
3.2 机器学习的分类
关于机器学习的分类,目前主流的几类如下:
(1)监督学习(Supervised Learning)
从已标注的训练数据集中学习出一个模型,输入一组未标注的数据时,可以根据训练好的模型预测结果。监督学习的训练集要包括输入和预期输出,预期输出由人手动通过标签进行标注,也就是“监督”。
监督学习算法分为两大类——回归分析、分类。处理离散型数值时,选择分类算法;处理连续性数值,则选择回归算法。
回归分析任务(Regression Analysis)
回归是一种统计学的数据分析方法,目的在于了解两个或多个变量间是否相关、相关强度,并建立数学模型进行预测。回归任务包括线性回归、多项式回归、岭回归等。
举例说明,数据集二维平面上的一系列点,训练得到数学模型Y=f(X),则函数Y即为数据的标签,对于测试集内的数据,通过模型运算即可得到标签Y。
分类学习(Classification)
输入:一组已标注的训练数据,标签为这些数据所属的类别(2个或多个)
输出:根据训练集数据,训练出合适模型参数,学习出一个适合这些数据与对应分类的分类器,使用这个分类器即可对未知的数据进行类别判断。
一般来说,我们要训练一个机器学习模型前,首先要有一定量的已标注的数据,为了评估训练模型的学习能力,数据集通常会分为两个部分,训练集和测试集。训练集(training set)是用来训练模型的已标注数据(随机抽选约70%),剩下的已标注数据作为测试集,用来评估模型的好坏。通常先隐藏标签,把测试集数据传给训练好的模型进行分类,将分类的结果与真实标签对比即可。
那么,如何评价分类模型的成果呢?召回率(Recall)+准确率(Precision)。
下面这张图,相信很多人看到过。解释一下,矩形区域是样本,有标注为正类和负类两种数据,圆形区域为预测为正类的区域,显然绿色区域是预测正确的,简称TP;红色区域预测错误,简称FP;圆形外的区域即为预测为负类的数据,FN和TN也同理。
精确率,又称查准率,是针对预测结果而言,表示预测为正的样本中有多少是预测正确的。
精确率= TP/(TP+FP)
召回率,又称查全率,是针对全部样本而言,表示样本中的正类有多少是预测正确的。
召回率= TP/(TP+FN)
(注意:预测为正类和预测正确容易混淆)
理想情况下。希望模型精确率和召回率均越高越好,但某些情况下这两个数值时有矛盾的。
因此实际还会需要参考一些其他的指标:F值(F-Measure)、ROC、AUC。感兴趣的可以去查阅一下。点击跳转
监督学习常用算法:K-近邻算法(KNN,分类数据最简单最有效的算法)、朴素贝叶斯算法(基于概率论的分类法)、支持向量机(SVM)、决策树、人工神经网络(ANN)
(2)无监督学习(Unsupervised Learning)
与监督学习相比,无监督学习最大的特点是训练样本是没有标签的(或者有着相同的标签),机器需要自己发现数据集内在的结构性知识。无监督学习中常见的应用是聚类和降维,此外还有异常检测和自编码网络(AutoEncoder)。
聚类(Clustering)
聚类指面对大量未标注的数据,根据其内在“相关性”把数据分为几个不同的类别,目标是使类别内的相关性大,类别间的相关性小。度量其“相关性”常见的几种标准:欧氏距离(空间中两点的距离)、曼哈顿距离、马氏距离、夹角余弦。
衡量聚类算法优劣的标准(摘自知乎清华大学数据科学研究院):
1)处理大的数据集的能力;
2)处理任意形状,包括有间隙的嵌套的数据的能力;
3)算法处理的结果与数据输入的顺序是否相关,也就是说算法是否独立于数据输入顺序;
4)处理数据噪声的能力;
5)是否需要预先知道聚类个数,是否需要用户给出领域知识;
6)算法处理有很多属性数据的能力,也就是对数据维数是否敏感。
无监督学习或者聚类算法有着广泛的应用,它可以用于组织大型计算机集群(识别适合协同工作的机器)、社交网络的分析(自动给出朋友分组)、市场分割(把顾客划分到不同的细分市场)、天文数据分析等等。
聚类算法有很多种,层次式聚类方法、划分式聚类方法(K-means)、基于密度、基于网络等等,关于具体实现,这里不赘述。推荐一个python第三方库sklearn,里面包含了多种聚类算法的实现。
降维(DimensionReduction)
大家可能听过一个名词——维数灾难(Curse of Dimensionality),即在涉及到向量的计算的问题中,随着维数的增加,计算量会呈指数倍增长。在机器学习中,一些多维信号的处理,若直接用于识别的计算,计算量极大。如图像的处理,每个像素就是一个维度,直接计算难度极大,因此需要对数据进行降维处理。
上图所示的降维算法,像LDA是属于监督学习的范畴,PCA、MDS等属于非监督学习,其中PCA(主成分分析)应该是最著名的一个降维算法了。
降维和聚类并不是独立分开的,对大量的数据进行聚类时,第一步常常是进行降维,然后进行后续的步骤。此外为了数据的可视化,常常也需要降维操作。
异常检测(Anomaly Detection)
异常检测主要用于无监督学习,用于发现可能不应该属于一个已定义的组中的数据。(实际上,监督的异常检测和半监督的异常检测也是有的,可以看下这篇文章:点击跳转)
常用异常检测算法类型:基于模型的统计学方法、基于邻近度的离群点检测、基于密度的离群点检测、基于聚类的技术。
异常检测主要的难点或挑战(参考文章):
1)难以定义一个涵盖所有正常行为的规则
2)某些异常行为为了不被发现常常表现得和正常行为很像
3)在许多领域正常行为也是不断变化的,现在的正常行为不代表以后也是正常的
4)用于训练的标记数据的可用性是一个重要因素
5)数据异常难以检测和区分
异常检测这部分我没有仔细去了解,先留下两篇文章供参考:
生成对抗网络(Generative Adversarial Networks)
大概16年7月份的时候,一款国外的app火便了全世界——Prisma。Prisma可以按照你提供的图片内容和指定的风格,生成一副指定风格的照片,其背后的技术就是GAN。
GAN是无监督中最有前景的发展之一,目前多应用在图像生成领域,关于它的应用前景,可参考这个知乎问题:生成式对抗网络GAN有哪些最新的发展
(3)半监督学习(Semi-supervised Learning)
半监督学习,顾名思义就是在监督学习和无监督学习之间的领域,其目标是解决监督学习中未标注数据和无监督学习中已标注数据的使用问题,使数据最大化被利用。
前面说到在监督学习中,需要大量带人工标注的数据,无标注的数据是不可用的。但是在很多实际问题中,只有少量数据是带标签的,对剩余的数据进行标注往往成本太高。不过未标注和已标注的数据都是从同样的数据源独立分布采样而来,可以首先对数据做一个假设,聚类假设或流形假设。
聚类假设(Cluster Assumption)
聚类假设是指处在相同聚类中的示例有较大的可能拥有相同的标记。根据该假设,决策边界就应该尽量通过数据较为稀疏的地方,从而避免把稠密的聚类中的数据点分到决策边界两侧。在这一假设下,大量未标记示例的作用就是帮助探明示例空间中数据分布的稠密和稀疏区域,从而指导学习算法对利用有标记示例学习到的决策边界进行调整,使其尽量通过数据分布的稀疏区域。
流形假设(Manifold Assumption)
流形假设是指处于一个很小的局部邻域内的示例具有相似的性质,因此,其标记也应该相似。这一假设反映了决策函数的局部平滑性。和聚类假设着眼整体特性不同,流形假设主要考虑模型的局部特性。在该假设下,大量未标记示例的作用就是让数据空间变得更加稠密,从而有助于更加准确地刻画局部区域的特性,使得决策函数能够更好地进行数据拟合
相关阅读:浅谈流行假设
(4)强化学习(Reinforcement Learning)
从Alpha Go到Alpha Zero,其核心就是深度学习和强化学习,强化学习在控制和游戏领域应用十分广泛。
强化学习就是程序或智能体(agent)通过与环境不断地进行交互学习一 个从环境到动作的映射,学习的目标就是使累计回报最大化。(关于智能Agent的描述,强烈推荐阅读《人工智能:一种现代方法》第三版,后续我也会总结一篇文章)
监督学习可以学习从输入到输出之间的一个映射,学习数据之间的结构关系,非监督学习学习的是从输入到输出的模式。强化学习同样是学习从输入到输出的映射,不同的是强化学习模型输出的是奖励函数(reward function),判断这个行为是优是劣。需要注意的是,奖励函数是一种强化信号,强化信号是对机器行为的好坏的一种评价,而不是告诉强化学习系统如何去产生正确的动作。
基本原理:如果Agent的某个行为策略导致环境正的奖赏(强化信号),那么Agent以后产生这个行为策略的趋势便会加强。Agent的目标是在每个离散状态发现最优策略以使期望的折扣奖赏和最大。
常用算法:马尔可夫决策过程(Markov Decision Process) 、蒙特卡洛强化学习、Q-learning算法
更多内容可以阅读这篇文章:一文了解强化学习
(5)深度学习(Deep Learning)
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知机是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
深度学习的几个基本概念:激活函数、卷积、pooling、dropout、BP神经网络、CNN、RNN、LSTM、前馈神经网络、正则化、最大似然估计和贝叶斯统计、过拟合、KNN和SVM
关于深度学习如CNN和RNN,这里先不详细描述,后续会结合具体的应用技术再详细介绍,如人脸识别中CNN的应用。
感谢阅读,文中不严谨或疏漏之处还请见谅,欢迎讨论。
有共同兴趣的可以加我的微信(ID:Bernando2014)或者关注我的简书主页:蒲公英
转载请注明文章来源,本文首次发布于简书-蒲公英。