由於篇幅過長,上文 只簡單介紹了一些人工智能的概念,本篇我們將展開 Web 方面的應用。
一、AI 應用場景
針對一些場景,做了一下簡單的分類,如圖:
二、AI 如何影響前端
1.數據可視化,依賴 D3.js,ECharts,WebGL
2.模型可視化
用可視化的手段去解釋模型,輔助算法同學調參 。最簡單的一個應用前端同學肯定非常熟悉,我們來看下圖:
是的,曲線函數和曲率我們很難記住,但是有相應的工具,會讓一些數據和計算變得簡單易懂。
3.
相關技術提到人工智能,和前端密切相關的幾個 JS 類庫有:
- tensorflow.js
基於 tensorflow.js Node 的 tvnet 算法,可以提取視頻中的稠密光流。 - deeplearning.js
- kera.js
高性能計算:
- asm.js
- WebAssembly
- GPU
- Opencv,前端做 CV 算法,物體跟蹤、圖像處理、特徵檢測等等
大家可能發現一個問題,一般的 tensorflow 模型動輒幾百兆,在前端怎麼跑呢?這就不得不提到 MobileNet,這是針對於移動端模型提出的神經網絡架構,能極大地減少模型參數量,同理也能用到瀏覽器端上。
更多細節可以查看該文章:《前端與人工智能》,介紹非常到位。
三、如何做?
既然前端和人工智能有如此多的交集,那麼我們該從何做起呢?不要著急,我們先來看一個完整的人工智能項目包含哪些內容。
上圖中,可以看到一個完整的人工智能項目是由:算法,數據,工程三部分構成。
工程部分我們可以理解為「大前端」,主要包含 5 部分:
- 人機交互
- 數據可視化
- 產品 Web
- 算法執行
- 模型訓練
四、簡單應用
1.Tranck.js
就是純瀏覽器的圖像算法庫,通過 JS 計算來執行算法邏輯
2.regl-cnn
瀏覽器端的數字識別類庫,與 track.js 不同的是,它利用瀏覽器的 WebGL 才操作 GPU,實現了 CNN。
3.ConvNetJS
瀏覽器端做深度學習算法訓練的工具,官網地址
4.Amazon Rekognition
基於同樣由 Amazon 計算機視覺科學家開發的成熟且高度可擴展的深度學習技術,每天能夠分析數十億張 Prime Photos 圖像。
5.對比學習:Keras 搭建 CNN,RNN 等常用神經網絡
6.機器學習:MachineLearning
更多內容可以查看:
1.瀏覽器裡運行的人工智能
2.前端在人工智能時代能做些什麼
五、深度學習
深度學習,是英文 Deep Learning 的直譯。它是實現機器學習的其中一種方式。機器學習還包含其它實現方案。
深度學習裡,用到了人工神經網絡,這是一個用計算機模擬大腦神經元運作模式的算法。同時,這個人工神經網絡的隱藏層數量還必須足夠多,才能構成深度神經網絡。然後喂之以大量的訓練數據,就是深度學習了。
換一個角度,如果隱藏層數量不多,而是每個隱藏層裡包含的神經元數量很多,在形態上,它就是一個往寬度發展的神經網絡結構。這時,可能就叫廣度學習了。
目前,深度學習還是主流,它的訓練效率,優於廣度學習。
我們可以體驗騰訊的一個深度學習案例:
更多有趣應用:
1.TensorFlowJS 學習
2.如何利用 TensorFlow.js 部署簡單的 AI 版「你畫我猜」圖像識別應用
六、明確幾個概念
機器學習對我們來說確實陌生,所以一定要從明確一些常用的概念,這樣才能提升學習的興趣。我們來說一些可能會涉及到的內容(我也是正在摸索,目前就知道這些,逃~)
1.精確率
是針對我們預測結果而言的,它表示的是預測為正的樣本中有多少是真正的正樣本。
2.召回率
是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了
3.監督學習
監督學習涉及到標註數據,計算機可以使用所提供的數據來識別新的樣本。
監督學習的兩種主要類型是分類和迴歸。在分類中,訓練的機器將把一組數據分成特定的類。
4.無監督學習
在無監督學習中,數據是未標註的。由於現實中,大多數的數據都是未標註的,因此這些算法特別有用。
無監督學習分為聚類和降維。
5.強化學習
強化學習使用機器的歷史和經驗來做出決策。強化學習的經典應用是遊戲。與監督和無監督學習相反,強化學習不注重提供「正確」的答案或輸出。
七、機器學習算法有哪些?
提到機器學習,大家肯定都會自然聯想到需要很強的算法功底。沒錯,確實如此,所以我們需要對算法有一些瞭解。
那麼機器學習主要涉及到哪幾類算法呢,我們來看看:
- 模式識別
- 計算機視覺
- 數據挖掘
- 統計學習
- 語音識別
- 自然語言處理
八、機器學習涉及學科
主要圍繞在這幾方面:線性代數、微積分、概率和統計。
線性代數概念Top 3:
- 矩陣運算
- 特徵值/特徵向量
- 向量空間和範數
微積分概念Top 3:
- 偏導數
- 向量值函數
- 方向梯度
統計概念Top 3:
- 貝葉斯定理
- 組合學
- 抽樣方法
九、計算機視覺
OpenCV 是一個基於 BSD 許可(開源)發行的跨平臺計算機視覺庫,可以運行在 Linux、Windows、Android 和 Mac OS 操作系統上。
它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了 Python、Ruby、MATLAB 等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。
應用領域:
1、人機互動
2、物體識別
3、圖像分割
4、人臉識別
5、動作識別
6、運動跟蹤
7、機器人
8、運動分析
9、機器視覺
10、結構分析
11、汽車安全駕駛
OpenCV 的應用領域非常廣泛,包括圖像拼接、圖像降噪、產品質檢、人機交互、人臉識別、動作識別、動作跟蹤、無人駕駛等。
OpenCV 還提供了機器學習模塊,你可以使用正態貝葉斯、K最近鄰、支持向量機、決策樹、隨機森林、人工神經網絡等機器學習算法。
這裡推薦幾個相關學習網站:
1.官網
2.OpenCV教程
3.圖像對比
十一、總結
AI 涉及到很多的領域,並不是我們三言兩語就能夠說的明白。要真正的應用起來,還有很多的路要走。
我相信,隨著技術的發展,更多的場景將接入 AI,而 Web 則是其中的一個重要環節。加上 Web 跨平臺特性,以及「算法-數據-工程」的驅動,未來在該領域一定會大放異彩。
很喜歡這句話:AI makes life better. FE makes AI better.
快來關注我吧,一起成長,一起研究 Web 的點點滴滴。
閱讀更多 F2EAwesome 的文章