---
# System prepended metadata

title: Reducing Loss 減少loss值
tags: [MLCC]

---

###### tags: `MLCC`
# Reducing Loss 減少loss值

## 找出 model 的最小 loss(缺失值)
![](https://i.imgur.com/tFfui9d.png)
- 用線性回歸計算loss
    ![](https://i.imgur.com/PiIKxd9.png)
    - `b` & `w1` 誤差值&權重的初始值並不影響訓練model，所以可以隨機數
- 透過疊代的方式對同樣的資料集重複計算 loss ，然後調整參數，直到找出 loss 最小的 model
- **converged 收斂**
  - 終止條件
  - 找出 loss 最小的 model
  - loss值不再改變 或 loss值改變幅度極小

## Gradient Descent 梯度下降法
- 梯度：向量，因此有以下 2 種特性
  - direction 方向
  - magnitude 數值
- 流程
  1. 隨機找一個初始值
     > 在線性回歸，初始點在哪裡不重要
  2. 計算負梯度，決定往哪個方向走誤差比較小
  3. 走一步 
     > 步伐大小根據**學習速率**決定
     > 學習速率太小 -> 步伐小 -> 步數多 -> 需要較多計算量
     > 學習速率太大 -> 步伐大 -> 可能超出局部最小值
  4. 如果走太多就往回走
  -  重複 4. 和 5.
  5. 找到局部最小值
- [練習](https://developers.google.com/machine-learning/crash-course/fitter/graph)
## Stochastic Gradient Descent，SGD 隨機梯度下降法
- 一次挑一個樣本訓練 model
- 隨機抽取幾個樣本為一組，把這一組資料當成全體來梯度下降
## Mini-batch Gradient Descent 小批量梯度下降法
- 只使用一部份樣本 (約 10-1000)

## Learning Rate (Step Size)
- 決定走的速率 (步伐大小)
- ex: 若梯度=2.5、learning rate=0.01，則 step size=0.025
- **Hyperparameters 超參數**:可以調整的參數
    - 在 machine lerning 裡面，可以調整 lerning rate
### learning rate 的大小
- too small: 花費時間會比較長，走的步數也會多
![](https://i.imgur.com/IjRV9RB.png)

- too big: 容易略過最小值
![](https://i.imgur.com/NfBATeR.png)


