일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- GNN
- R
- 텍스트마이닝
- 불확실성
- 알고리즘
- selenium
- dropout
- 코딩테스트
- bayesian
- AI
- 논문리뷰
- pandas
- 빅데이터
- 강화학습
- 우분투
- uncertainty
- DATA
- Crawling
- 데이터분석
- pytorch
- 크롤링
- PYTHON
- 텍스트분석
- VAE
- 리눅스
- 백준
- Graph
- YarinGal
- 베이지안
- Today
- Total
끄적거림
[논문 리뷰] Dropout as a Bayesian Approximation 설명 - 4.Related Research (1): Background(MC-Integration, Dropout) 본문
[논문 리뷰] Dropout as a Bayesian Approximation 설명 - 4.Related Research (1): Background(MC-Integration, Dropout)
Signing 2021. 1. 26. 17:35[논문 리뷰] Dropout as a Bayesian Approximation 설명 - 1.Prologue
[논문 리뷰] Dropout as a Bayesian Approximation 설명 - 2.Abstract
[논문 리뷰] Dropout as a Bayesian Approximation 설명 - 3.Introduce
[논문 리뷰] Dropout as a Bayesian Approximation 설명 - 5.Methodolgy
[논문 리뷰] Dropout as a Bayesian Approximation 설명 - 6.Experiment
[논문 리뷰] Dropout as a Bayesian Approximation 설명 - 7.Conclusion
[논문 실습] Dropout as a Bayesian Approximation 실습 코드 - pytorch ver
이제 본격적으로 논문의 핵심을 이해하기 위해서 알아야할 사전 지식부터 체크하고 넘어가도록 하겠다.
논문에서 사용되는 지식과 개념들이 결코 쉬운 것들이 아니니 내가 짚는 항목들에 대해서 더 공부하고 다시 이 논문으로 돌아와도 괜찮을 거 같다.
나도 이 챕터에서 다루는 개념들을 100% 다 이해한 것이 아니니, 다소 부족하거나 잘못된 부분이 있을 수 있으니 좋은 피드백과 지적은 환영입니다. :)
Monte Carlo Integration
몬테카를로라고 하는 말은 많이 접해봤을 것이라 생각된다.
흔히 몬테카를로라고 하는 것은 여러 번의 시행을 의미한다.
위의 그림을 보면 변의 길이가 1인 정사각형이 존재하고 그 안에 있는 사분원의 넓이를 구하고 싶은 것이다.
우리는 이미 사분원에 대한 공식을 알고 있어서 손쉽게 구할 수 있지만, 얘를 들어, 복잡한 도형이라 가정했을 때는 사뭇 어려운 문제가 된다.
다시 사분원으로 돌아와서 넓이를 어떻게 구할 수 있을까?
우선, 그림처럼 많은 점을 random하게 정사각형 안에 찍어보는 것이다.
그랬을 때 사분원안에 들어오는 점의 수를 count하면 사분원의 넓이에 얼추 근사할 것이다.
이렇듯 여러번 시행하여 근사시키는 것을 몬테카를로 근사라고 한다.
이런 몬테카를로 근사를 이용하여 적분도 근사시킬 수 있다.
보통 미분은 gradient descent 같은 방법으로 많이 근사시킬 수 있다. 그러면 적분은?
가장 대표적인 방법으로는 MC Integration 방법이 있다.
위의 그림처럼 원하는 함수를 적분하기 위해서 분모와 분자에 p(x)를 곱하여 기대값으로 변환시켜서 값을 구할 수 있다.
여기서 중요한 것은 integral을 summation으로 변환했다는 점이다.
이는 수식으로 존재하는 것을 실제로 trail을 통해 적분 수식을 근사시킬 수 있음을 의미한다.
Dropout
dropout은 딥러닝을 조금이라도 공부한 사람이라면 잘 알고있는 개념일 것이다.
모든 layer의 노드들을 random하게 선택하여 overfit을 방지하는 목적으로하는 regularization 효과를 가져올 수 있다.
여기 하나의 layer를 갖는 single layer NN 모델이 있다고 가정해보자.
input layer와 output layer, 그리고 중간에 hidden layer가 있다.
각 layer 사이에는 노드들을 잇는 W1, W2가 있고 bias인 B가 있다.
이것을 수식으로 표현하면 다음과 같을 것이다.
y^hat의 경우 output을 의미하며, sigma는 activation function을 의미한다.
여기에 dropout을 적용시켜보자.
어떤 식으로 적용시킬 것이냐면, 일정 확률(p)로 0과 1을 내뱉는 분포인 베르누이(Bernoulli) 분포를 따르는 확률변수 z1, z2가 있다고 가정하고 이 확률변수들을 각 W1, W2에 곱하게되면, 우리가 알고 있는 dropout을 적용시킨 Neural Network가 된다.
dropout을 적용시킨 모델의 loss function은 위와 같다.
이 loss function을 기억하고 있으면 좋다.
뒤에 이 loss function을 시작으로 복잡한 증명이 나온다.