作者 | 極鏈科技Video++技術(shù)中心前端Team
整理 | 包包
3個(gè)月前,公司AI團(tuán)隊(duì)給我們分享了關(guān)于如何利用機(jī)器學(xué)習(xí)幫助我們分析圖片、視頻中的明星以及地標(biāo)等。作為一名Web的前端開(kāi)發(fā)者,我很好奇機(jī)器學(xué)習(xí)是如何工作的。我并沒(méi)計(jì)劃要系統(tǒng)學(xué)習(xí)關(guān)于機(jī)器學(xué)習(xí)(ML)、神經(jīng)網(wǎng)絡(luò)、NLP自然語(yǔ)言處理之類的知識(shí),不過(guò)光看到這些概念就覺(jué)得很有意思,簡(jiǎn)直是打開(kāi)了一個(gè)新的世界。
大多數(shù)玩機(jī)器學(xué)習(xí)的同事在工作中都是用 Python 這樣的語(yǔ)言完成的,但既然身處在 JavaScript 這個(gè)生態(tài)中,為什么不試試一起使用JavaScript玩機(jī)器學(xué)習(xí)呢?而且使用 JavaScript 還允許運(yùn)行在瀏覽器和服務(wù)器端、甚至是桌面程序上。通過(guò)做一些Search和研究發(fā)現(xiàn),這里的確有一些簡(jiǎn)潔的庫(kù),可以將JavaScript、機(jī)器學(xué)習(xí)、DNN甚至NLP結(jié)合在一起,而且在瀏覽器端大多庫(kù)會(huì)調(diào)用WebGL來(lái)做機(jī)器學(xué)習(xí)的計(jì)算。
1.TensorFlow.js (https://js.tensorflow.org/)
TensorFlow.js是一個(gè)開(kāi)源的基于硬件加速的 JavaScript 的庫(kù),支持在瀏覽器或者 NodeJs 中來(lái)運(yùn)行深度學(xué)習(xí),并且能支持現(xiàn)有的Tensorflow 模型,由Google出品??梢哉f(shuō)是前端深度學(xué)習(xí)框架Deeplearn.js的繼任者。它提供一系列簡(jiǎn)潔和通俗易懂的API,用于訓(xùn)練、部署模型。而且因?yàn)榭梢赃\(yùn)行在瀏覽器,所以可以直接通過(guò)URL就能分享你的程序:
通過(guò)攝像頭來(lái)控制的吃豆人游戲
2. Brain.js (https://brain.js.org/)
Brain.js是同樣可以運(yùn)行在瀏覽器和 NodeJs 服務(wù)器端、能為不同的任務(wù)提供不同類型的訓(xùn)練網(wǎng)絡(luò)。特點(diǎn)是讓定義、訓(xùn)練以及執(zhí)行神經(jīng)網(wǎng)絡(luò)變得特別簡(jiǎn)單。個(gè)人覺(jué)得這個(gè)庫(kù)比較適合入門(mén)。比如以下短短幾行代碼已涵蓋創(chuàng)建、訓(xùn)練和執(zhí)行神經(jīng)網(wǎng)絡(luò),一目了然:
Brain.js 的色彩識(shí)別器
3. Synaptic.js (http://caza.la/synaptic)
Synaptic可以運(yùn)行在瀏覽器和 NodeJs 服務(wù)器端的神經(jīng)網(wǎng)絡(luò)庫(kù),你能夠用它訓(xùn)練一層甚至是二層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。該庫(kù)包括一些內(nèi)置的體系結(jié)構(gòu),如多層感知機(jī)(MLP)、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)、液體狀態(tài)機(jī)和能夠訓(xùn)練真實(shí)網(wǎng)絡(luò)的訓(xùn)練器。
Synaptic image-filter perceptron
4. Machine learning tools (https://github.com/mljs/ml)
Machine Learning tools是由 mljs 組織開(kāi)發(fā)的一組庫(kù),可以為 JavaScript 提供機(jī)器學(xué)習(xí)工具,包括監(jiān)督和非監(jiān)督學(xué)習(xí)、人工神經(jīng)網(wǎng)絡(luò) (ANN)、回歸算法,用于統(tǒng)計(jì)、數(shù)學(xué)等的支持庫(kù),類似于 Python 中的scikit-learn。
5. compromise (http://compromise.cool/)
基本上是NLP自然語(yǔ)言處理庫(kù) - 前端 JavaScript 實(shí)現(xiàn)的首選,這個(gè)庫(kù)加上自己的資料庫(kù)壓縮成min.js后文件大小可達(dá)到300k以下,這樣運(yùn)行在瀏覽器和 NodeJs 服務(wù)器端都問(wèn)題不大,具體可以做的東西是訓(xùn)練自定義語(yǔ)義庫(kù):劃分出分詞,獲取句子的各個(gè)詞性,可以把句子變積極消極、分詞等,比如以下例子:
JavaScript 雖然不是機(jī)器學(xué)習(xí)的最佳編程語(yǔ)言,不過(guò)隨著Web生態(tài)和人工智能技術(shù)近年來(lái)的不斷發(fā)展完善,越來(lái)越多這樣的機(jī)器學(xué)習(xí)工具庫(kù)被研發(fā)和發(fā)布。對(duì)于一名Web的前端開(kāi)發(fā)者而言,用 JavaScript 作為入門(mén)機(jī)器學(xué)習(xí)的橋梁是個(gè)不錯(cuò)的選擇,它同樣能幫助你開(kāi)啟機(jī)器學(xué)習(xí)之旅。
參考資料:
《A Web Developer’s Guide to Machine Learning in JavaScript》
-
開(kāi)源
+關(guān)注
關(guān)注
3文章
3368瀏覽量
42567 -
javascript
+關(guān)注
關(guān)注
0文章
519瀏覽量
53889 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8424瀏覽量
132764
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論