人工智慧的團隊裡面前端工程師主要是做什麼?

人工智慧的團隊裡面前端工程師主要是做什麼?前端工程師的主要工作職責是什麼?


之前很長的一段時間,一直負責在做阿里雲人工智慧產品 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有哪些可能?
能否僅僅通過語法構詞分析掌握一門完全陌生的語言?
如何評價清華大學第二十屆「搜狗杯」智能體大賽?

TAG:前端開發 | 人工智慧 | 前端工程師 | 工程師 |