人工智能編程有助于人類制造更多智能機(jī)器嗎?
技術(shù)日新月異的當(dāng)下,人工智能編程日益成熟,它的發(fā)展能有助于人類制造更多智能機(jī)器嗎?
程序合成是指基于規(guī)范自動(dòng)生成程序的概念。它不同于程序驗(yàn)證。程序驗(yàn)證依賴于正式的證明來證實(shí)程序按照正式的規(guī)范運(yùn)行。
1957年,在康奈爾大學(xué)符號(hào)邏輯協(xié)會(huì)舉行夏季會(huì)議期間,阿隆佐·邱奇試圖基于數(shù)學(xué)要求合成程序。20世紀(jì)60年代,人工智能相關(guān)研究人員詳細(xì)闡述了程序合成的概念,并將其應(yīng)用于典型的人工智能研究。
近年來,深度學(xué)習(xí)已經(jīng)改變了人工智能完成任務(wù)的方式。這種進(jìn)步促使研究人員嘗試教授人工智能人類擅長(zhǎng)的工作。其中一個(gè)重要領(lǐng)域就是創(chuàng)建元學(xué)習(xí)系統(tǒng),讓人工智能學(xué)習(xí)人類擅長(zhǎng)的各種工作。神經(jīng)程序合成和機(jī)器人技術(shù)的相關(guān)研究初步展現(xiàn)了利用程序合成來教授機(jī)器人精準(zhǔn)執(zhí)行任務(wù)的能力。
程序合成最常用于使計(jì)算機(jī)編程更容易實(shí)現(xiàn)。諸如AutoProf、FlashFill、Storyboard編程工具等應(yīng)用程序允許學(xué)生通過直接操作某些概念以更直觀的方式編寫程序,而無需編寫代碼。
在人工智能研究人員弗朗索瓦·喬萊的論文《智力測(cè)試》中,他將程序合成作為一種用于解決智力測(cè)試問題后建模的ARC任務(wù)的技術(shù)。
在接受Verge網(wǎng)站關(guān)于其論文的采訪時(shí),喬萊說:“關(guān)鍵點(diǎn)是,在任何任務(wù)中,獲得高技能都不是智力的表現(xiàn)。除非這個(gè)任務(wù)是一個(gè)元任務(wù),涉及到從大量此前未知的問題上獲得新的技能。這正是我所認(rèn)為的智力基準(zhǔn)。”
從本質(zhì)上講,系統(tǒng)智力應(yīng)通過以下方式測(cè)試, 正如喬萊所說“這意味著只使用系統(tǒng)之前不知道的新任務(wù),測(cè)量系統(tǒng)開始時(shí)對(duì)該任務(wù)之前的知識(shí),以及測(cè)量系統(tǒng)的采樣效率(即學(xué)習(xí)完成該任務(wù)需要多少數(shù)據(jù))。達(dá)到某一技能水平所需的信息(先前的知識(shí)和經(jīng)驗(yàn))越少,就說明越智能。如今的人工智能系統(tǒng)一點(diǎn)也不智能。”
他后來將ARC任務(wù)作為問題發(fā)布,來解決Kaggle的抽象和推理問題挑戰(zhàn)。解決這一問題將涉及到利用編程綜合的力量來學(xué)習(xí)以前未知的ARC任務(wù)。
分解編程合成問題
對(duì)于每一個(gè)看似不可能解決的問題,可以先把問題分解成小問題。如果您從未學(xué)習(xí)過編程合成,那么就在開始工作前了解一下存在什么問題以及怎么解決。
1.程序空間問題
每個(gè)編程合成問題最終都要在整個(gè)程序空間中進(jìn)行搜索。搜索方法必須是有效的。想象一下,若使用樹算法,就必須有辦法砍下這棵樹的枝干,否則,在它生長(zhǎng)的過程中,它有無限生長(zhǎng)的潛力。
2. 用戶意向問題
在測(cè)試用戶意圖的邏輯之間常常存在模糊領(lǐng)域。當(dāng)用戶與環(huán)境交互時(shí)人們有了一方面的發(fā)現(xiàn),在用戶參與時(shí),新的數(shù)據(jù)可能會(huì)將問題轉(zhuǎn)化為用戶眼中的全新問題。
若要成功解決Kaggle挑戰(zhàn)必然涉及解決這兩個(gè)問題。
用于程序合成的實(shí)用工具
在Python中,Z3是用于程序合成的Python包。這里是阿德里安·桑普森為Z3提供的優(yōu)秀教程。
其文章中的例子如下:
構(gòu)建泛型求解器,如下所示:

代碼源于阿德里安·桑普森博客
然后,定義要運(yùn)行的公式。

代碼源于阿德里安·桑普森博客
運(yùn)行:print(solve(formula)) 來解決任何問題。您可以閱讀他的教程了解更多細(xì)節(jié)和例子。
想要了解更多有關(guān)程序合成的知識(shí)嗎?
下面是幾個(gè)程序合成相關(guān)學(xué)習(xí)資源.
1. 程序合成之深度學(xué)習(xí)(DeepLearning for Program Synthesis)https://sunblaze-ucb.github.io/program-synthesis/index.html
2. 深度編碼器:學(xué)習(xí)編寫程序(Deep Coder: Learning To WritePrograms)
https://openreview.net/pdf?id=ByldLrqlx
3. 深度學(xué)習(xí)程序合成微軟研究(Deep Learning Program SynthesisMicrosoft Research)
https://www.microsoft.com/en-us/research/blog/deep-learning-program-synthesis/
如果您正在著手解決弗朗索瓦·喬萊提出的Kaggle挑戰(zhàn),那么本文將為您提供幫助。
“任何問題都不可能從創(chuàng)造它的同一層次的意識(shí)中得到解決。”——愛因斯坦
每一個(gè)“不可能”的挑戰(zhàn)都是由不放棄解決問題的人一步一步解決的。
加油,你是最棒的!