探究人類語言如何影響人工智慧

AI前線發表於2019-01-24
探究人類語言如何影響人工智慧
譯者 | 核子可樂
編輯 | Emily

如果語言與思想密切相關,那麼人類語言很可能已經成為放飛思維的阻礙:我們的思想往往一直被語言自身所困,無法真正跳脫出來。解決這一難題的方法同樣相當複雜要,因為惟一的規避方式似乎在於發現並修復我們自然語言當中的缺陷——而這正是一項我們只能立足語言之內“由內而外”完成的任務。

—— Andrew Brook,《論知識與頭腦》

在 AI 領域,“kernel”一詞擁有兩種含義——這種多義性,是指既不同音、亦非衍生關係,但卻在語義領域內擁有相互關聯的意義。

“Kernel”一詞的第一種用法,是指為了檢測特徵而在 N 維表面(例如 2D 影像)上的滑動視窗。而第二種 kernel,例如β kernel,則是指機器學習模型當中的基本構建塊,其能夠通過組合構建起規模更大的整體架構。舉例來說,在 TensorFlow 原始碼當中,core/kernels 目錄當中包含著數百個檔案,其中又囊括諸多底層運算,它們正是 TensorFlow 的核心所在。

儘管“kernel”一詞的這兩種版本皆源自影像處理領域,但二者已經演變成為截然不同的概念。更有趣的一點在於,人工智慧中的兩種“kernel”表義——卷積與核心運算——則複用了“kernel”一詞的原始多義用法。kernel 既指核心(例如各種水果的核,β kernel 也取此義),同時也代表著覆蓋某一表面的小單元(例如玉米粒以及α粒子)。在這兩種情況下,kernel 同時代表著某種種子或者細粒,但我們在理解時會根據植物及飲食等語境而作出完全不同的判斷。

更多幹貨內容請關注微信公眾號“AI 前線”,(ID:ai-front)

究其根源,多義詞是對人類理解能力的一種肯定,換言之即是利用舊有語言創造新含義的方式。然而,多義詞同時也可能因此而帶來潛在風險:其有可能因主流概念框架的存在而固化,並因此限制我們在考慮問題時的創造力。更具諷刺意味的是,kernel 這個詞還暗指一種不可變的或公理性單位——人工智慧一詞本身就是這種多義性“謬論”的犧牲品。其多重含義廣泛存在於各類線上文件與學術文章當中,影響著我們的工具、圖書館、課程以及思想,並導致我們失去了自行判斷的能力。

在今天的文章中,我將討論“kernel”這一被廣泛使用,但卻已經開始阻礙人工智慧社群內部創新的詞彙。最後,我還將提出幾條前進道路,其中包括我們在 Messhkan Machine Learning 專案當中採取的道路之一。

AlexNet 、α Kernels 與並行化

AlexNet 曾經以創紀錄的極高準確度贏得了 2012 年 ImageNet 大規模視覺識別挑戰賽,其架構在《利用深層卷積神經網路實現 ImageNet 分類能力》一文當中得到詳盡描述。作者寫道,“我們採用的並行化方案,在本質上相當於在每個 GPU 上放置半數 kernel(或者說神經元);另外我們還實施了另一項技巧,即 GPU 只在某些層中進行通訊。”請注意這裡的 kernel(kernel)表達。

探究人類語言如何影響人工智慧

AlexNet 當中的兩條並行卷積曲線

在這篇論文的幫助下,卷積已經成為人工智慧領域從影像識別到語句分類、再到語音識別等各類實際應用的核心驅動力。目前,所有主要機器學習庫都提供開箱即用的卷積選項,其中幾種卷積(β)kernel 還得到了顯著優化。但有趣的是,AlexNet 的並行化策略從來沒能在 AI 社群當中得到重視與推廣——這很可能是因為人們通常並沒有大量英偉達 GPU 可供使用。

這一現狀對於人工智慧業界意味著,相較於立足並行化層面進行創新,人們往往傾向於通過 kernel 與卷積來表達自己的思路。這確實帶來了顯著成效——卷積技術在自動駕駛與人臉識別等方面取得了重大突破。然而,AlexNet 的核心問題在於試圖通過 GPU 並行化來解決各類問題,例如攻克缺乏 kernel-size 與 stride 等超引數的、卷積方法難以搞定的問題。目前,卷積研究論文也提供了一些值得稱道(且切實有效)的解決方案,例如將大量 kernel 一次性打包至同一套前饋網路當中。另一種更為細緻的方法,則可以並行方式同時執行大量 kernel,保留其中最具前景的 kernel 並隨時間推移對其加以修改——這一切已經遠遠超出了 AI 庫的範圍,而延伸至更為深奧的研究領域。這種型別的創造力很可能在達到行業規模後帶來真正的顛覆性效果,因為其具有適應性,因此能夠有效實現進化資料處理與預測。

Tensorflow、β Kernels 與 XLA 編譯器

在 Tensorflow 專案龐大的說明文件當中,XLA 編譯器無疑是一大極為重要的功能孵化選項。XLA(全稱為加速線性代數)的維護者們在文件中寫道,“相較於標準 TensorFlow,XLA 的優勢在於其能夠將多個運算子(kernel 融合)融合至少量經過編譯的 kernel 當中。”同樣的,請注意這裡的 kernel 表達。

探究人類語言如何影響人工智慧

圖中所示,為由 Meeshkan graphviz 後端生成並由 Gephi 渲染的五層全連線神經網路當中的加法與乘法運算視覺化結果。

雖然 XLA 專案關於其理論給出了令人信服的敘述,但在實踐當中,還很少出現利用這款編譯器並得到顯著速度提升的反饋資訊——我們自己的專案也未能獲得這樣的效果。當然,這並不是編譯器本身的錯,而是該編譯器只適合特定某類機器學習模型。如果您的全連線神經網路分裂成幾條獨立的路徑,而後再重新對接在一起,那麼這種將佇列與 kernel 加以“融合”的作法才真正具有意義——特別是傅像 Apache Spark 以及 OpenCL 等工具時,其能夠充分發揮分散式與資源加速優勢。然而,必須承認的是 kernel 融合在很大程度上並不能帶來什麼收效,因為目前的主流機器學習工具與規範並沒有促進或者鼓勵在演算法當中,確保資料在融合之前通過並行路徑進行處理。並行化中的主要運算(例如點乘積或卷積內乘法)已通過經過高度優化的 C 程式碼得以執行,其無需進行額外的融合。換句話來說,AI 當中開箱即用的 kernel 機制非常諮,我們完全可以在無需深入挖掘的前提下解決問題。這就導致 XLA 編譯器等新型工具變得並不像理論上那麼實用。

Kernel 時代下的生活

語言阻礙了直覺的實現,也妨礙著我們以開放思維考量體驗。

——Tina Röck,《過程本體論:混凝土的思辨哲學》

如果您同意在兩種不同語境下使用 kernel 這個詞會給對某些 AI 問題的思考方式帶來負面影響,那麼接下來我將把這個詞的兩種用法聯絡起來,並描述其中存在的真正問題。事實上,kernel 一詞的兩種含義在不同範圍內亦相互關聯——即使是最強大的 CNN 構建器也不需要了解 Tensorflow 具體在使用怎樣的 kernel,反之亦然——優化 Tensorflow kernel 的人可能永遠不會接觸到卷積。那麼,這會帶來怎樣的問題?

如果一個多義詞代表著一個語義連續體,那麼“kernel”將始終存在於“固定”或“停滯”的理解區間之內。相比之下,多元文化中的“church(教會,教堂)”一詞則具備包容性,其含義存在於擁有空間及地點連續性的統一體之內:強調精神層面的路德教會與赫爾辛基的實體教堂當然有所不同,但“church”一詞仍有助於將概念單位限定為其具體含義歸屬——即同時涵蓋物理空間與精神社群。同樣的,卷積α-kernel 是一種幾何層面的恆定單位,其沿表面移動;點積β-kernel 則是一種經過高度優化的線性代數運算,但都強化了機器學習當中“固定”元素的概念。這種固定性源自機器學習中的一系列實踐與理論考量——舉例來說,GPU 在並行(實踐)處理多次重複的相同運算方面表現得非常出色,而同樣的鬆散關聯也存在於光學識別神經基礎與 AlexNet 當中所實現的卷積之間(理論)。不過最終結果是,機器學習往往會預先修正 kernerl,而後對訓練集進行數次執行以調整其具體使用方式。

探究人類語言如何影響人工智慧

赫爾辛基的岩石教堂

當然,更激動人心的過程在於 AI 的自我調整;但只有當我們修改其中發揮主導作用的“kernel”規範時,才能最終衍生出基準測試、課程、工具以及最重要的因素——語言。簡單來講,“我們需要採取更為開放的心態”或者“流程需要實現動態水平提升”,但在這種情況下我們需要從根本層面重新思考自身架構,從而將設計的基本單位由 kernel 轉換為資訊流。更具體地講,以 AlexNet 為例,我們需要重視的是不再執著於 kernel,而是更具創造性地對兩個 GPU 加以組合的基本思路。

這類設計決策在實施難度其實並不像大家想象的那麼可怕。就在本月,一篇名為《IMPALA:利用重要度加權 Actor-Learner 架構實現可擴充套件分散式深層強化學習》的精彩論文就很好地論述了這個問題。正如作者所指出的那樣,“IMPALA 的高資料吞吐量與資料處理效率使我們不僅能夠在單一任務當中進行訓練,同時還能夠面向多項任務同時進行訓練——且只需對訓練設定進行最低限度的修改。”不過在我看來,其最重要的優勢在於“IMPALA 能夠在各類規模情況之下,高效利用當前計算機裝置,從而快速將新思路轉化為現實並開闢更多未得到探索的應用機會。”

Meeshkan 與並行 AI

Meeshkan Machine Learning 正致力於實現同樣的目標。通過建立數以千計的裝置來一套能夠執行 AI 模型的網路,其能夠精確地探索在 XPU(無論是 CPU、GPU 抑或是 TPU)上因裝置與 kernel 規範侷限而根本無法解決的一系列現有問題、網路效應以及規模。有人曾問我,為什麼人們會將 40000 項二進位制運算分發給 40000 臺獨立的裝置——單是頻寬成本與花費在資料傳輸上的時間就已經遠遠超過了並行性帶來的收益。我的答案是,通過這種從零開始構建並行化系統的方法,我們才能夠擁有充足的自由與空間來探索實現機器學習的另一種方法——而不必被束縛在固有 kernel 優化規範之內。作為雲端計算之戰的旁觀者,我們見證著各大行業巨頭競相將 TB 級別的資料交由具備高度優化型 kernel 的超級計算機進行預測。因此,Meeshkan 提供了另一種新的、可用於探索真實世界的裝置分散式架構,並希望能夠藉此挑戰目前處於主流地位的實現模式。

Meeshkan 目前正與不同的合作伙伴——包括藝術家、企業以及非營利性組織——共同探索這些思路。即使我們設計的發展道路無法真正為機器學習世界指明方向,我仍然鼓勵大家思考這種因主觀習慣而引發的創新阻礙問題。有時候,我們忘記了人工智慧是由人類所創造,並對其大加批評。總結而言,我們的人工智慧事實上提升著我們自身所掌握的最重要且最基本的工具——人類智慧!

原文連結:

https://medium.com/the-mission/kernels-polysemy-and-ai-b9b558cd2255

更多幹貨內容,可關注AI前線,ID:ai-front,後臺回覆「AI」、「TF」、「大資料」可獲得《AI前線》系列PDF迷你書和技能圖譜。

相關文章