AI写程序,这事可没那么简单!
摘要:?去年年初,微軟公司推出了一款名為DeepCoder的機器學習系統,同時宣稱該系統具有自我編碼的能力,這一舉動又將人工智能的發展向前推進了一步。 正如人工智能是建立在眾多機器學習或深度學習方法之上一樣,DeepCoder創建的代碼也是基于大量現有代碼示例,研究人員通常會用這些代碼進行系統的訓練。
去年年初,微軟公司推出了一款名為DeepCoder的機器學習系統,同時宣稱該系統具有自我編碼的能力,這一舉動又將人工智能的發展向前推進了一步。
正如人工智能是建立在眾多機器學習或深度學習方法之上一樣,DeepCoder創建的代碼也是基于大量現有代碼示例,研究人員通常會用這些代碼進行系統的訓練。
其結果是:DeepCoder編寫的軟件匯集了部分其它人工編寫的程序,著名的雜志《連線》將這稱之為“掠取其它軟件”。
當然,盡管DeepCoder存在不盡如人意的地方,但該讓軟件自己進行應用程序編寫這項研究仍舊是一項具有非凡的工作,也有著令整個數字世界為之振奮的前景。
基于意圖的編程
當我們希望一款軟件能夠為我們編寫應用程序時,我們真正想要的是什么呢?答案就是:我們希望軟件所編寫出的應用程序,能夠較好地表達出我們的意圖。
術語“基于意圖”源自于近期興起的“基于意圖的網絡”,這是一種基于人工智能對網絡進行配置的方法,它可以對管理者的業務意圖進行預測。
基于意圖的網絡能夠幫助管理者制定級別較高的業務策略,緊接著,它會對自己是否能夠執行該策略進行驗證,并且檢查自己能否使配置的網絡資源達到理想狀態,以及是否能對網絡狀態進行有效監管以保證所有策略能夠持續執行,并在必要的時候對其進行糾正。
例如,您可以要求Alexa為您編寫一款應用程序,該程序能夠對您的相冊收藏進行追蹤。此時,Alexa會自動為您編寫代碼,在完成后向您展示,以供使用。
原理是什么呢?
剛剛以Alexa為例進行了簡單的說明,其實不難發現,AI采用的方法就是去找到一個與您要求相似的應用程序,然后根據您的需求對代碼進行調整,或者挑選出一些代碼片段對其進行程序組合。
換言之,Alexa采用的方法與DeepCoder類似,也就是從其他地方“借用”代碼,并將這些代碼進行組合以滿足當前客戶的需求。
但是將人工編寫的代碼進行匯集并不是我們真正想得到的AI編寫軟件,不是么?我們真正尋求的是有能力對應用進行創新的編寫軟件。
換言之,AI在編寫程序的時候能具有創造力么?它能寫出真正具有創新性的應用程序么?這些應用程序是人們未曾設想過的。
第五代語言
幾十年來,對于計算機科學的研究學者們來說,他們一直盼望著有一款根據用戶意圖生成所需應用程序的軟件能夠問世。但事實上,根據來自維基百科的資料,上世紀80年代掀起的第五代語言浪潮曾試圖“讓計算機在沒有程序員的情況下解決給定的問題”。
第五代語言是一種期望計算機能對問題自動求解的意圖,基于所給定的某些約束,交由程序來處理而不需要程序員再投入人力。這個想法看上去很有前景,但實驗結果證明它仍然具有很大的局限性。
僅僅指定約束就可以解決問題過于理想化了:大多數數學優化問題都在尋求一組數學表達式,這些表達式能夠很好的描述約束條件。
在創造應用程序時所面臨的一個巨大挑戰是第五代語言并不能很好的表達算法——程序員在編寫代碼時都有他們特定的步驟。
因此,第五代語言的發展并不樂觀,盡管它促進了聲明式以及為特定應用而設計的語言(如SQL和HTML)的快速發展——這些語言將用戶意圖和底層軟件區分開來。
但毫無疑問:用聲明式的語言表達您的意圖與能夠自己編寫應用程序的軟件大有不同。編寫“SELECT * FROM ALBUMLIST”與“Alexa,為我編寫一個追蹤我相冊的應用程序”相去甚遠。第五代語言中缺失的部分是AI。
算法
在20世紀80年代,我們還沒有辦法讓軟件自己編寫應用程序,但隨著人工智能的快速發展,這個想法不再遙不可及。第五代語言處理簡單優化任務的能力促進了計算機代數系統的發展,使其在自動優化方面日趨成熟,這也被稱為計算機生成算法。當然,發展并不局限于此。
還有一些研究項目,例如谷歌的AutoML,它能夠構建基于機器學習的神經網絡架構。您可以將神經網絡架構視為一種應用程序,盡管它使用了人工智能技術。在這種情況下,我們擁有足夠聰穎的人工智能軟件,它能夠對應用程序進行編寫。
AutoML以及與其類似的項目都具有廣闊的發展空間。盡管如此,我們仍舊沒有更接近天網,就連這些努力,也不夠企及我們前面所描述的那些基于意圖的編程目標。
人類意圖
從本質上來看,AutoML和基于意圖的編程正朝著不同的方向發展,因為對于用戶會如何表達各自的意圖,兩者有著不同的處理方式。如上述示例,Alexa是以人為中心,利用Alexa的自然語言處理能力結合其它上下文技巧,能夠提供以消費者為導向的用戶體驗。
在AutoML(或者任何機器學習或深度學習工作)中,工程師們必須以對約束條件(例如用戶意圖)進行正確的描述。
舉個例子,如果你想教會人工智能識別貓的圖片,那么就應有如下約束條件:在一個包含一百萬張圖片的數據集中,其中至少有十萬張圖片包含貓。軟件也許能正確的將它們進行區分,也有可能區分錯誤,但它會在每一次嘗試中進行學習。
那么,“我想要的相冊追蹤應用程序”的有效約束又是什么呢?目前,這個問題仍在我們所能解決的范圍之外。
目前發展
目前,人工智能雖然還不能創造出一種能夠滿足用戶意圖的應用程序,但是它在一些簡單的應用場景中已經得到了較好的應用。我們現在所達到的,是能從大型數據集中進行模式分析的人工智能。
如果我們可以把算法成熟的運用到數據集中,或許能夠取得一些進展。例如,如果基于AI的應用程序可以訪問大量人工創建的工作流程,那么它可以很好的預測出您目前所處工作流程的下一步。
換句話說,我們將現在所擁有的算法的功能稱之為“下一步最佳行動”。我們可能仍然需要更多的努力,使得軟件了解我們對應用程序的要求,目前,我們能夠借助AI探尋到達此目標的步驟。
對于找到“下一步最佳行動”,AI能夠提供一些建議,但是不能夠系統的構建出整個算法,這看上去更像增強型智能而非人工智能。
我們在試圖創建一類軟件,它們能夠表達出人類意圖,而并不僅僅是自動解決問題。當然,我們仍需要在構建應用程序時伸出援手,但盡可能的讓這個過程變得簡單。
基于此,新興的低代碼或無代碼平臺市場在這個方向快速創新發展也就顯得不那么奇怪了。
如今的低代碼或無代碼平臺能夠支持復雜的,特定領域的聲明式語言,使人們能夠以類似英語的表達式(或其他人類語言)表達他們的意圖。
他們還具有將應用程序和應用程序組件用模板表示的能力,使用戶能夠以“拖放”這種簡單的方式對應用程序進行組裝。
現在,許多低代碼或無代碼平臺供應商正想辦法將AI應用其中,這將會增加應用程序創建者的能力,并有助于他們指定他們想要應用程序遵循的算法。
或許有那么一天,我們可以直接告訴這些平臺我們的需求是什么,然后它們就會自動為我們編寫出來。雖然現在我們的技術還沒有發展到這個程度,但是今天,我們已經比低代碼或無代碼平臺更加接近目標,加上創新正以驚人的速度發展著。我相信這種等待不會太久。
數十款阿里云產品限時折扣中,趕緊點擊領劵開始云上實踐吧!
以上為譯文
本文由北郵@愛可可-愛生活?老師推薦,阿里云云棲社區組織翻譯。
文章原標題《Can AI Write Its Own Applications? It's Trickier Than You Think》,作者:Jason Bloomberg,譯者:Elaine,審校:袁虎。
文章為簡譯,更為詳細的內容,請查看原文
原文鏈接
總結
以上是生活随笔為你收集整理的AI写程序,这事可没那么简单!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DT时代下 数据库灾备的探索与实践
- 下一篇: AI 趋势