멋쟁이사자처럼 X K-DIGITAL Training - 07.14
[이전] 2021.07.14 - [python/k-digital] - [K-DIGITAL] 머신러닝을 넘어 딥러닝으로
비용함수의 값을 최소로 만드는 θ를 찾아나가는 방법
2021.06.29 - [python/k-digital] - [K-DIGITAL] 머신러닝 알고리즘(1) 회귀분석과 분류분석
모든 파리미터를 초기화한 후 비용함수가 가장 낮은 지점을 향해 나아가며 선택한 gradient descent method로 계속 파라미터 update
Gradient Descent 적용하기 위한 첫 단계는 모두 파라미터를 초기화하는 것으로 이때 더 나은 초기화 방식 모색
퍼셉트론의 linear combination 결과 값(혹은 activation function의 입력값)이 너무 커지거나 작아지지 않게 만들어주려는 것이 핵심
- iteration: gradient descent 횟수, 학습 횟수
- loss: 에러, 오차
1-1) Xavier Initialization (자비에 초기화)
sigmoid 함수나 tanh 함수 사용할 때 적용
다수의 딥러닝 라이브러리에 default로 적용되어 있음
표준편차가 √(1/n) 인 정규분포를 따르도록 가중치 초기화
1-2) He Initialization
활성화함수가 ReLU 함수일 때 적용
표준편차가 √(2/n) 인 정규분포를 따르도록 가중치 초기화
에러가 가장 낮은 지점은 곧 오버피팅(과적합)된 상태일수도 있음
모델이 복잡해질수록(과적합) 모델 속에 숨어있는 θ들의 수가 많아지고 절대값이 커지는 경향이 있음
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-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 횟수
train 진행할 때 batch마다 layer 단위로 일정 비율만큼 neuron을 랜덤으로 꺼뜨리는 방식
test / inference 단계에서는 dropout을 걷어내어 전체 뉴런이 살아있는채로 진행해야함
랜덤하게 neuron을 꺼뜨려 학습을 방해함으로써 모델의 학습이 train data에 편향되는것(오버피팅)을 막아줌
동일한 데이터에 대해 매번 다른 모델을 학습시키는 것과 마찬가지의 효과를 발생시켜 일종의 모델 앙상블 효과를 얻음
가중치 값이 큰 특정 neuron의 영향력이 커져 다른 neuron들의 학습 속도에 문제를 발생시키는 co-adpatation을 회피할 수 있게 함
처음 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 계산
장점
- 학습 속도 향상과 학습 결과 개선
- 가중치 초기값에 크게 의존하지 않음
- 과적합 억제
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 방식 이용
[K-DIGITAL] 딥러닝 Tensorflow2.x 실습 - MNIST (0) | 2021.07.16 |
---|---|
[K-DIGITAL] 딥러닝 Tensorflow1.x 실습 - MNIST (0) | 2021.07.15 |
[K-DIGITAL] 머신러닝을 넘어 딥러닝으로 (0) | 2021.07.14 |
[K-DIGITAL] 미드프로젝트. 영화 별점 데이터 분석(추가) - 분류모델의 성능 향상 (0) | 2021.07.12 |
[K-DIGITAL] 미드프로젝트. 영화 별점 데이터 분석 (0) | 2021.07.10 |
댓글 영역