brunch

You can make anything
by writing

C.S.Lewis

by 이유민 Aug 24. 2021

11. 딥러닝 가이드라인

Overfitting

- 모델 복잡도가 큰 딥러닝에선 overfitting문제가 발생하기 쉬움

- 이를 해결하기 위한 많은 방법 !

- Regularization!! (오버피팅 막기 위해서)

    : parmeter norm penality

    : Data augmentation (데이터를 늘려줌)

    : Multitask learning

    : Early stopping (학습조기종료)

    : Dropout (특정 노드 빼는 방식)


Regularization

- 학습하고자 하는 파라미터 값에 제약을 주어 모델의 복잡도를 낮추는 것

- 처음부터 적당한 복잡도의 모델을 선택하는 대신, 복잡도가 높은 모델의 파라미터에 적절한 제약을 주는 방식으로 최적합 모형 탐색


Parameter Norm Penalty

- 일반적으로 node간 연결 가중치에만 penaty부여. bias는 penalty에 포함시키지 X

- bias를 penalty 에 포함할 경우 언더피팅!

- 일반적으로 모든 층에 같은 종류의 penalty 적용

- L2-norm(릿지) -> 가중치 절댓값 줄어듦

- L1-norm(라쏘) - 파라미터 희소성 => 일부 weight만 활용

- Lq 일때, q<=1 : parmeter 선택!


Data augmentation

- generalization performance 개선 : 적절한 데이터 추가

- fake 데이터, 랜덤 노이즈 추가


Multitask Learning

- 히나의 모델로 같은 입력을 사용하는 여러 task들을 동시에 수행!

- 하나의 task에만 적합되지 않고 여러 task에 고르게 작동하려고 학습


Early Stopping

- 신경망의 경우, training 데이터의 epoch(전체데이터학습)이 길어질수록 training 데이터 과적합

- 이를 막기위해 별도의 validation set 사용. error가 감소하지 않을 경우 학습 중단!

- validation loss가 개선되지 않으면, 모수 기억해서 호출 사용

- 가장 간단하고 기본적! 다른 결합도 손쉬움

- norm penalty와 비슷한 효과


앙상블

: bagging의 경우 데이터셋에 어떤 데이터드링 포함되느냐에 따라 모형학습의 결과 달라짐


Drop out : 가장 최우선으로 고려되는 regularization

- 가장성공적인 딥러닝 regularization

- 여러 네트워크들의 앙상블을 현실적으로 구현!

- output 노드가 아닌 다른 노드를 제거하여 만들수 있는 subnetwork들로 구성된 ensemblemodel이 되도록!

- node를 일정확률로 선택하지 않고 weight학습하는 방식으로 수행

- test phase: 각 weight에는 p만큼 보정됨


Hyperparameter

- 초 매개변수 : 학습과정에서 변경되지 않고, 모델의 학습을 위해 결정해야 하는 것

- 최종 학습 완료된 모델의 성능 결정

 ex) 신경망의 넓이 깊이, step size, regularization hyperparameter

- 이 선택을 위해 validation set이용!

- logestic regression이랑 SVM은 hyperparameter가 적은 모델, 신경망은 개많음

- 데이터의 수가 적을 땐 k-fold cross validation방법 적용


k-fold cross validation

- k개의 겹치지 않는 부분집합

- k가 n개의 경우 jack-knifeCV


딥러닝의 하이퍼파라미터

- 은닉층의 수, node의수 (늘어날 수록 복잡도 증가)

- step size(너무 작으면 최적해 도출 X)

- regularization coefficient : 정규화를 위한 계수 적당히 선택!

- dropout rate


Hyperparameter Tuning

- 자동화 규칙

- Grid search

 : hyperparameter마다 적절한 값을 선택 한 후, 직교좌표계에서 validation loss탐색

 : 각 trail 독립적

- Random search

 : 임의의 점

 : 때로는 grid-search보다 효과적 =? 수많은 파라미터를 사용

 : 얘도 각 trail독립적


Model selection


머신러닝/딥러닝

- 문제가 복잡하지 않다면 로지스틱 회귀 등 단순

- 물체,음성,기계번역 의 경우 적당한 딥러닝 모델 사용


딥러닝 모델

- 기본적인 MLP, CNN, LSTM등의 모델

- regularization은 첨부터

- early stopping은 모든경우, dropout도 많은 경우

- 전이학습도 사용!


모수의 초기값 = 대칭성 파괴 필요


최적화 방법론

- full Batch (전체데이터)

 : 안정

- Stochastic gradient(데이터 1개)

 : 변동성 큼, but 메모리 줄임

- Mini-batch gradient (일부분씩 끊어서)

- Momentum methods (이전의~)

    : 예전꺼 고려해서!


Data Gathering


- 데이터 추가수집이 더 조흔 모델

- 언제 추가수집이 효과적?

    1) traindata 학습결과 괜찬흔지l!

    : 좋지 못한 경우는 hyperparameter 조절해서 모델의 복잡도 증가시켜야! 그래도 안되면

    2) data품질

    : noise 제거, 더 만흔 feature

    3) train 괜찮으면 test에서! => 별로면 데이터 추가수집을 통해 overfitting 막을 수 O

    




        

매거진의 이전글 10. 딥러닝 및 다층 퍼셉트론
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari