iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
AI & Data

Deep Learning 從零開始到放棄的 30 天 PyTorch 數字辨識模型系列 第 5

Day-04 Python 的 Gradient 計算

  • 在開始使用 Framework 之前,我們還是得先看看有沒有辦法利用純手工的方式,先來解決一些基本的問題,那這樣也更有助於我們去理解這些機器學習/深度學習的運作(當然重點是你會更加理解 Framework 有多好用...)
  • 所以我們今天就直接先來看看如何利用 Python 達到 Gradient 的計算吧

Gradient 計算需要先知道什麼?

  • 我們回顧一下之前提到過的 Gradient 概念,Gradient 其實就是偏微分的值組成的 vector
  • 還記得 loss function 是什麼嗎?它是用來判斷現在選擇的這個 function 有多差
  • 那偏微分是對什麼做偏微分,就是利用我們的 Loss function 對變化參數(w, b, ...)去做偏微分,因此在計算 Gradient 之前,我們必須先知道我們的 Loss function 是什麼
  • 那這邊我們假設我們的 Loss function 是 mean square error(均方誤差),這邊已經不在贅述新的數學了,不了解的可以自己去查查看,那 MSE 的數學式子長怎樣? https://chart.googleapis.com/chart?cht=tx&chl=%24%24MSE%20%3D%20%7B1%20%5Cover%20n%7D%20%5Csum(%5Chat%20y%20-%20y)%5E2%24%24 計算方法是求預測值( https://chart.googleapis.com/chart?cht=tx&chl=%24%5Chat%20y%24 )與真實值( https://chart.googleapis.com/chart?cht=tx&chl=%24y%24 )之間距離的平方和
  • 寫成程式可以怎麼寫
    def loss(y, y_predicted):
    
        return ((y_predicted-y) ** 2).mean()
    
  • 那我們還需要知道總共有哪些變數,因此我們假設今天我們是在算 Regression,function 就是 https://chart.googleapis.com/chart?cht=tx&chl=%24f%20%3D%20w%20*%20x%24 ,變數就是一個 w
  • 所以 MSE 也會寫成 https://chart.googleapis.com/chart?cht=tx&chl=%24%24MSE%20%3D%20%7B1%20%5Cover%20n%7D%20%5Csum(w%20*%20x%20-%20y)%20%5E%202%24%24

Gradient 怎麼算

  • 所以我們現在的目標是 https://chart.googleapis.com/chart?cht=tx&chl=%5Cpartial%20L%20%5Cover%20%5Cpartial%20w ,那我們的 loss function 是 https://chart.googleapis.com/chart?cht=tx&chl=%24(w%20*%20x%20-%20y)%20%5E%202%24,所以偏微分之後會變成 https://chart.googleapis.com/chart?cht=tx&chl=%242x%20(w%20*%20x%20-%20y)%24
  • 寫成程式就會變成(人工微分 OWO)
    def gradient(x, y, y_predicted):
    
        return np.dot(2*x, y_predicted - y).mean()
    

每日小結

  • Python 的 Gradient 計算其實就是針對變數,loss function 等等,去先計算偏微分之後,帶入運算
  • 現在光一點點參數就感覺有點複雜,因此我們可以預期,如果參數變多,計算將會變更麻煩,所以我們之後再來看看如果是 PyTorch Framework 會變成怎樣呢?
  • 那明天讓我們來看看如何利用現在這邊的概念,實作簡單 Regression

上一篇
Day-03 Regression & Gradient Descent 介紹
下一篇
Day-05 Easy Regression Example
系列文
Deep Learning 從零開始到放棄的 30 天 PyTorch 數字辨識模型31

尚未有邦友留言

立即登入留言