前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(图解)人工智能的黄金年代:机器学习

(图解)人工智能的黄金年代:机器学习

作者头像
GPUS Lady
发布2018-04-02 11:55:58
9920
发布2018-04-02 11:55:58
举报
文章被收录于专栏:GPUS开发者GPUS开发者

Lady我在整理一些关于Deep learning方面的学习资料,看到好文章总是忍不住想跟各位分享。这次将系统地介绍深度学习的前世今生,文章很有趣,但也很长,将分几天发布给各位,请耐心看哟!

从Google Alphago到Chatbot聊天机器人、智慧理专、精准医疗、机器翻译… 近年来时而听到人工智能、机器学习的相关消息,一夕之间这项技术攻占了各大媒体版面。不但Google、Facebook、微软、百度、IBM等巨头纷纷进军该领域,NVIDIA执行长黄仁勋亦宣称将由显示卡转型成人工智慧运算公司,强调人工智能浪潮的来临。

机器学习是人工智能的一个分支。然而什么是人工智能?什么是机器学习?要解决的又是什么问题呢?今天就让我们来聊聊,未来十年内将会真正改变你我生活的新世代技术。

人工智能: 如何以计算机解决问题

人类自从发明计算机以来,便始终渴望着能让计算机拥有类似人类的智慧。一提到人工智能,很容易令人想到电影与科幻小说中常见会聊天、会煮饭还会突然间想毁灭人类取而代之的机器人形象。

究竟什么算作「智慧」?若计算机能针对我们的问题准确地作回答、或学会下棋和泡咖啡,如此就能确定计算机拥有智慧吗?要怎么确定它真正拥有意识、理解情感?

当年AI技术尚未真正发展起来,哲学家与人文学家已就这个问题做过许多广泛的讨论。根据这个问题,美国哲学家约翰.瑟尔(John Searle)便提出了「强人工智慧」(Strong A.I.)和「弱人工智能」(Weak A.I.) 的分类,主张两种应区别开来。

强人工智慧受到电影与科幻小说的影响,强调计算机将能拥有自觉意识、性格、情感、知觉、社交等人类的特征。另一方面,弱人工智能主张机器只能模拟人类具有思维的行为表现,而不是真正懂得思考。他们认为机器仅能模拟人类,并不具意识、也不理解动作本身的意义。简单来说,若有一只鹦鹉被训练到能回答人类所有的问题,并不代表鹦鹉本身了解问题本身与答案的意义。

在著名的图灵测试中,如果一台机器与人类对话、而不被辨别出己方的机器身分时,便能宣称该机器拥有智慧。这可以算是人工智能的一种检测方式,然而,强人工智慧拥护者可能会反驳──表现出「智慧」的行为不代表它真正拥有智慧、了解对话的意义。

当然弱人工智能拥护者也可以反驳──我们永远不可能知道另一个人的想法,比如我在和一个人对话时,并不知道对方是否和我进行一样的思考方式,因此我们不能否定这台机器存在智慧的可能。是否有点类似庄子和惠子的子非鱼安知鱼之乐的对话呢?

有兴趣的读者能再就上述问题持续深入讨论思考。不过在计算机科学界,直至目前为止尚不须深入纠结在这个问题层面。计算机科学家在意的是──我们能用人工智慧解决什么样的问题。

1950年代的计算机科学方起步,从科学家到一般大众都对于计算机充满无尽的想象,不但从大导演弗里茨·朗的大都会到作家艾西莫夫的机器人三大法则,主流科学界也都预估约莫20到30年左右的时间便可以成功创造出与人类智能同样高度的人工智能。

然而,人工智能的研究很快便面临了瓶颈──机器程序是由人类撰写出来的,当人类不知道一个问题的解答时,机器同样不能解决人类无法回答的问题。另一个问题是,当时计算机的计算速度尚未提升、储存空间也小、数据量更不足够,硬件环境上的困境使早期人工智能只能解一些代数题和数学证明,难以在实务上有所应用。

在1970到1980年末时,一些知名研发计划如纽厄尔和西蒙的「通用问题求解器」和日本政府领头的「第五代计算机系统」达不到预期效果时,人工智能开始被人们视为一场现代炼金术,企业与政府纷纷撤资、研究基金被削减、多个计划被停止。此时迎来了人工智能的第一场寒冬期。

虽然此时人工智能的研究迈入了瓶颈,但是计算机硬件却是以指数型的方式进步。1965年Intel创始人摩尔观察到半导体芯片上的晶体管每一年都能翻一倍;到了 1975 年,这个速度调整成每两年增加一倍,计算机的运算能力与储存能力同时跟着摩尔定律高速增涨。如今,计算机的运算能力约为30年前的100万倍。

早期的人工智能研究聚焦在逻辑推论的方法,专注于模仿人类推理过程的思考模式。由于需要百分之百确定的事实配合,因此在实务上不容易使用。

直到关于人工智能的研究方向越来越多元,涵盖了包括统计学、机率论、逼近论、博弈论等多门领域的学科;而硬件储存成本下降、运算能力增强,加上海量数据,今日的人工智能已能从资料中自行学习出规律,这便是时下资料科学的最热门技术「机器学习」。

机器学习: 从资料中自行学会技能

机器学习是实现人工智能的其中一种方式。传统上实现人工智能的方式需要人们将规则嵌入到系统,机器学习(Machine Learning) 则是让计算机能够自行从历史资料中学会一套技能、并能逐步完善精进该项技能。

什么技能呢?举例来说,辨识猫咪的技能。

人类是如何学会辨识一只猫的?我们不是熟背所有猫的详细特征:「尖耳朵、四肢脚、有胡子、体型、毛色、…」从短毛猫、摺耳猫、短毛猫、暹罗猫…等猫咪的外型特征都不一样,甚至要将老虎、花豹等类似猫但不是猫的照片排除出来。

一般只要父母带小孩看看猫、或猫咪的图片,只要看到就告诉孩子这是猫,当小孩把老虎看成猫时进行纠正,久而久之,我们就自然地「学」会辨识一只猫了。虽然不是原本看过的猫咪,我们仍然知道这是一只猫。

从前让计算机辨识出猫时,需要工程师将所有猫的特征以穷举法的方式、详细输入所有猫的可能条件,比如猫有圆脸、胡子、肉肉的身体、尖耳朵和一条长尾巴;然而凡事总有例外,若我们在照片中遇到了一只仰躺只露出肚子的猫?正在奔跑炸毛的猫?尖脸短尾猫?也因此误判的机率很高。

美国普林斯顿大学李飞飞与李凯教授在2007年合作开启了一个名为「ImageNet」的项目,他们下载了数以百万计的照片、处理并分门别类标示好,供机器从图像资料中进行学习。如今,ImageNet已是全世界最大的图像识别数据库,光是「猫」便有超过六万两千种不同外观和姿势的猫咪,同时有家猫也有野猫、横跨不同的种类。每年,史丹佛大学都会举办ImageNet图像识别竞赛,参加者包括了Google、微软、百度等大型企业,除了在比赛中争夺图像识别宝座、同时测试自家系统的效能与极限。如今的机器从海量资料中学习后,能辨别出的不仅仅只有猫了,从路灯、吊桥、奔跑的人、狗狗… 计算机终于学会如何「看」这个世界。

究竟机器是怎么从资料中学会技能的呢?为了了解机器学习是如何从资料中学习,获得辨识或预测新进资料的技能,首先来为大家介绍一个经典的入门主题:「分类」(Classification)。

到深山里游玩却不小心落难、肚子飢饿难耐时总会忍不住想要采路边的野菇吃。然而有一些菇类看似朴素却可能有毒、有些菇类色彩艳丽却能食用;如何让计算机帮助我们判别有毒的菇种、在野外成功存活下来呢?

为了训练机器,我们先搜集了有毒菌菇和无毒菌菇的资料样本、作为训练资料(Training Data)。从训练资料中撷取出资料的特征(Features) 帮助我们判读出目标,比如菌伞形状、颜色,菌炳形状、颜色,菌环数量,分布地带,气味… 再告诉计算机每一个菌菇所对应到的答案──把有毒菌菇的资料标签(Label)为1、无毒的菌菇标签为0,由此让计算机知道哪些菇有毒、哪些菇没毒。

随着训练的资料量够大时,当一笔新资料输入计算机中,比如特征具备白色钟形菌伞、分布在腐木上、杏仁味的香菇,计算机即会判断这朵香菇有没有毒、有毒或没毒的机率有多高了。 (由于笔者非菇类学家,此仅为举例,请勿深究本文中如何判别有毒菇类的真实性。)

除此之外,我们也可从过去的天气资料中、找出有下雨的天气特征,并在进来一个新的天气情境资料时能预测下雨的机率,以进行气象预测。甚至是垃圾邮件过滤 (判断要不要把邮件丢到垃圾桶)、股市涨跌 (判断特定情境下这档股票会涨会跌)、医疗病征判断 (判断有了这些症状后,患者有得病没得病)… 各产业领域皆可应用机器学习技术。

训练机器学习模型时,技术上有哪些重要的部分呢?

资料清整 (Data Cleaning):

机器既然得从海量资料中挖掘出规律,「干净」的数据在分析时便非常地关键。在分析的一开始时,得处理资料的格式不一致、缺失值、无效值等异常状况,并视资料分布状态,决定如何填入资料,或移除栏位,确保不把错误和偏差的资料带入到资料分析的过程中去。

特征萃取 (Feature Extraction)与特征选择 (Feature Selection)

特征萃取 (Feature Extraction)是从资料中挖出可以用的特征,比如每个会员的性别、年龄、消费金额等;再把特征量化、如性别可以变成0或1,如此以来每个会员都可以变成一个多维度的矢量。

经过特整萃取后,特征选择 (Feature Selection)根据机器学习模型学习的结果,去看什么样的特称是比较重要的。若是要分析潜在客户的话,那么该客户的消费频率、历年消费金额…等可能都是比较重要的特征,而性别和年龄的影响可能便不会那么显著。藉由逐步测试、或使用算法筛选特征,找出最恰当的特征组合让学习的效果最好。

模型选取

资料科学家会根据所要解决的问题、拥有的资料类型和过适化等情况进行衡量评估,选择性能合适的机器学习模型。由于机器学习模型的数量与方法非常多,包括了神经网络、随机森林、SVM、决策树、集群….。以下仅将机器学习模型依据几种常见的问题类别进行介绍。

在先前的段落中,我们介绍了预先把有毒菇类的资料标签 (Label)为1、没有毒的菇类资料标签为0,让机器学会辨识有毒菇的方法,事实上叫做「监督式学习」,除此之外还有‍「非监督式学习」:

监督式学习 (Supervised Learning): 在训练的过程中告诉机器答案,也就是「有标签」的资料,比如给机器各看了1000张苹果和橘子的照片后,询问机器新的一张照片中是苹果还是橘子。

非监督式学习 (Unsupervised Learning): 训练资料没有标准答案、不需要事先以人力输入标签,故机器在学习时并不知道其分类结果是否正确。训练时仅须对机器提供输入范例,它会自动从这些范例中找出潜在的规则。

简单来说,若输入资料有标签,即为监督式学习;资料没标签、让机器自行摸索出资料规律的则为非监督式学习,如集群 (Clustering)算法。

非监督式学习本身没有标签(Label)的特点使其难以得到如监督式一样近乎完美的结果。就像两个学生一起准备考试,一个人做的练习题都有答案(有标签)、另一个人的练习题则都没有答案,想当然尔正式考试时,第一个学生容易考的比第二个人好。

另外一个问题在于不知道特征 (Feature)的重要性──比如说算法「集群」(Clustering),给机器一个1000名的顾客资料表 (含性别、生日、职业、教育…),机器会自动爬梳出隐含的资料规律将这1000人分群。其主要目的在于找出比较相似的资料聚集在一起,形成集群(Cluster);而相似性的依据是采用「距离」,相对距离愈近、相似程度越高,被归类至同一群组。

但显然一定会有一些特征 (Feature)其实不是很重要,但因为分布比较可以拉开距离,所以机器在分群的时候会倾向用它来分,导致需要以人工再自行调整这些东西,不然一定会做出莫名其妙的结果。这边需要澄清的事情是,并不是要筛选掉特征 (Feature),每一个特征 (Feature)都有它的意义,我们要做的只是要降低它的重要性。

矛盾的是,人工很难订出各特征 (Feature)的重要性或是距离的意义等,若人工有办法定义和介入,为什么还会需要集群这个算法呢?故由于分群时没有足够的线索知道各个特征 (Feature)的重要性,因此很容易对某些分布的特征 (Feature)产生偏误、造成无意义的分群结果。

非监督式学习在应用上不若监督式学习广泛,但非监督式学习在资料探勘初期时,可被用来探索庞大的客户群中存在哪些自然群体,而这些群体可能又能转而提示我们其他的资料分析方法。

除了集群外,常见的非监督式学习尚包括关联规则探索(Association Rule Discovery)、或称共生分群(co-occurrence grouping),找出资料发生的关联性。集群是依据资料的分布、找到资料间的相似性;而关联规则则是以资料一起出现的情况、来考量资料的相似性,例如在分析超市的购物纪录时,我们可能会发现「买月饼的人也会买烤肉架」。

针对这样的发现该如何采取行动需要营销人员再深入挖掘原因,不过基本上已暗示了可举办的促销活动或优惠套餐组合。商品购买方面的关联规则称为购物篮分析,除此之外关联规则如今还被应用在异常检测上,比如有人突然入侵你的Email账号时。

这时你可能会想,难道监督式学习和非监督式学习就是彼此泾渭分明?在实际应用中,将大量的资料一一进行标签是即为耗费人工的事情,最常见的状况是──少部分资料有标签,而大部分资料没有标签、且数量远大于有标签的资料。毕竟要标签资料费时费力、搜集无标签的资料更快速方便。这时候我们可以采用:

半监督学习 (Semi-supervised learning):介于监督学习与非监督学习之间。

以下是半监督学习的简单示意。在将资料分群的过程当中,先使用有标签过的资料先切出一条分界线,再利用剩下无标签资料的整体分布,调整出两大类别的新分界。如此不但具有非监督式学习高自动化的优点,又能降低标签资料的成本。

前面我们提到监督式学习在面对一个指定问题时,可以明确告诉你正确的答案是什么,比如今天会下雨或不会下雨、或是这封信该不该丢到你的垃圾邮件匣。

但遇到某些需要连续做决策的情况时,答案就不是一步就能解决了。比如下棋需要根据对手的攻势随时改变策略、或是开车会遇到的不同路况,为了达到赢棋或者通过山路的最终目的,必须因应环境的变动、随之改变原有的作法。这时候我们就需要利用:

增强学习 (reinforcement learning):透过观察环境而行动,并会随时根据新进来的资料逐步修正、以获得最大利益。

强化学习的一个经典理论「马可夫决策过程」(Markov Decision Process)有一个中心思想,叫「明天的世界只和今天有关、和昨天无关了。」(The future is independent of the past given the present.)

在马可夫决策过程中,机器会进行一系列的动作;而每做一个动作、环境都会跟着发生变化。若环境的变化是离目标更接近、我们就会给予一个正向反馈(Positive Reward),比如当机器投篮时越来越接近篮框;若离目标更远、则给予负向反馈(Negative Reward),比如赛车时机器越开越偏离跑道。虽然我们并没有给予机器标签资料,告诉它所采取的哪一步是正确、哪一步是错误的,但根据反馈的好坏,机器会自行逐步修正、最终得到正确的结果。

原则上无需考虑以前的状态,当前状态便已传达出、所有能让机器算出下一步最佳行动的信息;简单来说就是每一个事件只受到前一个事件的影响。打败世界棋王的Google AlphaGo便是马可夫假设一个成功的应用。

增强学习的机器学习方法当然还不仅止于此,多拉杆吃角子老虎机(Multi-armed Bandit) 亦是增强学习的知名理论。Bandit是一个简化过的增强学习方法,最重要的目标只有探索(Explore)和采集(Exploit)的平衡。这是什么意思呢?

假设一个国家中有十家餐厅,每家餐厅提供的餐点份量相当不均 (有些可能会偷工减料)。某天该国突然涌入很多难民、因为餐券补助有限的关系,总共只能吃一百次餐厅,希望最后能喂饱最多的人。

显然如果要吃到最多的东西,我们必须尽快找到「提供最大份量」的餐厅然后一直吃它就好了 (其他黑心餐厅就不吃了)。如果把每家都吃一遍才确定份量最大的餐厅,会浪费掉太多餐券;然而若只吃了两三家、就直接选比较高的一家一直吃,我们可能会漏掉真正提供最大份量的那一家餐厅。

解决Bandit问题的目标在于──有限的精力中,一部分精力会分配去探索未知的可能(explore)、一部分则利用已知最好的策略不断采集(exploit),算法会透过不断新增的环境数据进行调整,在两者间寻求平衡、将利益最大化。

这样的应用有哪些呢?当一个网站能展示的信息量有限、却又不知道使用者喜欢的东西是什么、该优先显示哪些内容,才能有最高的点击率时,我们可以透过增强学习随时进行优化、最快达到客制化。无论是Google广告、Facebook将你可能会最感兴趣的好友PO文排序在上方、Amazon呈现你最有兴趣的商品,或是网站上线后的A/B Test,都可以看到增强学习的踪影。

今天,我们回顾了人工智能和机器学习的由来,并介绍机器学习的基本名词 (特征、标签) 与常见的机器学习类别 (监督、非监督、半监督与增强学习)。

机器学习是相当实务的一门学科,资料科学家的最终目标是找到最好解决问题的方法,会依据资料量、资料类型与运算效能等现实情况,而选择采用不同的模型。

下篇,我们的时间轴将来到1980年代,看那时正要大放异彩的类神经网络(Artificial Neural Network),是如何在风口前被浅层机器学习(Shallowing Learning)所逆转。如此急转而下的经过,让我们下回揭晓。

文章來源:股感知識庫 | 圖片來源:Joseph Wang

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档