끄적거림

[논문 리뷰] Sampling-free Epistemic Uncertainty Estimation Using Approximated Variance Propagation - 3.Method 본문

개인 공부 정리/Bayesian

[논문 리뷰] Sampling-free Epistemic Uncertainty Estimation Using Approximated Variance Propagation - 3.Method

Signing 2021. 7. 27. 00:53
728x90
반응형

[논문 리뷰] Sampling-free Epistemic Uncertainty Estimation Using Approximated Variance Propagation - 1.Abstract~Related Work

 

[논문 리뷰] Sampling-free Epistemic Uncertainty Estimation Using Approximated Variance Propagation - 1.Abstract~Related Work

https://arxiv.org/pdf/1908.00598.pdf 논문 아이디어를 생각하고 찾아보다가 좋은 논문인듯하여 공유하고자 한다. 해당 논문은 ICCV 2019에 올라온 논문으로 샘플링 없이 epistemic uncertainty를 구하는 방법에..

signing.tistory.com


이전 글에 이어서 이번 시간엔 방법론에 대해 살펴보고자한다.

여기서 요하는 사전지식은 높지 level 이므로 수식이 나오더라도 힘을 내보자.

 

 

 

3. Method

Our goal is to estimate the epistemic uncertainty of a neural network trained with injected noise at inference time to quantify the level of trust in the predictions, in a single shot.

--> 그래서 결국 본 논문에서의 Goal은 원큐에 noise를 넣고 epistemic uncertainty를 구하는 것이다.

 

본 논문에서 제안한 method의 핵심 중 하나는 error propagation이다.

주로 물리학에서 사용되고, 이를 NN에 적용하였다고 한다.(error = variance)

아래의 그림은 error propagation의 이해를 돕기위한 간단한 graph 구조를 갖는 NN을 모형화한 것이다.

error propagation

여기서 A와 B는 random variable(R.V.)로써 서로 독립인 관계다.

이후 non-linearity를 갖는 activation function인 f1, f2를 거쳐 각각 C, D를 만들게된다.

R.V. A, B의 mean과 variance를 알기 때문에, C와 D의 variance도 계산할 수 있다.

이 수식을 이용하면 C와 D의 variance를 구할 수 있는데, 이 때 편미분이 사용된다.

또한 같은 방법으로 E의 variance도 동일하게 생각해볼 수 있지만, 한 가지 고려해야할 것은 C와 D는 독립이라는 전제가 깨진 것이다.

 

그렇기 때문에 C와 D의 variance를 얻기위해 co-variance를 구해야한다.

그러면 먼저, A와 B의 co-variance matrix부터 구해보면 아래와 같다.

A and B covariance

그리고나서 수식 (1)을 적용하기 위해서는 행렬 편미분을 적용해야하는데, trick으로써 Jacobian 방법을 사용한다.

cf) https://en.wikipedia.org/wiki/Jacobian_matrix_and_determinant

 

Jacobian matrix and determinant - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Matrix of all first-order partial derivatives of a vector-valued function In vector calculus, the Jacobian matrix (,[1][2][3] ) of a vector-valued function in several variables is the

en.wikipedia.org

Jacobian

이런 방법으로 우리는 최종적인 E에 대한 variance σ_E^2를 구할 수 있다.

이로써 우리는 output layer의 variance를 approximate 할 때 필요한 모든 tool들을 알아보았다.

이 방법들은 Convolution layer와 ReLu와 같은 함수에 쓰일 수 있다.

image와 같이 high-dimensional feature space에서는 covariance matrix가 그 size 때문에서라도 더 필요하다.

 

추가적으로 activation과 activation 사이의 상관성의 impact를 아직 본 논문에서는 modeling하지 않았으며, NN에서 error-propagation은 variance-propagation으로 적용 가능하기까지는 향후 과제로 남겨두고 있다.

 

 

 

3.1. Noise Layer

일단 Noise Layer라고는 하지만, 결과적으로 dropout이 적용된 layer처럼 어떤 noise가 낀 layer를 의미한다.

그리고 Noise Layer의 노드들을 각각 독립이라고 가정하고 시작한다.

본 절에서는 Layer에 noise를 어떻게 주입(injection)할 것인가를 다루고 있다.

왜냐하면 noise를 발생시켜야 그에 대한 평균과 분산을 구하고 그 이후 종합된 분산들로 uncertainty를 구할 수 있기 때문이다.

 

위 3.Method 절에서는 Random Variable에 대해 다루었는데 이 R.V.들이 모이면 Random Vector가 된다.

random vector는 단순 R.V.를 모아둔 집합이라고 생각하면 좋다.

random vector는 random process의 개념에서도 나오기 때문에 아래의 이전 포스팅을 활용해도 좋다.

[논문 리뷰] What uncertainties do we need in Bayesian deep learning for computer vision? - 2.Related Work(1)

 

[논문 리뷰] What uncertainties do we need in Bayesian deep learning for computer vision? - 2.Related Work(1)

이전 글: 2020/11/10 - [논문 리뷰] What uncertainties do we need in Bayesian deep learning for computer vision? - 1.Introduction 2. Related Work 본 논문에서 말하는 불확실성은 결국 분산으로 생각할 수..

signing.tistory.com

 

이제부터 몇 가지 기호들이 나오는데 이를 하나씩 정리해보자.

표기 내용
noise layer의 random vector.
라는 covariance를 갖음.
(dependent)
X의 randomness를 나타낸 Random Vector
라는 covariance를 갖음.
(independent)
Hadamard product(=element wise multiplication)
--> size가 동일한 두 행렬에서 위치가 동일한 원소들의 곱을 나타낸 연산자

 

이제 본격적으로 어떻게 noise를 injection했는지에 대해 알아보도록 하자.

Noise Injection에는 크게 두 가지(1.addition, 2.Hadamard product) 방법이 있다.

 

우선, addition하는 방법은 아래의 수식과 같다.

Noise Injection by addition

Noise Injection은 수식 (3)과 같이 단순화할 수 있다.

기존에 갖고 있던 variance에 randomness를 갖는 random vector의 variance를 더하여 다음 random vector X의 variance를 구할 수 있다.

 

다음으로, Hadamard product(=element-wise mulitplication of X vector and Z vector)은 아래 수식 (4)에 따라 구할 수 있다.

Noise Injection by Hadamard product

수식에 대해 파기 전에 언뜻보면 수식 (4)는 마치 dropout을 연상케한다.

dropout은 (weight vector ○ Bernulli dist. random vector) 이기 때문이다.

 

수식 (4)에 대한 증명과 부가 설명은 appendix 8번 항목에 나와있다.

추가 설명을 보고 싶지 않은 분들은 건너 뛰어도 좋다.

이와 같이 새로운 Y vector를 정의해보자. 그러면 우리는 이 Y vector의 variance가 궁금한 것이다. variance의 정의는 제평평제(제곱의 평균 - 평균의 제곱)이다.

그러면 이 정의에 대입해보면, 아래 수식 (14)와 같이 나온다.

Variance of Y vector

X와 Z vector에 대해 독립이라고 가정해보면, 다음의 수식 (15)를 이용할 수 있다.

수식 (15)를 이용하여 수식 (14)를 다시 정리해보면, 수식 (16)으로 전개할 수 있다.

이와 별개로 X, Z vector의 variance의 Hadamard product를 전개한 식을 확인해보자.

수식 (17)과 수식 (16)을 이용하여 다음의 관계(수식 (18))를 정리할 수 있다.

이를 정리하여 우리는 마지막 수식 (19)을 얻을 수 있다.

그리하여 vector Y의 variance를 구하는 수식은 수식 (4)와 수식 (19)가 동일함을 보인 것이다.

 

 

이렇게 noise injection을 할 때 주의해야할 점은, NN의 첫 번째 layer에는 우리가 알고 있는 prior 정보를 넣거나(센서의 noise라던가...) 혹은 noise의 합이 0으로 centered된 noise를 넣는 것이다.

 

후자의 경우에는 covariance matrix의 결과는 결국 diagonal given independent noise가 될 것이고, 아래와 같다.

合=0인 noise injection covariance matrix result

여기서 n은 activatin vector의 차원의 수이고, σ는 각 i번째 activation의 variance를 의미한다.

이것은 일반적인 p의 확률을 갖는 dropout을 의미한다.

 

 

 

 

3.2. Affine Layers(=Fully-connected Layer) and Non-Linearities

noise layer의 covariance matrix를 구한 후. 필요한 작업은 output layer까지 이것을 propagate해야하는 것이다.(=error/variance/noise propagation)

이 것은 일반적으로는 affine layer와 non-linearities들에 대해 적용한다.

우리는 이러한 작업을 기존에 알기로는 각 layer, node마다 미분을 때려 해당 layer나 node의 영향력을 파악하곤 했다.

이번에도 마찬가지이다.

본 논문에서는 fully-connected layer와 convolutional layer에 대해 살펴보고 있다.

곧바로 이것을 적용시킬 것인데 Jacobian을 사용한 수식 (2)에 적용해보자.

이것은 Jacobian을 이용한 wieght에 대한 미분이기 때문에 distribution이 포함되어 있지 않은 수식이다.

non-linearities는 first-order Taylor expansion을 사용하여 approximate할 수 있다.

그렇게되면. non-linearities에 대한 covariance transformation은 아래와 같다.

Taylor Expansion을 이용한 non-linearities(ReLU, Softmax, sigmoid)의 Jacobian 미분은 appendix에 다음과 같이 나와 있다.

 

 

3.3. Special Case: Convlutional Layers combined with ReLU Activations

이와 같이 sampling이 필요 없는 방법은 전체 covariance matrix를 구해야하는 문제 때문에, O(n^2)의 메모리 복잡도를 갖고 있다.

많은 다른 NN 아키텍쳐에서는 conv layer에 대한 iterative한 적용이 필요하기 때문에, 본 논문에서는 컴퓨팅 계산 복잡도 부분에서는 개선시킨 점이 있다.

 

또한 보통의 affine layer들에 대해서는 full covariance를 구하는 것이 필요하지만, conv layer는 그렇지 않다.

왜냐하면, conv layer는 input 전체에 대한 weight를 공유하고, 결과적으로는 각 pixel의 local한 부분만 linear transformation을 적용하기 때문이다.

 

그래서 conv layer의 covariance matrix를 구할때는, conv layer에 대한 (dropout rate와 같은)prior가 주어지면 output covariance matrix는 main diagonal entries와 일부 나머지 요소들을 제외하면 대부분 0을 갖는 sparse matrix가 된다.

 

이에 대한 실험적 설명은 아래 그림과 같다.

이것은 CIFAR10 image data를 가지고 conv 아키텍쳐를 이용하여 실험한 결과이다.

아래의 그림에서 D, C, R은 각각 Dropout, Convolution, ReLU를 나타낸 것이고, 각 layer 및 연산을 진행했을 때의 평균 covariance matrix의 수치를 높을수록 노란색, 낮을수록 남색으로 하여 나타낸 것이다.

위의 그림은 각 activation value의 mean variance를 normalize하여 나타낸 것이다.

아래 그림처럼, symmetrical하게 분산되어 있는 weight가 주어진 ReLU함수는 분산 값을 0.5까지 떨어뜨리는데 기여하고, 이 결과는 ReLU함수를 사용한 Conv Layer의 수에 따라 관측된 분산의 평균을 감소시킨다.

무슨 말이냐면, conv layer를 거치면서 Mean of Variance가 줄어들고 있다는 것이다.

여기서 우리가 알 수 있는 것은,

1. dropout은 main diagonal element value를 강화시킨다는 것과,

2. dropout layer가 추가적으로 없으면 variance가 점차 줄어든다는 것이다.

3. 결과적으로, covariance matrix의 큰 영역들은 0으로 수렴한다는 것이다.

 

 

또한 계산 복잡도 측면에서는 variance propagation의 계산복잡도와 일반적인 forward propagation의 계산복잡도는 비슷한 수준이라고 말하고 있다.

왜냐하면, covariance matrix의 main diagonal vector에 대해 propagation을 하면 되기 때문이다.

 

 

 

 

 

 

728x90
반응형
Comments