Skip to content

(08.28) W06_L07 Regularization App

elecsoul edited this page Aug 31, 2018 · 1 revision

https://www.youtube.com/watch?v=WFzkKr4Q9HU


민규(2018.08.28): 이번 강의는 regularization을 다양한 기법(linear/logistic regression, SVM)에
어떻게 적용하는지 그리고 이에 대한 간단한 실험을 보여줬다. linear regression에서 regularization을 적절히 더했을 때 안했을 때보다 variance가
감소함을 확인했다.(bias도 살짝 올랐다) 이를 통해 complex한 모델에 효과적임을 확인했다.
그런데 regularization을 강하게 주면 강한 constraint를 주는 것이기 때문에 complex한 모델이
간단한(constant) 모델에 가까워져 성능이 안 좋아진다. 많은 실험을 통해 적절한 regularization을
가해야겠다. 그리고 SVM에서 C가 알고보니 regularization 역할을 하는 것임에 신기했다.
머신 러닝에서는 간단한 상수도 숨어있는 역할이 있는 것 같아서 그냥 넘어가면 안되겠다.


승관(2018.08.28):

  • Regularization을 추가한 Linear regression : W라고 하는 파라미터가 달라진다.

  • Regularization을 했을때 : 민감하게 반응한다.

  • Regularization을 안했을때 : 덜 민감하게 반응하지만 complex는 변하지 않는다.

  • 람다값이 작을때 : 너무 높은 Variance

  • 람다값이 클때 : 너무 낮은 Variance

  • 따라서 적절한 람다값이 필요하며, 때문에 여러번의 실험이 필요하다.


대하(2018.08.28):
이번 시간은 매우매우매우 중요한 시간이었다.

cost function에 explicit regularization을 가하는 방법을 살펴보았다.
(어제 강의에서 explicit regularization이 어떤 개념인지 설명했으므로 넘어가겠다.)

Linear regression을 예로 들어서 정규화 항을 추가하면 trainable parameters(w)가 어떻게 변화하는지 수식으로 전개하였다.

이 부분은 Ian Goodfellow의 Deep learning 책에서도 나올만큼 매우 중요한 부분이다.
보면 Identity matrix의 형태로 값을 더해주는 형태로 되어있다.
(이는 다양한 의미를 지닌다. 자세한건 deep learning 책을 참고하면 좋을 것 같다.)

그 다음으로 regularization term 값을 바꾸면서 어떠한 현상이 나타나는지 확인해 보았다.
이 부분은 쉬우므로 넘어간다. 다만 한 가지 주목할 점은 regularization term의 최적 값을 찾는 과정은 empirical하다는 것이다.
(이는 네트워크, 데이터, 학습 방식에 따라 다르므로 어쩔 수 없이 empirical하게 찾아야 한다.)

또한 gradient descent 방법으로 optimize 한다고 했을 때, overall cost function은 미분가능해야 한다.
이 말이 왜 중요하냐면 regularization term이 미분 불가능하면 정규화 항으로 사용할 수 없다는 뜻이다!!
이럴 경우에는 variational inference, MCMC sampling 등으로 approximation을 해주는 것이 일반적이다.

마지막으로 SVM의 cost function에도 정규화 항을 추가하였을 때를 보여준다.
여기서 알아야 할 것은 2가지었다.

  1. ||f||_H에서 H는 hilbert space(힐베르트 공간) 이라는 것
  2. soft margin은 이 자체로도 정규화 효과를 주고 있었다는 것

이제 얼마 안있으면 7장 bayesian network 부분인데 이 부분까지 다들 힘 냈으면 좋겠다.


진구(2018.08.28):
머신러닝 전반부가 끝났다.! 역시 매일매일의 힘은 위대하다 ㅋㅋ
그냥 설명만 해주시는거보다 저렇게 시각화해서 보여주시니 확실히 좀 더 와닿는다.
그런데 궁금한게 물론 이 예시는(sinusoid) 그저 예시일 뿐이지만 , 첫번째(0), 두번째(1), 세번째(100) 중 뭐가 좋은 걸까?
어플리케이션에 따라 다르겠다는 생각을 해본다.
민규가 말한대로 머신러닝 수식에서는 어느 하나의 파라미터도 쉽게 지나치면 안된다.
그것이 로스펑션과 로스값에 바로 영향을 주고 그것은 트레이닝을 통해 성능으로 바로 연결되기 때문이다.
상수라 할지라도 꼼꼼히 의미를 따져봐야겠다.
또한 어떤 아이디어를 넣고 싶을 때는 어떻게 저렇게 수식에 녹여 넣을지 (람다*I) 잘 고민하는게 실력이구나 하는 생각을 한다.


성빈(2018.08.28):
Regularization 적용
특정 파라미터가 지나치게 커지게 되면 캔슬되도록 r-term 추가됨
w를 찾아 optimize 하기 위해 w에 대해 편미분 함
w에 대해 식을 정리하면 closed form이 됨
->기존 LR에 비해 ㅅI 텀이 추가됨
R-term 추가시 바이어스는 조금 증가하지만 배리언스는 크게 감소
-> 전체적인 에러는 줄어들었다.
람다(ㅅ)의 값에 따라 배리언스가 달라짐
-> ㅅ 가 작으면 높은 배리언스(작은 바이어스)/ 크면 작은 베리언스(큰 바이어스)
적절한 ㅅ를 찾아야함
-> 여러번 실험을 통해서
SVM의 경우는 이미 softmargin을 감안한 순간 regularization이 적용된것이다.\


() ()
(Θ(t) Θ)
|. |
|. |
|. |
( ———^)
| |. | |. | | | |
| |. | |. | | | |
| |. | |. | | | |
| |. | |. | | | |
ㅇ. ㅇ. ㅇ ㅇ\

Clone this wiki locally