2019年用于JavaScript的6大機(jī)器學(xué)習(xí)庫
通常,人們使用兩種編程語言之一來應(yīng)用機(jī)器學(xué)習(xí)(ML)方法和算法:Python或R.關(guān)于機(jī)器學(xué)習(xí)的書籍,課程和教程通常也使用這些語言中的一種(或兩者)。
Python是一種通用編程語言,不僅用于機(jī)器學(xué)習(xí),還用于科學(xué)計算,后端Web開發(fā),桌面應(yīng)用程序等.R主要用于統(tǒng)計學(xué)家。但是,它們至少有兩個共同特征:
- 它們適合非程序員
 - 他們有全面的ML庫
 
在許多情況下,ML算法在Fortran,C,C ++或Cython中實(shí)現(xiàn),并從Python或R調(diào)用。
Java也用于機(jī)器學(xué)習(xí),但通常由專業(yè)程序員使用。
在過去的幾年中,JavaScript得到了普及,并且出現(xiàn)了一些非常有趣的機(jī)器學(xué)習(xí)庫,可以在瀏覽器或Node.js上實(shí)現(xiàn)ML方法。令人驚訝的是,許多這些庫在JavaScript中實(shí)現(xiàn)了大量代碼。
ml.js
ml.js是一個全面的,通用的JavaScript ML庫,適用于瀏覽器和Node.js. 它提供了以下例程:
- 對數(shù)組,哈希表,排序,隨機(jī)數(shù)生成等的位操作。
 - 線性代數(shù),數(shù)組操作,優(yōu)化(Levenberg-Marquardt方法),統(tǒng)計
 - 交叉驗(yàn)證
 - 監(jiān)督學(xué)習(xí)
 - 無監(jiān)督學(xué)習(xí)
 
支持的監(jiān)督學(xué)習(xí)方法是:
- 線性,多項式,指數(shù)和冪回歸
 - K-最近鄰居
 - 樸素貝葉斯
 - 支持向量機(jī)
 - 決策樹和隨機(jī)森林
 - 前饋神經(jīng)網(wǎng)絡(luò)等
 
此外,ml.js提供了幾種無監(jiān)督的學(xué)習(xí)方法:
- 主成分分析
 - 聚類分析(k均值和層次聚類)
 - 自組織地圖(Kohonen網(wǎng)絡(luò))
 
TensorFlow.js
TensorFlow是***的機(jī)器學(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ò)。它還提供其他實(shí)用程序,例如神經(jīng)網(wǎng)絡(luò)所需的數(shù)學(xué)例程。
它提供了高級選項,如:
- 使用GPU訓(xùn)練網(wǎng)絡(luò)
 - 可以并行適應(yīng)多個網(wǎng)絡(luò)的異步培訓(xùn)
 - 交叉驗(yàn)證是一種更復(fù)雜的驗(yàn)證方法
 
brain.js將模型保存到JSON文件或從中加載模型。
ConvNetJS
ConvNetJS是神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的另一個庫。它可以在瀏覽器中訓(xùn)練神經(jīng)網(wǎng)絡(luò)。除了分類和回歸問題,它還有強(qiáng)化學(xué)習(xí)模塊(使用Q學(xué)習(xí))仍然是實(shí)驗(yàn)性的。ConvNetJS為在圖像識別方面表現(xiàn)優(yōu)異的卷積神經(jīng)網(wǎng)絡(luò)提供支持。
在ConvNetJS中,神經(jīng)網(wǎng)絡(luò)是層的列表。它提供以下層:
- 輸入(***個)圖層
 - 完全連接的層
 - 卷積層
 - 匯集層
 - 局部對比度歸一化層
 - 分類器丟失(輸出)層:softmax和svm
 - 使用L2的回歸損失(輸出)層
 
它支持幾個重要的激活功能,如:
- RELU
 - 乙狀結(jié)腸
 - 雙曲正切
 - MAXOUT
 
以及優(yōu)化器如:
- 隨機(jī)梯度下降
 - 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和機(jī)器學(xué)習(xí)都得到了很多關(guān)注和普及。盡管最初是為了實(shí)現(xiàn)網(wǎng)頁的動態(tài)行為而創(chuàng)建的,但JavaScript成為實(shí)現(xiàn)和應(yīng)用機(jī)器學(xué)習(xí)方法的***語言之一,尤其是在瀏覽器或服務(wù)器(Node.js)中。
本文提供了有關(guān)JavaScript機(jī)器學(xué)習(xí)庫可用性的初始信息。















 
 
 



 
 
 
 