找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

算法工程师看着小朋友在父母的陪伴下学走路,发现了机器学习的真谛...

admin 2019-3-11 05:48 231人围观 C++相关

来源于微信公众号:中国杭州人工智能小镇

冬日暖阳下,算法工程师小算和小疑坐在公园的长凳上,看着小朋友在父母的陪伴下学走路。



小算



看!那些孩子的蹒跚学步,可能蕴含着机器学习的真谛哦。

你是说,机器向小孩子学习?





小疑



小算



这里更准确地说,是机器像小孩子那样学习。

那么,机器究竟学到了人类的什么呢?





小疑





机器学习的两种常见类型



小算



分几种情况吧。如果你是想让机器(也就是电脑)代替人类快速地做出判断,你得先给机器一些例子,例如:长得这个样子的动物是狗,另外那种样子的是猫。然后机器根据某种算法(毫无疑问,这些算法的基础是数学),通过一番学习,找到某个公式,或者一些规则,存好在那里,下次给机器一个新图片,机器就可以用这些公式或规则来判断究竟是什么了。



这个公式或者规则,不是由人预先写好在机器里面的,所谓的指令或者程序吗?





小疑



小算



不是。那样就是退化成人类自己先学习,总结出来某种规律,再交给机器,让机器完全照章办事 —— 那就不是机器学习了。

那样不也挺好的吗?反正最终都是让机器来做判断嘛。





小疑



小算



好是好,但是不够优秀啊。人类很聪明,善于从现象中总结规律,上面那种“人肉学习”,在一些简单情况下,的确很有效。民间流传的一些气象谚语,“天上钩钩云,地下雨淋淋”,就是靠人工总结出来的规律。但是如果数据很多、很复杂,光靠人脑是处理不过来的,就必须借助于机器学习了。例如,要判断当前某个用户在手机端最愿意看到具体哪几个广告而不那么反感,需要考虑成千上万种因素(用户的年龄、性别、所处地域、以往浏览习惯、广告的类别、广告中的用语和图片特征、广告出现的场景和时段等),人脑记不住那么多,也看不透那么多。

这么说来,机器还是很能助力的。不过,如果我们恶作剧一把,给机器一些错误的例子,机器会不会发觉?





小疑



小算



机器本身还没有那么精明,你如果在它学习期间,指鹿为马,那么它以后看到鹿,就会告诉你这是马的。



你教它什么,它就学会什么


哈哈,机器也会被愚弄。





小疑



小算



对。你可能听说过,现在有人把图片中的像素稍加修改,甚至哪怕只修改一个像素点,就可能使得识别结果完全错误。有人为了攻击机器学习系统,按照这个思路,故意喂给机器一些错误信息,让机器以后做不出正确的判断。

曾经有报道,谷歌的照片识别软件将黑人图片错误地识别成大猩猩,引起轩然大波,又是怎么回事呢?





小疑



(因为这张图的识别结果,google被骂惨了)



小算



可能还是机器在学习期间用的照片不够多,或者质量不够好,导致没有学得足够好。

看来,让机器学会准确判断,也不容易。





小疑



小算



上面这种机器学习,是比较典型的一种,叫做监督学习,或者叫做有导师学习,意思是说,给机器的例子中,都必须预先由人工注明每个例子是属于哪一类(狗或猫),然后让机器去学。另外还有一种机器学习,即所谓的无监督学习,则不需要标明每个例子的具体类属。

哦,这个怎么学?能学到什么呢?





小疑



小算



还是能够学到对象的相似性,或者区别性的。举一个例子,我们看月球或者火星表面的照片,会很容易看到,上面有很多环形山,虽然大小不一,但形状是相似的。这就是一种规律了。但如果其中某张照片中突然显示出一张人脸(下图),与前面那些规律的差异很大,就会引起我们的关注。





小算



又如,在人迹罕至的雪地,本来四处都是冰雪覆盖的树木(规律),但其中出现一行扎眼的脚印或者车辙(异常),我们也会注意到的。机器借助于算法,不需要人的指点(即对物体的类属做出标记),可以发现数据中的规律和异常。机器对于做这种类型的数值计算,还是很擅长的。

这也很有用,甚至可能在人类的学习过程中,首先就是学会先找到相似的东西,以及做区分。我想象,刚出生不久的婴儿,见到这个世界,大概也是先区分人和物,再区分男人、女人的吧。





小疑



小算



很可能就是这样的。不过,在婴儿的成长过程中,还有一种奇妙的、非常值得我们关注的学习方式。



第三种机器学习:强化学习

哦,那是什么呢?





小疑



小算



你观察婴儿学习步行,就会看到,一段时间里,小家伙先只会四处乱爬,慢慢地调整自己的姿态,运用自己的手脚,偶然可以站立,走一、两步,又摔倒了。再尝试,很多次以后,掌握了必要的技巧,就能走路了。

是啊,都这样。





小疑



小算



这个过程中,父母并没有马上对孩子的每一个动作做出纠正,或者指出动作是对还是错(事实上孩子可能还听不懂父母的话),也就是说,不像第一种机器学习那样对每个例子给出标注,而是孩子自己不断试错,根据得到的效果(能走,或者还不能),来反过来判断,刚才哪些动作可能不对,下次尝试时应该怎样做出调整。

成年人学习骑自行车,学习溜冰的过程,跟这个也差不多吧?





小疑



小算



是的。还可以举出很多类似的例子,比如说,学习下棋,新手总是输,下的次数多了,逐渐意识到各种落子选项对最终输赢的作用,以后就能在每一步依据自己的计划、对手的可能应对,来做出更合适的决策。

这种学习,是学会做一件事情,与前面说的两种(学会判断类别、学会找到相似性),不太一样吧。





小疑



小算



对,这种学习叫做“强化学习”,是机器学习的另一种。它学到的是做某件事情的一种策略,以后按照这个策略行事,当碰到某种情况,就知道应该做出什么动作。

“强化”在这里是什么意思?





小疑



小算



就是对那些有助于最终目标实现的正面动作予以奖励,对反面动作予以惩罚。而且对一个动作的好坏不一定马上做出反馈,而是可能滞后,就好比下棋,要最后才知道输赢。

我突然想到,这些与巴普洛夫提出的“条件反射”有什么关系。





小疑



小算



早期的强化学习正是受到心理学和经典条件反射的启发,想到了对操作者的积极动作给予正面反馈。

在学校里,老师们经常纠正我们的错误,对我们的试卷评分,也算是一种反馈吧。





小疑



小算



是呀。强化学习正是借鉴人类或动物的学习过程,发展起来的一种机器自动学习的算法。最近20年,它的应用也越来越广了。



强化学习有什么用处?

强化学习用在哪些地方了,你能举一些例子吗?





小疑



小算



先看一个简单的实验吧。国外曾经有人教机器人学会煎饼,事先并没有教它具体怎么做,而只是赋予它一套强化学习算法,让它自己学。一开始时,它老是出错,有时把煎饼抛到了地上,还需要人类帮忙捡起来,重新放回锅里。随着不断的尝试,出错越来越少,最后到了大概50次的时候,就已经完美无缺地掌握了这个技能。



嗯,这个好理解,与前面的例子也差不多吧,都是学会做一件事情。不过这个例子还是偏简单,也没有太多的实用性吧。





小疑



小算



更复杂的例子,相信你已经听说过,2016年AlphaGo打败了人类围棋冠军,它的后续版本更是战胜了世界排名第一的柯洁。后来OpenAI的机器人在Dota2 中击败了人类玩家。但你可能不清楚,这些系统的核心算法之一就是强化学习。

这个的确很震撼,也说明了强化学习的巨大威力。





小疑



小算



其它一些有实际意义的应用还有:机器人、工业自动化、医疗临床保健、对话系统、个性化广告、自动驾驶车辆或无人机,股票交易系统,等等。

嗯,这些也能理解,归根结底,还是让机器学会做事的方法和策略。





小疑



小算



再介绍一个比较简单的强化学习例子吧,虽然简单,但其中的方法却是可以应用到很多方面的。先问你一下,你见过赌场的老虎机吗?(下图)



见过,那个全凭运气吧,偶然能赢一笔钱。





小疑



小算



现在问题是这样:假设由于设计缺陷,一排老虎机里面,各台机器的赢钱概率并不一样,有些概率更高一点,只需要玩更少的轮数,就赢钱了。一名赌徒事先并不知道它们的概率,但希望在次数有限的一系列操作中,赢得最多的钱。

得想办法找到那个最容易赢钱的机器。这只能一个个试吧。





小疑



小算



对,但需要注意,如果赌徒比较保守,探索精神不强,玩了其中很少的几台机器之后,就很快认定其中一台的赢钱概率高,以后就只在那台机器上玩,那么就可能错过赢钱概率更高的机器,最后总收益不会太高。但是如果探索精神太强,虽然已经基本可以认定其中某台的概率最高,但还在漫无边际地尝试其它更多台机器,也会导致最终赢钱不是很多。如何取得某种最佳平衡,刚好是强化学习算法能够帮忙的。

这套方法,除了赌钱,有什么实际用途呢?





小疑



小算



一个应用场景是:医学临床实验中,如果需要尽快判断两种药物中,哪一种对某种疾病的治疗效果更好,但又不希望在太多病人身上做实验对比(否则在实验过程中,低效的那种药物已经使用过多,对病人造成了较多的损害),这时就可以用得着上面的方法了。

嗯,这个的确有用。





小疑



小算



其它的应用场景有:如何将一笔资金分配在一批事先不知其风险收益的项目中,使得最终收益最大;在计算机通信网络中,如何实现自适应路由,降低数据传输在网络中的延迟。等等。

嗯,发挥一下想象力,应该还能想到更多可以应用的地方。





小疑



强化学习的局限性



小算



因为强化学习在多个领域的成功应用,于是有人甚至认为,把它与深度学习结合起来,即所谓的“深度强化学习”,就可以实现通用人工智能,即使得机器像人类一样聪明。

说到“深度学习”,它究竟是什么意思?我经常听说这个词。





小疑



小算



深度学习,又叫深度神经网络,是模仿人脑神经网络的一种数学模型,主要用于计算机对事物的分类。它的内部结构可以很复杂,可能有多达上千层的神经单元的连接,所以才有了“深度”这个词。它已经在语音识别、图像识别等领域,取得了很好的结果,因此最近几年非常火。

强化学习和深度学习的结合,真能实现人类水平的智能吗?





小疑



小算



这是一个有争议的问题。赞成者显然受到电脑围棋胜利的鼓舞,想象其它问题也能一样顺利地解决。在他们的眼里,智能可以简单地分解成“感知”和“行动”,只要这两部分处理好,机器就能像人一样,解决各种不同领域的问题。反对者则认为,这显然低估了通用人工智能的复杂性。

反对者怎么说?





小疑



小算



主要有这么几点:首先,强化学习需要知道对每个动作的一个奖励值(虽然可能滞后才能得知),但现实世界中可能并没有这样的奖励,即使我们试图定义一个,也会带来很大的任意性。其次,强化学习是需要试错很多轮的,这在真实世界中有时不允许,就如你开车最好不要去尝试冲破栏杆掉下悬崖一样。再者,强化学习不能把以前的知识结合进来,只能从头学起,而人类学习时,则能够自如地把常识和从别处获得的经验利用起来,因此可以学得很快。



(你真的需要一只巴普洛夫的狗吗?)

嗯,大概明白了。那么,除了不能搞掂通用人工智能,强化学习还有什么不足吗?





小疑



小算



其实问题还很多。有人分析后发现,深度强化学习虽然可以在许多 Atari 游戏中达到超乎常人的游戏水平,但远非所有游戏。一般来说,它只能在不需要推理和记忆的条件反射类的游戏中取得好的表现。

不过,能打败围棋世界冠军,甚至在Dota中能赢,也算是够厉害了。





小疑



小算



但是现实世界远比围棋这样的简单游戏复杂得多。Dota游戏的确远比围棋更难,但是仍然可以被视为一个通过易用的接口控制的简单模拟游戏,它完全消除了对于感知和运动控制的需求。这样一来,与我们每天在现实世界中通过学习去解决问题的真实复杂度相比,这样的游戏终究还是比较简单的。

我们如果要求不那么高,只要求能够解决前面聊到的应用需求,那么强化学习毕竟还是一种有效的方法吧?





小疑



小算



是,但是在一些应用场合,它并不是唯一选项,甚至没有优势。比如说,Google Brain 就发现,为了找到一个图片分类的最佳模型结构,进化算法(模拟生物界进化的一种优化算法)比强化学习花的时间更少。DeepMind 的深度强化学习玩Atari游戏,达到精通水平需要1天,而OpenAI用进化策略(进化算法的一种),只需1小时。

进化算法,是一种新的机器学习的类型吗?它与前面聊到的三种机器学习(监督学习、无监督学习、强化学习),有什么区别?





小疑



小算



前面聊到的三种类型,是指机器在三种不同的数据条件下的学习,即,有人教机器什么是正确或错误的,没人教机器什么是正确或错误的,有人教机器但不一定是马上教。进化算法则是机器在学习时采用的一种方法。就像大自然经过千百万年“适者生存、不适者淘汰”,最后留下的都是精华,而机器可以模仿这个过程,一样地找到最优解或最优方案。进化算法可以用于前面三种数据情况下的学习,也能学会做事的策略,但与那三种机器学习,原理上不好直接比较,但效果上可以比较。

有多种选项,终究还是好的。





小疑



小算



还需要注意,最近两年,深度强化学习实在是太火了,也有不少泡沫和水分。有些发表的论文,不提供重要参数设置和工程解决方案的细节,很多算法都难以复现,即无法通过自己的计算来得到别人文章中的结果。有人甚至点名指出,某作者涉嫌在实验中修改模拟器的物理模型,却在论文中避而不谈。

还有这样的坑?





小疑



小算



这样的事情一多,就招致了大家对深度强化学习的实际能力的强烈怀疑。所以在使用别人提出的算法时,必须留心了。

最后一个问题:强化学习,以及前面提到的监督学习、无监督学习,这三种机器学习,好像都是机器模仿人类,亦步亦趋地学会做某个事情。有没有可能,让机器自己完全创新,做出人类都还不会的某种事情呢?





小疑



小算



这个……强化学习恐怕不能直接帮上忙。要不,等将来的通用人工智能出现?

那有没有机器做出事情的效果,超出了人类的意料,看起来也挺创新的样子?





小疑



小算



这就相对容易一点,例如,我们前面提到的进化计算,有人就用来设计过一款天线(下图),其形状非常古怪,非人类所能想象,但是其辐射性能(如电压驻波比)几乎是最优的。



(2006年美国宇航局用进化算法设计得到的 ST5 飞船上的天线)

那前面三种机器学习,就不能给我们出人意料的结果吗?





小疑



小算



强化学习也能急中生智,想出特别的招数(回想一下,最初AlphaGo发明的一些围棋新走法,是如何让包括聂棋圣在内的人类高手吃惊的)。一般来讲,许多机器学习,包括目前最牛皮哄哄的深度学习,基本上是对我们已知的东西建模,而进化计算则因为其特有的探索性,对于面临的问题,可能创造出人类构想不出来的解决方案,某些情况下与强化学习有得一拼。

时而强化学习很有用,时而进化计算更厉害,好像没有一个固定的说法,也不知道究竟哪个最牛逼。





小疑



小算



这是算法的烦恼,也是算法的魅力所在。面对强敌时,武当拳和八卦掌,哪个更厉害呢?


来源:腾讯研究院










----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:中国杭州人工智能小镇,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

yafeilinux和他的朋友们微信公众号二维码

微信公众号

专注于Qt嵌入式Linux开发等。扫一扫立即关注。

Qt开源社区官方QQ群二维码

QQ交流群

欢迎加入QQ群大家庭,一起讨论学习!

我有话说......