以技术为主要驱动力的人工智能时代,人工智能产品经理一定需要学习人工智能相关技术。本文笔者将与大家讲述机器学习的相关知识。
作为人工智能产品经理,你不一定需要拥有研究生和博士学历,但是你需要了解一定的技术基本概念,了解各种技术的优点缺点及其技术边界。
就像你会骑自行车,但不必要自己造出一辆自行车,但是你还是需要知道自行车的基本运动原理,比如链条传动。
本文作者将主要介绍:机器学习是什么?
掌握机器学习,对后续的神经网络的理解将会更加容易。
理解机器学习没有必要从这些复杂拗口的方式入手,从一个简单易懂的概念去理解,也许会更事半功倍。笔者一直认为“机器学习是一种数据分析的方法”。
随着互联网的发展,数据量越来越多,而如何利用数据变现成为了企业最头疼的问题。
其实,未经处理的原始数据其实是没有太大使用价值的,有价值的数据是通过正确的分析技术,获得更丰富的数据认知、更明确的场景洞察和更精准的数据画像,能够帮助决策,这时数据的意义才凸显出来。而机器学习作用就是针对庞大的数据进行分析,挖掘其意义和价值的。
如图,数据分析可分为如下四类:
现状描述:根据现有数据,描述现实世界的现状。
异常诊断:根据现有数据发现其中的异常,并且可以了解出现异常的原因是什么。
未来预测:以时间为维度,利用历史数据查看数据的变化趋势,,预测未来发生的概率。
行为规范:考虑如何改变现状或未来的数据来满足对未来的预期。
机器学习能做的也正是这四件事,机器学习可以通过对数据的学习描述现实世界,并洞察世界,并对未来世界的演化进行预测。
一、 传统软件和机器学习的逻辑差异
互联网时代,产品经理的工作是针对现有业务进行分析,并根据该业务过程设计出合理的系统处理逻辑,开发工程师根据设计好业务处理逻辑进行产品实现。
所以,传统软件从输入到输出过程的运算是经过设计的、固定的、明确的。如图所示,工程师的作用是设计过程,并让数据按照设计好的过程进行处理。
人工智能产品与互联网产品或传统软件产品不同,人工智能产品是根据已有数据自动化构建逻辑结构。人工智能产品通过机器学习算法反复从数据中进行学习,不需要告诉计算机业务逻辑,人工智能算法就可以找到隐含在其中的规律和意义。
人工智能系统则是将训练数据(输入数据+结果数据)放入人工智能算法中,得出一个模型,如图所示,这个模型替代了由产品经理或需求分析师设计的软件逻辑结构。
机器学习与传统软件方式的差异是非常大的,机器学习颠覆了原有的程序思路。
传统的程序思路是人对数据已经有了分析,寻找到规律,通过输入数据+规律验证,得到最终结果;而机器学习无需人对数据本身的分析和判断,而是将分析和判断的工作全部交给了机器,输入训练数据后,机器根据算法找到隐含在数据中的规律,并可以将这些规律进行实际的应用。
根据训练的方式不同,机器学习共有四大学习模式,分别是:有监督学习、无监督学习、半监督学习和强化学习。
这四种学习方式的根本区别在于对于数据内容不同,训练模式不同。
监督学习:通过有标签的数据进行训练,得到一个模型,通过该模型对未知数据进行处理。
无监督学习:事先没有任何训练数据样本,而是通过算法对数据进行分析建模,找到其中的规律。
半监督学习:半监督学习训练中使用的数据,只有一部分是标记过的,而大部分是没有标记的。
强化学习:强化学习也是使用未标记的数据,但是可以通过某种方法知道你是离正确答案越来越近还是越来越远。
监督学习非常好理解,是按照人类制定的规范,通过机器学习不断训练以便于在这个规范下达到最优解,而为什么会出现非监督学习呢?未经训练而进行自动化的建模会不会走了歪路?
举个简单的例子,就像有人对音乐一窍不通,但是通过多听,不用太长时间,就可以分清楚古典、现代、爵士各个派别。同样的,我们把不同时代,大量的、不同类型的音乐都交给机器,机器可以根据音频中高中低音的运用、节奏中从中也找到音乐的特点,并完成分类,而无需我们提前告诉机器哪个音乐是什么类型。
机器学习可以解决的问题很多,但归纳来讲可以分为:分类、回归、聚类、降维等几种,如图4-4所示。
在解决这些问题的时候,有很多算法,常见的有监督学习算法,如支持向量机、K-近邻算法、决策树、朴素贝叶斯、逻辑回归、线性回归、神经网络等。而像聚类、EM算法等都属于无监督学习。各类算法的分类及应用领域如表所示。
分类(classification):给定一个样本特征,我们要预测其对应的标记值,如果属性值是离散的,那么这就是一个分类问题。
回归(classification):给定一个样本特征,我们要预测其对应的标记值,如果属性值是连续的,那么这就是一个回归问题。
聚类(clustering):给定一组样本特征,我们没有对应的标记值,而是想发掘这组样本在空间的分布,比如分析哪些样本离得近,哪些样本离得远,那么这就是一个聚类问题。
降维(dimensionality reduction):给定一组样本特征,如果需要用维数低的子空间来表示原来高维的特征空间,那么这就是降维问题。
做为产品经理,笔者建议要对机器学习的学习模式有深入了解,并且了解各类学习模式主要用来做什么就可以了,也只有对这些内容有了解,才可以与工程师之间形成有效沟通。
1. 有监督学习
有监督学习是使用带标签的历史数据进行训练,得出模型,然后输入新的数据,并根据模型得出解决方案。
如图所示,有监督学习算法使用标记的数据集来生成模型,然后将此模型与新数据一起使用来验证模型的准确性,或者使用实时数据将该模型应用于生产环境。
有监督学习需要有大量数据作为训练数据,而如果手中有数据的时候,怎么划分训练数据和测试数据是比较头疼的一件事。如果训练数据太少,则模型可能不准确,而如果将太多的数据放在训练上,则验证数据可能会因为噪点太多而影响验证。
一般情况下,建议训练数据与测试数据采用6:4至8:2之间的比例是相对合适的。
1)有监督学习的过程:
通过用一个实例来说明一下有监督学习的过程,我们要做的功能是用户通过上传一张照片,系统识别这张照片是不是你本人。而你上传的照片可能是全身照,也可能是半身照,或者照片中只有一个眼睛的特写。
第一步、数据的生成和分类:首先要搜集足够多的关于“你”的照片,全身、半身、正面、侧面,只要有你的影像都存在一个组内,这一组叫做训练集,用来进行训练。
另外再准备一组照片,这类照片只有一部分有你的影像,另外一部分则是别人的照片。这一部分叫做验证集,验证集是用来检验训练好的算法模型能否认出你。验证集作为输入,得到一些输出,照片有你输出为1,没有你输出则为0。
第二步、训练:通过神经网络进行训练时,训练集中的每一幅图像都会作为神经网络的输入,经过神经网络中每一层的神经元运算,进行特征提取,当计算完所有的神经元时,会得到最右边的输出,是1还是0。
第三步、验证:至此,第一组中的数据已经全部用完。接下来我们会用第二组数据验证训练得到的模型的准确率。在这个过程中涉及到超参优化、选择激活函数等。
第四步、封装应用:一旦数据验证的指标达到预期设定的指标后,模型就训练好了。可以将该模型封装为接口,集成到软件中。软件通过界面与用户交互,当用户把照片上传后,软件会自动调用该接口完成计算,并将结果返回给软件程序界面。
2)一些经典的有监督学习算法:
作为人工智能产品经理不一定要会设计算法,不一定要去具体实现算法,但一定要懂得算法的内容、特点、算法能达到的目标。以下部分将介绍两个有监督学习算法,分别是SVM和朴素贝叶斯分类器,产品经理可选择性阅读。
SVM(支持向量机):
SVM是一种非常流行的有监督学习模型,可用于分类或者回归,SVM可以有效的解决小样本、非线性以及高纬模式识别的问题。所以,SVM的应用非常广泛。我们先来假设一个二维空间里有不同的图形,如图所示:
C1和C2是空间里的两个类别,C1是圆柱形,C2区域分布的正方体,而中间的可以用一条斜线进行区分,斜线的斜率为W。该斜线就是分类函数,分类函数可以将两个样本完全分开,如果一个线性函数可以将样本完全分开,那么数据一般被称为线性可分,否则叫做非线性可分。
分类函数在一维空间里,是一个点,在二维空间里是一条直线,在三维空间里则是一个平面,当然还有更高维度或者无限维的分类函数,所以分类函数还有一个统称叫做超平面。
聪明人自然会发现,在上图的斜线其实是可以左右挪动的,如下图所示:
SVM的目的就是寻找到一个超平面,可以使得样本分成两类,并且分类的间隔最大,这就是SVM的基本理论模型。
当然,如果世界上的物体分散都是这么均匀并且有规则,很容易就能算出来结果,可是现实世界可并不是这样的,现实世界往往是这如图的情况,圆柱形和正方形是没有规则的分散在这个平面中。
这种图形想通过一个简单函数分类,几乎是不可能的事情。
于是科学家们提出了另外一个概念“核函数”。意思是说可以将样本从原始空间,映射到一个更高维度的空间中,通过在高纬度空间中的映像划分,最终完成线性划分。
第一步:将二维空间升维为三维空间,如下图所示。
第二步:把二维的样本数据投射到在三维空间中,如下图所示。
第三步:在三维空间中进行切割,如下图所示。
第四步:再将切割后的超平面,映射到一个二维平面中,如下图所示。
如此就完成了新的核函数。因为非线性的空间实在太复杂,你又不可能马上知道哪个核函数最适合将非线性空间转换为线性空间,所以SVMS通常会实施多个核函数来识别最佳选项。
2. 朴素贝叶斯分类器
如果你的领导交给你一项分析任务,中等程度数据量,变量也较少,而且希望你尽快的完成数据预测,这时选择朴素贝叶斯是一个较好途径。
先来看一下什么是贝叶斯定律:
换个表达形式会更容易理解:
如果我们要通过性别和体重来区分产品经理和程序员,这就是在求P(程序员|性别,体重)和P(产品经理|性别,体重)。
根据贝叶斯定律看:
P(职业|性别,体重)=P(性别|职业)P(职业)/P(体重)
除贝叶斯算法外,还有朴素贝叶斯,朴素贝叶斯是在贝叶斯算法的基础上做了一个基本假设而来的算法。
朴素贝叶斯假设了所有的数据的属性都是独立的,他们之间互不影响,也正是因为有这个假设,可以把很多复杂的问题进行简单化。而且朴素贝叶斯也非常适合预测未知数据集,做一些数据预测。
上面的例子中,根据朴素贝叶斯可以认为性别和体重没有关系,也就是P(体重|职业,性别)=P(体重|职业)。
P(性别,体重|职业)=P(性别|职业)×P(体重|职业)
朴素贝叶斯的优点是:
朴素贝叶斯简单,容易理解;
朴素贝叶斯性能高,计算速度快;
朴素贝叶斯擅长数据预测;
朴素贝叶斯对于训练数据的要求量非常少;
正是由于朴素贝叶斯的优点,所以在实时预测、多类预测中经常能看到朴素贝叶斯的身影。不仅如此,由于文本分类的变量类型多,类型之间也相对独立,所以朴素贝叶斯在文本分类中得到了广泛的应用,诸如垃圾邮件识别、网站内容识别、新闻推荐等。
三、无监督学习
针对没有任何标记过的数据,通过算法学习数据的分布情况或者数据之间的关系称为无监督学习。
无监督学习的目标是利用算法探索隐藏在数据中的某种结构及特性,而这些结构和特性是人无法直接了解或人力无法做到的。由于数据没有任何标签,所以无监督学习的结果是否正确也很难评估。但是如果通过无监督学习对数据的分组,你可以了解到原始数据中无法预见的隐含信息。
如果把学校里的学习的学生称为有监督学习的话,那么没有上学的孩子也能通过自身的观察和对世界的理解进行学习,只不过他们学到的东西是随性的、随意的,但最终学习成什么样子也是也无法预测的。
人工智能也是如此,2017年曾有个新闻:美国科学家制造的两个人工智能机器人,通过自学习创造了只有他们两个能看得懂的语言。并且,这两个机器人自己已经开始用只有他们自己能够懂得的语言在进行交流,引起了人们极大恐慌,最后以销毁而告终。
无监督学习在很多应用场景中都有实际的例子做验证。
如果你开了一家制衣厂,生产衣服,但如何确定衣服的S、M、L码?如果你同时拥有中国人的全部身高值,则可以通过无监督学习完成。
正是由于没有人为标记,所以截止目前为止,无监督学习还达不到监督学习的准确性和有效性,所以无监督学习在人工智能界一直被一些科学家们所诟病。但最近几年,无监督学习又重新火热起来,有些科学家甚至称无监督学习才是人工智能的未来。
无监督学习中目前最热门的一个算法是Ian Goodfellow提出的生成对抗网络——即GAN。
GAN原理是:将两个神经网络相连,一个神经网络称之为“生成器”,负责生成旨在尝试欺骗另一个神经网络的数据,而另外的网络称为“鉴别器”。通过两个网络的对抗学习,实现了一些令人惊奇的结果,例如可以从文本字符串或手绘草图生成如照片版逼真图片的人工智能技术。
1. 判断指标
在人工智能的评价指标通常有三种:准确率(Precision)、召回率(Recall)和精准率(Accuracy),在无监督学习中这三个指标非常重要,通常用这三个指标对无监督学习进行评价。
准确率:对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。简而言之,准确率就是查的准。就像警察抓小偷,抓到的每个人是不是都是小偷,抓到的10个人,有9个是小偷那么准确率就是90%。
召回率:对给定的测试数据集,分类器正确的找到所有正确分类样本数。简而言之,召回率就是查的全。就像警察抓小偷,有100个人,共有20个小偷,抓到了其中10个,则召回率为50%。
精准率:表示识别对的比例。即好人被识别成好人,坏人被识别成坏人,就像警察抓小偷,有100个人,共有20个小偷,抓了10个,但其中有1个不是小偷,则精准率为90%。
准确率、召回率、精准率是衡量人工智能算法的关键指标,这三个指标越高,表示算法的适应性越好。
四、半监督学习
有监督学习是当我们有能力对数据进行标注,并针对标记信息进行分类和回归时使用。
无监督的训练是不包含标记信息进行训练,通常用来做聚类。但有些时候我们手中的数据往往是只有一部分有标记但是并不是全部标记,那么这时就可以使用半监督学习来完成。
笔者近些年在做的“全国政府网站监控项目”就是一个很好的实例:
该项目监测了全国9万多个政府网站,24亿个各级政府网站的页面,如图4-13所示,项目要做的是在这些网页中发现其页面是否存在异常,用户对那些页面更感兴趣。
而多达几十亿的页面,要进行所有页面全部标注是不可能的,有标注的页面只有几万个。如果直接将无标记的样本集丢掉,使用传统的有监督学习,不但可惜,而且会因为训练样本不足,而导致数据失真,影响机器学习效果,如何有效利用无标记数据成为需要探讨的内容。
最简单的办法就是,对未标记的页面打标签,但随之而来的巨大的人力耗费,如果一个人对一个页面打标签的时间是0.5分钟,要对24亿页面打标签,需要一个人365天无休息的打标签,最终5400多年才能完成。
项目组采用了半监督学习的方法完成该工作,先使用有标记的样本数据集训练出一个学习器,然后基于该学习器对未标记的样本进行预测。
对于预测的结果样本进行分类,对于不确定性高的样本以及分类置信度低的样本进行二次打标签,最后再将数据扩充至训练集,重新的对学习器进行训练,最终生成结果。
显然,半监督学习本质上仍然属于监督学习的一种,对于训练数据的样本进行了半自动化的处理,但是与完全的有监督学习相比,其学习成本大大降低。对于有监督学习和无监督学习的各类算法,如果数据集符合半监督学习的特征,则都可以采用半监督学习的方法。
五、强化学习
用标准的定义来描述强化学习的话,强化学习的目标是学习一个最优策略(Policy),可以让本体(Agent)在特定环境(Environment)中,根据当前的状态(State),做出行动(Action),从而获得最大回报。强化学习经常会与监督学习和非监督学习混淆。
强化学习把学习看作试探评价过程,如图所示,Agent选择一个动作用于环境,环境接受该动作后状态发生变化,同时产生一个强化的信号,并将这个强化信号反馈给Agent。Agent根据强化信号和环境当前状态再选择下一个动作,选择的原则是使受到正强化的概率增大。
选择的动作不仅影响立即强化值,而且影响环境下一时刻的状态及最终的强化值。
监督学习就像学生在考试,而旁边站着一名指导教师,当学生每做完一道题,立刻老师就会告诉你做错了或者做对了。
但现实世界是复杂的,很多实际问题是没有标准答案的,只有那种回答是更合适的。强化学习的过程,就像就像我们训练动物一样,每次动物做了某件事后,需要训练师及时给予反馈,而这种好与坏的反馈会影响到它下次行为方式。
人工智能的强化学习就是这样,通过一次次的强化的过程使得,使得机器知道那种行为能够得到最好的回报。正是由于强化学习这种实时反馈的特性,所以强化学习普遍会运用在机器人领域。
有监督学习和强化学习都会通过算法得到从输入数据到输出结果的一个关系映射,有监督式学习给出的是输入和输出之间的关系,可以告诉算法什么样的输入对应着什么样的输出。
而强化学习则给出的是反馈信息,用来判断这个行为是好是坏。当然,强化学习给出的是反馈信息,所以整个过程是有延时的,有些时候需要经过多个过程后,才知道前面某个节点的选择是否正确。