一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

人工智能,如何讓機(jī)器自動寫編寫程序代碼!

 長沙7喜 2017-11-20



對于一臺電腦來說,它可能寫下它自己的程序嗎?


人類軟件開發(fā)者有一天能夠被電腦取代嗎?如同一個農(nóng)民,一個流水線工人,一個電話運(yùn)營員被取代一樣,軟件開發(fā)者會是下一個嗎?


這篇論文詮釋了這個概念:


回復(fù):ai寫代碼 下載論文



論文的精華部分: 


接下來我們將會描述創(chuàng)造一個人工智能程序的實(shí)驗(yàn),人工智能工程能夠開發(fā)其自己的程序,執(zhí)行一個遺傳算法,具有自我修正的代碼。

上面這個代碼是由人工智能程序創(chuàng)造的。這個人工智能被設(shè)計(jì)出寫能夠自我修正的代碼。上面的代碼是在29分鐘中寫出來的。其程序語言是brain-fuck。


什么是BrainFuck

BrainFuck 語言,是一種按照“Turing complete”思想設(shè)計(jì)的語言,它的主要設(shè)計(jì)思路是:用最小的概念實(shí)現(xiàn)一種“簡單”的語言,BrainFuck 語言只有八種符號,所有的操作都由這八種符號的組合來完成。

 

BrainFuck 基于一個簡單的機(jī)器模型,除了八個指令,這個機(jī)器還包括:一個以字節(jié)為單位、被初始化為零的數(shù)組、一個指向該數(shù)組的指針(初始時指向數(shù)組的第一個字節(jié))、以及用于輸入輸出的兩個字節(jié)流。

 

人工智能占據(jù)寫代碼

人工智能隨著電腦科技,硬件,CPU的發(fā)展,不斷地發(fā)展著。隨著計(jì)算機(jī)越來越快發(fā)展,更多的計(jì)算被執(zhí)行,所以人工智能算法所要求的計(jì)算密集型處理能夠被實(shí)現(xiàn)。


人工智能習(xí)慣

對于我來說,讓人工智能寫程序是我的愛好。我指的是從一個完全白手起家,對于程序完全沒有認(rèn)知的人工智能,它自己學(xué)習(xí)如何去創(chuàng)造功能性程序。

 

這是個艱難的任務(wù):首先,使用使if/else條件寫一個隨機(jī)程序看起來并不是那么智能。無論是BASIC,C,C++語言,都不能產(chǎn)生一個能夠運(yùn)行的程序。因?yàn)檫@些語言都是以被人類使用為目的的,對于人工智能來說太復(fù)雜。

 

最終的目標(biāo)是創(chuàng)造一個能夠?qū)懽约旱奶幚碥浖?,圖像編輯工具和瀏覽器的計(jì)算機(jī)程序。我堅(jiān)定于這樣的想法是可能的。

 

很多的猴子和破碎的打字機(jī)

這個想法源于無限猴子定理:這個定理描述了如果你有1000只猴子,在打字機(jī)上不斷地敲擊足夠長的時間的話,它們最終會創(chuàng)造由莎士比亞寫出的話劇。這聽起來很荒唐,但是給定足夠的時間,這些猴子最終會創(chuàng)造出隨機(jī)的文字,組成莎士比亞的作品。


如果這些猴子得到指引呢?每次其中一個猴子敲對鍵盤的話,就會得到獎勵。在足夠長的時間后,猴子能夠開始習(xí)得規(guī)律和模式。


遺傳算法


遺傳算法是一種人工智能,以生物進(jìn)化為模型。人工智能隨機(jī)選擇一系列的指令(DNA中的一個),檢查結(jié)果的合適度。在很多的程序中,比方說100個程序,選擇出最佳合適度的進(jìn)行配對,產(chǎn)生后代。

 

每一代得到額外的多樣性,由進(jìn)化的技巧例如輪盤選擇,交叉,和突變而來。這個過程在每一代中重復(fù)。但愿產(chǎn)生更好的結(jié)果,直到找到解決方法。遺傳算法執(zhí)行適者生存法則。最合適的生存下來,并被執(zhí)行。遺傳算法可以被劃分為人工智能搜索算法。在巨大的問題空間中尋找具體的解決方案。



為什么是Brain-fuck解釋器?

開始尋找簡單的程序語言,用有限數(shù)量的指令,來訓(xùn)練人工智能程序使用。Assembly(ASM)很接近,但是仍然包含太多的排列。聽起來很幽默,最后brain-fuck解釋器產(chǎn)生,產(chǎn)生了上面的代碼。

 

brain-fuck最初被設(shè)計(jì)的初衷是一個笑話程序語言,產(chǎn)生于對于人們使用來說,它的難度是怎樣。它實(shí)際上有著一些對于電腦來說不同的優(yōu)勢。


Brain-fuck作為人工智能程序語言的優(yōu)勢

1. Turning complete 完全圖靈

這意味著它在理論上能夠解決任何的計(jì)算問題。有著這樣能力的程序語言打開了很大可能性的序列。總之很多(如果不是所有的的話)計(jì)算機(jī)程序被設(shè)計(jì)來執(zhí)行計(jì)算。

 

2. 由簡化的只有8個指令的序列組成

簡化的指令序列減少了搜索空間,很容易搜索到目標(biāo)程序代碼。隨著計(jì)算機(jī)運(yùn)行越來越快,問題空間能夠被搜索到。然而,搜索空間需要被限制。限制程序指令在8個不同的字母,人工智能能夠更快運(yùn)行,在合理的時間內(nèi)獲得最優(yōu)的合適度。

 

3. 很容易建立一個解釋器

指令系列很好整理,容易理解。因此,創(chuàng)造一個執(zhí)行程序的簡單解釋器很直接。在包含人工智能程序+遺傳算法的解釋器中,代碼能夠被優(yōu)化,運(yùn)行更快。這也能提供安全約束。人工智能能夠獲得解釋器的內(nèi)部內(nèi)容,例如內(nèi)存,指令和輸出。這在計(jì)算合適度中非常有用。然而,第三方的編譯器的這些內(nèi)容很難獲得。

 

4. 每個指令一個字節(jié)

因?yàn)槊總€指令只是一個字節(jié),很容易找到每個double。

 

5. 擴(kuò)展指令的可能性存在

很多程序語言的解釋器簡單地執(zhí)行代碼,保存記憶值,支持輸入和輸出的操控臺。然而,擴(kuò)展解釋器支持產(chǎn)生圖標(biāo),文件系統(tǒng)途徑是可能的。


如何運(yùn)行

人工智能程序工作如下:

1. 一個genome由一組的double 組成。

2. 每個gene等同于在brainfuck語言中的指令。

3. 從大量隨機(jī)的genome開始。

4. 解碼每個genome成為想要的程序,轉(zhuǎn)化每個double成為對應(yīng)的指令并執(zhí)行程序。

5. 在輸出的基礎(chǔ)上得到每個程序的合適度,然后將它們排序。

6. 使用輪盤選擇,交叉,和突變方法將最好的genome配對,產(chǎn)生新的一代。

7. 使用新的一代重復(fù)過程,知道達(dá)到目標(biāo)的合適度。



因?yàn)楹线m度方法是計(jì)算最集中的部分(執(zhí)行程序中每個gene),人工智能程序使用Parallel。用這種方法,它能夠?yàn)槊恳淮鄠€genome執(zhí)行多樣的合適度算法。這個允許程序利用最大化CPU資源,利用多樣的CPU核心。這個程序也能夠保存狀態(tài),防止程序突然關(guān)閉,然后從離開的地方繼續(xù)搜索。


The Fitness Method

合適度方法通過產(chǎn)生程序的結(jié)果的獲得得分運(yùn)行。這個分?jǐn)?shù)通過在觀察每個字母輸出進(jìn)行計(jì)算,減去和目標(biāo)字母的數(shù)值差距。

當(dāng)然,最初很多產(chǎn)生的程序不能夠編譯,更不用說將文字輸出到操控臺。這些被廢棄了,支持至少能夠輸出一些東西的程序。進(jìn)一步引導(dǎo)和金湖知道輸出結(jié)果和目標(biāo)的解決方案接近。

 

解釋指令序列

Brainfuck由以下指令序列組成。

 

結(jié)果

人工智能最后成功地在一分鐘內(nèi)5700代后寫下程序輸出hi”,在一分鐘內(nèi)。產(chǎn)生了如下的代碼:


+[+++++-+>++>++-++++++<]>++.[+.]-.,-#>>]<>


盡管以上的代碼有語法錯誤,例如不匹配的括號。我們的模擬解析器計(jì)算結(jié)果直到程序無法運(yùn)行。所以語法錯誤并不影響合適度。

 

你可以嘗試將以上的代碼放入brain-fuck解析器,點(diǎn)擊“開始調(diào)試”,忽略警告提示,點(diǎn)擊運(yùn)行到斷點(diǎn)。注意輸出。

 

如果我們?nèi)サ舳嘤嗟拇a,會得到以下句法上有效的代碼:

 

+[+++++-+>++>++-++++++<]>++.[+.]


看下面的截屏,當(dāng)程序運(yùn)行時候截取下來的。

 

人工智能學(xué)習(xí)寫程序

人工智能學(xué)習(xí)寫程序

 

人工智能找到解決方案

 

這是一張歷史圖表,畫出合適度和時間的關(guān)系。能看到人工智能是如何學(xué)習(xí)在目標(biāo)語言中寫程序和達(dá)到想要的解決方案。

 


Hello

人工智能最后成功地寫下程序輸出hello,29分鐘內(nèi)252,0000代后,產(chǎn)生了如下的代碼:

 

1.+-+-+>-<[++++>+++++<><>++]>[-[---.--[[-.++++[+++..].+]],]<><+,.+>[[.,],+<><>

2.[[[.+.,,+].-


在每代的過程中,人工智能都接近解決方案,但是一對字母在一個循環(huán)中相互束縛。人工智能能夠解決這個問題,創(chuàng)造出一個內(nèi)在的循環(huán)。成功輸出正確的字母,繼續(xù)處理程序。


人工智能學(xué)習(xí)寫程序

人工智能找到解決方案

合適度和時間的關(guān)系圖表


執(zhí)行程序,人工智能開發(fā)



Hi!

人工智能成功寫下程序Hi!”,在兩個小時七分鐘1,219,400代 之后。產(chǎn)生了如下的代碼:

>-----------<++[[++>++<+][]>-.+[+++++++++++++++++++++++++++++><><><-->>>+].]


這實(shí)際上是我最喜歡的環(huán)節(jié)。運(yùn)行,并且看到為什么(點(diǎn)擊開始調(diào)試運(yùn)行到斷點(diǎn))。好像電腦知道在知道做什么的感覺。很有趣的是,我們注意到怎么產(chǎn)生這個程序花費(fèi)了比之前長的時間。很可能是因?yàn)槭褂玫奈淖?,包括大寫字母和一個標(biāo)志。另外兩個例子使用了字母(在ASCII系統(tǒng)中的數(shù)值特別接近)。因此人工智能能夠很容易找到。


人工智能找到解決方案



執(zhí)行程序,人工智能開發(fā)


合適度和時間的關(guān)系圖表


reddit

人工智能最后成功在22分鐘195,000代后寫成了reddit的程序。代碼如下:

1.+[+++++>++<]+>++++++[[++++++.-------------.-.-+.+++++.+++++],.,+,-+-,+>+.++<><><>

2.-[-<>.]>+.-.+..]


由于長度,可能由于d的位置。這是一個挑戰(zhàn)。

人工智能學(xué)習(xí)寫程序

人工智能找到解決方案

 合適度和時間的關(guān)系圖表


Hello world

在兩個小時和580,900代后,產(chǎn)生了這個程序。代碼如下:

1.-><[>-<+++]->>++++[++++++++++++++++++<+]>.---.+-+++++++..+++.+>+<><+[+><><>+++++++++.+-

2.-++++[++[.--------.+++.------],.-----],,.>.+<[><>]<++>+.[]+[.[+]],[[.]..,<><>

3.]],[[+[,+[]-<><><><]-><>-]-<>+[-,-[<.>][--+<>+<><><><-,,-,[,[.>]]<>

4.>+[<><><>].[--+[<->--],-+>]-,[,


如果去掉多余的代碼,打印如下:

1.-><[>-<+++]->>++++[++++++++++++++++++<+]>.---.+-+++++++..+++.+>+<><+[+><><>+++++++++.+-

2.-++++[++[.--------.+++.------],.-----]]

人工智能找到解決方案

 合適度和時間的關(guān)系圖表


I love all humans

在十個小時和6057,200代后,產(chǎn)生了這個程序。代碼如下:

1.+[>+<+++]+>------------.+<+++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++

2.++++.+++.+++++++.-----------------.--<.>--.+++++++++++..---<.>-.+++++++++++++.--------.--

3.----------.+++++++++++++.+++++.]-+,.-<[><><-[+[>[<><-[+[,]-,,-[>[+[-<><><><>

4..,,>[<><[.]>[<><-.]><>


如果去掉多余的代碼如下:

1.+[>+<+++]+>------------.+<+++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++

2.++++.+++.+++++++.-----------------.--<.>--.+++++++++++..---<.>-.+++++++++++++.--------.--

3.----------.+++++++++++++.+++++.


在以上的運(yùn)行中,人工智能有著300個指令的數(shù)列大小的開始程序(例如300字節(jié))。他并不需要整個程序代碼的長度,值需要209個指令即可寫出程序。

 

注意,這個解決方案需要10個小時去完成。然而,記住,當(dāng)人工智能在做這些程序的時候,和人類相比,完成所需要的時間是更少需要擔(dān)心的。人工智能能夠默默在幕后運(yùn)行。我也希望計(jì)算時間有望在將來能夠減少。


人工智能找到解決方案


未來前景

 

伴隨著遺傳算法,產(chǎn)生關(guān)于設(shè)計(jì)合適度功能。合適度功能等同于向人工智能描述你在尋找什么。用這種方式,創(chuàng)造合適度功能本身和寫程序相似。如果人工智能開發(fā)自己的合適度功能成為可能的話,這將是一個里程碑。同時,創(chuàng)造更加復(fù)雜的程序成為可能。




    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本人妻丰满熟妇久久| 精品香蕉一区二区在线| 好吊日在线观看免费视频| 欧美一区二区三区五月婷婷| 欧美国产日产综合精品| 91欧美日韩国产在线观看| 欧美日韩精品视频在线| 亚洲一二三四区免费视频| 国产对白老熟女正在播放| 国产精品亚洲欧美一区麻豆| 婷婷激情五月天丁香社区| 国产在线一区二区三区不卡| 欧美激情一区二区亚洲专区| 日本人妻丰满熟妇久久| 尤物天堂av一区二区| 日本不卡片一区二区三区| 日韩高清毛片免费观看| 亚洲精品国产精品日韩| 国产精品午夜性色视频| 老司机激情五月天在线不卡| 亚洲乱码av中文一区二区三区| 99久久精品国产麻豆| 日韩色婷婷综合在线观看| 精品视频一区二区三区不卡| 精品视频一区二区不卡| 国产伦精品一一区二区三区高清版 | 丰满熟女少妇一区二区三区| 国产大屁股喷水在线观看视频| 人妻久久这里只有精品| 欧美精品日韩精品一区| 亚洲国产性感美女视频| 91超精品碰国产在线观看| 久久精品国产在热亚洲| 欧美偷拍一区二区三区四区| 欧美日韩免费观看视频| 一个人的久久精彩视频| 国产欧美日韩在线精品一二区| 婷婷亚洲综合五月天麻豆| 日本男人女人干逼视频| 欧美丝袜诱惑一区二区| 国产麻豆一区二区三区在|