2019年用于JavaScript的6大機器學(xué)習(xí)庫
通常,人們使用兩種編程語言之一來應(yīng)用機器學(xué)習(xí)(ML)方法和算法:Python或R.關(guān)于機器學(xué)習(xí)的書籍,課程和教程通常也使用這些語言中的一種(或兩者)。
Python是一種通用編程語言,不僅用于機器學(xué)習(xí),還用于科學(xué)計算,后端Web開發(fā),桌面應(yīng)用程序等.R主要用于統(tǒng)計學(xué)家。但是,它們至少有兩個共同特征:
- 它們適合非程序員
- 他們有全面的ML庫
在許多情況下,ML算法在Fortran,C,C ++或Cython中實現(xiàn),并從Python或R調(diào)用。
Java也用于機器學(xué)習(xí),但通常由專業(yè)程序員使用。
在過去的幾年中,JavaScript得到了普及,并且出現(xiàn)了一些非常有趣的機器學(xué)習(xí)庫,可以在瀏覽器或Node.js上實現(xiàn)ML方法。令人驚訝的是,許多這些庫在JavaScript中實現(xiàn)了大量代碼。
ml.js
ml.js是一個全面的,通用的JavaScript ML庫,適用于瀏覽器和Node.js. 它提供了以下例程:
- 對數(shù)組,哈希表,排序,隨機數(shù)生成等的位操作。
- 線性代數(shù),數(shù)組操作,優(yōu)化(Levenberg-Marquardt方法),統(tǒng)計
- 交叉驗證
- 監(jiān)督學(xué)習(xí)
- 無監(jiān)督學(xué)習(xí)
支持的監(jiān)督學(xué)習(xí)方法是:
- 線性,多項式,指數(shù)和冪回歸
- K-最近鄰居
- 樸素貝葉斯
- 支持向量機
- 決策樹和隨機森林
- 前饋神經(jīng)網(wǎng)絡(luò)等
此外,ml.js提供了幾種無監(jiān)督的學(xué)習(xí)方法:
- 主成分分析
- 聚類分析(k均值和層次聚類)
- 自組織地圖(Kohonen網(wǎng)絡(luò))
TensorFlow.js
TensorFlow是***的機器學(xué)習(xí)庫之一。它側(cè)重于人工神經(jīng)網(wǎng)絡(luò)的各種類型和結(jié)構(gòu),包括深度網(wǎng)絡(luò)以及網(wǎng)絡(luò)的組件。
TensorFlow由Google Brain Team創(chuàng)建,使用C ++和Python編寫。但是,它可以與包括JavaScript在內(nèi)的多種語言一起使用。
TensorFlow是一個非常全面的庫,仍然可以輕松地構(gòu)建和培訓(xùn)模型。它支持各種各樣的網(wǎng)絡(luò)層,激活功能,優(yōu)化器和其他組件。它具有良好的性能并提供GPU支持。
TensorFlow.js是一個用于瀏覽器或Node.js的JavaScript ML庫。它支持WebGL。
brain.js
brain.js是一個用JavaScript編寫的庫 - 專注于訓(xùn)練和應(yīng)用前饋和循環(huán)神經(jīng)網(wǎng)絡(luò)。它還提供其他實用程序,例如神經(jīng)網(wǎng)絡(luò)所需的數(shù)學(xué)例程。
它提供了高級選項,如:
- 使用GPU訓(xùn)練網(wǎng)絡(luò)
- 可以并行適應(yīng)多個網(wǎng)絡(luò)的異步培訓(xùn)
- 交叉驗證是一種更復(fù)雜的驗證方法
brain.js將模型保存到JSON文件或從中加載模型。
ConvNetJS
ConvNetJS是神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的另一個庫。它可以在瀏覽器中訓(xùn)練神經(jīng)網(wǎng)絡(luò)。除了分類和回歸問題,它還有強化學(xué)習(xí)模塊(使用Q學(xué)習(xí))仍然是實驗性的。ConvNetJS為在圖像識別方面表現(xiàn)優(yōu)異的卷積神經(jīng)網(wǎng)絡(luò)提供支持。
在ConvNetJS中,神經(jīng)網(wǎng)絡(luò)是層的列表。它提供以下層:
- 輸入(***個)圖層
- 完全連接的層
- 卷積層
- 匯集層
- 局部對比度歸一化層
- 分類器丟失(輸出)層:softmax和svm
- 使用L2的回歸損失(輸出)層
它支持幾個重要的激活功能,如:
- RELU
- 乙狀結(jié)腸
- 雙曲正切
- MAXOUT
以及優(yōu)化器如:
- 隨機梯度下降
- Adadelta
- AdagradS
- ConvNetJS還提供了一種方便的方法來保存和加載JSON文件的模型。
執(zhí)照:麻省理工學(xué)院。
WebDNN
WebDNN是一個專注于深度神經(jīng)網(wǎng)絡(luò)的圖書館,包括具有LSTM架構(gòu)的遞歸神經(jīng)網(wǎng)絡(luò)。它使用TypeScript和Python編寫,并提供JavaScript和Python API。
它還提供了在瀏覽器中執(zhí)行GPU的可能性。
WebDNN的一個非常方便的功能是可以轉(zhuǎn)換和使用PyTorch,TensorFlow,Keras,Caffemodel或Chainer預(yù)訓(xùn)練的模型。
natural
natural是一個用于Node.js的自然語言處理的JavaScript庫。
它支持:
- 標(biāo)記化(將文本分解為字符串?dāng)?shù)組)
- 弦距離的計算
- 匹配相似的字符串
- 分類(樸素貝葉斯,邏輯回歸和***熵)
- 情感分析(目前有八種語言)
- 語音匹配,inflectors,n-gram等
結(jié)論
在過去的幾年里,JavaScript和機器學(xué)習(xí)都得到了很多關(guān)注和普及。盡管最初是為了實現(xiàn)網(wǎng)頁的動態(tài)行為而創(chuàng)建的,但JavaScript成為實現(xiàn)和應(yīng)用機器學(xué)習(xí)方法的***語言之一,尤其是在瀏覽器或服務(wù)器(Node.js)中。
本文提供了有關(guān)JavaScript機器學(xué)習(xí)庫可用性的初始信息。