李弘毅老師機器學習2021心得-1

ML基本介紹

ML就是找出一個function(= model),input為資料,output為預測的結果,預測的越準代表這個function越強。基本分類如下

  1. Regression: 預測的東西為數值
  2. Classification: 預測的東西為類別
  3. Structured Learning: 預測的東西為任意object

訓練的步驟

  1. 定義我們的function,例如最簡單的線性的function,y = ax + b。
    x為input,y為output,並且這個例子可以看到我們有兩個要設定的參數,a and b,我們function架構是固定的(線性),但是不同的a b會造成function的偏移,所以說參數決定了這個function到底好不好。
    這些function又叫做model,決定這個model的設計會用到domain knowledge(對於訓練資料的了解)。
  2. 如何定義這個function準不準,直覺上就是看他預設出來的東西(y,也就是output)跟實際上的資料是否符合,越接近代表我們預測的越準也就代表這個function很不錯。
    但是我們還是需要一個數學公式來描述上面所講的概念,常見的有MAE, MSE, cross-entropy…,每個都有好處以及壞處,看公式就可以很明顯的感受到,他就是把預測的值跟實際的值做運算,所以滿直覺的。
    請參考【Day 20】 Google ML — Lesson 6 — 使用損失函數(Loss Functions)來評估ML模型的好壞吧! MSE, RMSE, Cross Entropy的計算方法與特性
  3. 優化我們的參數,因為我們的a b一開始就是用猜的,所以想必function一定超不准,那我們要怎麼優化呢?
    先從Error Surface了解起,我們的loss function,會因為function的變動,會有不同的值,那我們function會變動就是因為參數變動了(x是input,data是固定的),所以在同一筆資料上,我們的loss function會因為不同的參數有不同的值,所以我們把這個loss function畫出來可以畫出一個圖,也就是Error Surface。
    而我們目標就是Error Surface上面,loss最小的地方,這個地方可以透過在現在位置的微分,找出一個方向,跟著這個方向走loss會減少。並且在跟者這個方向走時我們可以設定我們要走多大,這叫做learning rate
    這整個方法就叫做Gradient Descent,最好學習他的方法就是實際用手算算看,這部影片(Gradient Descent, Step-by-Step)實際的用手算了這個方法,在參數只有2個以下時,可以讓你對於此方法有更好的了解。

Domain knowledge的應用

老師在最後展示了如何藉由我們對資料的了解,來改進我們的model,老師藉由了解資料發現預測值跟前七天有關(因為有五六日),所以可以藉此改善我們model的結構,讓model預測越來越準。
這就是關鍵,我們藉由對資料的了解,來改善model的架構,例如CNN就是觀察到影像中會有重複的pattern,因此改善了他model的架構,所以對資料的了解(Domain knowledge)是非常重要的。

--

--

Kola (Yan-Hao Wang)
Kola (Yan-Hao Wang)

Written by Kola (Yan-Hao Wang)

在系統軟體跟資安領域學習的學生

No responses yet