3. Training Methodologies
1. Dropout
•
뉴런을 임의로 삭제하면서 학습하는 방법
•
Training 작업에서 hidden layer의 뉴런을 무작위로 골라서 삭제하는 방법
•
Training 작업에서는 dropout 할 뉴런을 제외하고 데이터를 전달하고, Test 작업에서는 모든 뉴런에 데이터 전달
2. Loss function
1.
MSE(Mean Squared Error) - 평균제곱 오차
2.
Cross Entropy Loss
•
Entropy : 확률분포의 무작위성, 불확실성을 측정하는 함수
→ 예측하기 힘들 수록 entropy 값은 커짐
•
Cross Entropy : 서로다른 두 확률분포의 다른 정도를 측정하는 함수
ex) 만약 일반적인 주사위 P와 찌그러진 주사위 Q(1이 1/2 확률, 나머지는 1/10의 확률)의 Cross Entropy?
3.
Focal Loss
•
Class 불균형이 심한 경우에 효과적인 loss
•
의료 영상분할을 다룬 RetinaNet 논문에서 제안 됨.
3. Normalization
Normalization이란 모든 데이터들의 스케일을 동일하게 만들어서 각 feature값들이 동등한 중요도를 갖도록하는 작업
만약에 y = Wx 라는 single layer가 있을 때, input data x의 분포가 0을 기준으로 고르게 분포하지 않을 수 있음
•
편향되어 있을 수도 있거나→ large bias, 너무 분포가 넓을 수도 있음
•
처음 원본 데이터의 분포는 고른상태였지만 여러 레이어를 통과하면서 network 내부에서 데이터 분포가 편향되게 shift 할 수 도 있음.
→ input data의 불균형에 따라서 모델 성능이 낮아질 수 있기 때문에 normalization 이 필요함
1.
Batch Normalization
•
각 feature 별로 정규화 하는 방법으로 한 mini-batch에 대해서 summed input의 평균과 분산을 구한 z score로 정규화를 진행하는 방법
•
각 layer의 activation function을 통과하기 전에 배치 차원에서 정규화 작업을 진행해서 내부 covariance를 줄이고 일반화하는 방법
•
보통 FC layer나 Convolution layer 뒤에 삽입하거나, activation function layer 전에 삽입됨
[문제 1] 만약에 N(0, 1)로 정규화를 하는 것이 데이터에 너무 강력한 규제를 하는 것이면?
•
데이터가 가지고 있는 분포의 특성을 전혀 살리지 못하는 것도 문제임!
•
~ 를 따를 수 있도록 Learnable scale과 shift parameter γ(= 기존 데이터의 표준편차 ), β(=기존 데이터의 평균 ) 도입!
•
우선적으로 z-score 스케일링을 하고, 로 기존 데이터의 분포를 유지할 수 있도록 shift
[문제2] batch normalization은 mini-batch 단위로 진행되기 때문에 Test 과정에서는 평균과 분산을 구할 수 없는 문제가 발생!
•
Training 과정의 의 평균, Training 과정의 의 평균을 사용해서 테스트시 normalization 수행!
•
의 average 값으로 normalization을 하게 되면 특정 배치에 의한 정규화가 아닌 배치와 독립적인 linear한 정규화가 일어나게 됨 (During testing, batch norm becomes a linear operator)
•
이렇게 고정된 transformation을 하게되면, 고정된 평균과 분산을 이용해서 정규화 과정을 미리 계산해서 이전 레이어의 가중치에 통합(fusing)할 수 있음.
•
새로운 , 새로운
•
이렇게 BatchNorm의 효과를 이전 레이어에 반영하면 테스트 시에 별도의 BatchNorm 레이어가 필요없게 되어서 네트워크가 간소화되고, inference 속도를 높일 수 있음
•
Batch Normalization의 장점
◦
Deep network를 학습 시키는 것이 훨씬 쉬워짐
◦
improves gradient flow
→ 학습의 안정성을 향상시키고 기울기 소실 문제를 완화
◦
allows higher learning rates, faster convergence
→ 학습의 수렴속도를 높이고, 가중치 초기화에 대해 강건해짐
◦
일종의 regularization 역할도 수행 (모델 과적합 방지를 위해 가중치를 조정하거나 제약을 두는 역할)
•
Batch Normalization의 단점
◦
미니 배치 크기에 의존하고, 배치 사이즈가 너무 작은 모델에서는 잘 작동하지 않음
→ batch size가 1일때 분산크기가 0이 되기 때문에 배치 정규화의 효과가 극단적이게 될 수 있음
◦
RNN Model과 같이 sequence 데이터를 다루는 모델에서는 적용시키기 어려움
→ 각 시점마다 다른 사이즈의 데이터가 연속적으로 나오기 때문에 적용시키기 어려움.
4. Optimizer
1.
Gradient Descent
스텝크기 , 반복횟수 N, loss function 일때
a.
초기값 설정 : ,
반복단계 에 대해서
b. 탐색방향 설정 :
c. x값 업데이트 :
2.
탐색방향 기반 알고리즘
: 학습률을 고정시킨 채 탐색방향(gradient)을 변경
•
SGD(Stochastic Gradient Descent)
: 전체 N개의 데이터 중 m개만 임의로 추출(mini-batch)하여 그래디언트 계산에 사용하는 방법
→ batch size(mini-batch의 데이터 수) 와 epoch(반복 횟수)를 하이퍼파라미터로 사용
→ 해당 시점(데이터)에 대한 가장 정확한 그래디언트 값이 아니어도 적당한 배치차이즈만 찾는다면 빠른 속도로 그래디언트 추정이 가능해서 딥러닝 학습 속도를 크게 개선시킬 수 있음
a.
초기값 설정
b.
전체 데이터를 임의로 섞어줌
c.
전체 데이터에서 개수가 m개인 mini-batch 생성
d.
각 mini-batch 마다 다음을 반복
•
mini-batch 에 대한 gradient로 탐색 방향 설정 :
•
learning rate 설정
•
x값 업데이트 :
e.
한 개의 mini-batch에 대한 연산이 끝나면, d 번과정을 epoch수 많큼 반복
•
Momentum
: 이동 벡터가 이전 기울기에 영향을 받도록 하는 방법으로 기존 SGD 방법에 관성계수 (0~1사이 값)를 도입
→ 국소최적해에 빠지지 않게 하기 위해서 전 단계의 탐색방향의 누적합 + 현재 단계의 gradient에 의한 탐색방향을 더한 값을 사용!
◦
◦
3.
learning-rate 기반 알고리즘, Adaptive 알고리즘
learning rate를 고정하지 않고 매번 적절한 learning rate를 계산
→ 하나의 고정된 학습률을 사용하게 되면 각 방향마다 크기의 불균형이 있는 경우 한쪽으로 치우칠 수 밖에 없기 때문에 매 단계마다 학습률을 다르게 설정해서 초반에는 빠른 수렴속도로 최적의 파라미터의 추정치 근처로 수렴하다가 점차 학습률이 낮아져 안정적인 최적의 파라미터로 정확하게 수렴할 수 있음
•
Adagrad
: 데이터별로 학습률을 다르게 계산 하기 위해서 누적 기울기 값 를 도입
→ 탐색 방향은 SGD와 동일, 각 방향별로 learning rate를 계산하는 것이 다름
→ 볼록성을 갖는 loss function에는 잘 수렴하지만, 볼록함수가 아닌 신경망 모델에는 성능이 낮음
→ 값은 초기값부터 일정하게 더해져 반복 횟수가 큰 상황에는 뒷 단계에서는 국소최적해와 상관 없이 learning rate 값이 0에 가까워지는 단점이 있음(learning-rate decay)
◦
◦
•
RMSProp
: Adagrad의 Learning rate 소실 문제를 보완하기 위해서 단기 누적 그래디언트 크기 를 사용
→ 누적기울기 값을 얼만큼 반영할 건지에 대한 파라미터로, 너무 오래된 그래디언트 크기를 없앨 수 있음
◦
◦
•
Adam (RMSProp + Momentum)
: 탐색 방향과 학습률 모두 적응형 접근법으로 탐색하는 방법으로 현재까지 딥러닝을 위한 최적화 알고리즘 중, 하이퍼파라미터에 가장 robust하다고 알려진 알고리즘
→ Momentum을 위한 관성 계수 , RMSProp을 위한 단기 누적 업데이트 계수 도입
→ 는 초기값이 0인 것을 고려해서 보정한 값
◦
◦
◦
◦
5. Transfer Learning
전이학습은 어떤 도메인의 데이터로 사전학습한 모델을 다른 도메인에 적용해서 성능을 향상시키는 방법
→ 마지막 FC 레이어를 제외하고는 사전학습에서 사용된 가중치를 사용하고(freeze) 분류를 위한 마지막 Fully-Connected layer만 새로운 데이터로 재학습