Overfitting
1) 개요
2) Regularization
Dropout
1) 개요
- overfitting을 피하기 위해 사용
- network 상의 모든 neuron을 학습하는 것이 아니라 일부 neuron을 dropout하고 학습을 수행
- 데이터의 수가 적거나 layer가 깊지 않다면 사용하는 것을 자제
2) ensemble의 voting 효과
- 무작위로 dropout하여 학습을 시켜 voting 효과를 얻을 수 있다.
3) co-adaptation 예방
- neuron간의 weight나 bias가 특정 neuron의 큰 값에 의해 학습 속도가 느려지거나 성능저하 방지
4) 크기 조정
- train set에서는 각 neuron을 p의 확률로 사용
- test set에서는 각 neuron이 존재할 확률 p를 가중치 w와 곱해서 존재할 확률이 0일 경우 동작하지 않는다.
- 일반적으로 tf.keras.layers.Dropout(rate = 0.5)를 가장 많이 사용
5) 수학적 이해
- dropout을 적용하는 것은 bernoulli random variable을 곱해주는 것으로 수식은 다음과 같다.
- p는 존재할 확률로 평균이 p, 분산은 p(1-p)인 변수
$$r_{j}^{t} \sim Bernoulli(p)$$
$$\widetilde{y}^{t} = r^{t} \cdot y_{t}$$
$$z_{i}^{t+1} = w_{i}^{t+1} \widetilde{y}^{t} + b_{i}^{t+1}$$
- f : activation function
$$y_{i}^{t+1} = f(z_{i}^{t+1})$$
6) Max-norm Regularization
- dropout은 기존의 regularization 방법인 L1, L2 등을 사용하면 결과가 좋다.
- Max-norm을 사용하면 특히 좋은 결과가 나오며 높은 learning_rate를 사용할 수 있어 학습을 빠르게 할 수 있음
Max-norm
hidden layer의 weight를 특정 상수 c 보다 작게 해주는 방법
DropConnect
1) 개요
- Dropout은 neuron을 생략하지만 DropConnect는 일부 weight와의 선형결합을 생략하여 neuron은 존재함
2) 수학적 이해
- normal network inner product
$$S_{i}(I) = \sum_{j=1}^{n}w_{ij} I_{j},\;\;\; i=1,2,...,k$$
- Dropout inner product
$$S_{i}(I) = \sum_{j=1}^{n}w_{ij} p_{j} I_{j},\;\;\; i=1,2,...,k$$
- DropConnect inner product
$$S_{i}(I) = \sum_{j=1}^{n} \delta_{ij} w_{ij} I_{j},\;\;\; i=1,2,...,k$$
3) dropout과의 성능비교
- 눈에 띌 만큼 성능향상이 있진 않지만 그래도 효과적인 것으로 보임
참고
pod3275.github.io/paper/2019/05/31/Dropout.html
m.blog.naver.com/laonple/220827359158
deepestdocs.readthedocs.io/en/latest/004_deep_learning_part_2/0042/
'AI > Deep Learning' 카테고리의 다른 글
Softmax Classifier (0) | 2021.03.09 |
---|---|
Batch Normalization (0) | 2021.03.05 |
Weight Initialization (0) | 2021.03.04 |
SGD (Stochastic Gradient Descent) (0) | 2021.03.04 |
Activation function (0) | 2021.03.03 |