일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CommunicateWiththeWorld
- 영어로전세계와소통하기
- #Ringle
- 둔촌역장어
- 링글
- 장어랑고기같이
- #nlp
- #영어공부
- 화상영어
- #체험수업
- 뉴노멀챌린지
- 영어회화
- 링글리뷰
- 링글경험담
- Ringle
- 스몰토크
- #링글후기
- 오피스밋업
- 링글커리어
- #영어발음교정
- 영어공부법
- 소통챌린지
- 강동구장어맛집
- #직장인영어
- 영어시험
- 영어공부
- #링글
- 성내동장어
- 총각네장어
- 해외취업컨퍼런스
- Today
- Total
Soohyun’s Machine-learning
[Reinforcement Learning] preliminaries 본문
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 |