"Uncertainty-Aware Learning From Demonstration Using Mixture Density Networks with Sampling-Free Variance Modeling" - Sunjun Choi (2017)
https://www.edwith.org/bayesiandeeplearning/joinLectures/14426
이번 논문은 Mixture Density Network 구조를 이용하여 Sampling을 하지 않고 Uncertainty를 알 수 있는 모델링 방법을 제시하였다.
2가지 Uncertainty에 대해 비슷한 의미를 가진 용어가 많이 사용되는데 여기서 정리하고 시작한다.
(Uncertainty를 variance로 혼용해서도 사용한다.)
Aleatoric Uncertainty = Unexplained Uncertainty = E [V(y|x, k)]
특징
- 데이터에 내재된 노이즈(3과 8을 구분하는 것 등)에 반응한다.
- 데이터가 randomness 한 경우(동전 던지기 등)에 반응한다.
- 데이터가 많아져도 줄어들지 않는다.
- model의 output으로 직접 구한다.
Epistemic Uncertainty = Explained Uncertainty = V(E [y|x, k])
특징
- 모델이 모르는 부분(학습되지 않은 데이터)에서 반응한다.
- 데이터를 많이 학습시킬수록 값이 작아진다.
- 충분한 데이터가 있으면 해결할 수 있어서 Explained uncertainty라고 한다.
- 본래 Sampling을 활용하여 구해서 Real time application에 적용하기 힘들었지만 이번 리뷰 논문에서 새로운 방법을 제안하였다.
기존 연구의 한계와 해결책
딥러닝을 여러 영역에서 적용시키며 잘못 예측하거나 시스템을 제대로 움직이지 않는 경우가 비극적 사건들을 일으키곤 한다. 그래서 Uncertainty를 예측하는 방법들이 제시되었다. Uncertainty는 2가지로 나눠 이해된다. 첫 번째는 데이터 자체에 내재되어있는 noise를 의미하는 Aleatoric Uncertainty이다. 두 번째는 모델이 학습하지 않아 모르는 것을 의미하는 Epistemic Uncertainty다. (이에 대해서는 기존에 리뷰한 "What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision"에 자세히 나와있다.)
기존 연구에서는 Uncertainty 추정으로 Monte Carlo Sampling 방법을 사용하였는데 이는 Real-time에 적합하지 않았다. 그래서 해당 논문에서는 Real time에 적합한 Mixture density network(MDN) 구조를 제시한다.
Main contribution
1. Sampling-free 한 uncertainty 방법으로 Mixture density network(MDN) 구조를 제시하였다. 그 구조는 다음과 같다.
모델의 output으로 $\hat {\pi}_{i} , \hat {\mu}_{i} , \hat {\sum}_{i}$을 K개 출력한다. 이는 다음 식으로 각각 probabilites, means, variances를 유도하는 데 사용된다.
$$ \pi_{i} = \frac { exp(\hat {\pi}_{i} - max(\pi) } {\sum_{k=1}^{K} exp(\hat {\pi}_{k} - max(\pi))} $$
$$ \mu_{i} = \hat {\mu}_{i} $$
$$ \sum_{i} = \sigma_{max} diag (\rho (\hat {\sum}_{i})) $$
(sigmoid function $\rho(x) = \frac {1} {1+exp(-x)}$, diag는 d-dimension vector를 d*d dimension diagonal matrix로 변환해주는 operator, max($\pi$)는 K개의 weights 중 maximum 값)
이에 대해 직관적으로 이해하면 $\pi_{i} , \mu_{i} , \sum_{i}$가 한 세트로 K개만큼 출력되는 데 이를 K명의 전문가들이 각각 자신의 의견을 낸다고 생각할 수 있다. $\pi_{i}$는 i번째 전문가의 영향력, $\mu_{i}$는 i번째 전문가의 예측, $\sum_{i}$는 i번째 전문가의 의견에 대한 확신(혹은 불확실성)이라고 할 수 있다.
2. MDN으로부터 Explained Uncertainty와 Unexplained Uncertainty를 구할 수 있다.
MDN의 output parameters는 Gaussian mixture model(GMM)으로 구성되어 있다. GMM의 Total expectation은 다음과 같다.
$$E [y|x] = \sum_{i=1}^{K}\pi_{i}(x)\mu_{i}(x)$$
GMM의 Total variance는 다음과 같다.
$$ V(y|x) = \sum_{i=1}^{K}(\pi_{i}(x)\sum_{i}(x)) + \sum_{i=1}^{k}\pi_{i}(x) || \mu_{i}(x) - \sum_{k=1}^{K}\pi_{k}(x)\mu_{k}(x) || ^{2} \cdots (1) $$
첫 번째 term은 model에서 나오는 variance에 가중치를 곱하고 더한 값이므로 데이터에 존재하는 noise를 포착하는 aleatoric uncertainty와 대응되며 이를 unexplained uncertainty라고 한다. 총 variance는 aleatoric uncertainty와 epistemic uncertainty와 같으므로(논문에 증명이 나옴) 두 번째 term이 모델이 모르는 것을 포착하는 epistemic uncertainty와 대응되며 explained uncertainty라고 한다. 이에 대해서는 뒤의 실험에서 증명한다.
Details
MDN를 훈련시킬 때의 Cost function은 negative log likelihood(NLL)을 사용한다. 가우시안 분포를 가정하며 mean은 $\mu$ , variance는 $\sum$이며 $\pi$만큼 곱하여 scaling을 한다. 모든 mixture에 대해 모두 더하여 Loss를 구한다. MDN을 학습시키고 가장 높은 mixture weight($\pi$)를 가진 mean과 variance를 고르면 Maximum-A-Posterior(MAP)를 구할 수도 있다.
위의 (1) 번 식에서 각 mixture의 uncertainty를 분해할 수 있다. k번째 mixture의 variance는 다음과 같이 나타낼 수 있다.
$$ \sigma_{a}^{2} (x|k) + \sigma_{e}^{2}(x|k) = \sum_{k}(x) + \parallel \mu_{k}(x) - \sum_{j=1}^{K}\pi_{j}(x)\mu_{j}(x) \parallel ^{2} $$
($\sigma_{a}$ : Aleatoric uncertainty, $\sigma_{e}$ : Epistemic uncertainty)
두 번째 term(explained, epistemic)은 k번째 전문가가(위의 전문가 예시를 다시 사용) 예측한 값과 다른 전문가들이 예측한 평균값과 얼마나 다른지를 나타낸다. 그러므로 마치 Sampling(혹은 Ensemble) 기법을 사용하여 각 예측 값이 얼마나 다른지 나타내는 epistemic uncertainty와 대응되는 값을 얻는다.
Experimental result : Synthetic Examples
모델이 실제로 Uncertainty를 잘 나타내는지를 보기 위해 데이터가 부족할 때(1 사분면의 데이터를 없앰), noise가 심할 때(1사분면의 데이터에 noise를 섞음), output이 2개(함수 2개를 사용) 일 때의 상황을 만들어 실험을 하였다.
Mixture의 개수는 10개를 사용하였다. 또한 "What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision"의 방법도 함께 사용하여 비교하였다. 여기서는 50번의 Sampling을 하고 dropout rate을 0.8로 했다. 학습 layer는 2개이고 256개의 nodes를 사용하였다.
첫 번째 실험 결과는 Noise 한 데이터와 Absence 한 데이터에 대해 MDN방법과 기존의 방법을 비교하는 것이다.
(* E [V(y|x, k)]는 Unexplained uncertainty, V(E [y|x, k])는 Explained uncertainty를 나타낸다.)
1. Noise Data - a, c
1 사분면에 Noise를 섞은 데이터에 대한 Uncertainty 결과를 보면 Unexplained uncertainty와 Aleatoric uncertainty의 1사분면 값이 굉장히 높다. Aleatoric uncertainty와 Unexplained uncertainty는 데이터 자체에 있는 Noise를 잡아낸다는 것을 알 수 있다. Explained uncertainty나 Epistemic uncertainty는 기본적으로 데이터가 충분하여 (noise가 심함에도) uncertainty가 낮은 곳과 높은 곳이 섞여 있다. (Explained uncertainty와 Epistemic uncertainty의 차이가 있지만 왜 그런지는 나와있지 않다. MDN을 사용하는 방법이 기존의 sampling 방법보다 plot상으로 더 깔끔한(?) 결과를 만들어내는 듯하다. 사용한 HyperParameter가 mixture개수는 10개이고 Monte Carlo 수는 50이라 그럴 수도 있고 sampling시 사용되는 Dropout rate이 0.8로 매우 크고 적은 파라미터(256개 node 2개 layer)를 사용해서 그럴 수도 있다.)
2. Absence Data - b, d
d의 결과를 보면 기존의 방법으로 Epistemic Uncertainty를 잡아내지 못한 것을 볼 수 있다. 반면 b의 결과는 데이터가 없는 1 사분면의 영역을 어느 정도 잡아낸 것으로 보인다. 특히 Explained uncertainty에서 더 잘 잡아냈다. 이것은 Explained uncertainty와 epistemic uncertainty가 관련이 있고 학습하지 않은 새로운 데이터가 들어오면 epistemic uncertainty가 높게 나오기 때문에 합리적인 결과이다.
다음으로 prior에 따라 posterior 분포가 어떻게 변화하는지 보기 위해 $L_{2}$weight decay 방법을 사용하였다. Absence Data일 때 decay 크기를 크게 할 때 어떻게 변화하는지 아래의 그림 a~c에 나타나 있다. 또한 예측해야 하는 function이 2개일 때(각 mixture가 예측할 수 있는 것은 1개)의 Uncertainty도 확인하였다.
1. Absence Data + weight decay - a, b, c
weight decay 크기가 커질수록 training data가 없는 영역에 대한 uncertainty가 증가하는 것을 볼 수 있다. 특히, Aleatoric uncertainty와 관련된 Unexplained uncertainty(E [V(y|x, k)])에 굉장히 효과적이다.
2. Composition - d, e
e의 결과를 보면 한 개의 density network는 두 개의 함수를 모델링할 수 없어 reconstructed result가 엉뚱하게 나왔다. 반면 10개의 mixtures를 사용한 MDN의 결과는 정확하다. 여러개의 예측을 동시에 할 수 있기 때문에 두개의 함수를 fitting 시킬 수 있었다. 그래서 Unexplained uncertainty가 모두 낮은 것을 볼 수 있다. Explained uncertainty는 두 함수의 차이가 큰 부분에서 큰 값을 가진다. 두 함수의 값이 다르므로 여러 mixture들이 서로 다른 값을 예측했고 함수의 차이가 커질수록 예측한 값의 차이도 클 것이기 때문에 당연하다.
Experimental result : Uncertainty-Aware Learning from Demonstrate to Drive
최종적으로 MDN을 활용하여 실제 driving dataset에 적용하는 실험을 하였다.
(위의 그림 중 첫 번째는 total variance를 나타내고, 두 번째와 세 번째는 각각 Explained variance, Unexplained variance를 나타낸다.)
그림에서 점선으로 된 박스 영역의 위치는 같지만 Uncertainty가 다르게 나타난다. 2개 중 더 왼쪽에 있는 영역의 경우는 Unexplained variance가 높게 나오는데 이는 자동차를 피할 수 있는 여러 경우의 수가 있기 때문이다. 여러 경우 중 하나를 택해야 하므로 Unexplained Uncertainty가 높다.
오른쪽 영역은 Explained variance가 높은데 이는 시뮬레이션 자동차가 앞에 자동차가 있으면 미리 피해버려서 다른 차 바로 뒤에서의 데이터가 없기 때문이다.
최종적으로 Explained uncertainty (UALfD)와 Unexplained uncertainty (UALfD2)를 각각 시뮬레이션 자동차의 운전 기준으로 사용하였다. uncertainty가 일정 threshold를 넘길 경우 safe mode를 하는 방법을 사용한다. 또한 MDN(k=1) 일 때, MDN(k=10) 일 때, baseline(FC layer), safe mode 일 때를 추가로 비교하였다. 결과는 위의 표와 같다.
가장 빠른 시간에 충돌 없이 들어온 것은 Explained uncertainty를 사용한 UALfD였다. unexplained uncertainty를 사용한 UALfD2도 collision이 없었고 최종적으로 들어올 수 있었다(이는 safe mode와 유사하게 달렸기 때문일 것이다). 결과적으로 Explained uncertainty가 안전과 속도를 모두 개선시켰다. RegNet과 MDN을 사용한 경우도 차이가 컸고 k=1과 k=10일 때의 차이도 굉장히 컸다. 이에 따라 MDN의 유용성도 보여주었다.
정리
기존에는 model의 output으로 Aleatoric variance를 예측하고 (MC Dropout으로) Sampling을 하여 Epistemic variance를 얻었다. 이에 따라 Real-time Applications에서는 sampling 시간 때문에 Epistemic variance를 구하기가 적합하지 않았다. 그것을 이번 논문에서 MDN 구조로 두 개의 variance를 함께 구하는 방법을 제시하였다. (Sampling-Free)
MDN으로 Explained variance와 Unexplained variance를 구할 수 있었고 각각의 특성이 Epistemic, Aleatoric variance와 같다.
Explained Uncertainty로 threshold를 정하여 Uncertainty-Aware Learning을 할 때 좋은 성능을 보여주었다.
아쉽게도 Regression에 대한 내용만 있고 Classification을 하는 방법은 소개하고 있지 않다.