近幾年,機(jī)器學(xué)習(xí)庫發(fā)展的得越來越快磕蛇,也變得越來越易用景描,而且并沒有顯示出放緩的跡象。 雖然傳統(tǒng)上 Python 一直是機(jī)器學(xué)習(xí)的首選語言秀撇,但現(xiàn)在神經(jīng)網(wǎng)絡(luò)可以運(yùn)行在任何語言中超棺,包括 JavaScript
網(wǎng)絡(luò)生態(tài)系統(tǒng)近年來已經(jīng)取得了很大的進(jìn)步,盡管 JavaScript 和 Node.js 的性能仍然不如 Python 和 Java呵燕,但它們現(xiàn)在已經(jīng)足夠強(qiáng)大棠绘,可以處理許多機(jī)器學(xué)習(xí)問題。 Web 語言還具有“超級可訪問性”的優(yōu)點——運(yùn)行一個 JavaScript ML 項目所需要的只是 Web 瀏覽器再扭。
大多數(shù) JavaScript 機(jī)器學(xué)習(xí)庫都是相當(dāng)新的氧苍,并且仍在開發(fā)中,但是它們確實存在等待你的嘗試泛范。 在這篇文章中让虐,我們將對其中的一些庫進(jìn)行初探,并展示一些很酷的人工智能網(wǎng)絡(luò)應(yīng)用程序的例子罢荡,來幫助你開始你的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)之路赡突。
1. Brain
Brain
是一個可以讓你輕松地搭建一個神經(jīng)網(wǎng)絡(luò),并根據(jù)輸入 / 輸出數(shù)據(jù)訓(xùn)練這個網(wǎng)絡(luò)区赵。 由于訓(xùn)練占用了大量資源惭缰,所以最好在 Node.js 環(huán)境中運(yùn)行庫,盡管 CDN 瀏覽器版本也可以直接加載到網(wǎng)頁上笼才。 在他們的網(wǎng)站上有一個小demo 漱受,可以訓(xùn)練識別顏色的對比度。
2. Deep playground
教育網(wǎng)絡(luò)應(yīng)用程序骡送,可以讓你體驗神經(jīng)網(wǎng)絡(luò)昂羡,并探索其中不同的組件絮记。 它的 UI非常棒,允許您控制輸入數(shù)據(jù)紧憾、神經(jīng)元數(shù)量到千、要使用的算法,以及各種其他會對結(jié)果產(chǎn)生影響的參數(shù)赴穗。 這款應(yīng)用程序背后還有很多值得我們學(xué)習(xí)的地方——它的代碼是開源的憔四,并且使用了一個自定義的機(jī)器學(xué)習(xí)庫,這個庫是用TypeScript
編寫的般眉,并且有完善的文檔了赵。
3. FlappyLearning
是一個 JavaScript 項目,在大約800行的無壓縮代碼中創(chuàng)建了一個機(jī)器學(xué)習(xí)庫甸赃,并在一個有趣的演示中實現(xiàn)它柿汛,學(xué)會像一個演奏家一樣玩 Flappy Bird 。 這個庫使用的人工智能技術(shù)被稱為Neuroevolution 埠对,它使用的算法靈感來源于自然界中神經(jīng)系統(tǒng)络断,從每次迭代的成功或者失敗中動態(tài)地學(xué)習(xí)經(jīng)驗。 這個演示程序非常容易運(yùn)行——只需在瀏覽器中打開index.html
即可项玛。
Synaptic
這可能是本文列舉的項目中最活躍的一個貌笨,Synaptic
是一個Node.js
和瀏覽器庫,它與框架無關(guān)襟沮,允許開發(fā)者構(gòu)建他們想要的任何類型的神經(jīng)網(wǎng)絡(luò)锥惋。 它有少許的內(nèi)置的框架,能夠進(jìn)行快速測試开伏,以及比較不同的機(jī)器學(xué)習(xí)算法膀跌。 它還有精心編寫的關(guān)于神經(jīng)網(wǎng)絡(luò)的介紹,一些練習(xí)演示固灵,以及還有許多非常精彩的教程來揭示機(jī)器學(xué)習(xí)是如何工作的捅伤。
Land Lines
Land Lines
是一個有趣的 Chrome Web
網(wǎng)絡(luò)實驗,用戶進(jìn)行涂鴉后巫玻,根據(jù)地球的衛(wèi)星圖像找出和涂鴉最相似的衛(wèi)星圖像區(qū)域暑认。 這個應(yīng)用程序不需要服務(wù)器調(diào)用:它完全在瀏覽器中工作,而且由于機(jī)器學(xué)習(xí)的巧妙應(yīng)用大审,WebGL 甚至在移動設(shè)備上也有很好的性能。 你可以在 GitHub 上查看源代碼座哩,或者在這里閱讀完整的案例徒扶。
ConvNetJS
ConvNetJS
是 JavaScript 中最先進(jìn)的深度學(xué)習(xí)庫之一,盡管它不再有活躍的維護(hù)根穷。 最初在斯坦福大學(xué)開發(fā)的時候姜骡,ConvNetJS 在 GitHub 上相當(dāng)流行导坟,產(chǎn)生了許多社區(qū)驅(qū)動的特性和教程。 它可以直接在瀏覽器中工作圈澈,支持多種機(jī)器學(xué)習(xí)技術(shù)惫周,而且層次較低,適合在神經(jīng)網(wǎng)絡(luò)方面有較大經(jīng)驗的人康栈。
Thing Translator
Thing Translator
是一個網(wǎng)絡(luò)實驗递递,它允許你的手機(jī)識別現(xiàn)實生活中的物體,并用不同的語言給它們命名啥么。 這款應(yīng)用完全基于網(wǎng)絡(luò)技術(shù)登舞,并且使用了谷歌的兩個機(jī)器學(xué)習(xí)接口,Cloud Vision ——進(jìn)行圖像識別悬荣; Translate API ——自然語言翻譯菠秒。
Neurojs
Neurojs
是基于強(qiáng)化學(xué)習(xí)的AI系統(tǒng)構(gòu)建框架。 遺憾的是氯迂,這個開源項目沒有合適的文檔践叠,但是其中一個關(guān)于自動駕駛汽車實驗的demo ,對構(gòu)成神經(jīng)網(wǎng)絡(luò)的不同組成有很好的描述嚼蚀。 這個庫是純 JavaScript 的禁灼,并且使用了像 webpack 和babel這樣的現(xiàn)代工具。
Machine_learning
這是另一個只用 JavaScript 來建立和訓(xùn)練神經(jīng)網(wǎng)絡(luò)的庫驰坊。 它在 Node.js 和客戶端都非常容易安裝匾二,并且有一個非常干凈的 API,適合任何水平的開發(fā)人員使用拳芙。 該庫提供了許多流行算法的示例 察藐,幫助您理解機(jī)器學(xué)習(xí)原理的核心。
DeepForge
Deepforge
是一個對用戶友好的深度學(xué)習(xí)開發(fā)環(huán)境舟扎。 它允許您使用簡單的圖形界面設(shè)計神經(jīng)網(wǎng)絡(luò)分飞,支持在遠(yuǎn)程機(jī)器上的訓(xùn)練模型,并具有內(nèi)置的版本控制睹限。 該項目運(yùn)行在瀏覽器中譬猫,基于 Node.js
和MongoDB
,安裝過程對于大多數(shù) web 開發(fā)者來說非常熟悉羡疗。
Bonus: Machine Learning in Javascript
布拉克 · 坎伯(Burak Kanber)的一系列精彩的博客文章染服,講述了機(jī)器學(xué)習(xí)的一些基本原理。 這些教程寫得很好叨恨,很清晰柳刮,并且專門針對 JavaScript 開發(fā)者。 如果你想更深入地了解機(jī)器學(xué)習(xí),這是一個很好的資源秉颗。
結(jié)論
雖然 JavaScript 的機(jī)器學(xué)習(xí)生態(tài)系統(tǒng)還沒有完全成熟痢毒,但是我們推薦使用這個列表中的資源,讓你在機(jī)器學(xué)習(xí)中邁出第一步蚕甥,感受一下核心技術(shù)哪替。 正如文章中的實驗所顯示的那樣,只用瀏覽器和一些熟悉的 JavaScript 代碼就可以創(chuàng)建大量有趣的東西菇怀。