去年年初,微軟公司推出了一款名爲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應用其中,這將會增長應用程序建立者的能力,並有助於他們指定他們想要應用程序遵循的算法。
或許有那麼一天,咱們能夠直接告訴這些平臺咱們的需求是什麼,而後它們就會自動爲咱們編寫出來。雖然如今咱們的技術尚未發展到這個程度,可是今天,咱們已經比低代碼或無代碼平臺更加接近目標,加上創新正以驚人的速度發展着。我相信這種等待不會過久。
本文做者:【方向】
本文爲雲棲社區原創內容,未經容許不得轉載。