進(jìn)化是一切復(fù)雜且精妙的適應(yīng)性行為的源泉,然而這種能力并不只是自然界生物的特權(quán),再計(jì)算機(jī)環(huán)境下的人造物體也展現(xiàn)出了令人驚訝的“算法進(jìn)化過程”。于是,來自美國、英國、法國等30多個(gè)學(xué)校和機(jī)構(gòu)的研究人員們收集了幾十個(gè)令人驚訝的“機(jī)器進(jìn)化”趣聞,將其編寫成論文。研究者Janelle Shane通過閱讀選出了幾則典型案例與大家分享,以下是對(duì)其進(jìn)行的編譯。
機(jī)器學(xué)習(xí)算法不像其他計(jì)算機(jī)程序。我們通常說的“編程”是指人類程序員明確告訴計(jì)算機(jī)做什么。在機(jī)器學(xué)習(xí)中,人類程序員僅僅給與算法需要解決的問題,讓算法通過不斷試錯(cuò)找到解決方案。
這種方法帶來了不錯(cuò)的效果,機(jī)器學(xué)習(xí)算法也廣泛地用于人臉識(shí)別、外語翻譯、金融建模、圖像識(shí)別、廣告投放等領(lǐng)域。機(jī)器學(xué)習(xí)對(duì)互聯(lián)網(wǎng)的影響已經(jīng)十分廣泛了,如果你每天都接觸互聯(lián)網(wǎng),對(duì)這個(gè)詞一定不陌生。
但是,機(jī)器學(xué)習(xí)算法并不總是那么有效。有時(shí)程序員會(huì)覺得算法確實(shí)沒毛病,但是仔細(xì)檢查后發(fā)現(xiàn)算法解決的問題根本不是原本要解決的那個(gè)。例如,我之前看到一個(gè)圖像識(shí)別算法,它本應(yīng)該識(shí)別其中的“羊”,但是卻把“草地”當(dāng)做了目標(biāo)對(duì)象,認(rèn)為“空空如也的綠地”是它的“羊”。
當(dāng)機(jī)器學(xué)習(xí)算法不按照劇本解決問題時(shí),程序員們有的時(shí)候會(huì)有點(diǎn)抓狂,但是大多數(shù)時(shí)候還算順利。
所以,今年,一組來自世界各地的研究人員寫了一篇有趣的論文,他們挑選了幾十個(gè)“非常令人好奇和驚訝”的研究。這篇文章非常值得一讀,但由于文章太長,我只挑選了其中最喜歡的幾個(gè)案例。
“曲線”獲勝
我們都知道,許多研究都喜歡用模擬生物研究如何生成不同形式的運(yùn)動(dòng),或者怎樣能讓機(jī)器人生成新步態(tài)。
但是,如果你會(huì)翻滾,為啥還要用走的呢?在一個(gè)案例中,研究人員想讓模擬機(jī)器人盡可能快地移動(dòng)。但是他們并沒有給機(jī)器人配備“雙腿”,而是把它設(shè)計(jì)成一個(gè)高高的“塔”,這當(dāng)然會(huì)倒下了……但是一些機(jī)器人就從中學(xué)會(huì)了“翻滾前進(jìn)”。
沒有腿的機(jī)器人摔倒了
如果能用撐桿跳,為啥還直接跳躍?另一個(gè)模擬機(jī)器人的案例是,研究人員想讓它學(xué)會(huì)跳躍。但是程序員最初設(shè)計(jì)的跳躍高度是最高的那個(gè)模塊。所以……機(jī)器人學(xué)會(huì)了讓自己長得非常高。為了解決這個(gè)問題,程序員又將跳躍高度定義成最初最低的那個(gè)模塊。然而,機(jī)器人因此“進(jìn)化出”了一條細(xì)長的“腿”,伸向空中……
機(jī)器人用“長腿”前進(jìn),而不跳躍
黑掉矩陣,獲取資源
潛在的能量并不是這些模擬機(jī)器人學(xué)會(huì)利用的唯一能量源。在研究中我們發(fā)現(xiàn),一旦能量源可用,機(jī)器人的某個(gè)部分就會(huì)進(jìn)化去使用它。
將浮點(diǎn)舍入誤差作為能量源:在一次模擬中,機(jī)器人發(fā)現(xiàn)在計(jì)算力時(shí)的少量舍入誤差可以作為額外運(yùn)動(dòng)時(shí)的能量。由此它們學(xué)會(huì)了快速地開關(guān),以產(chǎn)生大量可免費(fèi)利用的能量。當(dāng)機(jī)器人以極快的速度游泳時(shí),程序員們注意到了這個(gè)問題。
在碰撞地板時(shí)收集能量:另一個(gè)模擬實(shí)驗(yàn)也出現(xiàn)了相似的問題,機(jī)器人學(xué)會(huì)在碰撞地板時(shí)運(yùn)用其中的數(shù)學(xué)問題。如果它們故意讓自己倒地(首先它們會(huì)學(xué)會(huì)讓自己實(shí)現(xiàn)這個(gè)動(dòng)作),那么碰撞探測器會(huì)判斷它們不應(yīng)該摔倒,然后立即將其向上彈起。于是機(jī)器人學(xué)會(huì)在地板上快速地振動(dòng),通過反復(fù)碰撞產(chǎn)生額外的能量。
機(jī)器人在地板上振動(dòng)向前行走
反彈飛行:在另一項(xiàng)實(shí)驗(yàn)中,跳躍式機(jī)器人發(fā)現(xiàn)了另一種碰撞檢測bug。通過將身體的兩部分碰撞到一起,它們可以推動(dòng)自己沖向更高的地方。如果這項(xiàng)成果得以在現(xiàn)實(shí)中實(shí)現(xiàn),那么商業(yè)航空將發(fā)生巨大變化。
發(fā)現(xiàn)雅達(dá)利游戲中的bug:計(jì)算機(jī)游戲算法非常善于發(fā)現(xiàn)矩陣故障,人類通常會(huì)用這類故障進(jìn)行高速裕興。一種用于運(yùn)行舊式雅達(dá)利游戲Q*bert的算法發(fā)現(xiàn)了一個(gè)前所未知的bug,即它可以在某個(gè)級(jí)別即將結(jié)束時(shí)執(zhí)行一系列非常具體的動(dòng)作,而不是升級(jí)到下個(gè)級(jí)別。這時(shí)所有的平臺(tái)會(huì)快速閃爍,玩家可以積累大量分?jǐn)?shù)。
Doom的算法還發(fā)現(xiàn)了一種特殊的動(dòng)作組合,可以阻止敵人發(fā)射燃燒的火球。但是它只能在算法的夢(mèng)幻版中發(fā)揮作用。如果你想玩夢(mèng)幻版,可以點(diǎn)擊這個(gè)網(wǎng)址:worldmodels.github.io
Q*bert玩家積累到了一個(gè)反常的分?jǐn)?shù),但它并沒有做什么努力
運(yùn)用浮點(diǎn)溢出使飛機(jī)降落:在另一個(gè)更加詭異的案例中,算法原本是用來計(jì)算如何給一架即將降落在航空母艦上的飛機(jī)施加一個(gè)最小的力。結(jié)果它發(fā)現(xiàn),如果是加一個(gè)很大的力,它就會(huì)使該項(xiàng)目的內(nèi)存溢出。雖然飛行員會(huì)因此喪生,但是系統(tǒng)卻得到了最完美的分?jǐn)?shù)。
破壞性地解決問題
有一些類似列表排序算法的溫和方法,也能以非常邪惡的方式解決問題。
例如,有一種算法本身是用來對(duì)數(shù)字列表排序的,但是它卻學(xué)會(huì)了刪除列表,這樣一來它在技術(shù)上就不是無序的了。
另一種算法應(yīng)該是用于縮小它自己的答案和標(biāo)準(zhǔn)答案之間的差異,但它學(xué)會(huì)了找出答案存儲(chǔ)的位置并刪除了它,所以它就會(huì)得到一個(gè)完美的分?jǐn)?shù)。(解決小林丸的測試)
1997年,幾名程序員創(chuàng)建了一個(gè)算法,可以遠(yuǎn)程在無限大的棋盤上互相玩井字游戲。其中一個(gè)程序員并沒有涉及算法的策略,而是讓它們自己摸索獲勝的方法。令人驚訝的是,算法開始贏得所有的游戲。事實(shí)證明,該算法的策略是將其置于非常遠(yuǎn)的地方,以便當(dāng)其對(duì)手的計(jì)算機(jī)試圖擴(kuò)展棋盤時(shí),巨大的棋盤會(huì)因內(nèi)存消耗殆盡而崩潰。(如何在井字游戲中獲勝)
結(jié)論
長久以來,人們都對(duì)機(jī)器進(jìn)化存在誤解,認(rèn)為它們只不過在模仿。但是這些實(shí)驗(yàn)表明,當(dāng)機(jī)器學(xué)習(xí)解決問題時(shí),它可以產(chǎn)出非常巧妙甚至不可思議的解決方案。
生物進(jìn)化也是如此,就像許多生物學(xué)家說的,生物體可以找到最奇怪的解決方法,以及利用最奇怪的能量源。所以作為程序員,我們必須非常小心,因?yàn)樗惴ㄕ诮鉀Q我們想要解決的問題。如果還有另外解決問題的方法,機(jī)器學(xué)習(xí)可能會(huì)很快地找到它。
但是也不必過于擔(dān)心,機(jī)器學(xué)習(xí)是不會(huì)讓人類滅亡的。如果“做一個(gè)非常美味的蛋糕”可以解決問題,并且比“毀滅人類”簡單的話,機(jī)器學(xué)習(xí)一定會(huì)選擇做蛋糕。
-
機(jī)器人
+關(guān)注
關(guān)注
213文章
29730瀏覽量
212837 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8502瀏覽量
134592
原文標(biāo)題:注意!你的算法正在偷偷進(jìn)化——機(jī)器進(jìn)化趣聞集錦(附論文)
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄

繼電器不能彈開是什么原因?想找?guī)煾到饣蟆?/a>
Agilent安捷倫DSO-X 91604A示波器開機(jī)報(bào)錯(cuò)維修步驟詳解

評(píng)論