Search
Duplicate
🤖

비전공자도 쉽게 배우는 인공지능 - extra : Deep Learning Technique

간단소개
딥 러닝의 속도를 빠르게 해주는 여러가지 테크닉 (심화)
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
AI
인공지능
딥러닝
Scrap
태그
AI
딥러닝
9 more properties

서론

딥 러닝을 배운 후, 딥 러닝을 어떻게 하면 더 빠른 속도로 할 수 있는지 알아보는 시간입니다 ! 이전 강의를 듣고 오시지 않으셨으면 지금 보시지 않는 것을 추천드려요 !! 딥 러닝에는 모델 개선 말고도 테스트 검증이나 데이터 넣는 개수 등 여러가지 속도와 정확성에 관련 된 요소들이 많습니다 ! 그 중 가장 유명한 3가지 테크닉에 대해서 설명드리려고 합니다.

목차

Hyperparameter Tuning

1.
Learning Rate
Learning Rate?
Learning Rate는 Gradient Descent 속도를 조절하는 값
Learning Rate 값에 따른 정확도 변화
작을 때 : 손실함수의 최소값을 구하는데 오래 걸림. 정확도는 제일 높게 나옴.
클 때 : 빠르게 손실함수의 최소값을 구하는 방향으로 갈 수 있음. 하지만 정확성이 떨어짐.
너무 클 때 : 손실함수의 최소값이 위치한 x값을 넘어서 발산해버릴 수 있음. (사진 첨부)
Learning Rate Scheduling
Learning Rate를 적절히 사용하는 방식은 초반에는 크게, 후반에는 작게 하여 빠르면서도 정확하게 하는 것이다.
방식
연속적 : 연속인 그래프(ex - y=e^x)를 사용하여 epochs(반복횟수)가 커지면 Learning Rate를 늦추는 방식
계단식(Stepping Down) : epochs가 특정한 값에 도달할때까지 Learning Rate를 일정한 값을 가지게 하는 방식. 초반에 큰 값을 변화시킬 수 있음.
사용법
keras에서 제공
callback=tf.keras.callbacks.LearningRateScheduler(schedule)
2.
Batch Size
Batch Size?
Batch Size는 한번에 학습시킬 데이터의 양을 뜻하는 값
Batch Size값에 따라 손실함수가 rough하게 변할지 섬세하게 변할지 결정됨.
Batch Size에 따른 정확도 변화
작을 때 : 값 하나 넣고 손실함수 변화가 있기에 손실함수가 이상하게 변화할 수 있음. (Just Fit이므로)
클 때 : 학습 양이 많기 때문에 손실함수가 Rough하게 변하므로 정확성이 떨어짐.
3.
How to get Optimal Hyperparameter
방식
Grid Search
Learning Rate, Batch Size 테이블을 만들어서 어떨때 가장 정확한 값을 갖는지 찾는 것
Grid Search는 정해준 값만을 테스트 하기에 변화가 큰 구간을 파악하지 못할 경우가 있다.
Random Search
Random Learning Rate, Batch Size를 넣은 후 가장 최적의 점에서부터 또 범위를 넓혀 Random 값을 넣는식으로 동작
AutoML
위 것들을 하나하나 할 수 없어서 자동화해주는 기법
위 두개 파라미터(Learning Rate, Batch Size)외에도 정확성에 영향을 미치는 파라미터들이 많음.
optimizer, layer count
Katib, AutoKeras 등이 있다.

Prevent Overfitting

1.
Overfitting
Overfitting?
Overfitting : 과적합. training-set에 너무 적합해져버린 나머지 test-set에서는 정확도가 떨어지게 되는 현상. 다른 말로 High variance(오차 들쑥날쑥), Low bias라고도 한다.
Underfitting : 저적합. High bias(대체적으로 틀림), Low variance.
Bias와 Variance는 Trade-off 관계.
2.
방법
Collect more data
데이터를 많이 모으면 해결가능. (데이터가 많으면 overfitting 되기가 어렵기 때문(하나하나에 맞추려고 하기에는 너무 많아서))
Early stopping
validation accuracy가 크게 변하지 않으면 멈춘다.
Regularization(정규화)
Cost=Loss Function+Regularization Term 을 두는 것.
feature size를 크게 하더라도 불필요하다고 판단되는 것들의 Weight를 0으로 만듦.
방법 : tf.keras.layers.Dense(3, kernel_regularizer='l1')
Dropouts
Dropouts?
Training을 시킬 때 Random으로 Layer를 끊어서 학습한다. 마지막 Test 할 때는 다 연결시켜서 Test. Simple한 모델들의 앙상블.
효과 : 간단한 모델이 여러가지로 학습이 되므로 votting의 효과. 특정 점으로 과적합을 방지한다. 효과가 굉장히 좋다!
방법 : h = layers.Dropout(0.3)(h) - 0.3 : 30%를 빼겠다는 의미.

Weight Initialization

1.
Weight
Weight?
weights = trainable parameters. Wx+b에서 W,b를 뜻함.
2.
Initialization Methods
Glorot Uniform (Xavier Uniform) - keras default
limit 사이에서 uniform random으로 뽑음.
limit = sqrt(6/in+out)
효과 : 0에 가까운 값으로 초기화하면 optimal loss의 최대한 가까이에 있어 학습속도에 영향을 미침.
He Initialization
방법이 없을까 할 때 다른 방식의 initialization 방식을 쓰는 것도 좋다.
relu를 activation func로 많이 쓸 때 효과적.
정규분표를 사용.