Deep Learning Specialization (Coursera) 自習記録 (C3W1)

# はじめに
[Deep Learning Specialization](https://www.coursera.org/specializations/deep-learning) の Course 3, Week 1 (C3W1) の内容です。

# (C3W1L01) Improving Model Performance
## 内容

- machine learning の分析の戦略を説明していく



# (C3W1L02) Orthogonalization
## 内容

- Fit training set well on cost function ( $\sim$ human level)
    - bigger network
    - Adam
- Fit dev set well on cost function
    - regularization
    - bigger training set
- Fit test set well on cost function
    - bigger dev set
- Performs well in real world
    - change dev set or cost function

- early stop は 'fit training set' と 'fit dev set' の両方に影響を及ぼすので，あまり使わない

# (C3W1L03) Single number evaluation metric
## 内容

- 1 つの定量的な評価指標があれば，判断が早くなる
- 1 つの方法は，F1 score

```math
F_1 \mathrm{score} = \frac{2}{\frac{1}{P} + \frac{1}{R}}
```

- $P$ ; Precision (精度)
- $R$ ; Recall (再現性)

# (C3W1L04) Satisficing and Optimizing metrics
## 内容

- 一般的に $N$ 個の指標があるとき，
    - 1 つを最適尺度 (最適化する指標)，
    - 残り $N-1$ 個を条件尺度にする (〇〇以下，とか) 



# (C3W1L05) Train/Dev/Test distributions
## 内容

- dev set や test set の選び方のガイドライン
- Choose a dev set and test set to reflect data you expect to get in the future and consider important to do well on
- dev/test set を，実際のデータと同じ分布になるようにする

# (C3W1L06) Size of dev and test sets
## 内容

- Old way of splitting data (データ数が 100 ～ 10000 個)
    - Train : Dev = 7 : 3
    - Train : Dev : Test = 6 : 2 : 2
- 100 万以上のデータがある場合は
    - Train : Dev : Test = 98 : 1 : 1
- Size of test set
    - Set your test set to be big enough to give high confidence in the overall performance of your system (システムの性能を十分に評価できる程度の大きさ)
- 10000 ～ 100000 くらい
- test set が無いときもある (一般的にはお勧めしない)

## 感想 (メモ)
- train set ; classifier を鍛える
- dev set ; classifier の性能が向上したか否かを評価する
- test set ; classifier の最終的な性能を評価する (dev set に overfit している可能性があるので)

# (C3W1L07) When to change dev/test sets and metrics
## 内容

- 例えば error 率が低くても，間違ってポルノ画像を選んでしまうアルゴリズムは良いとは言えない。このようなときは，評価尺度を変える。例えば $w^{(i)}$ を重みとして

```math
 \mathrm{Error} = \frac{1}{\sum_{i} w^{(i)}} \sum_{i=1} w^{(i)} 1 \left\{ y_{pred}^{(i)} \neq y^{(i)} \right\} \\
w^{(i)} = 1 \ \mathrm{if} \ x^{(i)} \ \mathrm{is\ not\ porn} \\
w^{(i)} = 10 \ \mathrm{if} \ x^{(i)} \ \mathrm{is\ porn}

```
- 評価尺度を決めることと，よい性能を出す方法を考えることは，分けて考える


# (C3W1L08) Why human-level performance?
## 内容

- 理論的な精度 (Bayes optimal error，best possible error) を越えることはできない
- human-level を越えると，学習速度は遅くなる



# (C3W1L09) Avoidable bias
## 内容

- Human-level ($\sim$ Bayes) が 1%，Training error が 8%，Dev errro が 10% のとき，bias に着目する
- Human-level ($\sim$ Bayes) が 7.5%，Training error が 8%，Dev errro が 10% のとき，variance に着目する
- Human-level と Training error のギャップを avoidable bias と呼ぶ


# (C3W1L10) Understanding human-level performance
## 内容

- Human-level error as a proxy for Bayes error
- Human-level とは何か?
    - Typical human
    - Typical doctor
    - Experienced doctor
    - Team of experienced doctors


# (C3W1L11) Surpassing human-level performance
## 内容

- Problems where ML significantly surpass human-level performance
    - On-line advertisement
    - Product recommendation
    - Logistics (predicting transit time)
    - Loan approvals
- 特徴は
    - Structured data
    - Not natural perception
    - Lots of data


# (C3W1L12) Improving Model Performance
## 内容

- The two fundamental assumptions of supervised learning
    - You can fit the training pretty well
    - The training set performance generalized pretty well to the dev/test set
- Reducing avoidable bias
    - Train bigger model
    - Train larger/better optimization algorithm
    - NN architecture / hyperparameters search
- Reducing variance
    - More data
    - Regularization (L2, dropout, data augumentation)
    - NN architecture/hyperparameters search

## 感想
- 画面がときどき真っ黒になる。4 分 50 秒以降は (多分) 黒いだけ。


# 参考
- [Deep Learning Specialization (Coursera) 自習記録 (目次)](https://qiita.com/satomshr/items/dc4ae752c558798bbef6)