상세 컨텐츠

본문 제목

[K-DIGITAL] 딥러닝 모델 최적화 이론

PYTHON/K-DIGITAL

by ranlan 2021. 7. 14. 18:47

본문

728x90

멋쟁이사자처럼 X K-DIGITAL Training - 07.14

 

 

[이전] 2021.07.14 - [python/k-digital] - [K-DIGITAL] 머신러닝을 넘어 딥러닝으로

 

[K-DIGITAL] 머신러닝을 넘어 딥러닝으로

멋쟁이사자처럼 X K-DIGITAL Training - 07.13 [이전] 2021.06.28 - [python/k-digital] - [K-DIGITAL] 인공지능과 머신러닝 [K-DIGITAL] 인공지능과 머신러닝 인공지능 (Artificial Intelligence, AI) 인공지능이..

juran-devblog.tistory.com


 

Neural Network Optimization (신경망 최적화)

0. Gradient Descent (경사하강법)

비용함수의 값을 최소로 만드는 θ를 찾아나가는 방법

 

2021.06.29 - [python/k-digital] - [K-DIGITAL] 머신러닝 알고리즘(1) 회귀분석과 분류분석

 

[K-DIGITAL] 머신러닝 알고리즘(1) 회귀분석과 분류분석

멋쟁이사자처럼 X K-DIGITAL Training - 06.25 지도 학습 (Supervised Learning) 훈련 데이터로부터 하나의 함수를 유추해내기 위한 기계학습 인간 개입에 의한 분석 방법 입력 데이터에 대한 정답인 종속 변

juran-devblog.tistory.com

모든 파리미터를 초기화한 후 비용함수가 가장 낮은 지점을 향해 나아가며 선택한 gradient descent method로 계속 파라미터 update

 

 

1. Weight Initialization

Gradient Descent 적용하기 위한 첫 단계는 모두 파라미터를 초기화하는 것으로 이때 더 나은 초기화 방식 모색

퍼셉트론의 linear combination 결과 값(혹은 activation function의 입력값)이 너무 커지거나 작아지지 않게 만들어주려는 것이 핵심

ReUL 활성화 함수를 이용한 신경망에서 MNIST 테스트

- iteration: gradient descent 횟수, 학습 횟수

- loss: 에러, 오차

 

1-1) Xavier Initialization (자비에 초기화)

 

sigmoid 함수나 tanh 함수 사용할 때 적용

다수의 딥러닝 라이브러리에 default로 적용되어 있음

표준편차가 √(1/n) 인 정규분포를 따르도록 가중치 초기화

 

 

 

1-2) He Initialization

활성화함수가 ReLU 함수일 때 적용

표준편차가 √(2/n) 인 정규분포를 따르도록 가중치 초기화

 

 

2. Weight Regulation (가중치 정규화)

에러가 가장 낮은 지점은 곧 오버피팅(과적합)된 상태일수도 있음

모델이 복잡해질수록(과적합) 모델 속에 숨어있는 θ들의 수가 많아지고 절대값이 커지는 경향이 있음

 

J(θ) = MSE(CE) + λ(R(θ)

* MSE(비용함수)와 R(θ)는 Trade-off 관계

 

Weight Decay (가중치 감퇴, 감소)

2-1) L1 Regulatioin (L1 정규화)

가중치의 절대값의 합에 비례하여 가중치에 페널티를 준다.

관련성이 없거나 매우 낮은 특성의 가중치를 정확히 0으로 유도하여 해당 feature 배제하는데 도움 -> feature selectioin

 

2-2) L2 Regulation (L2 정규화)

가중치의 제곱의 합에 비례하여 가중치에 페널티를 준다.

큰 값을 가진 가중치를 더욱 제약하는 효과 있음

 

Regulartion Rate (λ, 정규화율)

스칼라값으로 정규화함수의 상대적 중요도 지정

정규화율을 높이면 과적합이 감소하지만 모델의 정확성이 떨어질 수 있음(underfitting)

θ의 수가 아주 많은 신경망은 정규화율을 아주 작게 주기도함

 

 

3. Advanced Gradient Descent Algorithms

  

3-1) (Full-Batch) Gradient Descent

모든 train data에 대해 cost를 구하고 이를 기반으로 gradient descent 적용

학습이 오래 걸림

 

3-2) Stochastic Gradient Descent (SGD, 확률적 경사 하강법)

batch size를 1로 정하여 하나의 train data마다 cost 계산하고 gradient descent 적용

매번 weight를 갱신하기 때문에 신경망의 성능이 들쑥날쑥 변함(cost가 안정적으로 줄어들지 않음)

최적의 learning rate 를 구하기 위해 일일이 튜닝하고 수렴조건을 조정해아함

 

3-3) Mini-Batch Stochastic Gradient Descent

batch size 정하여 cost function 계산 및 gradient descent 적용

 

* Batch / Epoch / Iteration

- Epoch : 모든 데이터에 대해 한번씩 모두 학습시킨 횟수

- Iteration : Gradient Descent 횟수

 

 

 

 

 

Avoid Overfitting (과적합 방지)

1. Dropout

 

train 진행할 때 batch마다 layer 단위로 일정 비율만큼 neuron을 랜덤으로 꺼뜨리는 방식

test / inference 단계에서는 dropout을 걷어내어 전체 뉴런이 살아있는채로 진행해야함

 

랜덤하게 neuron을 꺼뜨려 학습을 방해함으로써 모델의 학습이 train data에 편향되는것(오버피팅)을 막아줌

동일한 데이터에 대해 매번 다른 모델을 학습시키는 것과 마찬가지의 효과를 발생시켜 일종의 모델 앙상블 효과를 얻음

가중치 값이 큰 특정 neuron의 영향력이 커져 다른 neuron들의 학습 속도에 문제를 발생시키는 co-adpatation을 회피할 수 있게 함

 

 

2. Batch Normalization

처음 input data뿐 아니라 신경망 내부 중간에 있는 hidden layer의 input에 Normalizatin 적용

 

 

1) 각 hidden layer의 input data에 대해 평균이 0, 분산이 1이 되도록 Normalization 진행

2) hidden layer의 output 이 비선형성을 유지할 수 있도록 Normalizatino 결과에 Scaling(*Γ) & Shifting(+β) 적용

3) Scaling & Shifting 적용한 결과를 Activation Function에 전달 후 hidden layer의 최종 output 계산

 

장점

- 학습 속도 향상과 학습 결과 개선

- 가중치 초기값에 크게 의존하지 않음

- 과적합 억제

 


 

Summury

1) input layer

2) 행렬 곱을 통한 input data와 θ의 선형 곱

3) 필요에 따라 batch normalization

4) Activation Function (ReLU, tanh ...)

5) Drop out (뉴런 랜덤 끄기)

6) output layer - 회귀 혹은 softmax로 분류

7) 정답과 비교하여 오차 계산

8) Backpropagation

 

 


 

 

++ 07.15 질문&답변 추가)

 

1. SVM(머신러닝)에서 선형분리 불가능을 해결하기 위해 커널함수를 이용, 이때 커널함수는 고정된 함수

    딥러닝에서 θ들을 gradient descent을 통해 업데이트

    딥러닝에서는 각각의 layer가 학습 가능함으로 learnable kernel이라고 함 -> HPO라고 할 수 없음, 사람이 직접 지정하는게 아니기 때문

    딥러닝에서 HPO는 퍼셉트론의 수 등이 있음

 

2. gradient descent에 weight regulation을 적용하여 cost function에서 MSE만 보는 것이 아니라 R(θ)를 더한 값을 고려하게됨

 

3. θ 업데이트 방식은 여전히 gradient descent 방식 이용

728x90

관련글 더보기

댓글 영역