Soohyun’s Machine-learning

[Reinforcement Learning] preliminaries 본문

Machine Learning

[Reinforcement Learning] preliminaries

Alex_Rose 2018. 11. 4. 11:25

Prerequisites (for preliminaries ... -_-;;)

 

- Knowledge of probability 

- Linear algebra

- Calculus

- Geometry (a little bit)

 

 

 

 

Weight Decay 

 


 L : function (특정한 하나의 function을 지칭한다기보다, 각 problem에 dependent한 function 각각을 추상화해서 지칭한다고 보면 된다.)


 l_0 : function의 initial


 w : weight 


 1/2 : normalization term (뒤에 w^2가 붙어있어서 그냥 computational convenience를 위해 넣어주는 애.. 사실 없어도 무관하다)


 lambda : weight decay를 실질적으로 수행하는 constant (상수). 일반적으로 1보다 아주 조금 작은, 0.99나 0.98이며 iteration이 계속될수록 0.95, 0.94.. 숫자가 줄어들게 설계한다. 


 sigma_i : i에 대해 전체 summation 수행. 즉, 바로 뒤에 붙은 (w_i)^2 전체를 summation 한다는 뜻이다. 


 w_i : 각 iteration별로 들어가는 개별 weight에 대한 notaition

 

 

위의 수식에서 우측에 partial derivative (편미분)을 취하면.. 

 











 : 비례한다는 뜻 


우측 수식 앞에 전부 - (마이너스)가 붙는 이유는 weight decay 자체가 gradient descent를 위한 값을 더 작게 update를 해주는 역할을 하기 때문이다. gradient update는 기존 gradient (기울기)의 반대 방향으로 이루어져야 하므로 -를 붙여서 반대로 가도록 해준다.


 비례한다는 뜻의 저 기호가 일반적으로 update를 해준다(?)로 주로 쓰이는 것 같다. (this just my assumption)

 



 전개 과정 설명


1) 가장 위의 수식을 볼때 읭?해지는 부분이 앞은 w (전체 w)이고, 뒤는 w_i (개별 w)인 건데.. 




 사실 차근차근 보면 이건 (w_i)^2 의 전체 i에 대한 summation이다. 이를 정리해보면...






 이렇게 된다.







2) 그래서




 이렇게 된다. 


 양쪽을 w로 통일 시켜준 다음, 이 수식을 w_i로 편미분을 해보면








 이 공식이 나온다. 




3) 이건 gradient update를 위한 공식이므로, 반대 방향으로 만들어주기 위해 앞에 - (마이너스)를 붙여서.. 










 짜쟌 @_@ 이 공식이 나오게 된다.


 

 

 

 

 

 

Batch Normalization

 

일반적으로 배치놈- 배치 정규화. 또는 그냥 그대로 읽어서 배치 노말라이제이션이라고 한다. batch라는 건 전체 dataset에서 한 iteration 별로 들어가는 data 양을 말하는데, 각 묶음별로 bias (편향)된 부분이 있을 수 있으므로 이 normalization (정규화) 부분을 통해서 각 batch별 차이를 줄여준다. 

 

 

step 1.  해당 batch 전체의 mean값을 구한다. (statistics에서 이야기하는 그 mean값 맞다)

 

step 2. 각 batch값 (x_i)에 step 1에서 구한 mean값을 뺀 다음 square를 하고, summation해서 전체 variance를 구한다. (그냥 variance 구하는 방법 그대로다)

 

step 3. 위의 step 2에서 구한 variance를 denominator (분모)로, 각 batch 값(x_i)에 전체 mean값을 뺀 결과를 numerator (분자)로 해서 normalize를 한다. 

          (이때 variance가 0일 수 있으므로, 매우 작은 값인 epsilon을 denominator에 더해주는 과정이 수반된다. 분모가 0이면 아예 계산이 안되므로)

 

step 4. result = gamma * (result of Step 3) + beta

 

         위의 step 3에서 구한 값을 더 키울지 (gamma),  변화 (beta = y-intercept )를 줄지 등등을 결정해서 result를 도출한다. 일반적으로 y-intercept (y 절편)는 0.0으로 initialize해서 준다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Machine Learning' 카테고리의 다른 글

레노버 초반 세팅  (0) 2022.10.31
Kaggle preprocessing & feature engineering process flow  (0) 2019.04.08
Linear regression  (0) 2018.04.17
Tensor manipulation  (0) 2017.10.08
텐서플로 공부  (0) 2017.10.08
Comments