原文地址:10 Machine Learning Examples in JavaScript
在過去的每一年,用于機器學習(Machine Learning)的庫在變得越來越快和易用斗幼。一直以來Python都是機器學習的首選語言辰如,但現(xiàn)在幾乎可將所有語言用于神經(jīng)網(wǎng)絡(luò)(neural networks)怎栽,這里當然也包括JavaScript颊亮!
近幾年剔宪,Web生態(tài)系統(tǒng)取得了很大進步拂铡,雖然JavaScript和Node.js的性能比Python和Java略差,但它們已足夠處理許多機器學習問題葱绒。Web語言具有被廣泛且易于使用的優(yōu)勢——你只需一個Web瀏覽器就可以運行一個JavaScript語言編寫的機器學習項目感帅。
雖然許多JavaScript語言編寫的機器學習庫是剛剛誕生并且還在持續(xù)開發(fā)中,但還是值得去嘗試使用它們地淀。這篇文章會介紹幾個JavaScript語言編寫的機器學習庫以及一些很酷的AI Web應(yīng)用示例贵少,它們可以很好的幫助你開始AI之旅饼酿。
1. Brain
使用Brain 可以輕松的創(chuàng)建神經(jīng)網(wǎng)絡(luò)轴咱,并且可通過輸入/輸出數(shù)據(jù)對它進行訓練吉拳。因為訓練神經(jīng)網(wǎng)絡(luò)會消耗比較多的資源,所以推薦在Node.js環(huán)境中而不是直接使用瀏覽器來訓練神經(jīng)網(wǎng)絡(luò)作箍。在官網(wǎng)上有個可以識別顏色(recognize color contrast)的小demo (PS:試了下硬梁,這個demo現(xiàn)在是404頁面)前硫。
2. Deep playground
這是一個寓教于樂的Web應(yīng)用胞得,可以讓你以游戲的方式來探索神經(jīng)網(wǎng)絡(luò)的不同部分。它有一個友好的界面用于讓你控制數(shù)據(jù)的輸入屹电,算法所用的神經(jīng)元數(shù)量以及其它一些會影響輸出結(jié)果的權(quán)值因素阶剑。這是一個開源項目,它是使用TypeScript編寫的機器學習庫并且有完善的文檔危号,從中我們可以許多東西牧愁。
3. FlappyLearning
FlappyLearning 項目大約800行代碼,這個項目包含一個機器學習庫并且實現(xiàn)了一個很有趣的demo——學習玩 Flappy Bird 游戲外莲。它使用了一種叫做 Neuroevolution 的AI技術(shù)猪半,使用了受自然神經(jīng)系統(tǒng)激發(fā)而產(chǎn)生的算法,可以從每次成功或失敗的迭代中進行動態(tài)進行學習偷线。
4. Synaptic
Synaptic是一個架構(gòu)無關(guān)(architecture-agnostic)且得到積極維護的Node.js和瀏覽器庫磨确,它允許開發(fā)者構(gòu)建任何類型的神經(jīng)網(wǎng)絡(luò)。它有幾個內(nèi)置的架構(gòu)声邦,使得可以快速測試和比較不同機器學習算法間的異同乏奥。它還提供了介紹神經(jīng)網(wǎng)絡(luò)的文檔及幾個實用demo和其它可以幫助我們學習機器學習的教程。
5. Land Lines
Land Lines 是一個有趣的用于搜尋地球衛(wèi)星圖片的Chrome網(wǎng)絡(luò)實驗(web experiment)亥曹。這個應(yīng)用無需服務(wù)調(diào)用:它完全運行在瀏覽器環(huán)境中邓了,得益于機器學習的使用恨诱,WebGL也可以在移動設(shè)備中有很好的表現(xiàn)。你可以在GitHub 上瀏覽源碼或者在這里閱讀完整的示例骗炉。
6. ConvNetJS
盡管已不再被積極的維護照宝,但ConvNetJS依然是JavaScriptp中最為先進的深度學習庫之一。這個庫最初由斯坦福大學開發(fā)句葵,然后ConvNetJS開始在GitHub上流行硫豆,社區(qū)為它添加了許多特性和教程。ConvNetJS直接運行在瀏覽器環(huán)境中笼呆,支持多種學習技術(shù)熊响,并且它接近底層原理使得它更適有較多神經(jīng)網(wǎng)絡(luò)方面經(jīng)驗的人。
7. Thing Translator
Thing Translator是一個網(wǎng)絡(luò)實驗诗赌,它可以讓你的手機識別真是的物體并用不同的語言標注物體的名稱汗茄。這個應(yīng)用完全建立在web技術(shù)之上并且利用了Google提供的兩種機器學習APIs——用于圖像識別的Cloud Vision 和用于自然語言翻譯的Translate API。
8. Neurojs
Nerojs用于建立基于增強學習(reinforcement learning)的AI系統(tǒng)框架铭若。不幸的是這個開源項目除了一個自動駕駛實驗的demo外并沒有完善的文檔洪碳,這個demo對組成神經(jīng)網(wǎng)絡(luò)的不同部分有著很好的描述。這個庫借助如現(xiàn)代化工具如:webpack 和babel叼屠,使用純JavaScript進行開發(fā)瞳腌。
9. Machine_learning
這也是一個允許我們僅使用JavaScript創(chuàng)建并訓練神經(jīng)網(wǎng)絡(luò)的庫。它很容易就可以安裝到Node.js和客戶端環(huán)境镜雨,并且擁有對開發(fā)人員十分友好的的API嫂侍。這個庫提供了許多示例 ,可以幫助你理解機器學習的核心原理荚坞。
10. DeepForge
DeepForge是一個用于深度學習且易于使用的開發(fā)環(huán)境挑宠。它允許你使用簡單的圖形接口創(chuàng)建神經(jīng)網(wǎng)絡(luò),支持在遠程機器上訓練模型颓影,并且內(nèi)置版本控制系統(tǒng)各淀。這個項目基于Node.js和MongoDB且運行在瀏覽器環(huán)境中。
彩蛋: Machine Learning in Javascript
Burak Kanber 發(fā)布的一些列優(yōu)秀博文中講述了機器學習的基本原理诡挂。這些教程寫的很好且專門面向JavaScript開發(fā)者碎浇。如果你想深入理解機器學習,這些博文是很好的學習資源璃俗。
結(jié)語
盡管JavaScript的機器學習生態(tài)尚未成熟奴璃,但仍然建議使用上述資源來開啟你的機器學習之路并對一些核心技術(shù)建立感性認識。正如文章中展示的一些實驗旧找,你也可以僅使用瀏覽器和少量JavaScript代碼來創(chuàng)建許多有趣的東西溺健。