일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PYTHON
- DATA
- 논문리뷰
- 텍스트마이닝
- GNN
- YarinGal
- pytorch
- dropout
- AI
- Graph
- uncertainty
- Crawling
- 텍스트분석
- 크롤링
- 코딩테스트
- 백준
- 파이썬
- 알고리즘
- 우분투
- selenium
- 강화학습
- VAE
- pandas
- 리눅스
- 빅데이터
- bayesian
- 데이터분석
- R
- 불확실성
- 베이지안
- Today
- Total
끄적거림
Entropy as Uncertainty Measure 본문
https://towardsdatascience.com/is-variance-really-a-measure-of-uncertainty-6ec6da21bb03
https://towardsdatascience.com/entropy-is-a-measure-of-uncertainty-e2c000301c2c
BNN을 다루면서 그동안 uncertainty에 대해 많이 공부하였는데, 우연히 위 두 링크의 글을 읽고 uncertainty에 대해 생각을 해 볼 수 있는 기회가 생겼었다.
현재 가장 많이 쓰이고, 퀄리티가 좋은(?) uncertainty는 주로 MC-dropout을 이용하여 발생하는 output들의 variance를 주된 measure로써 사용하고 있었다.
통계학적으로 variance에 대해 생각해보면, 일단은 한글로 "분산"이다.
분산은 각 data point들이 sample 평균으로부터 얼만큼 퍼저있는지에 대한 정보이다.
data point들이 sample에서 떨어진 정도를 차이로 구하고, 이를 제곱하여 평균 낸 것이 분산의 정의이다.
여기서 생각해볼만한 것은 이 분산은 결국 어떤 정보량의 평균인 것이다.
한 발짝 더 나아가서 평균의 의미는 모든 data들을 더한 후, 그 data의 갯수로 나눈 통계량이다.
하지만 우리가 알고 있듯이 평균도 종류가 있다.
- 산술평균
- 기하평균
- 조화평균
평균의 종류를 보아하니 평균의 핵심 idea를 알 수 있다.
모든 data point들을 동등한 확률값으로 곱한 것이다.
엄밀히 평균을 정의하면, 각 data의 값 * 각 data가 발생할 확률의 합으로 볼 수 있다.
이제 다시 분산으로 돌아와보자.
분산은 결국 data point들이 평균으로부터 떨어진 정도를 제곱하여 단순 평균낸 통계량이다.
이는 모든 data point들이 평균으로부터 떨어진 정도를 모두 동일한 확률로 곱했다는 의미이고, 바꿔말하면 동일한 weight들로 곱해주었다는 말이고, 우리는 이 분산을 uncertainty의 한 지표로써 사용해왔다.
위 두 링크는 이에 대해 반문을 하고 있다.
일반적으로 categorical data는 variance를 구할 수 없으므로, entropy를 사용한다.
가장 대표적으로 tree model들이 있다.
random forest나 XGboost와 같은 Tree 모델은 data point들을 여러 기준으로 나누고 이 때의 entropy를 구하는 방식으로 구성되어 있다.
하지만 그럼에도 semantic segmentation를 비롯한 여러 Task에서 variance를 사용할 수 있는 이유는 결국에 softmax등과 같은 확률값으로 output을 내기 때문이다.
이처럼 uncertainty의 measure를 달리 생각해보는 것도 좋은 공부법이라고 생각한다.