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(\text{\red{data}})\)
    • Function with unknown parameters
    • Model: \(\boxed{y=b+wx_1}\)
      • \(w: \text{weight}\)
      • \(b: \text{bias}\)
      • \(x: \text{feature}\)
Step 2: 定義 Loss function
  • Define loss from training data
    • 以 Model 的參數 \(w,b\) 來計算 Loss
    • 物理意義:Loss 愈大代表參數愈不好,Loss 愈小代表參數愈好。
  • 計算方法:求估計的值與實際的值(label)之間的差距
    • Loss function: \(\boxed{L=\frac{1}{N}\sum_ne_n}\)
    • MAE (mean absolute error): \(e=|y-\hat{y}|\)
    • MSE (mean square error): \(e=(y-\hat{y})^2\)
    • Cross-entropy: 計算機率分布之間的差距
  • Error Surface: 根據不同的參數,計算出 loss 所畫出來的等高線圖。 1_3
Step 3: Optimization
  • 找到 loss 最小的參數組合 \((w,b)\)
  • 方法:Gradient Descent
    • \(\boxed{w’ = w - \red{\eta}\frac{\partial L}{\partial w}|_{w=w^0,b=b^0}}\)
    • \(\boxed{b’ = b - \red{\eta}\frac{\partial L}{\partial b}|_{w=w^0,b=b^0}}\)
    • \(\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