Tuning process
Hyperparameters
- $\alpha$: learning rate
- $\beta$: for momentum
- $\beta_{1}, \beta_{2} , \epsilon $: for Adam
- The number of layers (# layer)
- The number of hidden units (# hidden units)
- Learning rate decay
- Mini-batch size
Try random values: Don't use a grid
Grid Search | 모든 가능한 하이퍼파라미터 조합을 일정한 간격으로 시도하는 방법 예를 들어, 두 개의 하이퍼파라미터 $\alpha$ 와 $ \epsilon $이 있을 때, 일정한 간격으로 그리드를 생성하여 모든 조합을 시도 중요한 하이퍼파라미터 조합이 특정 영역에 집중되어 있을 때, 그리드 검색은 비효율적으로 탐색할 수 있다. 즉, 불필요한 조합을 시도하게 될 가능성이 높다. |
Random Search | 하이퍼파라미터 공간에서 무작위로 점을 선택하여 시도하는 방법 예를 들어, 두 개의 하이퍼파라미터 $\alpha$ 와 $\epsilon$이 있을 때, 무작위로 조합을 선택하여 시도 하이퍼파라미터의 수가 많아질수록 랜덤 검색이 그리드 검색보다 더 효율적이다. 이는 고차원 공간에서 랜덤 검색이 더 많은 유효한 조합을 탐색할 수 있기때문이다. |
Coarse to fine
- 이 방법은 처음에는 넓은 범위를 rough하게 탐색한 후, 유망한 영역을 식별하여 세밀하게 탐색하는 방식이다.
- 장점: 초기 단계에서 넓은 범위를 빠르게 탐색함으로써, 전체 하이퍼파라미터 공간을 전부 탐색하는 것보다 시간을 절약할 수 있다.
Using an appropriate scale to pick hyperparameters
Picking hyperparameters at random
- 특정 하이퍼파라미터를 탐색할 때, 단순히 균일하게 랜덤 샘플링하는 것이 항상 최적의 방법은 아니다. 즉, 적절한 스케일을 사용하여 하이퍼파라미터 공간을 탐색하는 방법을 이해하는 것이 중요하다.
- 예를 들어, 특정 층 ll의 은닉 유닛 수를 50에서 100 사이로 선택한다고 가정했을 때, 이 경우, 50에서 100 사이의 값들을 균일하게 랜덤으로 샘플링하는 것이 합리적일 수 있다.
- 예를 들어, 네트워크의 층 수를 2에서 4 사이로 선택한다고 가정했을 때, 2, 3, 4 중에서 균일하게 랜덤으로 샘플링하거나, Grid search을 통해 각각의 값을 평가하는 것이 합리적일 수 있다.
- 학습률은 어떨까? 학습률을 0.0001에서 1 사이에서 선택한다고 가정했을 때, 그림에서 볼 수 있듯이 만약 이 범위에서 균일하게 랜덤으로 샘플링한다면, 대부분의 값이 0.1에서 1 사이에 집중되게 된다. 이는 0.0001에서 0.1 사이의 범위를 충분히 탐색하지 못하게 된다.
- 따라서, 학습률과 같은 하이퍼파라미터는 log-scale에서 탐색하는 것이 더 합리적이다.
- 로그 스케일에서 균일하게 샘플링하면, 0.0001, 0.001, 0.01, 0.1, 1과 같은 값들이 고르게 분포된다.
Hyperparameters for exponentially weighted averages
- $\beta$ 값이 0.9에서 0.999 사이의 범위를 탐색할 때, 선형 스케일에서 샘플링하면 주로 0.99에서 0.999 사이의 값을 많이 샘플링하게 되어, $\beta$ 값이 작을 때의 탐색이 충분히 이루어지지 않는다.
- $\beta$값이 0.9에서 0.999로 이동할 때, 값들이 일정한 비율로 변화하지 않기 때문이다. 예를 들어, 0.9와 0.99 사이의 간격은 0.1이지만, 0.99와 0.999 사이의 간격은 0.009이다. 따라서, 선형 스케일에서 균일하게 샘플링하면 $\beta$ 값이 작은 구간보다 큰 구간에서 더 조밀하게 샘플링된다
- 따라서, log-scale에서 샘플링하면 $\beta$ 값의 범위를 더 균일하게 탐색할 수 있다.
- $\beta$ 대신 $1-\beta$ 값을 로그 스케일에서 샘플링하여 더 효율적인 탐색이 가능하다.
Hyperparameters tuning in practice: Pandas vs. Caviar
Approach 1: Babysitting one model
- 한 번에 하나의 모델을 선택하여 집중적으로 훈련하고 튜닝
- 각 실험이 끝날 때마다 결과를 확인하고, 하이퍼파라미터를 조정하여 다음 실험을 진행
- Allows for intensive custumization and tuning
Approach 2: Training many models in parallel
- 여러 모델을 동시에 병렬로 훈련하고, 각 모델의 성능을 비교하여 최적의 하이퍼파라미터 조합을 찾기
- Effective hyperparameter tuning often involves exploring a variety of models and strategies
- 병렬로 실행되기 때문에 전체 튜닝 시간이 크게 단축
Normalizing activations in a network
Normalizing inputs to speed up learning
- Can we normalize $a^{[2]}$ so as to train $w^{[3]}$, $b^{[3]}$ faster?
- Normalize $z^{[2]}$, not $a^{[2]}$
- 즉, activation function 적용 전에 Normalization 해야함.
- Normalize $z^{[2]}$, not $a^{[2]}$
Implementing Batch Norm
- Given some intermediate values in NN: $z^{(1)}, ..., z^{(m)} $
- $m$ is the number of training examples
- $\hat{Z}$: 평균이 0이고 분산이 1인 값으로 변환된 입력 데이터
- $\tilde{Z}$: 정규화된 값 $\hat{Z}$ 에 배치 정규화의 학습된 파라미터 $\gamma$, $\beta$ 를 적용하여 최종적으로 스케일링되고 이동된 값
- $\gamma$, $\beta$: Learable parameters of model
Batch Normalization
Fitting Batch norm into a Neural Network
- Activation function 적용 전에 Normalization
- $\gamma$, $\beta$도 Learnable Parameter이므로 Gradient Descent를 통해 업데이트된다.
Working with mini-batches
- 훈련 시에는 Mini-batch의 평균과 분산을 사용하지만, 테스트 시에는 훈련 동안 축적된 지수 가중 이동 평균( Exponential Moving Average)을 사용하여 입력 데이터를 정규화한다.
- During training:
- 훈련 시, 각 mini-batch에서의 입력 데이터 $X^{\left ( 1 \right )},X^{\left ( 2 \right )},...,X^{\left ( m \right )}$를 사용하여 mini-batch의 평균 $\mu$ 과 분산 $\sigma^{2}$ 을 계산한 후, Batch Normalization을 수행한다.
- 훈련 동안, 각 미니 배치의 평균관 분산을 추적하여 전체 평균 ( $\mu$ )과 분산 ( $\sigma^{2}$ )를 weight average를 통해 업데이트를 한다. 이 과정에서 얻어진 값은 Test에서 사용된다.
$$\hat{X} = \frac{X-\mu}{\sqrt{\sigma ^{2}+\epsilon }}$$
- During testing:
- 테스트 시, 단일 입력 데이터에 대해서는 미니배치를 구성할 수 없으므로, 훈련 시 계산된 weighted average을 사용하여 평균 ( $\mu$ )과 분산 ( $\sigma^{2}$ )을 적용한다.
- 이를 통해 입력 데이터를 정규화 한 후, 정규화된 값에 Bach Nomrlization의 학습된 파라미터 $\gamma$와 $\beta$를 적용하여 최종 출력 게산한다.
$$\tilde{X} = \gamma \hat{X} + \beta$$
Implementing gradient descent
Why does Batch Norm work?
Learning on shifting input distribution
- 초기 데이터셋에서는 대부분의 고양이 이미지가 검은색 고양이로 구성되어 있고, 고양이가 아닌 이미지가 다양한 물체로 구성되어 있다.
- 이 경우 모델은 검은색 고양이 이미지를 주로 학습하게 된다.
- 새로운 데이터셋에서는 초기 데이터셋과는 다른 분포를 띠는 다양한 색상의 고양이 이미지와 고양이가 아닌 이미지가 포함된다.
- Covariate Shift: 입력 데이터 $X$의 분포가 변화하여 모델의 예측 성능에 영향을 미치는 현상
- 초기 모델은 검은색 고양이에 대해서만 학습했기 때문에, 새로운 데이터셋의 다양한 색상의 고양이 이미지를 잘 예측하지 못할 수 있다.
Why is covariate shift a problem with neural networks?
- 이는 입력 데이터 $X$의 분포 변화로 인해 모델이 기존에 학습한 특징과 다른 특징을 갖는 데이터를 처리하는 데 어려움을 겪는다.
- Solution:
- Batch Norm reduces the problem of the input distribution changing
Batch Norm as regularization
- Each mini-batch is scaled by the mean/variance computed on just that mini-batch
- This adds some noise to the value $z^{[l]}$ within that mini-batch ($= \tilde{z}^{[l]} $)
- So similar to dropout, it adds some noise to each hidden layer's activations
Softmax regression
Softmax layer
- Softmax layer는 주로 multiclass classification 문제에서 사용되며, 출력된 확률의 합은 1이 되며, 각 확률은 해당 클래스에 속할 확률을 나타낸다.
- Softmax 함수는 입력 벡터 $z^{[L]}$를 확률 분포로 변환한다.
$$t=e^{Z^{\left [ L \right ]}}$$
$$a^{\left [ L \right ]} = \frac{e^{Z^{\left [ L \right ]}}}{\sum_{i=1}^{4}t_{i}}$$
Softmax examples
- Decision boundary: 모델이 계산한 확률이 가장 높은 class가 변경되는 지점
- Color on the spot
- 해당 데이터 포인트가 Softmax 함수에 의해 가장 높은 확률을 가지는 class에 해당하는 색으로 변경