0
雷鋒網(wǎng) AI 科技評論按:「水可載舟,亦可覆舟」,這句老話相信我們都很熟悉,套用到機(jī)器學(xué)習(xí)上,即是帶給我們諸多便利的機(jī)器學(xué)習(xí)算法,一個(gè)不小心,將因?yàn)橐庀氩坏降睦碛蓭У轿覀儭阁@喜」。原作者對一篇論述此現(xiàn)象的論文進(jìn)行了解讀,雷鋒網(wǎng) AI 科技評論將之編譯如下。
機(jī)器學(xué)習(xí)算法與其他計(jì)算機(jī)程序存在很大的不同。在一般編程行為中,人類程序員都會(huì)告訴計(jì)算機(jī)具體做些什么。來到機(jī)器學(xué)習(xí),人類程序員只會(huì)提供問題,算法必須通過反復(fù)試驗(yàn)來搞明白如何解決它。
目前看來這套做法頗有成效——機(jī)器學(xué)習(xí)算法已廣泛用于面部識別、語言翻譯、財(cái)務(wù)建模、圖像識別及廣告投放領(lǐng)域。只要你上過網(wǎng),就可能已經(jīng)和機(jī)器學(xué)習(xí)算法產(chǎn)生過交互。
然而它并不總是運(yùn)作良好。有的時(shí)候程序員認(rèn)為自己的算法已經(jīng)設(shè)計(jì)得足夠好,可仔細(xì)觀察結(jié)果,就會(huì)發(fā)現(xiàn)它解決的是與程序員原先想要的完全不一樣的問題。舉個(gè)例子,我見過一個(gè)圖像識別算法,原該識別綿羊的它,最終卻學(xué)會(huì)識別草,且不停將空曠的綠草地標(biāo)記為含有綿羊。
一群綿羊在郁郁蔥蔥的綠色山坡上吃草
標(biāo)簽:吃草、綿羊、山、城堡、馬
當(dāng)機(jī)器學(xué)習(xí)算法以意想不到的方式成功解決問題時(shí),程序員通常會(huì)感覺,好吧是的,有時(shí)確實(shí)挺煩人,但往往都是很純粹的愉悅感。
令人感到驚喜的是,2018 年有一組研究人員據(jù)此寫了一篇引人入勝的論文——該論文收集了數(shù)十篇「引起研究人員驚訝與贊嘆」的軼事。這篇論文非常值得一讀,包括原始參考文獻(xiàn)也是,這里有我最喜歡的幾個(gè)例子。
論文鏈接:https://arxiv.org/pdf/1803.03453.pdf
扭曲規(guī)則,取得勝利!
首先,通過模擬生物來研究不同形式的運(yùn)動(dòng)是如何演化的,包括為機(jī)器人提供全新的運(yùn)動(dòng)思路,已經(jīng)是一個(gè)悠長的傳統(tǒng)。
既然可以撲騰,為何還要選擇走路?在這個(gè)例子中,模擬機(jī)器人原本應(yīng)該盡可能地快速前進(jìn),但它卻沒有演化自己的雙腿,而是選擇將自己組裝成高塔,然后摔下來。當(dāng)中有些機(jī)器人甚至學(xué)會(huì)將摔落的動(dòng)作變成翻筋斗,以增加挪騰的額外距離。
[配圖:機(jī)器人成了一座倒下的塔]
既然可以跳康康,何必學(xué)跳躍?這組模擬機(jī)器人原該演化成可跳躍的形式,可由于程序員一開始將跳躍的高度設(shè)置成最高擋塊的高度,于是(又一次犯傻)機(jī)器人在形式上變得很高。為了解決這個(gè)問題,程序員試圖將跳躍高度定義為最初為最低擋塊的高度。作為回應(yīng),機(jī)器人演化出一條細(xì)長的腿,化身可以將腿蹬至空中的康康舞機(jī)器人。
[配圖:高大的機(jī)器人將腿伸向空中,而不是跳躍]
為了「超級能源」,黑你沒商量!
勢能并非模擬機(jī)器人唯一學(xué)會(huì)利用的能源。事實(shí)證明,像現(xiàn)實(shí)生活中發(fā)生的一樣,一旦存在可使用能源,肯定會(huì)有東西演化去使用它。
作為能源的浮點(diǎn)舍入誤差:在一次模擬中,機(jī)器人習(xí)得數(shù)學(xué)中的舍入誤差規(guī)則,發(fā)現(xiàn)這可以使它們在運(yùn)動(dòng)中獲得額外的能量。于是,他們學(xué)會(huì)了快速抽動(dòng),由此產(chǎn)生大量可以利用的自由能量。當(dāng)機(jī)器人開始以驚人的速度在游泳時(shí),程序員才注意到這個(gè)問題。
與地板的碰撞中獲取能量:在另一個(gè)模擬中,一部學(xué)會(huì)碰撞檢測規(guī)則的機(jī)器人則帶來另一些問題。一旦它們設(shè)法在地板上讓自己陷入困境(首先學(xué)會(huì)操縱時(shí)間來使之成為可能),碰撞檢測系統(tǒng)會(huì)意識到機(jī)器人不應(yīng)在地板上,隨之將它們向上射擊。于是機(jī)器人學(xué)會(huì)在地板上快速振動(dòng),通過反復(fù)碰撞來產(chǎn)生額外的能量。
[圖片:機(jī)器人通過地板上的振動(dòng)來獲取前進(jìn)的能量]
「撞擊」飛行:在另一個(gè)模擬中,跳躍機(jī)器人學(xué)會(huì)利用不同的碰撞檢測 bug 來幫助自己飛行——每當(dāng)它們彼此的部件碰到一起時(shí),作力會(huì)將它們推至空中。如果這在現(xiàn)實(shí)生活中起作用,如今的商業(yè)航班將是另一番景象。
鉆「漏洞」:計(jì)算機(jī)的游戲算法非常擅長發(fā)現(xiàn)人類通常也會(huì)利用的矩陣故障來提高獲勝速度。一個(gè)玩著舊 Atari 游戲 Q * bert 的機(jī)器算法發(fā)現(xiàn)一個(gè)過去未曾發(fā)現(xiàn)的 bug,它選擇在一個(gè)級別結(jié)束時(shí)執(zhí)行一系列特定的動(dòng)作,而非直接過渡下一級,由此所有平臺(tái)將開始快速閃爍,玩家因此得以積累大量積分。
另外有一個(gè)主攻 Doom 的游戲算法同樣找到可以阻止敵人發(fā)射火球的特殊操作——但它只適用于算法的「夢幻版」Doom。有個(gè)好消息是,你可以在這里玩到該版本的游戲。
游戲鏈接:https://worldmodels.github.io
[配圖:Q * bert 玩家積累了可疑的數(shù)量積分,考慮到它并未做過太多事情]
「目標(biāo)宏大」:在一個(gè)令人毛骨悚然的例子中,有個(gè)算法原應(yīng)解決如何對試圖降落航空母艦的飛機(jī)應(yīng)用最小的作力,結(jié)果它發(fā)現(xiàn)如果應(yīng)用的是一個(gè)「大型」作力,它將溢出程序的內(nèi)存,進(jìn)而注冊成為一個(gè)非?!肝⑿ 沟淖髁Αow行員會(huì)死,但是,嘿,完美的分?jǐn)?shù)。
破壞,也是一種解決方案!
即便像列表排序算法那樣顯然是良性的東西,也可能以一種無辜卻險(xiǎn)惡的方式解決問題。
你看,它們可不是「未排序」:舉個(gè)例子,一個(gè)原本應(yīng)該學(xué)會(huì)對數(shù)字列表進(jìn)行排序的算法,竟然學(xué)會(huì)刪除列表,以便從技術(shù)層面消除「未排序」的東西。
完成 Kobayashi Maru 測試:該算法原應(yīng)最小化自身答案與正確答案之間的差距,結(jié)果它找著了存儲(chǔ)與刪除答案的位置,因此它獲得了一個(gè)完美的分?jǐn)?shù)。
在井字棋游戲中取得勝利:1997 年,一些程序員構(gòu)建了一個(gè)可以在無限大的板上彼此對抗玩井字棋游戲的算法。一名程序員決定放棄設(shè)計(jì)具體的算法策略,任由其自行發(fā)展。令人感到驚訝的是,該算法突然開始贏得所有游戲。結(jié)果證明,該算法的策略是棋子放在一個(gè)極其遠(yuǎn)的位置,因此每當(dāng)對方的計(jì)算機(jī)試圖模擬新的擴(kuò)展板時(shí),過于巨大的游戲板將導(dǎo)致其耗盡內(nèi)存并崩潰,從而輸?shù)粲螒颉?/p>
結(jié)論
當(dāng)機(jī)器學(xué)習(xí)解決問題時(shí),它所提出的解決方案可以很聰明,也可以讓人徹頭徹尾感到不可思議。
生物的進(jìn)化也是這樣運(yùn)作的——正如任何生物學(xué)家會(huì)告訴你的那樣,生物總會(huì)找到最奇怪的問題解決方案,以及最奇怪的能源來進(jìn)行開發(fā)。一個(gè)能夠證明我們未生活在計(jì)算機(jī)模擬中的最可靠跡象是——如果是,一些微生物將會(huì)學(xué)會(huì)利用它的缺陷。
因此,作為程序員,我們必須非常小心,我們的算法應(yīng)該解決我們要求它們解決的問題,而不是抄捷徑。一旦存在另一種可以更加容易解決問題的途徑,機(jī)器學(xué)習(xí)很可能會(huì)找到它。
幸運(yùn)的是,「殺死所有人類」真的很難。如果「烤一個(gè)令人難以置信的美味蛋糕」也能解決問題,并且比「殺死所有人類」更容易,那么機(jī)器學(xué)習(xí)肯定會(huì)選擇站在蛋糕那一邊。
via https://aiweirdness.com/post/172894792687/when-algorithms-surprise-us
雷鋒網(wǎng) AI 科技評論
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。