微軟華盛頓州 Redmond 總部的實驗室成員 Ajay Manchepalli、Rob DeLine、Lisa Ong、Chuck Jacobs、Ofer Dekel、Saleema Amershi、Shuayb Zarar、Chris Lovett 和 Byron Changuion
有時候,展示一個大膽、即將改變世界的技術的最佳場所是花園。以 Ofer Dekel 為例,他正在微軟華盛頓州 Redmond 總部的實驗室裡領導一個機器學習和最佳化小組。在這裡,松鼠經常前來摧殘花朵,偷取鳥食,打擊他和他的家人養花喂鳥的樂趣。
為了解決這個問題,他訓練了一個計算機視覺模型來探測松鼠的行蹤,並把這些程式碼部署在一塊樹莓派 3 上——這是一種廉價且計算能力有限的單片計算機。這套裝置們現在一直在幫助 Dekel 監視著他家的後院,在小動物出現時會呼叫噴水滅火系統進行驅趕。「擁有樹莓派的所有計算機愛好者應該都能做到這件事,」Dekel 表示。「但今天,很少有人去做。」
Dekel 是一名機器學習專家,他的工作就是專注解決這類問題。他在 Redmond 與印度班加羅爾領導了一個由大約 30 名電腦科學家、軟體工程師和其他研究實習者們組成的團隊,正在致力於開發一類全新的機器學習軟體和工具,它可以將人工智慧塞進麵包屑大小的計算機處理器中。
這套系統的早期版本已經開源,可在 GitHub 中獲取:https://github.com/Microsoft/ELL
這項計劃是微軟執行長薩提亞·納德拉最近在 Build 2017 大會上倡導的業界技術新轉變的一部分,他曾說道:「我們正從目前的移動優先、雲優先轉變到雲端智慧和終端智慧的世界。」
終端智慧
創造基於終端的人工智慧是讓智慧裝置實用化的前置條件——讓人工智慧嵌入在我們的衣服中,散佈在我們的家中和辦公室裡,充分部署並執行多種任務:異常檢測,以及汽車發動機、電梯和鑽井裝置的預測性維護。
今天,這些型別的裝置主要用作感測器,只負責收集和傳送資料,而機器學習模型執行在雲端。「所有這些過程需要大量的計算,也需要耗費很多儲存資源,」微軟 Redmond 研究院商務和技術運營負責人 Shabnam Erfani 說道。「你不能把所有這些塞進低成本的嵌入式裝置中。」
「Dekel 和他的同事們卻試圖完成這個不可能的任務,」她又說道。「透過壓縮和讓機器學習更加高效,你可以讓它們執行在終端裝置上。」
這些智慧裝置是物聯網(IoT)的一部分,它們是自動,甚至智慧化的,有些可以在未連線網路的環境下工作。
印度實驗室的研究者們,從左前起:Manik Varma,Praneeth Netrapalli,Chirag Gupta,Prateek Jain,Yeshwanth Cherapanamjeri,Rahul Sharma,Nagarajan Natarajan 和 Vivek Gupta。
「現有的正規化是:這些裝置是愚蠢的,」微軟印度研究院資深研究員,本專案的共同領導人 Manik Varma 說道。「它們可以感受到周圍的環境,將感測器讀數傳送到雲端,讓機器學習在伺服器上執行。然而這種模式並不是我們想象中能夠改變世界的樣子。」
將機器學習推向裝置本身可以減少頻寬的壓力,打消延遲的困擾——資料從裝置傳送到伺服器不可避免的需要時間。Varma 指出,基於終端裝置的機器學習也可以減少傳輸資訊帶來的電池消耗,並透過本地儲存資料的形式來保護隱私。
在專案中,研究人員想象了所有智慧裝置的應用場景,從用於精準灌溉的智慧土壤感測器到可以向護理人員及時提醒癲病發作的腦機介面裝置。
「如果你正在高速公路上開車,連不上網,你肯定不希望腦機介面就停止工作了,」Varma 說道。「事實上,這是你最需要它的時候。」
自頂向下
研究團隊採用了自上而下和自下而上的方法來將機器學習模型裝載進資源有限的裝置中。
自上而下的方法包含開發壓縮機器模型演算法,在雲端經過訓練,能夠有效執行在樹莓派 3 和樹莓派 Zero 上。
目前有許多機器學習模型都應用了深度神經網路——一種受人類大腦結構啟發的演算法機制。Dekel 和他的同事們使用了很多技術把深度神經網路塞進了小型裝置中。其中一種技術被稱作權重量化(weight quantization),可以透過幾個位元,甚至一個位元的長度代表神經網路引數,而無需以往的 32 位。
微軟的研究人員正在讓機器學習系統可以執行在微控制器中,它們就像 Ofer Dekel 手中的那麼小。
「我們可以把更多引數塞入更小的空間裡,讓計算機執行得更快,」Dekel 說道。
為了展示這種效果,他播放了一個影片,對比了目前最好的計算機視覺神經網路部署在樹莓派 3 上的表現,壓縮前和壓縮後的:兩個模型幾乎一樣準確,而壓縮過的版本速度要快 20 倍。
這些演算法已經可以在 GitHub 中下載了。微軟的團隊還希望計算機愛好者、製造商和其他並非機器學習專家的人士可以透過這些技術學會端到端處理過程、收集和清理資料、訓練模型並將其部署在終端裝置中。
「向人們提供這些強有力的機器學習工具就是 AI 民主化的一部分,」Redmond 實驗室人機互動研究院 Saleema Amershi 說道。「如果我們有能夠讓小型裝置智慧化的技術,而只有專家才能掌控,那這一切的意義就太小了。」
這個團隊探索的另一個方向是剪除或稀疏化神經網路,這可以讓演算法執行消耗的計算資源更少,可以執行在 ARM Cortex M7 這樣的處理器上。
自底向上
所有這些壓縮工作只會令現有的機器學習模型精簡 10 到 100 倍。而將機器學習部署到 Cortex M0s(最小的 ARM 處理器,物理尺寸只有紅辣椒薄片大小)上,模型需要壓縮到 1000 到 10000 倍。
Dekel 說:「現在我們並沒有方法在 1/10000 的計算資源下繼續使用深度學習,並將其精度保留在大型模型的程度。所以我們需要從頭開始設計一種長期的方法,即為這些有限資源的平臺量身定做新的機器學習技術和工具。」
自底向上的方式從光譜(spectrum)的微端開始,團隊成員正在構建一個整合了很多訓練演算法的庫,每個訓練演算法都已經微調好並可以很好地適應於一組特定的場景。如一個演算法專用於大腦植入應用,另一個專用於檢測噴氣式引擎是否異常和需要維護等。
該團隊關注的最小裝置是 Arduino Uno,這是一種資源十分有限的微控制器,它只有容量為 2 千位元組的 RAM。而他們訓練的機器學習模型卻需要執行一些如回答是否問題、多項選擇問題、預測可能的目標值和為專案排序等任務。
這些模型的靈感來源於雲端系統,但它們正在進行重新設計而縮減所需要學的資料,因此這些演算法能減少計算複雜度和記憶體要求,但同時還能保持準確性和速度。
Varma 解釋說:「最終我們得到的預測幾乎和基於雲端訓練的神經網路一樣精準,但是我們的模型規模十分小,因此它可以部署到只有幾千位元組 RAM 的裝置中。」
微軟研究院正在研究在微控制器(如上圖所示那麼小)上可執行的機器學習演算法的系統。
展現這一研究潛力的一個裝置原型是 Varma(視覺有障礙)的智慧柺杖,能夠檢測摔倒、呼叫幫助。另一潛在的應用是智慧手套,能翻譯美國手語並透過一個音響發音。
Varma 說道:「我喜歡幫助有障礙的人群,讓他們更有能力、更好的融入社會。」
想象未來
在小裝置上做嵌入式 AI 是微軟研究團隊探求十幾年來可普遍存在的科技的願景之一。對 Dekel 和他的同事而言,有了想法之後付諸實踐,每個人都能用一些工具建立智慧化、安全的裝置。
現在,該研究專案正服務於製造者(maker) 社群,也就是和 Dekel 有同樣的問題,並期望用自制技術解決問題的一批人。其他的製造者包括其他領域的專業人士,比如游泳健將想要訓練一個健身手環來計算圈數,分別自由式、仰泳和蝶泳。
Varma 預想這些製造在產業中也能發揮作用,為異常檢測、預測性維護任務開發智慧、安全的最佳化裝置。他提到,「當東西壞的時候修,要比防患於未然成本更高。」
Amershi 認為,如果只把工作留給一小批人工智慧電腦科學家,那麼這種裝置永遠不會多起來。她目前在研究減少邊緣裝置上訓練、部署機器學習模型複雜度與單調性的介面與工具,以便於製造者作出各種裝置。
她說道:「機器學習不是一蹴而就的,它是一種藝術,需要花費努力,不斷迭代,引導機器學習模型去做你想讓他們做的事。」
相關資源:嵌入式學習庫
連結:https://github.com/Microsoft/ELL
嵌入式學習庫(Embedded Learning Library,ELL)能讓你在嵌入式平臺上建立、部署機器學習管道,例如樹莓派、Arduinos、micro:bits 以及其他微控制器。部署的機器學習模型在裝置上執行,脫離雲的連線。我們的 API 既可從 C++ 使用,又可從 Python 使用。
該專案由微軟研究院的團隊開發,是一個持續發展的專案。以下連結是個教程,能讓你在樹莓派上用一個 web cam 做影像識別,即使脫離雲端。部署到派上的軟體將能夠識別大量的物體,並在螢幕上附上識別出的物體名稱。
建立與安裝指南(連結見原文)
- Windows 安裝指南
- Ubuntu Linux 安裝指南
- Mac OS X 安裝指南
原文地址:https://blogs.microsoft.com/next/2017/06/29/ais-big-leap-tiny-devices-opens-world-possibilities/