JavaScript 實現類神經網路 (瀏覽器 Deep Learning 好棒棒)

栏目: 编程工具 · 发布时间: 8年前

内容简介:JavaScript 實現類神經網路 (瀏覽器 Deep Learning 好棒棒)

記得古時候有寫過一篇「 用 Machine Learning 辨識鳶尾花 」搞搞 Machine Learning 建立 貝氏分類器 來辨識鳶尾花,最近想在 JavaScript 上面跑 Neural Network ( 類神經網路 ) 的演算法,刷刷存在感。很久以前有用過 Java 手刻類神經網路演算法,用來辨識昆蟲聲音,太久 Code 不知道丟到哪了,現在連 Bug 都寫不太出來。前陣子剛好 Google 到國外有個神人的 NodeJS Project ( node-neural-network ) 剛好符合我的需求,就先拿來玩看看囉。

用 JavaScript Deep Learning 辨識鳶尾花

由於我手邊沒有什麼數據可以跑,影像處理就是跑 PlayBoy Lenna 圖,AI 資料處理就是跑 鳶尾花 這些老梗,沒什麼創意,如果有人知道比較新潮的數據庫,可否麻煩留言告訴我一下,我也想趕流行!

先說明一下類神經網路的概念,基本上就是複合的迴歸分析,透過神經元的訓練,理論上可以學習任何模型,當然你給的 Feature 要合理,訓練樣本要夠充足 (類神經依賴大量的訓練資料)。可以把類神經網路想像為一個黑盒子 f(x),不停的告訴它什麼樣的 Input 會得到什麼樣的 Output,慢慢的累績訓練,有一天這個 f(x) 就會跟你說:「媽,我好像懂了什麼?」,表示收斂了學習完成,可以開始進行預測囉。典型的類神經網路長得像下面這樣:

JavaScript 實現類神經網路 (瀏覽器 Deep Learning 好棒棒)

上圖左邊的是輸入神經元 Input Layer,表示我們資料的 Feature 維度特徵值;中間的是隱藏層,可以多層多節點,一般來說數量是 Input 神經元的 1.5 倍;最後接上的是輸出層 Output Layer,就是我們預期的預測結果。單單這些複雜的神經元連接方法,就有上百篇論文再討論,我們今天測試的連接方法是最典型的模型。

實現 JavaScript 類神經網路機器學習

先說明一下程式執行的流程:

  1. 建構類神經網路 4-6-3 結構
  2. 載入 iris.csv 資料檔並且進行正規劃,將數值投影到 0~1 的範圍
  3. 每個種類隨機抽出三組後,剩餘的進入神經網路進行訓練 (因為資料樣本不多,所以隨機重複訓練 10,000 次)
  4. 最後從前一個步驟隨機抽出的數據進行預測,並計算正確率
  5. 將訓練好的網路存為 Json File,未來可以讀取後直接進行預測

測試的鳶尾花資料有四組 Feature,花分成三個種類,因此 Input 4 個節點,Output 3 個節點,中間的隱藏層使用 Input 節點的 1.5 倍,所以隱藏層使用了 6 個節點。連接方式與上圖相同,完整的程式碼已經放到 GitHub ,有興趣的可以輸入以下命令進行測試:

git clone https://github.com/samejack/blog-content

cd sj-nn

npm install

nom run example

執行畫面如下:

JavaScript 實現類神經網路 (瀏覽器 Deep Learning 好棒棒)

執行了幾次,正確率表現還不錯。這樣的規模說真的只會是玩具,聽說谷歌的網路都上億個節點,真正的深度學習。類神經屬於機器學習 (Machine Learning ) 中的 監督式學習 ,只在有足夠的資料下,可以自動學習找出的特徵與結果的關係。由於這次使用的是 JavaScript 語言,因此也可以在瀏覽器中執行, 作者的網站 上還有許多有趣而且很威的 Example,不管是訓練 XOR Gate 或者辨識貓等等,有興趣的可以進去看看囉,很廢的 JavaScript 深度學習結束了,下次見。


以上所述就是小编给大家介绍的《JavaScript 實現類神經網路 (瀏覽器 Deep Learning 好棒棒)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Linux Command Line

The Linux Command Line

William E. Shotts Jr. / No Starch Press, Incorporated / 2012-1-17 / USD 39.95

You've experienced the shiny, point-and-click surface of your Linux computer-now dive below and explore its depths with the power of the command line. The Linux Command Line takes you from your very ......一起来看看 《The Linux Command Line》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换