오늘은 요즘 공부하고 있는 불확실성에 대한 개념에 대해 정리할 겸 글을 써보려고 한다.
Uncertainty
모델이 학습한 데이터를 기반으로 새로운 데이터에 대한 예측을 수행할 때, 모델은 종종 다양한 요소에 의해 예측의 불확실성을 갖게 되는데, 이러한 불확실성은 모델이 얼마나 확신할 수 있는지, 어떤 범위 내에서 예측이 정확한지 등을 나타낸다.
기계 학습에서 불확실성은 크게 두가지로 나뉜다.
Epistemic Uncertainty
Epistemic Uncertainty , 이는 모델 자체의 불확실성을 나타낸다. 즉, 모델이 데이터에 대해 얼마나 정확하게 학습되었는지에 대한 불확실성이다. 모델이 훈련 데이터에 제한된 양의 정보만을 가지고 있거나 데이터의 다양성을 충분히 포착하지 못한 경우에 발생할 수 있고, 이러한 불확실성은 더 많은 다양한 훈련 데이터를 사용하거나 모델의 구조와 파라미터를 조정하여 감소시킬 수 있다.
Aleatoric Uncertainty
Aleatoric Uncertainty, 이는 데이터 자체의 불확실성을 나타낸다. 데이터에 내재된 노이즈, 측정 오차, 환경적 변동 등으로 인해 발생하는 불확실성이다. 따라서 이러한 불확실성은 모델 자체의 개선으로 해결하기 어렵다.
이미지 출처: Kendall, A., & Gal, Y.. (2017). What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision? https://arxiv.org/abs/1703.04977
boundary (경계) 근처이거나 카메라로부터 거리가 멀면, aleatoric uncertainty가 증가하는 것을 볼 수 있음. Epistemic 불확실성은 수집된 데이터를 생성한 모델에 대한 무지함을 나타냄. 세 번째 행은 epistemic 불확실성이 높은 것을 보아, 모델이 보행로를 segment 하지 못하는 것을 볼 수 있음. 하지만 Aleatoric 불확실성을 보고는 모델의 실패를 직접적으로 연관시킬 수 없다. 데이터 자체의 불확실성만 나타내기 때문!
그렇다면 베이지안 뉴럴 네트워크(Bayesian Neural Networks)에 불확실성은 어떻게 사용되는 것일까? 먼저 베이지안 뉴럴 네트워크가 무엇인지 알아보자.
Bayesian Neural Networks
: Each parameter is characterized as a distribution. Final predictions have a variance estimation
베이지안 뉴럴 네트워크는 뉴럴 네트워크의 확률적인 특성을 활용하여 불확실성을 추정하는 방법 중 하나로, 일반적인 뉴럴 네트워크는 고정된 가중치 값을 가지고 있지만, 베이지안 뉴럴 네트워크는 가중치의 불확실성을 확률적으로 모델링한다. 즉, 베이지안 뉴럴 네트워크에서는 가중치 값 자체를 직접적으로 업데이트하지 않고, 가우시안 분포의 평균과 분산을 업데이트함.
이미지 출처 https://towardsdatascience.com/why-you-should-use-bayesian-neural-network-aaf76732c150
사실 아래에서 내가 예로 가져온 Monte Carlo Dropout은 엄격히 보면 확률 분포를 모델링하는 전통적인 베이지안 뉴럴 네트워크와는 차이가 있지만, 계산상의 간편함과 효과성 때문에 베이지안 뉴럴 네트워크의 대안으로 널리 사용되고 있다. 나도..
Monte Carlo Dropout
MC dropout은 베이지안 뉴럴 네트워크의 일종으로, 드롭아웃(dropout)을 통해 뉴럴 네트워크의 가중치를 샘플링하는 방식이다. 학습 단계에서는 드롭아웃을 적용하여 가중치를 무작위로 선택하고, 이를 통해 여러 번 예측을 수행한다. 이렇게 생성된 예측 결과들을 평균내면 최종 예측을 얻을 수 있고, 이를 통해 불확실성을 추정할 수 있다.
이미지 출처 https://docs.aws.amazon.com/prescriptive-guidance/latest/ml-quantifying-uncertainty/mc-dropout.html
배움을 기록하기 위한 공간입니다.
수정이 필요한 내용이나 공유하고 싶은 것이 있다면 언제든 댓글로 남겨주시면 환영입니다 :D
'배움 기록 > Deep Learning' 카테고리의 다른 글
[Segmentation, MONAI] CUDA out of memory 와의 전쟁 -2. Crop 을 통해 이미지 크기 줄이 (0) | 2023.07.07 |
---|---|
[Segmentation, MONAI] CUDA out of memory 와의 전쟁 -1. Spacingd를 통한 해상도 조정 (0) | 2023.07.07 |
[sklearn] 데이터 정규화 하는법 (feat. ChatGPT 를 처음 사용하다...) (0) | 2023.03.30 |
[PyTorch, MONAI] UNETR 모델 생성 및 Forward (0) | 2023.01.12 |
[MONAI, PyTorch] MONAI를 이용해 데이터 전처리 하기 (2) | 2023.01.12 |