- 2019년 2월 15일 오후 3:39
- 조회수: 8135
INFORMATION
- 2019년 2월 28일
- 오후 1시 30분 ~
- 고려대학교 신공학관 218호
TOPIC
OVERVIEW
발표자 후기
오늘 세미나는 Bayesian Convolutional Neural Networks와 Uncertainty에 대해서 다루었다. 최근 몇 년 딥러닝의 발전으로 Computer Vision 쪽 많은 application의 발전이 이뤄졌다. 하지만 2016년 5월 테슬라 자동차의 사고나 구글포토에서 흑인을 고릴라로 분류하는 사건들은 Frequentist 관점의 딥러닝 모델의 한계를 보여준다. 우리의 학습데이터는 전체 population에 대해서 대표성을 지녀야하지만 앞의 사례와 같이 그렇지 못한 경우가 현실문제에서는 비일비재하다. 따라서 딥러닝 모델은 학습데이터에 오버피팅 될 수 있다. 또한 딥러닝의 또 다른 큰 단점은 모른다고 대답하지 못한다는 것 (=Uncertainty를 측정할 수 다는 것)이다. 앞의 두 사례에서도 어떤 부분을 얼만큼 모른다고 모델이 대답할 수 있었다면 재앙을 막을 수 있었을 것이다.
Bayesian 방식으로 딥러닝 모델을 학습하게 되면 자연스럽게 Uncertainty를 측정할 수 있게 되고 학습데이터에 오버피팅되는 문제도 해결할 수 있다. Bayesian Neural Networks는 모델의 파라미터에 분포를 가정한다. Prior분포와 likelihood를 가정하여 Bayes rule을 사용하여 파라미터의 Posterior분포를 구하는 과정에 대한 이해를 돕기 위해 나는 동전던지기 사례를 통해 이를 설명하였다. 또한 Bayesian Neural Networks는 모델의 파라미터에 분포를 가정하면 Uncertainty를 어떻게 측정할 수 있다는 것인지 예를 들어 설명했다.
Bayesian approach로 딥러닝 모델의 파라미터의 분포를 inference하기 위해 필연적으로 필요한 내용이 Variational Inference이다. 딥러닝 모델은 굉장히 고차원의 파라미터를 가지고 있기 때문에 Posterior 분포를 구하는 것이 동전던지기 사례와 같이 쉽지않고 intractable하다. 따라서 이를 근사하는 방식을 사용해야하며 주로 사용되는 방법이 Variational inference이다. Posterior 분포를 근사하기 위해 variational 분포를 가정하고 이 두 사이의 거리(KL diverge)를 좁히는 것이 ELBO를 maximize하는 variational 분포의 파라미터를 찾는 최적화 문제로 바뀌어서 Stochastic Gradient Descent/Ascent 방식으로 구할 수 있게 된다. 하지만 최근 연구들에서 이 방식이 CNN에 MC Dropout을 사용하는 것과 근사한다는 것이 증명되었고 기존에 딥러닝 tool을 사용하여 쉽게 구현가능하다는 점을 설명하고 이에 대해 Computer Vision쪽에 응용한 논문을 소개했다. Computer Vision 모델(Semantic segmentation, Depth regression)에서 데이터 내의 noise로 인해 발생하는 Aleatoric Uncertainty와 모델로부터 발생하는 Epistemic Uncertainty가 모델링이 어떻게 이루어지고 어떻게 해석되는지 설명하며 세미나를 마무리했다. 방학동안 공부했던 내용을 세미나를 통해 정리할 수 있는 기회를 갖게 되어 영광이었고 추후 이를 활용한 연구를 성공적으로 수행해내고 싶다.
청취자 후기
Uncertainty에 대해 정의할 수 있다는 것은 모델링 관점에서 여러모로 장점이 있다. 기존의 기계학습 모델은 훈련데이터 셋에 없는 범주가 구축된 모델에 들어온다고 하더라도 훈련데이터 상의 범주 중 하나로 분류를 한다. 즉 분류는 수행이 되겠지만 Uncertainty의 값은 상당히 높을 것이라는 것을 알 수 있다. 오늘 세미나에서 다룬 Bayesian convolutional neural network는 분류 뿐만 아니라 각 분류된 범주에 대해 Uncertainty를 수치화 하여 정의할 수 있다는 장점이 있다. 이러한 불확실성을 수치화 함으로써 출력된 출력값(또는 예측값)에 대해 얼마큼 신뢰성이 있는지를 파악할 수 있다. 이러한 특징은 비단 이미지 뿐만 아니라 시퀀스 및 일반 다변량 데이터등에서도 쓰일 수 있는 중요한 개념이라 생각한다.
금일 세미나는 Understanding uncertainty and Bayesian Convolutional Neural Networks 를 주제로 진행되었다. CNN 과 같은 deep learning model 를 구성할 때 가장 문제가 되는 부분은 model 이 쉽게 overfitting 에 빠진다는 것이다. 결과로 제시된 값이 정상적으로 예측된 값인지 overfitting 되어 왜곡되어 예측된 값인지 구분할 수 있는 방법은 없다고 한다. 이 세미나에서는 이를 uncertainty 로 표현하였으며, 이를 극복하기 위한 방법으로 Bayesian Neural Networks 를 소개하였다. Bayesian NNs 는 model 의 weights 를 확정적인 숫자로 구하는 것이 아니라, 확률 분포로 학습하게 된다(p(w|data). 이러한 개념을 적용하여 objective function 을 구성하여 사용할 수 있지만 더 쉬운 방법으로 dropout 을 사용하는 것만으로도 이 효과를 얻을 수 있다고 한다. Dropout 이 확률적으로 weight 를 사용하여 test 때마다 다른 결과를 얻을 수 있기 때문이다. Model 의 Uncertainty 는 data 의 noise 로부터 발생되는 Aleatoric uncertainty 와 training data 에 없어서 생기는 epistemic uncertainty 로 구분할 수 있다. 실제로 이를 계산할 수 있는 NNs 을 통하여 segmentation model 이 정확히 구분하지 못한 부분에서 uncertainty 의 값이 크게 나타났으며, 어떤 요소의 uncertainty 로 인하여 구분을 잘 못하였는지도 확인할 수 있었다. Uncertainty 에 대한 개념을 model 의 신뢰도로 판단할 수 있으며 단순히 예측만 하는 모델이 아닌 어느정도의 신뢰도를 가지는지 같이 제시할 수 있다. 오늘 세미나를 통하여 NNs 모델이 가지는 고질적인 문제에 대해 한번더 생각해 볼 수 있었고 NNs 모델을 좀 더 이해할 수 있었다.
금일 세미나는 Understanding Uncertainty and Bayesian Convolutional Neural Networks를 주제로 민정이가 발표하였다. 기존의 CNN은 대용량의 데이터를 다루는데 성능이 좋지만 작은 크기의 데이터나 Uncertainty를 측정하는데 효과적이지 못하다. Bayesian Neural Networks는 CNN과 달리 weight를 확률분포로서 나타내며 uncertainty를 측정하는데 탁월하다. Bayesian model에서 Uncertainty는 크게 Aleatoric Uncertainty, Epistemic Uncertainty가 있다. Epistemic Uncertainty는 모델 가중치에 대한 사전 분포를 배치하고 일부 데이터에서 이러한 가중치가 얼마나 달라지는지를 모델링하는 것이다. Aleatoric Uncertainty내에 Heteroscedastic Uncertainty는 관측 공간의 일부가 다른 관측 공간보다 noise level이 높은 경우에 유용하다. Bayesian Neural Network에서 Uncertainty는 예측값과 Uncertainty에 대한 예측값을 output으로 내보낸다. 예측된 Uncertainty는 네트워크가 잘못된 label의 영향을 약화시켜 강력한 회귀 함수로 작용한다. 이렇게 Aleatoric Uncertainty와 Epistemic Uncertainty을 모두 모델링하는 것은 정확도를 향상시키고, Epistemic Uncertainty는 test data가 training 분포에 가까울수록 감소하며, 충분한 training data로 설명될 수 있다. 결론적으로 Uncertainty를 측정하는 것은 의사결정을 하는데 도움을 준다. 이번 세미나를 통해 Uncertainty에 대한 개념을 처음 접하게 되었다. 이러한 Uncertainty를 측정하면 실제 문제에서도 해석의 가능성 및 정확한 의사결정에 많은 도움을 줄 수 있을 것이라 생각한다. 자세한 설명을 통해 재미있게 들을 수 있었고 기회가 된다면 깊이 있게 공부해보고 싶었던 주제였다. 오늘 알찬 세미나를 준비해준 민정이에게 고마움을 전한다.
금일 세미나는 Understanding Uncertainty and Baysian Convolutional Neural Networks를 주제로 진행되었다. CNN 모델은 레이블링된 고차원 데이터의 분류나 예측 문제에서 좋은 성능을 보이는 모델이다. 하지만 overfitting 문제와 uncertainty를 측정할 수 없다는 문제가 있다. 이러한 단점을 해결할 수 있는 모델으로 Bayesian CNN model이 있다. Bayesian CNN 모델은 Weight를 업데이트 하는 과정에서 각 pixel의 분포를 활용한다는 점이 기존의 CNN과의 차이점이다. 파라미터를 학습하는 과정에서 pixel마다 분포도 다를 것이고 exponential family처럼 conjugate prior distribution이 알려져있지도 않기 때문에 posterior distribution을 추정이 필요하다. 이를 objective function에 L2 regularization과 MC dropout을 더한 optimization problem을 푸는 최적화 문제로 변환하여 추정할 수 있다는 것이 신기했다. 그리고 Bayesian CNN이 어떻게 Uncertainty를 측정하는지에 대하여 설명을 들었다. Baysian CNN modeling에서는 uncertainty를 관측치 자체의 noise인 Aleatoric과 modeling 과정에서 발생하는 Epistemic으로 나눠 측정할 수 있다. 측정된 Uncertainty는 image classification / regression 문제에서 모델의 성능에 대한 지표로서 활용될 수 있다. Uncertainty가 높다면(Epistemic) 어떠한 이미지를 한 클래스로 분류한 것이 타당하지 않을 수 있다는 가능성이 높음을 나타낸다.
학부에서 통계학을 전공할 때 Bayesian쪽을 공부해본적도 없고 통계학에서도 주류 분야가 아니였기 때문에 나에게는 Bayesian 개념을 CNN의 모델을 학습과정에서 적용한다는 아이디어가 참 신기했다. 세계에 많은 연구자들이 다방면으로 딥러닝을 연구하고 있고 나도 연구를 본격적으로 시작하게 되면 다양한 시도를 해봐야겠다는 생각을 했다. 복잡한 수식과 어려운 내용을 하나하나 자세하게 정리해서 세미나를 진행해준 민정이에게 고맙다는 말을 전한다. 그리고 민정이의 발표도 좋았지만 세미나 도중에 나온 토의에서도 많은 생각을 해볼 수 있었는데, 논문의 저자가 말한 것과 달리 괄목할만한 성능 향상이 이루어지지는 않은 것처럼 보인다는 의견이 나왔었는데, 만약 pixel 값의 분포가 지수족처럼 잘 알려져 있는 분포를 갖는 데이터라고 한다면(MNIST data가 그럴 수 있을 것 같다) Bayesian CNN이 좋은 성능을 보일 수 있을 것 같다는 생각을 했다. 그리고 Uncertainty를 시계열 모형에서 예측치의 신뢰구간과 유사하게 예측 타당성을 평가할 수 있도록 연구해보자는 의견도 나왔는데 이런 의견을 바로바로 개진하는 연구실 구성원들을 본받아 나도 빨리 지적 수준을 많이 높여서? 적극적으로 좋은 의견을 내고 싶다.
금일 세미나는 Uncertainty가 무엇인지에 관한 내용과 Bayesian Convolutional NN에 관한 내용으로 민정이가 발표해주었다. 우선 Uncertainty(불확실성) 이라는 개념에 대해 설명해주었다. 예를 들어 해당 단어에 대해 정리해보면 다음과 같다. Computer Vision분야에서 모델이 어떠한 사진을 보았다고 하자. Frequentist들이 만든 모델이 사진을 보았다면, 이 사진은 A라고 하나의 클래스의 이름을 이야기 할 것이다. 하지만 Bayesian들이 만든 모델은 이 사진은 A라는 클래스라고 판단하는데, 믿음의 정도가 약 X% 라고 생각한다고 이야기 할 것이다. 불확실성이라는 것은 Computer Vision문제의 상황에서는 각 클래스 별 믿음의 정도를 나타내어 주는 것으로 이해할 수 있을 것이다. 또한 Frequentist와 Bayesian의 파라미터 학습 방식에 대한 차이도 여기서 나온다. Frequentist들은 존재하는 숫자 자체를 가지고 학습을 하지만, Bayesian들은 값을 보고 해당 값에 대한 분포를 학습한다. 즉, 사건에 대한 확률을 가지고 모델링을 진행한다고 할 수 있다. 다음의 내용은 Posterior Distribution을 어떻게 학습 할 것인지에 관한 내용이었다. 통계학자들은 Prior와 Likelihood의 곱이 Posterior Distribution과 비례한다는 것을 기본으로 사후 분포를 추론한다. 하지만 현재 기계학습 모델링을 Bayesian의 관점에서 진행하는 사람들은 Posterior의 추정을 KL-Divergence를 최소화하는 최적화 문제로 바꾸면서, 쉽게 풀 수 있는 형태로 변환하여 문제를 해결한다. 하지만 해당 최적화 문제 역시, 쉽게 해결 할 수 있는 방법이 있었다. 바로 L2 Norm과 MC Dropout을 동시에 CNN에 적용하는 것이다. 해당 방법론과 관련하여, Semantic Segmentation과 Depth Regression에 관해 성능을 증명한 논문의 실험결과를 보았을 때, 약간의 성능 향상이 있었지만 놀랄 정도라고 말하기는 어려웠다. 모델이 Uncertainty와 결과를 도출하는 것을 동시에 하는 것에 의의를 둔다고 생각한다.
비슷한 내용으로 들었던 작년의 세미나와 달리, 이번에는 Uncertainty에 관한 내용과 이들이 어떻게 Computer Vision에서 나타나는지에 관해 매우 쉽게 이해할 수 있었다. 준비를 많이 한 느낌을 많이 받았다. 또한 제조업 데이터를 Bayesian의 관점으로 해결하고자 하는 나에게 기본적인 개념과 문제를 보는 방식을 알게 해준 세미나였다. 세미나를 듣고 나서 생긴 한 가지 의문이 생겼다. Bayesian NN과 Bayesian CNN은 분명히 다를 것이다. ‘Bayesian NN에서는 많은 연산 때문에, 10만건 이상의 데이터에 추천하지 않는다.’고 알고 있다. 발표자가 소개해준 논문 전체를 읽어보지 못해, Bayesian CNN 역시 같은 문제를 포함하는지 궁금하다. 동기로서 좋은 친구이고, 선배로서 멋진 모습을 보여주는 민정이에게 항상 고맙다는 말을 전하고 싶다.
이번주 세미나는 Understanding Uncertainty and Bayesian Convolutional Neural Networks라는 주제를 가지고 진행되었다. Convolutional Neural Networks(CNNs)는 큰 datasets에 좋지만 labelling되어있는 데이터를 구하기도 어렵고 작은 데이터에도 overfitting을 한다. 그리고 uncertainty를 측정하지 못한다. 자신이 알지 못한다는 것에 대해서 모른다는 것이다. 하지만 Uncertainty in Bayesian NNs에서는 output에 관하여 얼마만큼 신뢰성이 있는지를 보여준다. 즉 output에 있어서 자신이 얼마만큼의 정확도를 가지고 있는 결과를 도출해냈는지를 말하는 것이다. 이것이 내가 생각한 Bayesian NNs에서의 Uncertainty이다. 이번 세미나 주제는 나에게 있어서는 쉽지 않았는데 세미나에서 쉽게 이해할 수 있도록 설명해준 민정이에게 감사하다는 말을 전하고 싶다.
금번 세미나는 “Understanding Uncertainty and Bayesian Convolutional Neural Networks”라는 주제로 이민정님께서 진행 해주셨다. 도입부에 실제 발생하였던 Tesla자동차의 자율주행 사고와 흑인을 고릴라로 인식하였던 구글의 실제 사례를 활용하여 세미나의 주제 및 연구 방향성을 잘 전달해 몰입을 잘 할 수 있었던 세미나였다. 세미나의 내용은 AI의 구동을 위해 Convolutional Neural Networks를 활용하고 있으나, 이는 발생할 수 있는 모든 DATA를 가지고 있지 못하는 이상 불확실성을 측정할 수 없어 이를 해결하기 위해 Bayesian 접근법을 활용한다는 내용으로 자율주행차 산업 등 Image를 기반으로 하는 AI 분야를 선도하기 위해 반드시 연구 해야할 분야라고 느꼈다. 식견이 좁아 모든 내용을 이해할 수는 없었지만, 지금껏 Frequent 접근법으로만 공부해왔던 나에게 DMQA에서 배워야할 학문 및 그 무궁무진한 활용 분야에 대한 지적호기심을 발동시켜 준 임팩트 있던 세미나를 해준 이민정님께 감사 인사를 전하고 싶다
오늘 "understanding Uncertainty and Bayesian Convolutional Neural Networks" 라는 내용의 세미나를 듣게 되었다. 너무 생소한 내용들이 많아서 전체적으로 이해를 잘 하지는 못했지만 짧게나마 이해한 내용으로는 현재 CNN(Convolutional Neural Networks) 은 large datasets 에서 즉 많은 데이터가 확보된 상태 와 labelled data 에서는 매우 좋은 방법이지만, 실제로 data 를 label 화 하기 어렵고, 적은 data 또는 불확실성에 대한 측정에 취약한 약점이 존재 하게 된다. 이를 해결할 수 있는 방안으로 Bayesian Neural Networks를 사용할 수 있다. Bayesian 은 분포 즉"probability distribution" 으로 학습을 시키는데 이를 예시로 설명해준 방법이 "동전 던지기" 였다. Bayesian 방법을 쓰려면 복잡한 방법을 이용해서 수행해야 하는 까다로움이 있었는데 다행히도 기존에 있던 "L2 norm + MC Dropput" 방식을 이용해서 유사한 분포를 획득 할 수 있다. 이 방식으로 인하여 Standard dropout err 확률기준으로 약 20회 이상 진행 시 err 율이 감소하는것을 확인 하였다.
불확실성에는 "Aleatoric" 과 "Epistemic" 이 있는데 이 부분에 대한 내용은 아직은 봐도 잘 이해가 되지 않았다. 단지 실험결과로 볼때 해당 방법들을 이용했을 경우 좀더 정확한 결과를 예측하는데 도움을 준다는 것을 알았다.
금일 세미나에서 Bayesian parameter 를 이용하면 기존과는 다르게 적은 data 를 사용하여도 overfit을 막을 수 있고 기존에 있는 방법을 이용하여 Bayesian과 비슷한 분포를 만들어 낼 수 있으며 해당 방식을 이용하여 미리 uncertainty 에 대해 측정을 할 수 있고 이를 이용하여 uncertainty 에 대해 결정 하는것에 도움을 준다는 것을 알 수 있었다.
아직 부족한 지식으로 세미나를 들어 많이 어려웠지만 또 많이 신기한 내용이었다. 해당 방법들에 대해 공부를 해봐야겠다는 생각이 들었다.
금일은 Uncertainty and Bayesian Convolutional Neural Networks을 주제로 한 세미나를 들었다. 세미나는 CNN에 대한 기본적인 설명을 시작으로 빈도주의적 관점과 Bayesian 관점에서 학습하는 방법에 차이에 대한 설명이 이어졌다. 이후 Dropout을 적용한 방법론과 실제 실험 결과에 대한 설명을 들으면서 세미나가 마무리 되었다. 먼저 CNN에 대한 기본 내용 이후 약점에 대한 설명을 들을 수 있었는데, CNN의 약점으로 작은 데이터에 대해서는 쉽게 overfitting이 된다는 점과 Uncertainty를 측정 할 수 없다는 점을 들었다. 하지만 Bayesian 관점에서는 이 두가지를 해결 할 수 있었다. Bayesian 관점에서는 parameter 분포에 따라 weight를 다르게 하면서 바뀌는 Model의 결과값이 얼마나 일정하지 못한 지에 따라 불확실성을 측정할 수 있게 된다. 그리고 결과적으로 이 불확실성은 Epistemic Uncertainty와 Heteroscedastic Uncertainty로 구분되게 되는데 Epistemic Uncertainty는 y에 대한 예측 값을 여러 번 구하면서 생기는 uncertainty이고, Heteroscedastic Uncertainty는 σ(분산)을 예측할 때 Model, Data 자체에서 발생하게 되는 uncertainty를 의미한다. 내게는 uncertainty를 이렇게 2가지로 나눠서 보았다는 점 자체가 흥미로웠고, ‘불확실성에 대해서 그냥 넘어갈 수도 있었던 것을 이렇게 나눠 보겠다는 생각을 할 수 있었던 출발점은 무엇이었을까?’ 라는 생각도 하게 해주었던 점이 좋았다.
오늘 들은 세미나가 특히 좋았던 점은 크게 2가지였던 것 같다. 첫번째는 다양한 사례를 활용해 개념들을 설명해줬다는 점이다. 사람을 고릴라로 오판했던 CNN의 약점 사례나 빈도주의적 관점과 Bayesian 관점에 대한 차이의 설명을 돕기 위해 동전 사례 등을 보여주면서 청중들의 쉽게 이해할 수 있도록 설명해 준 점이 좋았다. 두번째는 청중들이 궁금할 내용에 대해 발표자가 계속해서 고민하며 청중 중심의 세미나를 준비했다는 점이다. 청중들이 세미나 중간, 중간 질문하는 내용에 대해 ‘그 내용에 대한 고민을 해보았고, 뒤에서 설명을 돕겠다’라는 말을 여러 번 들었었다. 이처럼 청중들의 시선에서 지속해서 Why를 물으며 세미나를 준비했기 때문에 흥미를 잃지 않고 세미나를 들을 수 있었다. 재미있는 세미나를 준비해 준 민정이에게 감사함을 표한다.
금일 세미나에서는 민정이가 Bayesian NN (neural networks)에 대해서 설명을 해주고 이것이 기존의 신경망 모델과 어떤 차이가 있는지 짚어줬다. 먼저 Bayesian NN의 motivation은 기존의 신경망 모델은 예측한 결과에 대한 신뢰도 uncertainty를 알 수 없다는 기능적인 한계가 있다. 만약 모델이 예측 결과에 대한 uncertainty를 알 수 있다면 실제 문제를 해결하는데 도움이 될 수 있다. Bayesian 기반 모델의 이론적인 어려움에 비해 상당히 간단하게 Bayesian NN을 만들 수 있다. 핵심이 되는 파트는 MonteCarlo dropout으로 inference 할때 샘플링 연산이 포함된 버전의 dropout 이다. 기존의 NN에 MonteCarlo dropout을 추가하는 것 만으로 Bayesian NN을 간단하게 구성할 수 있고 likelihood에 대한 gradient를 이용하여 쉽게 학습을 할 수 있다. 오늘 민정이가 소개한 논문의 저자는 이러한 프레임 워크를 대표적인 vision task인 semantic segmantation과 depth regression에 적용하였다. Bayesian NN은 정확도면에서 다른 방법론 보다 우수할 뿐만 아니라 모델 자체의 uncertainty와 데이터가 내포하는 uncertainty를 measure 할 수 있어 사용자에게 추가적인 정보를 제공한다는 면에서 도움을 준다.
금일 세미나는 Bayesian Convolutional Neural Network을 주제로 진행되었다. 기존 Convolutional Neural Network 모델은 학습되는 weight가 모두 deterministic해서, 모델의 판단이 불명확 할지라도 측정할 수 있는 기준이 없었다. 하지만, 오늘 소개된 Bayesian Convolutional Neural Network는 각 weight의 분포를 학습하기 때문에 모델의 판단이 얼마나 불명확(Uncertainty) 한지 알 수 있다.이러한 효과는 Dropout으로도 얻을 수 있는데, 이유는 dropout 또한 확률적으로 weight를 사용하기 때문이다. Uncertainty는 Epistemic uncertainty 와 Aleatoric uncertainty로 나눌 수 있는데 이 둘을 통해 구체적으로 어떤 부분으로 인하여 uncertainty가 일어나고 모델의 성능이 떨어지는 지에 대한 정보를 제공한다. Image segmentation 뿐만 아니라 Neural Net이 쓰이는 다른 task에도 어떤 이점이 있을지 고민이 필요하겠다 .
금주 세미나 주제는 understanding uncertainty and Bayesian convolutional neural networks였다. 세미나는 Bayesian inference와 variational inference에 대한 간단한 설명, Bayesian convolutional neural network에 대한 설명으로 진행되었다. Bayesian neural network는 일반적인 Bayesian inference 기반의 모델과 마찬가지로, 학습된 모델 또는 예측의 uncertainty를 measure제공한다. Uncertainty는 모델이 예측에 대해 확신하는 정도를 의미하며, 크게 데이터의 노이즈로 인해 발생하는 aleatoric uncertainty와 모델 자체가 갖는 epistemic uncertainty로 분류된다. 세미나에서 소개된 Bayesian CNN을 이용한 semantic segmentation의 예시에서는, semantic labeling의 inconsistency로 인해 aleatoric uncertainty가 발생할 수 있으며, 각 object들의 경계면이 높은 aleatoric uncertainty가 높게 나타났다. 또한, training example에서 볼 수 없었던 object가 새로운 image에서 출현한 경우, epistemic uncertainty가 높게 나타났다는 것을 확인할 수 있었다. 이러한 uncertainty에 대한 해석은 도메인마다 다를 수 있다고 생각하며, 여러 분야에서 유용하게 활용될 수 있을 것 같다.
오늘 전체세미나는 ‘Understanding Uncertainty and Bayesian Convolutional Neural Networks’ 라는 주제로 민정이가 진행하였다. Uncertainty(불확실성)은 모델이 예측값에 대해 확신을 갖는 정도를 일컫는다. 확률적으로 예측값을 도출하는 모델은 그 확률값을 보고 불확실성을 측정할 수 있고, 오늘은 CNN을 중점으로 불확실성을 측정하는 방법론 Bayesian Convolutional Neural Network를 소개하였다. 일반적인 CNN과 Bayesian CNN의 가장 큰 차이점은 featuremap 내 weight를 개별적으로 학습하는 것이 아닌 다양한 확률분포 종류를 부여한 후 그 분포를 추정해 나가는 점이다. 따라서 예측하고자 하는 데이터가 그 분포로부터 가까운지 나타내는 확률을 측정할 수 있고, 이를 불확실성을 측정하는 데 사용한다. 또한, 이런 불확실성을 최소화할 수 있는 목적식을 이루고 있다. 오늘 내가 평소 모호했던 개념인 ‘불확실성’에 대해 다시금 공부할수 있게된 계기였다. 요즘 Variational 오토인코더, Bayesian 신경망 등 확률적으로 신경망을 모델링하는 연구가 활발히 이루어지고 있는데 이를 설명가능한 AI(Explainable AI)에 적용할 수 있을 것으로 생각한다. 좀 더 면밀히 공부한 후 제조공정 데이터에 적용 및 원인분석에 활용해보면 재밌을 것 같다.
이번주는 민정이가 “Understanding Uncertainty and Bayesian Convolutional Neural Networks”라는 주제로 세미나를 진행하였다. Uncertainty는 데이터를 분석하는 연구자라면 중요하게 생각할 것이다. 이번주에 진행된 세미나를 통하여 정의부터 분석까지 상세히 들을 수 있었다. Uncertainty는 크게 Aleatoric uncertainty와 Epistemic uncertainty로 나눌 수 있다. Aleatoric uncertainty는 데이터 내에 Noise가 섞여 있을 경우 그 Noise 데이터까지 학습을 하여 모델이 결과를 내뱉을 때 불확실성이 생기는 것이다. Epistemic uncertainty는 학습 데이터로 모델을 학습한 후 새로운 데이터가 학습 데이터에 없을 경우 학습이 완료된 모델이 결과를 내뱉을 때 불확실성이 생기는 것을 의미한다. 우리는 흔히 불확실성을 판단할 때 클래스에 할당될 확률을 보고 판단할 수 있다고 생각한다. 하지만 새로운 데이터가 완전히 다른 데이터일 때 높은 확률로 클래스에 할당될 수 있다는 것을 알아야 한다. 따라서, 클래스에 할당될 확률을 보고 불확실성을 판단하는 것은 매우 위험하다. 이번 세미나에서 소개된 논문에서는 불확실성에 대한 스코어를 산출하여 불확실성을 판단할 수 있는 기준을 제시하였다. 이번 세미나를 통하여 새로운 관점을 볼 수 있었다. 열심히 준비해준 민정이에게 고맙다는 말을 전하고 싶다.
오늘은 베이지안 네트워크에 대한 세미나가 진행되었다. 기존의 뉴럴네트워크가 모델의 결과값에 대한 불확실성을 표현해내지 못한다는 단점을 보완할 수 있는 이론이다. 베이지안 네트워크와 기존 뉴럴넷의 가장 큰 차이는 웨이트가 확정된 값이 아니라 정의된 분포로부터 샘플링되는 확률변수라는 점이다. 네트워크는 학습을 통해 사전에 정의된 각 웨이트 분포의 파라메터를 추정한다. 이 과정에서 변분추론법을 이용해 웨이트의 사후 분포에 근사하는 확률분포를 학습하는 것이다. 모델 학습 시 각 데이터 인풋마다 다른 웨이트의 값을 사용하게 됨으로써 드롭아웃처럼 기존의 네트워크들을 여러 개 앙상블하는 효과를 보이게 된다. 이러한 특징 때문에 MC드롭아웃이라는 특정 방식의 드롭아웃을 통해 베이지안 네트워크를 근사적으로 구현할 수 있다고 한다.
이번 발표가 흥미로웠던 가장 큰 이유는 불확실성에 대해 생각해 볼 수 있었기 때문이다. 기존의 뉴럴넷 또한 소프트맥스 아웃풋에서 특정 클래스일 확률에 대한 정보를 제공한다. 때문에 확률이 1 또는 0에 가까운 확률로 값이 도출될 경우 해당 클래스에 속하는지에 대한 아주 명확한 정보를 주는 것이라고 생각해왔다. 또한 당연하게도 모델은 불확실한 데이터에 대해서 0.5에 가까운 값을 도출할 것이라고 생각하였다. 하지만 훈련데이터에서 나타나지 않았던 데이터의 경우, 모델은 0 또는 1에 가까운, 상당히 확실해 보이는 결과를 도출하는 경우가 생길 수 있다는 점을 알게 되었다. 이에 대해 간단히 생각해 보기 위해 2차원 공간에서 데이터 포인트를 둘로 가르는 결정경계를 이용하는 모델이 있다고 해보자. 결정경계에 가까울수록 한 클래스에 속할 확률이 0.5에 가까워지며, 이는 데이터가 어느 클래스에 속할지에 대한 불확실성이 더욱 강해지는 것이라고 생각할 수 있을 것이다. 그런데 새로운 데이터가 기존의 데이터포인트들의 군집에서 벗어나 결정경계에서 아주 먼 곳에 등장한다면, 모델은 단순히 결정경계를 기준으로 하여 하나의 클래스에 속할 확률로 1에 매우 가까운 값을 도출할 것이다. 훈련 시 보지 못했던 데이터이기 때문에 높은 불확실성을 갖음에도 불구하고, 모델은 불확실성이 매우 낮아 보이는 결과를 도출하는 것이다. 베이지안 네트워크의 개념을 적용하면 이러한 원인으로부터 야기되는 불확실성에 대해 측정하는 것이 가능하다.
이제껏 생각해 보지 못한 개념에 대한 발표였다. 좋은 발표를 통해 불확실성이 무엇인지에 대해 생각할 수 있는 기회를 제공해 준 민정이에게 감사하다.
오늘 전체세미나는 ‘Understanding Uncertainty and Bayesian Convolutional Neural Networks’ 라는 주제로 민정이가 진행하였다. Uncertainty(불확실성)은 모델이 예측값에 대해 확신을 갖는 정도를 일컫는다. 확률적으로 예측값을 도출하는 모델은 그 확률값을 보고 불확실성을 측정할 수 있고, 오늘은 CNN을 중점으로 불확실성을 측정하는 방법론 Bayesian Convolutional Neural Network를 소개하였다. 일반적인 CNN과 Bayesian CNN의 가장 큰 차이점은 featuremap 내 weight를 개별적으로 학습하는 것이 아닌 다양한 확률분포 종류를 부여한 후 그 분포를 추정해 나가는 점이다. 따라서 예측하고자 하는 데이터가 그 분포로부터 가까운지 나타내는 확률을 측정할 수 있고, 이를 불확실성을 측정하는 데 사용한다. 또한, 이런 불확실성을 최소화할 수 있는 목적식을 이루고 있다. 오늘 내가 평소 모호했던 개념인 ‘불확실성’에 대해 다시금 공부할수 있게된 계기였다. 요즘 Variational 오토인코더, Bayesian 신경망 등 확률적으로 신경망을 모델링하는 연구가 활발히 이루어지고 있는데 이를 설명가능한 AI(Explainable AI)에 적용할 수 있을 것으로 생각한다. 좀 더 면밀히 공부한 후 제조공정 데이터에 적용 및 원인분석에 활용해보면 재밌을 것 같다.
오늘 세미나에서는 Bayesian neural network를 다루었다. 우리가 일반적으로 아는 non-Bayesian neural network에서는 파라미터 값을 결정적(deterministic)으로 학습한다. 하지만 통계적인 관점에서 파라미터의 수가 굉장히 많은 neural network는 과적합(overfitting) 현상에 취약하다는 단점이 있다. Bayesian neural network에서는 이러한 문제를 불확실성(uncertainty)라고 정의하며, 해결 방안으로 네트워크의 파라미터에 분포 가정을 더하여 해당 분포의 posterior 분포를 학습한다. 어떤 prior 분포를 가정하느냐는 별로 중요하지 않은데, 이는 개별 파라미터의 정확한 posterior 분포를 얻어내기보단, 분포 가정을 통해 불확실성을 정량화하는 데 의의가 있기 때문이다. 동일한 input에 대해 여러 번의 forward propagation을 계산했을 때, output의 variance가 크다면 불확실성이 높다고 이야기할 수 있게 된다. 이론은 다소 복잡하게 느껴질 수 있으나, 실제로 구현을 했을 때는 dropout을 응용하여 단순하게 구현가능하기 때문에 활용도 측면에서 용이하다고 볼 수 있다. 나아갈 연구방향으로는 불확실성을 측정하는데 그치지 않고, 불확실성을 낮추는 방법을 모색하는 것이 가장 주요하다고 생각한다. 발표자가 말처럼 다변량 시계열 데이터 분석에 활용될 수도 있으며, 학습 데이터가 충분하지 못한 상황이라면 한 번쯤 응용해볼 법한 연구인 것 같다.
금일 민정언니의 세미나는 'Understanding Uncertainty and Bayesian convolutional Neural Networks'라는 주제로 진행하였다. 지난 학기 Bayes rule관점으로 해석한 parameter추정 방식과 generative model에 관해 관심을 갖으며 Bayesian statistics에 대해 흥미를 갖을 수 있었다. 따라서 금일 세미나의 Bayesian theory개념을 딥러닝과 결합하여 새로운 해석을 제안하는 Bayesian CNN의 설명을 유익하게 접할 수 있었다. 먼저, Bayesian접근을 통해 모델이 분포를 이해하는 관점을 필요로 하는 예시로 무인자동차를소개했다. 기존의 일반적인 예측알고리즘과는 달리 Bayesian CNN은 decision뿐만 아니라 해당 decision에 대한 분포를 함께 제안하고, 더 나아가 ‘uncertainty’에 대한 지표를 도출할 수 있다. 이러한 접근법은 무인자동차 학습을 위해 사용되지 않았던 이미지에대해 경고를 주는 역할로 응용할 수 있고, 트레일러를 하늘로 인식하거나 사람을 동물로 인식하는 경우에 대안을 제시할 수 있다. 금일 세미나의 핵심 키워드 또한 ‘uncertainty’였다. 처음 직관적으로 받아들였을 때에는 분류 값을 도출하기 위한 sigmoid값으로오해하였고, 세미나를 듣는 대다수가 이점에 궁금증을 갖고있었다. 발표자는 이에 대해 정확하게 정의해주었다고 생각한다. 내가 이해한 바로 매번 실험을 통한 결과가 0.6으로 일관된다면 이는 0.6의 확률 값을 확실하게 결정하는 셈이지만 매번 실험에 대한결과가 0.4, 0.6, 0.8이런식으로 편차가 발생한다면 이런 결과값에 대해서는 uncertainty하다고 할 수 있다. Uncertainty는 관측치에 대한 내재적인 노이즈, 데이터에 대한 모델 성능에 따라 Aleatoric(Homoscedastic, Heteroscedastic), Epistemic으로 세분화 할수 있다. 이를 토대로 CNN구조에 L2norm penalty와 MC dropout을 적용시키는 것이 Bayesian CNNs와 일치하는 과정을 설명할 수 있었다. 항상 궁금한 부분에 대해 민정언니에게 편하게 물어 보기도 하고, discussion을 하기도 하는데 이러한 과정이 나에게 의미 있는 기억으로, 본받을 태도로 자리매김하는 것 같다. 더불어 금일 연구실 인원들에게 새로운 주제를 전달하기 위해 오랜 시간 고민해준 민정언니에게 감사하다.
금일 세미나는 모델의 불확실성과 Convolution Neural Networks에서 불확실성을 어떻게 측정할 수 있는가에 대한 내용을 주제로 진행되었다. CNN은 이미지 분야에서 지난 몇 년동안 큰 성과를 얻었지만 양질의 데이터가 부족함으로써 필연적으로 생길수 밖에 없는 적은 양의 데이터에 쉽게 과적합이 되며, 데이터/모델의 어떤 부분 때문에 오분류가 생겼는가에 대한 판단을 할 수 없다는 단점을 가지고 있다. 후자를 불확실성(uncertainty)를 측정할 수 없다고 말하기도 한다. 기계학습에서 이러한 단점을 극복하기 위해 이론적으로 많이 제안된 방법은 Bayesian과 많이 연관이 되어 있다. 데이터 분포에 적당한 prior를 부여함으로써 실제 분포를 더 잘 설명할 수 있는 모델을 추정하는 것이다. 금일 세미나에서 리뷰한 논문에서 제안하기로는 CNN에서 이러한 Bayesian Approximation을 수행하기 위해서는 L2-norm과 Monte Carlo Dropout을 사용하면 된다고 한다. 이 2가지 기능을 추가함으로써 데이터 자체의 노이즈에서 나오는 heteroscedastic uncertainty와 모델 자체에서 발생하는 epistemic uncertainty를 측정할 수 있으며, 이는 결국 모델이 어느 부분에서 헷갈려하는지를 분해하여 측정할 수 있는 기능을 수행한다. 깊은 배경을 전부 이해하지는 못했지만, 기본적인 배경부터 시작해서 메인 모델인 Bayesian CNN까지 쉽게 설명해줘서 이해하기 편했다. 많은 내용을 준비해준 발표자에게 감사하다.
이번 세미나는 Uncertainty와 Bayesian Convolutional Neural Networks 였다. 베이시안의 개념을 설명하기 위해 발표자가 질문을 하였다. 동전을 세 번 던졌을 때 모두 앞면이 나왔고, 네 번 째 동전을 던질 때 앞면에 나올 확률이 얼마인가 에 대한 질문이었다. 보통 동전은 앞 뒷면이 있고, 반반의 확률이므로 다음 번에도 앞면이 나올 확률은 1/2라고 생각할 수 있다. 하지만 10번 던져서 모두 앞면이 나온다면, 동전에 대해 의심을 하게 되고, 앞면 만 있는 동전이라고 판단할 수 있다. 이처럼 10번의 경험 유무에 따라 판단이 달라지게 되며 이 경험을 바탕으로 이 동전은 앞면만 나올 것이다 라고 판단하는 것이 확률론적 관점이고, 원래 동전 던지기의 분포를 바탕으로 판단하는 것이 베이지안적 관점이다. 이러한 관점으로 인공신경망에 적용하였는데, 기존의 인공신경망에서는 단순히 숫자 계산하여 나온 값(1차원)으로 판단하였다면, 베이지안 인공신경망은 여러 번 반복하였을 때 나오는 분포를 바탕으로 가장 높은 확률로 판단하였다. 이러한 개념은 앙상블과 유사하며, 인공신경망의 경우는 Dropout기법으로 앙상블 효과를 내었을 때 베이지안 인공신경망과 일치한다. 또한 불확실한 판단(Uncertainty)에 대해 새로운 기준을 만들 수 있었다. 만약 앞뒤가 계속 비슷하게 나오는 동전이라서 앞인지/뒤인지 판단하지 못하는 경우는 Aleatoric Uncertainty, 동전이 아닌 아예 다른 물건을 던지기 때문에 어떤 것이 나올지 판단하지 못하는 경우는 Epistemic Uncertainty로 분류하였다. 이러한 Uncertainty들의 구분은 데이터분석 시에 유용하게 활용될 수 있을 것 같다. Uncertainty 종류에 따라 애초에 갖고 있는 데이터로 모델링 할 수 없는 경우라고 판단할 수 있기 때문이다. 베이시안의 이론은 따로 공부해본 적이 없어서 어려울 것이라고 예상하였지만, 설명을 잘 해 주어 흥미로운 내용으로 다가왔다.