- Chanwoo Park
AI가 내린 결정, 얼마나 믿을 수 있을까
AI는 많은 분야에서 전통적인 알고리즘 보다 월등한 성능을 보여주고 있습니다. 성능이 더 좋아졌다면 바로 현실에 도입할 수 있을까요? 그 판단은 AI를 적용하려는 분야에 따라 달라질 것 같습니다. 스마트폰 음성 인식이나, 넷플릭스 영화 추천 등에서는 기존 95% 정확도가 97%로 올라갔다면 사용하지 않을 이유가 없을 것 입니다. 하지만 의료 영상 분석, 자율 주행, 자산 투자 등 위험에 민감한 분야에서는 알고리즘을 선택하는데 정확도가 최우선 기준이 아닐 수도 있습니다. 딥러닝 모델이 보통 생각하는대로 “Black box”기 때문에 이런 예측을 왜 했는지, 그 예측을 얼마나 신뢰할 수 있는지가 명확하지 않다면 산업 현장에서는 AI 도입에 적극적이지 않을 수 있습니다. 그래서 최근에는 XAI(Explainable AI), Trustworthy AI 등의 중요성이 더욱 부각되고 있습니다. 또한 ML 모델의 예측 결과를 내놓았을 때 그 결과를 사람이 어느 정도 신뢰할 수 있는지 정량화 해서 보여주는 Uncertainty estimation이 중요한 연구 분야로 자리 잡고 있습니다. 이번 포스팅에서는 AI에서 Uncertainty estimation이 왜 중요하며 어떤 알고리즘을 사용해 볼 수 있는지 간단히 살펴보도록 하겠습니다.

그림 1에서 파란색 실선이 우리가 학습하고자 하는 Ground Truth 함수이고, 이 때 학습을 위해 주어진 데이터는 검은색 점이라고 가정하겠습니다. 양 끝은 데이터가 충분히 있지만 가운데 영역(-1< X < 4)에는 학습 데이터가 충분하지 않은 것을 확인할 수 있습니다. 주어진 데이터로 학습된 ML 모델은 데이터가 충분한 양 끝 영역에서는 예측의 신뢰성이 높을 것이고 가운데 영역은 데이터를 한 포인트 밖에 관측하지 못했기 때문에 예측의 신뢰성이 낮을 것으로 쉽게 예상할 수 있습니다. 그렇다면 이러한 예측의 Uncertainty를 사람이 보고 해석할 수 있도록 어떻게 정량화하여 표현할 수 있을까요?
Bayesian Neural Network
먼저 전통적인 ML 모델에 대해 갖고 있던 고정관념을 잠깐 깨보겠습니다. 데이터가 주어졌을 때 학습이 완료된 ML 모델의 weight가 하나의 고정된 값(fixed value)이 아니라 확률분포(probability distribution)로 존재한다는 것 입니다. 데이터가 주어졌을 때 그 데이터를 표현할 수 있는 weight의 조합은 하나가 아니라 여러 combination이 가능하다고 생각하면 당연히 정답 weight가 하나의 값이 아닌 어떤 분포로 존재한다고 가정할 수 있을 것입니다. 이 확률분포를 posterior, p(w|D)라고 부르며, 아래 식과 같이 weight에 대한 prior와 주어진 데이터에 대한 likelihood를 이용해 구할 수 있습니다.

이 때 새로운 input x*에 대한 예측 y*는 다음과 같이 Probable한 모든 weight에 대한 적분으로 표현할 수 있습니다. 이러한 형태의 신경망을 BNN(Bayesian Neural Network)라고 부릅니다.


Weight가 하나의 값이 아니라 확률분포로 표현 된다니 약간 추상적이죠? 어렵게 생각하실 것 없이 학습된weight가 각각 Gaussian 분포를 따르고 우리는 학습을 통해 weight 값 자체를 업데이트 하는 것이 아닌 Gaussian 분포의 (mean, variance)를 업데이트 한다면 간단하게 BNN을 학습할 수 있습니다. 하나의 모델에 weight가 100개가 있다면 기존 전통적인 방식은 학습이 끝나고 100개의 fixed value가 남겠지만, Gaussian 분포를 사용하는 BNN의 경우 각각의 weight에 해당하는 100개의 Gaussian 분포가 남게 됩니다.
더 간단한 예시로 학습에 많이 사용하고 계시는 Dropout을 생각해보겠습니다. Dropout은 학습할 때 랜덤하게 노드를 끊었다가 연결했다를 반복할 뿐인데 이것도 확률분포라고 해석할 수 있을까요? 네 그것도 여러분들이 잘 알고 계시는 정해진 확률, p에 따라 0 아니면 1의 값을 갖는 베르누이(Bernoulli) 분포로 볼 수 있습니다. 이제 간단하게 Inference 할 때 Dropout을 적용하기만 하면 여러분은 베르누이 분포를 이용한 BNN을 완성할 수 있는 것 입니다. 이처럼 weight의 복잡한 posterior 분포를 우리가 다루기 쉬운 간단한 가우시안, 베르누이 분포로 근사하여 Bayesian inference를 하는 방법을 특별히 Variational Inference라고 합니다. Variational Inference는 앞선 예시와 같이 쉽고 간단히 사용할 수 있지만 KL divergence의 특성, mean-field approximation 사용 등으로 실제 Uncertainty를 과소평가 될 수 있다는 단점이 있습니다. 이에 bias가 없이 더 정확한 posterior 분포 추정을 위해 MCMC(Markov chain Monte Carlo)를 활용할 수 있지만 Deep learning에 바로 적용하기에는 scalability 이슈가 해결되어야 하기 때문에 이를 위한 연구도 지속되고 있습니다[4]. 이제 간단한 예시를 보고 마무리 하도록 하겠습니다. 처음에 보여드렸던 함수를 MC Dropout [3]을 이용해 Uncertainty estimation을 해보도록 하겠습니다.

예상한대로 가운데 데이터가 없는 부분에서 모델의 예측(빨간 실선)과 실제 값(파란 실선)이 차이가 많이 발생하는 것을 볼 수 있습니다. 하지만 다행히도 예측 값이 많이 어긋나는 부분에서 Uncertainty가 잘 표현되었기 때문에 사용자가 이를 종합적으로 참고하여 의사 결정을 내릴 수 있을 것 입니다. 알세미 AI팀도 반도체 모델링 분야에서 모델의 정확도 향상 뿐만 아니라 예측에 대한 Uncertainty를 표현하는 등 사용자가 더 신뢰할 수 있는 AI 기술을 개발하기 위해 연구를 지속하고 있습니다.
[Reference]
Weight Uncertainty in Neural Networks (C. Blundell et al., ICML 2015)
Dropout as a Bayesian Approximation (Y. Gal and Z. Ghahramani, ICML 2016)
Cyclical Stochastic Gradient MCMC for Bayesian Deep Learning (R. Zhang et al., ICLR 2020)