前言

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

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

    1_2

    Step 1: 使用合適的 Model
    • y=f(data)y=f(\text{\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 - \red{\eta}\frac{\partial L}{\partial w}|_{w=w^0,b=b^0}}
    • b=bηLbw=w0,b=b0\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

    • fy=b+j=1nwjxj\boxed{f\leftarrow y=b+\sum_{j=1}^{n}{w_jx_j}}
      • 不只考慮前一天的觀看人數 x1x_1,也考慮前二~七天 x2,x3,,x7x_2, x_3, … , x_7
      • 當參數變多時,命中率可望有效提升。

    3. Piecewise Linear Curves(Sigmoid)

    • Sigmoid Function:y=c11+e(b+wx1)=c sigmoid(b+wx1)\text{Sigmoid Function:} \boxed{y=\red{c}\frac{1}{1+e^{-(\green{b}+\blue{w}x_1)}}}=\boxed{\red{c}\text{ sigmoid}(\green{b}+\blue{w}x_1)}
    • wixiw_ix_i 替換成 ci sigmoid(bi+wixi)c_i\text{ sigmoid}(b_i+w_ix_i)
      • 特徵為1時,y=b+ici sigmoid(bi+wix1)\boxed{y=b+\sum_i{c_i\text{ sigmoid}(b_i+ w_ix_1)}}
      • 特徵>1時,y=b+ici sigmoid(bi+jwijxj)\boxed{y=b+\sum_i{c_i\text{ sigmoid}(b_i+\sum_j w_{ij}x_j)}}
    • 意義:一條曲線可以由多個鋸齒狀的線段(hard sigmoid)的總合,我們可以用 sigmoid 函數來逼近 hard sigmoid。事實上,sigmoid 的個數就是神經網路中一層 neuron 的 node 數,至於使用幾個 sigmoid 是 hyper parameter。 1_5
      可將公式轉成矩陣計算+激勵函數的形式:1_6 1_7 1_8
    • 以線性代數方式表示:y=b+cTσ(bi+Wx)\boxed{y=b+c^T\sigma(b_i+Wx)}
      • bbbib_iWWcTc^T 等所有參數統稱為 θ\theta
      • 故 Loss 可表示成 L(θ)L(\theta)
      • 重覆 gradient descent 的方法,更新(update) 參數。
      • 梯度 gradient,g=g= [Lθ1θ=θ0Lθ2θ=θ0]=L(θ0)\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)計算:[θ11θ21][θ10θ20][ηLθ1θ=θ0ηLθ2θ=θ0]\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}
      • 或寫成 θ1θ0ηg\theta^1\leftarrow \theta^0-\eta g
        batch training1_9
      • 將樣本依批次(batch)進行更新,當所有的 batches 都跑過一遍,稱為一個 epoch

    4. ReLU

    • 用 hard sigmoid 的方式來表示。
      • 其每一個 hard sigmoid 由兩個 Rectified Linear Unit(ReLU) 組成,
      • 每一個 ReLU 寫成:c max(0,b+wx1)\boxed{\red{c}\text{ max}(0,\green{b}+\blue{w}x_1)}
      • 故 Model 可以寫成:y=b+2imax(0,bi+jwijxj)\boxed{y=b+\sum_{\red{2}i}\text{max}(0,b_i+\sum_j{w_{ij}x_j})}
      • 其中我們選用來逼近的函式,稱為 Activation function

    深度學習

    • Neural Network
      • y=b+cTσ(bi+Wx)\boxed{y=b+c^T\sigma(b_i+Wx)}
      • Multiple hidden layers -> Deep learning 1_10