[Deep Learning] Regularization
CS/Deep Learning

[Deep Learning] Regularization

[Deep Learning] Regularization

 

Regularization에 대해 자세히 알아보려면 Overfitting이 무엇인지 알아야한다.

그럼 Overfitting과 더불어 Underfitting 까지 알아보자.

 

Overfitting

  • 한 data set에만 지나치게 최적화된 상태
  • 아래 그래프처럼 학습 데이터에 대해서는 오차가 감소하지만 실제 데이터에 대해서는 오차가 증가하는 지점이 존재할 수 있다.
  • 다시 말해 overfitting은 학습데이터에 대해 과하게 학습하여 실제 데이터에 대한 오차가 증가할 경우 발생한다.

Underfitting

Underfitting 이란 모델이 너무 간단하기 때문에 학습 오류가 줄어들지 않는 것이다.

 

 

 

 

그렇다면 Overfitting을 완화시키는 방법에는 어떤것들이 있을까?

이 경우 크게 3가지를 생각해 볼 수 있다.

 

  1. Training Data를 늘린다.
  2. Regularization
  3. Drop-Out

여기서 Training Data를 증가시키는 방법은 학습시간이 늘어나기 때문에 그만큼 비용도 늘어나서 효율적이지 않다.

그럼 2번을 생각해보자.

 

Regularization

  • W(weight)가 너무 큰 값들을 가지지 않도록 하는 것이다.
  • W가 너무 큰 값을 가지게 되면 과하게 구불구불한 형태의 함수가 만들어지는데, Regularization은 이런 모델의 복잡도를 낮추기 위한 방법이다.
  • Regularization은 단순하게 cost function을 작아지는 쪽으로 학습하면 특정 가중치 값들이 커지면서 결과를 나쁘게 만들기 때문에 cost function을 바꾼다.

 

# Original loss
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(hypothesis, labels))

 

  • Regularization에는 2가지 종류가 있다.

 

L1 Regularization 

: Regularization 의 2가지 종류 중 하나이다. 식으로 나타내면 아래와 같다.

 

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(hypothesis, labels) + lamda * tf.reduce_sum(tf.abs(weights)))

 

C0 : 원래 cost function

n : 훈련 data 개수

λ : regularization 변수

W : 가중치

 

이와 같이 Regularization에서는 학습의 방향이 단순하게 C0값이 작아지는 방향으로만 진행되는게 아니라, W값들 역시 최소가 되는 방향으로 진행을 하게 된다.

이렇게 정의된 cost function을 가중치 W에 대해서 편미분을 수행하면, 결과적으로 새로운 가중치는 아래와 같다.

즉, 위 식을 보면 Weight 값 자체를 줄이는 것이 아니라 W의 부호에 따라 상수 값을 빼주는 방식으로 regularization을 수행한다.

 

 

L2 Regularization

: Regularization 의 두가지 종류 중 하나이다. 식은 아래와 같다.

L1과 다른 점은 W값이 절대값이 아닌 제곱 값이라는 점이다.

 

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(hypothesis, labels) + lamda * tf.nn._l2_loss(weights))

 

cost function을 가중치 w에 대해서 편미분을 수행하면 새로운 가중치는 아래와 같다.

여기서 보면 w앞에 곱해진 값에 의해 값이 작아지는 방향으로 진행하게 된다. 이를 weight decay라고 한다. weight decay에 의해 특정 가중치가 비이상적으로 커지고 그것이 학습의 효과에 큰 영향을 끼치는 것을 방지할 수 있다.

 

정리

regularization을 하는 것, 즉 W가 작아지도록 학습을 한다는 것의 의미는 local noise가 학습에 큰 영향을 끼치지 않는다는 것을 의미하며, outlier(특이점)의 영향을 적게 받도록 하고 싶은 것이다. 결과적으로 일반화에 적합한 특성을 갖게 만드는 것이라 볼 수 있다.

 

 

L1, L2 Regularization 차이

  • L1 : L1은 통상적으로 상수 값을 빼주도록 되어 있기 때문에 특정 weight들은 0으로 수렴하게 되서 몇 개의 중요한 가중치들만 남게 된다. 그러므로 몇 개의 의미 있는 값을 끄집어내고 싶은 경우에는 L1이 효과적이기 때문에 sparse model에 적합하다. 단 미분이 불가능한 점이 있기 때문에 gradient-based learning에 적용시에는 주의가 필요하다.
  • L2 : L2는 outlier에 대해선 L1보다 덜 Robust(둔감)하다. 따라서 Outlier에 대해 신경을 써야하는 경우에 사용한다.

 

 

 

참고 

https://m.blog.naver.com/laonple/220527647084

 

728x90
반응형

'CS > Deep Learning' 카테고리의 다른 글

[Deep Learning] Optimizer  (1) 2020.04.19
[Deep Learning] Dropout  (0) 2020.04.19
[Deep Learning] 손실 함수(Cost function)  (0) 2020.04.05
[Deep Learning] Cross-entropy  (0) 2020.04.05
[Deep Learning] 활성화 함수(Activation function)  (0) 2020.04.05