人工智慧的團隊裡面前端工程師主要是做什麼?
人工智慧的團隊裡面前端工程師主要是做什麼?前端工程師的主要工作職責是什麼?
之前很長的一段時間,一直負責在做阿里雲人工智慧產品 ET
為了一名前端工程師,參與了當中的一些工程工作,分享出來,希望對大家有所幫助。
前端工程師在人工智慧的團隊到底能做什麼,能體現怎麼的價值?對此,可以先下圖的一個總結,然後再會逐條結合實際以及業界的發展情況做一些分析
從我們的實踐看,要完成一個完整的人工智慧項目,三種東西是不可或缺的:演算法,數據和工程。
而前端在這三個方向種,最容易參與進去,同時也最容易做出彩的地方就是在工程方面,我們把這塊內容叫做大前端。
具體的大致可以分為五塊內容:人機交互,數據可視化,產品Web, 計算,模型訓練和演算法執行。
對於前三點偏重交互的領域,毋庸置疑用前端做起來駕輕就熟,
而後面偏重計算的領域,前端是否合適做,或者說前端該怎麼去做是有可以探討的。
一. 人機機互
這個應該前端這幾年發力的重點,而且取得不錯進展的地方。
特別是隨著HTML5技術,特別是移動互聯網的普及,瀏覽器對硬體的控制越來越好。
在AI的項目中,很多時候需要獲取麥克風和攝像頭的許可權,好實現「聽」,「說」, 「看」的功能。
具體可以參考 MediaDevices.getUserMedia 的 H5 文檔,裡面對這塊有詳細的介紹。
對於圖片的處理,之前網上已經不少的用 Canvas 例子,我就不做過多的介紹。
這裡重點對語音處理的內容,這塊由於需要很多專業方面的知識,之前處理前端處理起來還是挺痛苦的,不過現在 Web Audio API 很好的解決了這個問題。
它提供了在Web上控制音頻的一個非常有效通用的系統,允許開發者來自選音頻源,對音頻添加特效,使音頻可視化,添加空間效果 等等。
更有甚者,Chrome中已經自動集成了語音識別的基礎 SDK: Web Speech API
二. 數據可視化
數據可視化 可以是前幾年特別火的一個方向,特別是大數據風起雲湧的時代
而這些年明顯的趨勢就是人工智慧,就是AI,在這裡其實也有很多可視化的工作
比如我們在 ET 項目中就需要做很多聲音的可視化內容
以及現在外面在做的一些人臉可視化的內容
地址:PREDICTIVE_WORLD, the program that predicts your future/
三. 產品Web
任何人工智慧的技術最終一定需要轉化成實際的產品或者項目
這樣的話,往往少不了Portal和控制台。
這些工作,前端的工作也是在所難免。
這是常規的工作,這裡就不再過多描述了
四. 演算法執行
演算法執行顧名思義,其實就是執行演算法邏輯,比如人臉識別,語音識別 …
前幾年有些大家對前端的認知還停留在純瀏覽器端,但隨著 V8 引擎在2008 年發布, Node.js 在2009 年 發布,前端的領地就擴展到伺服器端,桌面應用。
這些演算法執行的原先都需要後端同學開發,現在也可以由前端同學才完成。
我們很多AI的項目,很多時候往往就是演算法的同學提供給我們一些動態鏈接庫或者C的代碼,我們通過Nodejs驅動這些服務提供 http介面,瀏覽器通過ajax來調用這些介面。
更有甚者,現在PC性能提升,V8對JS執行的優化,特別WebGL 在各個瀏覽器端的普及
很多演算法執行不一定並不一定需要在後端執行,瀏覽器也可以勝任。
比如:
Tranck.js:就是純瀏覽器的圖像演算法庫,通過javascript計算來執行演算法邏輯
regl-cnn: 瀏覽器端的數字識別類庫,與track.js 不同的是,它利用瀏覽器的WebGL 來操縱GPU, 實現了CNN
五. 模型訓練
雖然現在階段也出現了像 ConvNetJS 這種在瀏覽器端做深度學習演算法訓練的工具,
但整體而言,前端在這塊還是非常欠缺的,同時缺少非常成功的實踐。
究其原因,還是因為跨了領域,特別是專業類庫往往都不是javascript寫的,造成更大的隔閡
但就像谷歌的TensorFlow機器學習框架底層大部分使用 C++實現,但選擇了 Python 作為應用層的編程語言。
Javascript 在各個端,特別是web端的優勢,也是一門非常優秀的應用開發語言。
可喜的是看到挺多同學在往這個方向走,我們拭目以待
ConvNetJS:Deep Learning in your browser
寫在最後:
如果大家對這塊感興趣,也希望來阿里巴巴一起做大數據和人工智慧相關的工作,隨時歡迎發簡歷給我:jifeng.zjd@taobao.com。大家一起合作,做件有意義的事情
前端又不是畫網頁,AI那麼多數據需要圖形化。大量的數據需要通過界面進行交互,說多了都是坑和淚。好羨慕框架黨和輪播圖黨。
做AI部門的官網
Mi Cloud前端組今年開始支持小米大腦的前端需求,除了很容易想到的數據可視化,目前還有對圖像和語音數據的標註系統,和某些智能產品的demo版。
面對現實,AI目前還是嬰兒階段,還有很長的路要一步一個腳印地走。
比如機器識別得準不準,需要篩選出來樣本,人工檢查和打標籤,再回爐。
比如智能服務還沒ready到產品化的程度,但又需要以某些之前沒廣泛應用的人機交互方式來體驗,就需要web端做個demo版體驗看看。目前在工程上的支持人手吃緊,不局限於前端的工程師也開始做起後端開發。比如最近在做的語音數據標註系統,抱著實踐出真知的心態,嘗試用GraphQL做介面層,用Node.js Koa搭介面服務,設計MySQL中的各種業務表,力求靈活支持各種角度的標註需求。雖然是樣本數據,但量也還是很大的,需要考慮分表,還有數據遷移和各種連表操作,幸運的是實時性要求不高,還不至於失控。漸漸覺得在前端圈裡培養的不斷學習的意識很是受用。不給自己設限,才能發現潛在的自己。
回到UI層面,比如如何讓標註人員高效操作,如何直觀快速地看到圖像或語音波形圖中的關鍵信息,提高標註效率,這也是必須考慮的事情,別說那是產品的事。
總之別把自己局限為前端工程師,甚至工程師。做平台,也就是做展示,做接入。沒了前端,NB的技術如何快速推廣給投資人和不明覺厲的小白,沒了前端,AI就算啞巴了吧
從目前狀態來看,感覺主要還是平台開發 + 數據可視化
推薦閱讀:
※人工智慧、機器學習和深度學習的區別?
※虛擬現實+人工智慧+5G有哪些可能?
※能否僅僅通過語法構詞分析掌握一門完全陌生的語言?
※如何評價清華大學第二十屆「搜狗杯」智能體大賽?