時間:2017-06-30 來源:互聯網 瀏覽量:
微軟華盛頓州 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 做圖像識別,即使脫離雲端。部署到派上的軟件將能夠識別大量的物體,並在屏幕上附上識別出的物體名稱。