KimDahye / deeplearning_study

0 stars 0 forks source link

Lecture 5: Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and Optimization #5

Open kukugi opened 3 years ago

kukugi commented 3 years ago

Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and Optimization

Train/Dev/Test sets

Train

학습을 위한 데이터셋

Dev

Cross Validation Set, Dev Set 이라고도 부른다. 다양한 데이터 모델중에 어떤 모델이 dev set 에서 가장 잘 동작하는 지 확인하는데 사용되는 데이터셋

Test

알고리즘이 제대로 작동하는지 확인하기 위한 데이터셋

Dataset ratio

Traditional machine learning

전통적인 머신러닝에서는 데이터셋의 비율을 60/20/20 으로 설정하는 것이 가장 효율적이라고 알려졌다. 100개, 1000개, 10000개 와 같이 적은 데이터셋에서 최고로 효율적일 수 있을것이다. s

Big Data

하지만 빅데이터환경에서는 더 적은 dev/test set 으로도 충분히 데이터 모델을 검증할 수 있다. 예를들어 100만개의 예시가 있는 경우, 만개의 dev set 만 있어도 충분히 검증이 가능하기 때문에 비율을 98/1/1 과 같이 맞출 수 있다.

Bias / Variance

High Bias

데이터 모델이 트레이닝셋에 underfitting 되어 분류를 제대로 하지 못하는 상황 train set 에서 많은 오류가 나는 경우

High Variance

데이터 모델이 트레이닝셋에 overfitting 되어 과하게 트레이닝 셋과 가까운 값을 요구하는 상황 train set 에서는 결과가 좋게 나오지만 dev set 에서 많은 오류가 나는 경우

Basic Recipe for Machine Learning

High Bias

만약 high bias 상태가 발생했다면 네트워크를 키우고, 학습을 길게 가져가는 것이 도움이 될 수 있다.

High Variance

만약 high bias 상태가 발생했다면 데이터를 늘리고, 데이터를 정규화 하는 것이 도움이 될 수 있다.

Bias Variance Tradeoff

일반적으로 bias 와 variance 는 트레이드오프 관계를 가지고 있지만, 요즘 빅데이터 산업에서는 네트워크를 크게 만들면 variance 를 망가뜨리지 않으면서 bias 줄일 수 있고, 데이터를 늘리게 되면 bias 을 망가뜨리지 않으면서 variance 를 줄일 수 있다.

Regularization

high variance 문제가 발생했을 경우 가장 먼저 시도해야하는 것은 regularization 이다.

L2 Regularization

L2 정규화는 모델의 복잡도가 높으면 페널티를 부여하는 정규화항을 추가 함으로써 모델의 복잡도를 낮추는 정규화 방식이다.

Why Regularizetion Reduces Overfitting

L2 정규화의 추가항은 W의 값이 클 수록 페널티를 부과한다. 정규화로 인해 W 값의 범위는 작아질 것이다. 이는 히든 유닛들의 영향이 작아진다는 것을 의미하며, 이는 모델이 심플한 형태로 변하는 것이다.

Dropout Regularization

Dropout 정규화는 각 히든 유닛을 특정한 확률로 제거하는 정규화 방식이다.

Understanding Dropout

Dropout 정규화는 랜덤한 히든 유닛이 제거되기에 특정한 feature 에 의존적일 수 없게 된다.

Other Regularization Methods

Add Distorted Data Copy

overfitting 문제는 더 많은 데이터를 통해 해결이 가능하다. 하지만 새로운 데이터를 추가하는 일은 비용이 많이 들기 때문에 기존의 데이터를 왜곡시켜 데이터셋에 추가하는 것으로 데이터 셋의 크기를 늘릴 수 있다. 이 방법은 overfitting 을 해결하는 데 도움이 될 수 있지만, 완전히 새로운 데이터를 구하는 것보다 효과가 떨어진다.

Early Stopping

학습이 오래 진행 될 수록 가중치 w 는 점점 커질 것이다. 이를 중간정도의 값에서 중지시키는 것으로 모델을 덜 overfitting 하게 만들 수 있다.

Normalizing Inputs

입력값을 조절하는 것으로 학습속도를 높일 수 있다. 입력값이 normalize 되면 코스트 함수의 결과가 대칭적으로 나오기 떄문에, gradient decent 하기에 유리해진다.

Vanishing / Exploding Gradients

신경망이 깊어지는 경우, 데이터가 사라지거나 기울기가 폭발적으로 증가 할 수 있다.

Weight Initialization for Deep Networks

깊은 신경망에서 가중치 W 를 초기화하는 방법을 조절하는 것으로 vanishing, exploding gradient 문제를 개선할 수 있다. 입력값 의 갯수 n 이 많아질 수록 Wi 의 값을 작게 설정하는 것이다.

Numerical Approximation of Gradients

미분값을 구할 떄, 함수 f(x) 에 대해 x 에 아주 작은 수를 더하고 두 값의 차이를 이용했다. 하지만 x 에 아주 작은 수를 더한값, 뺀값 두 값을 가지고 둘의 차이를 이용하는 것이 더 정확한 미분값이 나온다.

Gradient checking

kukugi commented 3 years ago

Normalizing Inputs