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