Skip to content
Rain Hu's Workspace
Go back

[ML] 01. 機器學習基本概念簡介

Rain Hu

前言

什麼是機器學習
  • 機器學習(Machine Learning),就是利用機器的力量幫忙找出函式。
    • Input 可以是
      • vector
      • matrix
      • sequence
    • Output 可以是
      • Regression
      • Classification
      • Structed Learning(令機器產生有結構的東西 eg. text, image) {{< togb “示意圖” >}} 1_1
{{< toge >}}
什麼是深度學習
  • 深度學習(Deep Learning),就是利用神經網路(neural network)的方式來產生函數。

機器如何學習

1. 基本原理(訓練三步驟)

1_2

Step 1: 使用合適的 Model
  • y=f(data)y=f(\text{\textcolor{red}{data}})
    • Function with unknown parameters
    • Model: y=b+wx1\boxed{y=b+wx_1}
      • w:weightw: \text{weight}
      • b:biasb: \text{bias}
      • x:featurex: \text{feature}
Step 2: 定義 Loss function
  • Define loss from training data
    • 以 Model 的參數 w,bw,b 來計算 Loss
    • 物理意義:Loss 愈大代表參數愈不好,Loss 愈小代表參數愈好。
  • 計算方法:求估計的值與實際的值(label)之間的差距
    • Loss function: L=1Nnen\boxed{L=\frac{1}{N}\sum_ne_n}
    • MAE (mean absolute error): e=yy^e=|y-\hat{y}|
    • MSE (mean square error): e=(yy^)2e=(y-\hat{y})^2
    • Cross-entropy: 計算機率分布之間的差距
  • Error Surface: 根據不同的參數,計算出 loss 所畫出來的等高線圖。 1_3
Step 3: Optimization
  • 找到 loss 最小的參數組合 (w,b)(w,b)
  • 方法:Gradient Descent
    • w=wηLww=w0,b=b0\boxed{w' = w - \textcolor{red}{\eta}\frac{\partial L}{\partial w}|_{w=w^0,b=b^0}}
    • b=bηLbw=w0,b=b0\boxed{b' = b - \textcolor{red}{\eta}\frac{\partial L}{\partial b}|_{w=w^0,b=b^0}}
    • η\textcolor{red}{\eta}: 學習率 learning rate, 決定 gradient descent 的一步有多大步 1_4
## 2. Linear Model + $\boxed{f\leftarrow y=b+\sum_{j=1}^{n}{w_jx_j}}$ + 不只考慮前一天的觀看人數 $x_1$,也考慮前二~七天 $x_2, x_3, ... , x_7$。 + 當參數變多時,命中率可望有效提升。

3. Piecewise Linear Curves(Sigmoid)

可將公式轉成矩陣計算+激勵函數的形式:

1_6 1_7 1_8

+ 以線性代數方式表示:$\boxed{y=b+c^T\sigma(b_i+Wx)}$ + 將 $b$、$b_i$、$W$、$c^T$ 等所有參數統稱為 $\theta$ + 故 Loss 可表示成 $L(\theta)$ + 重覆 gradient descent 的方法,更新(update) 參數。 + 梯度 gradient,$g=$ $\begin{bmatrix}\frac{\partial L}{\partial \theta_1}|_{\theta=\theta^0}\\\\\frac{\partial L}{\partial \theta_2}| _{\theta=\theta^0}\\\\\vdots\end{bmatrix}=\nabla L(\theta^0)$ + 更新(update)計算:$\begin{bmatrix}\theta_1^1\\\\\theta_2^1\\\\\vdots\end{bmatrix}\leftarrow\begin{bmatrix}\theta_1^0\\\\\theta_2^0\\\\\vdots\end{bmatrix}-\begin{bmatrix}\eta \frac{\partial L}{\partial \theta_1}|_{\theta=\theta^0}\\\\\eta\frac{\partial L}{\partial\theta_2}| _{\theta=\theta^0}\\\\\vdots\end{bmatrix}$ + 或寫成 $\theta^1\leftarrow \theta^0-\eta g$
batch training

1_9

+ 將樣本依批次(batch)進行更新,當所有的 batches 都跑過一遍,稱為一個 **epoch**

4. ReLU

深度學習


Share this post on:

Previous
[DXP] 在 spotfire 中創建自定義視覺化工具
Next
[C#] Large Object Heap