文章選自blog.bitsrc.io,做者:Jonathan Saring,機器之心編譯。
本文做者在構建 Bit 的過程當中探索和嘗試了把 Javascript 和機器學習結合起來使用的可能性,並由此發現了一些簡潔優雅的庫,能夠把 Javascript、機器學習、DNN 甚至 NLP 整合起來。
「等等,什麼??這是一個可怕的想法!」
當我第一次和咱們的 NLP 主要研究人員談起這個概念時,她的原話是這樣的。可能她是對的,但它也是一個很是有趣的概念,最近在 Javascript 領域獲得了愈來愈多的關注。javascript
在過去的一年中,咱們的團隊正在構建 Bit(https://bitsrc.io/),它使得用組件構建軟件變得更加簡單。做爲工做的一部分,咱們開發了 ML 和 NLP 算法,來更好地理解代碼是如何編寫、組織和使用的。java
雖然大多數工做都是用 Python 這樣的語言完成的,但 Bit 位於 Javascript 生態系統中,它的前、後端社區都是如此。node
這個有趣的交集讓咱們探索和嘗試了一塊兒使用 Javascript 和機器學習的奇怪可能性。經過咱們的研究發現,這裏有一些簡潔的庫,能夠將 Javascript、機器學習、DNN 甚至 NLP 結合在一塊兒。git
1. Brain.js
Brain.js 是一個用於神經網絡的 Javascript 庫,用於代替 (如今已經棄用的)「brain」庫,它能夠和 Node.js 一塊兒使用,或在 browser(注意計算)中使用,併爲不一樣任務提供不一樣類型的網絡。如下是訓練網絡來識別色彩對比的例子。
連接:github.com/BrainJS/bra…github
2. Synaptic
Synaptic 是一個用於 node.js 和瀏覽器的 Javascript 神經網絡庫,它使你可以訓練一階甚至是二階神經網絡結構。該項目包括一些內置的體系結構,如多層感知機、多層長短時間記憶網絡、液體狀態機和可以訓練真實網絡的訓練器。
連接:github.com/cazala/syna…web
Synaptic 圖像過濾感知器
3. Neataptic
這個庫爲瀏覽器和 Node.js 提供快速的神經元進化和反向傳播,而且有一些內置的網絡,包括感知器、LSTM、GRU、Nark 等等。這裏是一個簡單訓練的新手教程:https://wagenaartje.github.io/neataptic/docs/tutorials/training/。
連接:github.com/wagenaartje…算法
4. Conventjs
這個由斯坦福大學博士開發的流行庫,在過去的 4 年裏一直沒有維護,但它是列表上最有趣的項目之一。它是神經網絡的 Javascript 實現,支持通用模塊、分類、迴歸、一個試驗性的強化學習模塊,甚至可以訓練處理圖像的卷積網絡。
連接:github.com/karpathy/co…chrome
用 2 層神經網絡進行玩具 2D 分類的 Conventjs 演示
5. Webdnn
這個日本製造的庫用於在瀏覽器上運行深度神經網絡預訓練模型,而且運行速度很快。因爲在瀏覽器上運行 DNN 會消耗大量計算資源,所以該框架優化了 DNN 模型來壓縮模型數據,並經過 JavaScript APIs(如 WebAssembly 和 WebGPU)加速執行。
連接:github.com/mil-tokyo/w…apache
6. Deeplearnjs
這個流行的庫容許你在瀏覽器中訓練神經網絡,或者在推理模式下運行預訓練模型,甚至聲稱它能夠用做網頁版 NumPy。經過易於讀取的 API,該庫可用於有用應用程序的真實性,並被積極地維護。
連接:github.com/tensorflow/…編程
7. Tensorflow Deep Playground
Deep playground 是神經網絡的交互式可視化,使用 d3.js 在 TypeScript 中編寫。雖然這個項目包含了一個很是基本的 tensorflow playground,但它能夠被用於不一樣的目的,或用做使人印象深入的不一樣用途的教育功能。
連接:github.com/tensorflow/…
8. Compromise
這個很是流行的庫提供了「在 JavaScript 中適度的天然語言處理」。它很是基本和直接,甚至能夠編譯成一個小文件。出於某種緣由,它的適度的「足夠好」的方法使其成爲幾乎全部須要基本 NLP 的應用程序的首選。
連接:github.com/spencermoun…
9. Neuro.js
這個項目很棒,它爲瀏覽器提供一個深度學習和強化學習的 Javascript 庫框架。它在擴展強化學習支持下,實現一個基於全棧神經網絡的機器學習框架,有些人認爲這個項目是 convnet.js 的繼承者。
連接:github.com/janhuenerma…
10. mljs
11. Mind
其餘重要的庫:
Natural
Node.js 的一個積極維護的庫,它提供標記法、詞幹提取(減小沒必要要的詞根)、分類、語音學、tf-idf、WordNet、字符串類似度等。
Incubator-mxnet
Apache MXNet 是一個深度學習框架,它容許你將符號和命令式編程與圖形優化層在線結合起來以提升性能。MXnet.js 爲瀏覽器帶來了一個深度學習推理 API。
Keras JS
該庫在瀏覽器中運行 Keras 模型,使用 WebGL 並支持 GPU。因爲 Keras 使用了許多框架做爲後端,因此模型也能夠在 TensorFlow、CNTK 和其餘框架中進行訓練。
Deepforge
一個深度學習的開發環境,它使你可以快速設計神經網絡結構和機器學習管道,並使用內置版本控制再現實驗。值得一試。
Land Lines
與其說它是一個庫,不如說是一個基於谷歌 Chrome 實驗的很是酷的演示/網頁遊戲。儘管我不肯定該如何處理,但它確定會爲你帶來一天中最愉快的 15 分鐘。
顯然,Javascript 遠沒有成爲機器學習選擇的語言。然而,諸如性能、矩陣操做和豐富有用的庫等常見問題正在慢慢消失,縮小了常見應用和有用的機器學習之間的差距。