一文讀懂這門超越深度學習的新AI編程語言Gen
AI的快速發展激起了很多人的學習熱情,但是初學者苦于大量的手動編程而止步不前,有沒有一種編程語言可以讓那些在計算機科學和數學領域專業知識較少的人,也能使用簡潔的代碼量來完成具體的AI應用呢?
今天為大家推薦一個專門用來預測的復雜模型和推理算法——Gen。下面隨文摘菌一起來看看它的“前生今世”。
Gen問世之前的AI學習庫(框架)
在2015年,谷歌發布了一個采用數據流圖進行數值計算的開放源代碼應用程序軟件庫TensorFlow(基于數據流編程的符號數學系統),它可以幫助初學者和專家自動生成機器學習系統,而不需要做太多數學運算。這個平臺現在被廣泛的使用,希望幫助人工智能在某些方面實現民主化。
盡管它是自動且高效的,但是與人工智能的廣泛前景相比,它的重點僅限于深度學習模式,總的來說這種模式既昂貴又有局限性。
但是現在有很多可用的人工智能技術,比如統計和概率模型,以及仿真引擎。其他一些概率編程系統雖然足夠靈活,能夠覆蓋多種人工智能技術,但他們的運行效率很低。
Gen“緣起”
鑒于之前的AI應用開發框架不太靈活,研究人員試圖研究一套系統以將自動化、靈活性和高效性都融合在一起,但Mansinghka(一位研究人員)說,“如果我們可以做到這樣,也許我們可以通過更廣泛的建模和推理算法集合來幫助實現民主化,就像TensorFlow一樣有助于深度學習的研究。”
MIT的一隊研究人員一直致力于使初學者快速入門人工智能,與此同時,他們的研究也幫助這一領域的專家不斷取得了進步。研究人員發現,在基于概率的人工智能中,用推理算法對數據進行運算,并根據新數據不斷調整概率來進行預測。這樣做最終會生成一個可以對新數據進行預測的模型。
基于他們早期概率編程系統“Church”中使用的概念,研究人員將幾種自定義的建模語言融入MIT開發的通用編程語言“Julia”中。每種建模語言都針對不同類型的人工智能建模方法進行了優化,使其變得更加通用。Gen還使用了各種不同的方法,例如優選法、變分推理、概率統計法和機器學習,為推理任務提供高級基礎設施。除此之外,研究人員還進行了一些優化調整,以使其實現有效運行。
同時,本周召開的程序設計語言設計與實現大會上,研究者們做了一場以新型概率編程系統——Gen為題的演說,用戶從不同的AI技術應用領域編寫模型和算法,這些領域涉及到計算機視覺、機器人和統計學,而這些模型算法可以代替人去解決,那些復雜公式和手工編寫高性能代碼。
為什么要使用Gen?
舉例來說,在研究者的文章中提到,一個簡短的Gen編程,可以推斷3D身體姿勢,而這種復雜的計算機視覺推斷任務需要用到自動系統、人機交互、增強現實等技術。而在屏幕之后,這些程序包括了那些組成執行圖像渲染、深度學習和其他種類的概率模擬的組件。這些不同技術的結合使這項任務比一些研究人員早期開發的系統具有更高的準確性和速度。
研究表明,不管是初學者還是專家都能非常輕易地上手Gen,因為它使用起來非常簡單,且在某些用例中是自動化的。一位電氣工程和計算機科學系的Marco Cusumano Towner博士說,“這個項目的一個動機就是讓那些在計算機科學和數學領域專業知識較少的人,更容易地使用自動化人工智能”,他還說“我們同樣也希望提高生產率,這意味著讓專家更容易地高速迭代和原型化他們的人工智能系統”。
研究人員還演示了Gen通過使用另一個Gen的程序來簡化數據分析的能力,該程序可以自動生成復雜的統計模型,通常用來供專家分析、解釋和預測數據中基本趨勢。它與早期需要大量手工編碼才能進行準確預測的系統不同,建立在研究人員先前工作的基礎上,它只需要讓用戶編寫幾行代碼就可以揭示和了解金融走勢、航空旅行、投票方式以及疾病傳播等的趨勢。
一位大腦與認知科學部門負責概率計算機項目的研究員Vikash K.Mansinghka說,“Gen是第一個靈活高效自動化的系統,擁有最先進的性能,能夠覆蓋計算機視覺和數據科學中不同類型的事例。”
Uber的首席科學家兼人工智能副總裁、劍橋大學教授Zoubin Ghahramani雖然沒有參與這一項目,但是他說,“概率規劃是自機器學習出現以來,人工智能最有前景的領域之一。Gen代表了這一領域的顯著的進步,將有助于實現基于概率推理的人工智能系統的可擴展性和實際性發展。”
同樣也沒有參與此項研究的谷歌研究主管Peter Norving也贊揚了這項工作,他說,“Gen允許解決問題的人使用概率規劃,如此對問題有一個更為原則性的方法,但不受概率規劃系統設計者的選擇所限制。”他還說,“通用編程語言……之所以成功是因為,它們使程序員更容易完成任務,同時也使程序員能創造出全新的東西來有效地解決新問題。Gen對于概率規劃也是這樣做的。”
探索“Gen”的本質
鋪墊了這么多,那么Gen是怎么實現的呢?
下文將以論文的第三、四部分為例,介紹實現的機理,文摘菌略過了論文中枯燥的公式推理,先說明下原理吧,感興趣的讀者可以閱讀論文原文。
原文鏈接:
http://delivery.acm.org/10.1145/3320000/3314642/pldi19main-p645-p.pdf?ip=118.144.138.198&id=3314642&acc=OA&key=4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35%2EE959BD37CA561672&__acm__=1562839037_72bcb9e83ef52bd8c297ff545e867515
Generative Function Interface(生成函數接口)以下簡稱GFI,GFI是一個“黑盒子”,用來實現建模語言和特定推理算法之間的接口,Generative Function (生成函數)由建模語言編輯器生成,具體實現過程是這樣的:
- 用戶將需要實現的功能使用@gen語法描述;
- 將語法描述交由動態建模語言編譯器生成Generative Function;
- 通過Generative Function實現GFI
為了理解下文先介紹兩個名詞:
- Choice Map是地址到真實值之間的映射
- Generative Function表示為元組的形式:G = (X, Y, f ,p,q)
接口方法
論文中介紹了5種接口方法:
- generate (對約束條件的trace)-參數:u(Choice Map)、x-以映射集合u和參數x作為輸入并返回結果;
- propose-參數x-返回t(Choice Map)、權重w;
- assess(評估Choice Map的可能性):此方法評估和計算由Generative Function生成的特定Choice Map(u)的可能性;
- update:更新方法調整執行trace的(t,x)中的隨機選擇,這是迭代推理算法中的常見模式,例如MCMC和MAP優化;
- choice_gradients:choice_gradients(differentiation)此方法計算跟蹤的對數概率的梯度參數x和/或隨機值的值選擇。
具體的執行過程參照下圖foo()函數的trace和choice map的生成過程。
系統總覽
下面將以一個回歸任務為例,演示Gen的編程風格:
a圖給定數據集(x,y),需要推斷x,y之間的關系,并檢測異常值,這是一個典型的回歸問題;b圖是用@gen語法生成的描述模式;c圖是b圖的生成地址空間;f和g圖展示出了在“Julia”(上文提到的MIT開發的通用編程語言)中實現的兩個用戶程序,每一個程序實現了一種不同的算法來解決任務,結果表現出不同的效率,如圖h所示。
實驗室外的“Gen”:Gen的工業應用
講了這么多,Gen有沒有開源?在工業界有使用案例嗎?請看下文:
外部用戶已經找到了利用Gen進行人工智能研究的方法。例如,英特爾正在與MIT合作運用其用于機器人和增強現實系統的深度感應攝像頭,利用Gen進行3D姿態估計。MIT林肯實驗室也在合作研究Gen在航空機器人領域的應用,以實現其在人道主義救援和災難應急響應方面的應用。
MIT一直致力于人工智能的研究,因此Gen開始被用于雄心勃勃的人工智能項目。例如,Gen是MIT和IBM沃森人工智能實驗室項目的核心,美國國防部高級研究項目計劃局也將其應用于正在進行的機器常識項目,旨在模擬一個18個月大的孩子所能擁有的人類常識。Mansinghka也是該項目的主要研究人員之一。
Mansinghka說,“對于Gen,研究人員第一次可以很容易地整合一系列不同的人工智能技術。看看人們在現階段發現了什么是可能的,這將會是很有趣的。”
Gen的開放源代碼是公開可用的,并且在即將舉行的開放源代碼開發人員會議上展示,包括Strange Loop和JuliaCon,這項工作在一定程度上也得到了美國國防高級研究計劃局(DARPA)的支持。