绪论
人工智能并非新的术语,这个概念由来已久,大约从 80 年代初开始,计算机科学家们开始设计可以学习和模仿人类行为的算法。人工智能的发展曲折向前,伴随着数据量的上涨、计算力的提升,机器学习的火热,以及深度学习的爆发,人工智能迎来快速发展,迅速席卷全球。
人工智能的研究领域也在不断扩大,已经涵盖专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、自然语言处理、推荐系统等多个领域。可以毫不夸张地说,人工智能技术正在像 100 多年前的电力一样,即将改变每个行业。每个企业都不希望在这次浪潮中掉队,如何才能利用 AI 帮助自己的企业进行转型呢?AI 领域著名学者吴恩达在前不久针对该问题,发表了《AI 转型指南》。
机器学习,作为实现人工智能的一种方法,对于人工智能的发展起着十分重要的作用。而深度学习,作为机器学习中的一种技术,更是摧枯拉朽地实现了各种任务,极大推动了各个领域朝着人工智能的方向迈进。下面这张图,非常形象地概况了三者之间的关系。
总之,人工智能、机器学习、深度学习已经深入到企业生产和个人生活的方方面面。能够熟练运用机器学习解决生活生产当中的应用,掌握人工智能技术,对于企业和个人的长远发展变得至关重要。
机器学习算法
机器学习 (Machine Learning, ML) 是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机器学习算法根据解决的任务类型,可以分为分类算法、回归算法、聚类算法等,深度学习作为机器学习中比较特殊的一类算法,是神经网络算法的延伸和扩展。
机器学习大致可以分为监督学习和非监督学习。监督式学习,由已有的数据包括输入输出,训练模型函数;然后把新的输入数据带入模型函数,预测数据输出。函数的输出如果是一个连续的值,则称为回归分析,如果输出是离散数值,则称作分类。与监督学习相对应的是无监督学习,此时数据没有标注信息,聚类是典型的无监督学习。
阿里云机器学习平台 PAI(Platform of Artificial Intelligence),为传统机器学习提供上百种算法和大规模分布式计算的服务;为深度学习客户提供单机多卡、多机多卡的高性价比资源服务,支持最新的深度学习开源框架;帮助开发者和企业客户弹性扩缩计算资源,轻松实现在线预测服务。
PAI-Studio 封装常用机器学习算法及丰富的可视化组件,用户无需代码基础,通过拖拉拽即可训练模型。
如下图示,在阿里云机器学习平台开通账号之后,进入管理控制台—可视化建模,根据自己的需要新建项目,进入机器学习即可进入到 PAI-Studio 进行使用。
PAI-Studio 上通过拖拽算法组件,构建实验,进行模型训练,训练好的模型可以一键部署到 PAI-EAS。机器学习模型在线部署功能可以将您的模型一键部署为 Restful API,您可以通过 HTTP 请求的方式进行调用(使用说明文档)。
PAI-DSW(Data science workshop)是专门为算法开发者准备的云端深度学习开发环境,用户可以登录 DSW 进行代码的开发并运行工作。目前 DSW 内置了 PAI 团队深度优化过的 Tensorflow 框架,同时也可以通过打开 console 对话窗口自行安装需要的第三方库。
1.1 分类算法分类算法应用广泛,比如新闻内容分类、商品类目预测、文本情感分析、邮件垃圾过滤、图像分类、异常检测等。常见的分类算法有 k 近邻、朴素贝叶斯、决策树、SVM、利用 adaboost 增强弱分类器等。
k 近邻算法 (kNN),简单地说,是采用测量不同特征值之间距离的方法进行分类。kNN 的工作原理是:存在一个样本集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻) 的分类标签。一般来说,我们只选择样本数据集中前 k 个最相似的数据,这就是 k - 近邻算法中 k 的出处。最后,选择 k 个最相似数据中出现次数最多的分类,作为新数据的分类。
决策树,比较容易理解,以下图为例,根据某个人的特征 (年龄、是否学生、信用情况) 来进行分类,判断是否可以放贷款给他。生成的决策树如下图示。决策树思想,实际上就是寻找最纯净的划分方法,主要通过决策树的构造和剪枝。
尽管有剪枝等等方法,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的缺点。根据训练数据, 构造 m 个 CART 决策树,这 m 个 CART 形成随机森林,通过投票表决结果,决定数据属于哪一类(投票机制有一票否决制、少数服从多数、加权多数),这就是随机森林的方法。
朴素贝叶斯,其中的朴素一词的来源就是假设各特征之间相互独立。这一假设使得朴素贝叶斯算法变得简单,但有时会牺牲一定的分类准确率。贝叶斯公式定义如下:
公式的右边是总结历史,公式的左边是预知未来,如果把 Y 看出类别,X 看出特征,P(Yk|X)就是在已知特征 X 的情况下求 Yk 类别的概率,而对 P(Yk|X)的计算又全部转化到类别 Yk 的特征分布上来。朴素贝叶斯算法逻辑简单,容易实现,计算过程中的时间空间开销也比较小。朴素贝叶斯假设属性之间相互独立,这种假设在实际过程中往往是不成立的。在属性之间相关性越大,分类误差也就越大。
支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM 是用来解决二分类问题的有监督学习算法,在引入了核方法之后 SVM 也可以用来解决非线性问题。一般 SVM 有下面三种:(1)硬间隔支持向量机(线性可分支持向量机):当训练数据线性可分时,可通过硬间隔最大化学得一个线性可分支持向量机。(2)软间隔支持向量机:当训练数据近似线性可分时,可通过软间隔最大化学得一个线性支持向量机。(3)非线性支持向量机:当训练数据线性不可分时,可通过核方法以及软间隔最大化学得一个非线性支持向量机。
AdaBoost,每种分类算法都有自己的优缺点,我们把分类效果不是很好的分类器叫做弱分类器,分类效果好的分类器叫做强分类器。Adaboost 算法基本原理就是将多个弱分类器(弱分类器一般选用单层决策树)进行合理的结合,使其成为一个强分类器。Adaboost 采用迭代的思想,每次迭代只训练一个弱分类器,训练好的弱分类器将参与下一次迭代的使用。也就是说,在第 N 次迭代中,一共就有 N 个弱分类器,其中 N - 1 个是以前训练好的,其各种参数都不再改变,本次训练第 N 个分类器。其中弱分类器的关系是第 N 个弱分类器更可能分对前 N - 1 个弱分类器没分对的数据,最终分类输出要看这 N 个分类器的综合效果。
上面依次对常用的分类算法进行了介绍,PAI-Studio 中也提供了相应的算法组件,如果想要使用,可以直接拖拽对应组件,配置相关参数即可。
1.2 回归问题回归与分类的不同,就在于其目标变量是连续数值型。回归分析根据已知数据训练出模型(即回归方程),对新的数据预测时,只需要代入到模型,计算出预测数值。回归几乎可以应用到任何事情,比如预测商品价格、股价趋势预测、预测明日气温、预测某种情况发生概率(可根据概率大小转化为分类问题)、预测广告点击率进行排序等。比较常用的回归方法主要有线性回归和逻辑回归。
线性回归比较简单,描述了自变量和因变量之间的简单线性关系,我们的目标是通过特征的组合来学习到要预测函数式(线性式),我们用 X1,X2..Xn 去描述 feature 里面的分量,我们可以做出一个估计函数:
,θ 在这儿称为参数,在这的意思是调整 feature 中每个分量的影响力。如果我们令 X0 = 1,就可以用向量的方式来表示了:
,我们也需要一个机制去评估我们 θ 是否比较好,所以说需要对我们做出的 h 函数进行评估,一般这个函数称为损失函数(loss function)或者错误函数 (error function),描述 h 函数不好的程度,在下面,我们称这个函数为 J 函数,我们要做的就是调整 θ 以使得 J(θ) 取得最小值。如下所示:
其中,最常用的方法是梯度下降法。
逻辑回归,logistic 回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,即先把特征线性求和,然后使用函数 g(z)将最为假设函数来预测。g(z)可以将连续值映射到 0 和 1 上。logistic 回归的假设函数如下,线性回归假设函数只是
logistic 回归还可以用来分类 0 / 1 问题,也就是预测结果属于 0 或者 1 的二值分类问题。
此外,常用的回归方法还有对于线性回归做了约束变化的岭回归,非线性的树回归等。
当然,PAI-Studio 中也提供了这些算法组件。
1.3 聚类算法聚类算法是比较典型的非监督学习。聚类算法的应用也是十分广泛的,在新闻热门话题聚类、图像分割、用户画像分析聚类进行个性化推荐、基因工程等多个领域都有很好的应用。聚类算法直观地理解,就是将相似的对象归到同一个簇中,将不相似的对象归到不同簇,簇内的对象越相似,聚类的效果越好。常见的聚类算法有 K -means、K-medoids、DBSCAN、层次聚类、谱聚类等。
K-means 聚类是发现给定数据集的 k 个簇,簇个数 k 是用户提前设定的超参数,每一个簇通过其质心,即簇中所有点的中心来描述。K-means 的工作流程是这样的:1) 随机确定 k 个初始点作为质心。2)将数据集中的每个点分配到一个簇中,具体就是为每个点找距其最近的质心,并将其分配给该质心所对应的簇。3)更新每个簇的质心,即更新为该簇所有点的平均值。4)重复步骤 2 和 3,直至收敛,即满足迭代次数或者质心基本不再变化。K-medoids 算法是 K -means 算法的变型,其中最主要的不同在于以下两点:第 1 步骤中 Kmedoids 选取的质心必须是某些样本点的值,而不是任意值;更新质心的时候需要先计算 cluster 内所有样本点到其中一个样本点的曼哈顿距离和(绝对误差),然后选出使 cluster 绝对误差最小的样本点作为质心。
K-medoids 聚类可以理解为 K -means 聚类的变种,其中 K -means 的初始簇中心点是随机的,K-medoids 的初始中心点必须是样本中的点;K-means 在迭代过程中重新计算质心是计算的平均值,而 K -medoids 则是先计算所有样本点到其中一个样本点的曼哈顿距离之和(绝对误差),然后选择使绝对误差最小的样本点作为质心。此外 K -medoids 聚类的时间复杂度更高,对于大规模的数据性能更好,最后聚类的簇中心点也一定是样本点中的一个。
DBSCAN 聚类,英文全写为 Density-based spatial clustering of applications with noise,是一种基于数据密度的无监督聚类算法。在聚类空间中的一定区域内,用给定的半径阈值和数量阈值,筛选出核心点及核心点的领域点,通过密度可达、密度相连的定义,实现数据点的聚类。在 2014 年,DBSCAN 在数据挖掘会议 KDD 上获颁发了 Test of Time award,该奖项是颁发给一些于理论及实际层面均获得持续性的关注的算法。和传统的 K -Means 算法相比,DBSCAN 最大的不同就是不需要输入类别数 k,当然它最大的优势是可以发现任意形状的聚类簇,而不是像 K -Means,一般仅仅使用于凸的样本集聚类。同时它在聚类的同时还可以找出异常点,这点和 BIRCH 算法类似。一般来说,如果数据集是稠密的,并且数据集不是凸的,那么用 DBSCAN 会比 K -Means 聚类效果好很多。如果数据集不是稠密的,则不推荐用 DBSCAN 来聚类。
此外,常用的聚类算法还有 EM 聚类、谱聚类等,其中 PAI-Studio 提供了常用的聚类算法组件。
1.4 深度学习神经网络是深度学习的基础,深度学习就是包含多个隐藏层 (hidden layer) 的深度神经网络。神经网络的基本组成单元叫做神经元 (neuron),感知器(perceptron) 是一种早期的神经元结构,在上个世纪五六十年代就被提出来了,如下图示,通过下图可以理解神经元的基本结构和原理。
神经网络是多个神经元连接起来构成,如下图示。
深度神经网络比浅层神经网络有更多结构上的优势,能够进行更多层次的抽象,在 NLP、图像、语音等领域都有广泛的应用。深度学习是一个框架,每个领域每个具体场景都可以设计相应的网络结构来解决相应的问题。深度学习的算法也非常多,比如 CNN、RNN、LSTM 等都属于深度学习比较常用的算法框架。最近几年,深度学习发展迅速,各种学习框架层出不穷,其中有很多比较前沿也比较火爆的算法提出,比如 GAN(生成对抗网络)、Bert 模型等。
在 PAI 上想实现深度学习的解决方案,有两种方法,一种是利用 PAI-Studio 提供的框架 Tensorflow 和 Caffee,在该组件上传入相应的 python 源码并配置相应输入输出和参数,即可利用阿里云背后支撑的资源进行深度学习的训练,如下图。
另外一种深度学习解决方案是利用 PAI-DSW(Data science workshop),该方案是专门为算法开发者提供的云端深度学习开发环境,详情及使用可参考使用文档。
pai 上的深度学习解决方案
1.5 小结 PAI(Platform of Artificial Intelligence: http://pai.alibaba-inc.com)作为阿里巴巴集团的机器学习算法平台,可以支持客户结合各自业务场景打造专业、高效的智能解决方案。
实战案例
结合上一节介绍,PAI 为机器学习提供了高效的解决方案,其中主要可分为 PAI-Studio、PAI-EAS、PAI-DSW 三个部分,PAI-Studio 提供了可视化的机器学习组件,简单拖拽及配置即可构造机器学习解决方案,生成的算法模型可在 PAI-EAS 部署,提供在线预测服务。PAI-DSW 则为开发者提供了整套的云端深度学习开发环境,算法开发者可以非常方便的在该环境进行开发实战。
接下来让我们通过具体的实战案例,来进一步了解机器学习、PAI、实际案例是如何完美结合的。
2.1 文章一:商品价格预测某收藏爱好者,欲购买某知名品牌的积木套装。为了了解现在的市场行情,他收集了关于该品牌积木的生成日期,是否为全新的,积木数量,原始价格等特征和已交易的价格。他想要根据这些数据,来预估现在市场上正在出售的积木价格,才可以选择合适的价格购入,但他发现经凭借经验来预测这些价格,往往不够准确,而且繁琐重复的工作相当耗费精力。
利用 PAI 进行商品价格预测,文章链接:https://yq.aliyun.com/article…
2.2 文章二:谁最具魅力单身王女士经常逛某相亲网站,前前后后浏览了 1000 个男生,并给他们打标了,不喜欢、一般喜欢、很喜欢三个类别。该相亲网站的工程师,决定开发一个算法推荐模型,给王女士依次推荐很喜欢,一般喜欢的男生。并可以将这个算法模型应用到网站,吸引更多的单身青年注册使用,并可以找到自己喜欢的男 / 女朋友。
文章链接:https://yq.aliyun.com/article…
2.3 文章三:手把手实现商品推荐在生活中,我们经常给朋友推荐一些自己喜欢的东西,也时常接受别人的推荐。怎么能保证推荐的电影或者美食就是朋友喜欢的呢?一般来说,你们两个人经常对同一个电影或者美食感兴趣,那么你喜欢的东西就很大程度上朋友也会比较感兴趣。在大数据的背景下,算法会帮我寻找兴趣相似的那些人,并关注他们喜欢的东西,以此来给我们推荐可能喜欢的事物。
文章链接:https://yq.aliyun.com/article…
2.4 文章四:利用 GAN 自动生成二次元头像 GAN(生成对抗网络)主要的应用是自动生成一些东西,包括图像和文本等,比如随机给一个向量作为输入,通过 GAN 的 Generator 生成一张图片,或者生成一串语句。Conditional GAN 的应用更多一些,比如数据集是一段文字和图像的数据对,通过训练,GAN 可以通过给定一段文字生成对应的图像。
如何利用 GAN 自动生成二次元头像,文章链接:https://yq.aliyun.com/article…
常见问题
阿里云机器学习平台:https://help.aliyun.com/produ…
【待补充】
原文链接本文为云栖社区原创内容,未经允许不得转载。