JavaScript之機器學習1:Tensorflow.js

目錄

1. 什麼是Tensorflow.js?

  • TensorFlow.js是機器學習(Machine Learning)TensorFlow框架的JavaScript版本;

  • 通過TensorFlow.js,可以讓瀏覽器也進行機器學習;

  • Tensorflow.js的應用場景有:你猜我畫,淘寶美妝,圖片識別,語音識別等等;

在這裏插入圖片描述再不趕緊學,就追不上時代的步伐了啊!!!

2. 什麼是機器學習?

  • 機器學習是對能通過經驗自動改進的計算機算法的研究
  • 機器學習是用數據或以往的經驗,以此優化計算機程序的性能標準

舉例:線性迴歸

根據圖中這些圓點的位置(x,y),用一條線近似表示;
比如,青少年的身高體重比例,來判斷你是正常/肥胖/偏瘦
在這裏插入圖片描述

舉例:邏輯迴歸

下圖有藍色的點和黃色的點,我們通過它們的位置,畫出一條線,將它們大致分開;
後面給出一個新的點,我們就可以大致判斷它是藍色的點還是黃色的點;
在這裏插入圖片描述

舉例:圖片分類

我們準備大量不同類型的圖片,讓機器去學習它們的特徵;
然後給機器一張圖片,它就可以根據圖片的特徵來判斷它最有可能是什麼類型的圖片;
在這裏插入圖片描述

舉例:語音識別

給機器各種聲音數據和它們的標籤,讓機器去學習它們的特徵;
例如:蘋果的語音助手Siri

3. 爲什麼要用機器學習?

  • 有些棘手的問題只能用機器學習,無法通過傳統的編程方法來解決
  • 獲取數據比編寫規則更加容易
  • GPU等計算能力的顯著提升(機器學習會消耗大量的計算)

4. 機器學習如何運作?

  • 神經網絡算法(能解決大部分問題)
  • 決策樹,支持向量機,貝葉斯分類器,強化學習等等

5. 什麼是神經網絡?

在這裏插入圖片描述
這裏的神經網絡,肯定不是指腦袋裏的神經網絡,而是人工神經網絡

人工神經網絡(Artificial Neural Network,ANN)簡稱神經網絡(NN),是基於生物學中神經網絡的基本原理,在理解和抽象了人腦結構和外界刺激響應機制後,以網絡拓撲知識爲理論基礎,模擬人腦的神經系統對複雜信息的處理機制的一種數學模型。

神經網絡是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。每個節點代表一種特定的輸出函數,稱爲激活函數(activation function)。每兩個節點間的連接都代表一個對於通過該連接信號的加權值,稱之爲權重(weight),神經網絡就是通過這種方式來模擬人類的記憶。

舉例:相親
在這裏插入圖片描述
上圖所示:

  • 形象對於‘學歷/家境/五官/身材’有相應的權重值;
  • ‘學歷/家境/五官/身材’ X 相應的權重值 = 形象值
  • ‘形象/品質/有趣/財富’ X 相應的權重值 = 滿意度

當然,神經網絡不可能會是這麼簡單的;它還要處理很多問題;

  • 每個人的眼光高低不同,小白給小紅打10分,小綠卻給小紅打1分;(偏置)
  • 有些人認爲,學歷只要在本科及以上,就沒什麼差別了,都可以;(非線性變化)
  • 有些人認爲,形象得分越高越好;有些人認爲形象太好了,可能把時間都花在了形象上,學習的時間就少了,內涵就會差一點或者是安全感變低了,因此形象太高反而減分;(激活函數做一些非線性變化)

大致流程如下:
神經元會讓上一層的輸入乘上各自的權重,然後相加,再加上偏置,得出來的值經過激活函數算一遍,然後得到輸出;

總結:

  • 每個神經元裏存儲着若干權重(weight),偏置(bias),和一個激活函數(activation)
  • 輸入乘上權重加上偏置,經過激活函數得到輸出
  • 激活函數用於添加一些非線性變化
  • 神經網絡通常包括一個輸入層,若干隱藏層,一個輸出層
  • 輸入層通常不用於計算神經網絡的層數

6. 什麼是神經網絡的訓練?

  1. 給大量的輸入和輸出,算出神經網絡裏所有神經元的權重和偏置;然後給定新的輸入,即可以算出新的輸出;
  2. 在機器學習裏,輸入輸出被稱爲特徵和標籤,大量輸入輸出被稱爲訓練集;

7. 如何訓練神經網絡?

  1. 初始化:隨機生成一些權重和偏置;
  2. 計算損失:給定特徵,計算出標籤,得到它與真實標籤相差多少;
  3. 優化:微調權重和偏置,使損失變小;
  4. 不斷重複2,3;使損失變爲最小;

前向傳播與反向傳播:

  • 前向傳播:將訓練數據的特徵送入網絡,得到標籤;
  • 反向傳播:計算損失並優化 (微積分裏的鏈式法則)
    簡單的理解:爲什麼要先調整最後一層的參數,因爲如果你要調整倒數第二層的參數,你就需要知道倒數第一層的參數往哪個方向纔是正確的;例如:調整了最後一層的參數,才能大概知道小明是喜歡有錢的還是形象好的,知道了最後一層的方向,才能調整倒數第二層的參數;

如何計算損失?

  • 使用損失函數(均方誤差,對數損失,交叉熵等等)

如何優化?

  • 使用優化器 (隨機梯度下降,Adam等等)

so,不要慌,調用第三方庫使用就行了,大佬們已經把工具寫出來了~
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章