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