Network Deconvolution

Inc Lomin's avatar
Oct 25, 2021
Network Deconvolution
 

Introduction

redundancy
Deconvolution
correlation 정의
notion image
 

Motivation

L2 loss를 사용한 y=Xw의 선형 회귀 문제를 고려합니다. X는 입력 데이터 행렬, w는 weight matrix입니다.
notion image
위 문제의 analytic optimal solution은 잘 알려진 대로 pseudo-inverse를 통해 구할 수 있으며, 다음과 같습니다.
notion image
이를 mini-batch를 이용한 gradient descent를 통해서는 다음과 같이 점진적인 weight의 update를 통해 해를 찾습니다.
notion image
여기서 저자들은 gradient descent가 한 스텝만에 수렴할 수 있는가?를 질문합니다. 이는 한 번의 update만으로 좌변이 optimal solution이 되도록 하여 풀이가 가능한데, 결론적으로
를 만족하는 경우, gradient descent가 optimality condition을 만족한다고 할 수 있습니다. (논문의 preposition에서는 NC로 설명하고 있으나, 실제로 유도해보면 이미 w가 optimal solution인 경우를 제외하면 SC and NC가 됩니다.)
위의 최적 조건을 살펴보면 조금 더 물리적인 해석이 가능한데요, (X^T)X는 X의 covariance에 해당합니다. 즉 covariance가 identity(의 배수)라는 것은, X가 자기 자신이 아닌 원소와는 상관관계를 갖지 않는다는 것을 뜻합니다. 다시 말해, 입력 데이터가 서로 상관관계를 가지고 있을수록 gradient descent는 최적으로부터 멀어집니다.
일반적으로 입력 데이터는 다양한 상관관계를 가지고 있을 수 있기 때문에 이를 보정해주기 위한 방법으로는 두 가지를 생각해 볼 수 있는데, gradient에 Hessian matrix를 곱해주거나, 위의 최적 조건이 성립하는 새로운 space로 input을 좌표변환 해주는 방법이 있겠습니다. 이 논문에서는 두번째 방법을 사용하고 있으며, 이를 deconvolution 연산으로 일컫고 있습니다.

The Deconvolution Operation

주어진 입력 데이터 X의 차원이 샘플의 갯수 N과, Feature의 크기 F라고 합니다. 먼저 Covariance matrix는 다음과 같이 정의됩니다.
Covariance의 inverse square root를 D로 정의하면 임의의 deconvolution 연산이 됩니다.
i번째 레이어의 input을 x_i, 다음 레이어의 입력을 x_{i+1}이라고 할 때, i번째 레이어의 연산은 다음과 같습니다. f, W, D는 각각 activation, weight, deconvolution 연산에 해당합니다.
notion image
실제 이미지가 네트워크를 거치면서 어떻게 되는지를 사진으로 보면 deconv 연산이 하는 일을 더 잘 파악할 수 있습니다. 아래의 (a)는 원래의 입력 이미지, (b)는 pixel mean을 뺀 이미지, (c)는 deconv 연산 후 (회색이 0), (d)는 (c)에 절대값을 취한 것입니다. (d)에서 mean에 해당하는 부분들은 검정색으로 나타나며, 말의 실루엣 픽셀을 따라 무언가 값이 분포하는 것을 볼 수 있는데요, 이러한 역할을 해줌으로써 convolution 시 feature가 더 잘 추출되게 만들어줄 수 있는 것 같습니다.
notion image
일반적인 convolution과 deconvolution의 연산 과정을 그림으로 비교하면 다음과 같습니다. 왼쪽의 절반 이상을 차지하고 있는 그림은 일반적인 convolution을 나타낸 그림입니다. 여기서는 3*3(*1) 커널을 예시로 들고 있는데, 그림에서 다른 색깔로 색칠된 영역이 각 커널이 보는 영역을 뜻합니다. 각 영역들을 im2col 함수를 이용한 다음에 convolution weight와 곱해주면, 우리가 일반적으로 알고 있는 convolution 연산이 됩니다.
deconvolution에서는 먼저 deconv 커널을 계산해야 하는데요, covariance matrix의 inverse square root로 정의했으므로, 왼쪽 위와 같이 im2col 상태에서 covariance matrix를 먼저 구합니다. 다음으로 이의 inverse square root를 이미지에 곱한 후, convolution weight를 곱합니다.
notion image
여기서 covariance matrix를 구하는 것 까지는 좋은데, covariance의 inverse square root를 구하는 것은 쉽지 않아 보입니다. 예를 들어 커널 사이즈가 k, 채널이 Ch인 경우 covariance matrix의 사이즈는 (Ch*k*k)*(Ch*k*k)가 됩니다. 안그래도 matrix inverse는 비싼 연산인데, 사이즈가 엄청나게 커서 특히 깊은 레이어들에서는 계산이 어려울 수 있습니다. 그래서 여기서는 채널을 더 작은 블록들로 나누는 grouping approach를 차용하여, channel들을 여러 mini-batch로 나누어줍니다. mini-batch에 포함되는 채널의 사이즈를 B라고 했을 때, covariance matrix는 (B*k*k)^2이며, inverse는 Newton-Schulz iteration을 사용하면 5번 정도의 iteration 안에 구할 수 있다고 합니다. Inverse를 구하는 과정은 O((k*k*B)^3)의 복잡도를 가지며, 전체 복잡도는
notion image
*Ch_in/B) 로 표현할 수 있습니다.
비교하자면, 원래의 convolution 연산이 갖는 복잡도는 다음과 같습니다.
notion image
다음은 전체 알고리즘을 나타낸 것입니다. (8번에 보면 수치적으로 diagonal term에 epsilon을 더해서 inverse 연산의 안정성을 높여주고 있습니다.)
notion image
이렇게 정의하여 학습한 Deconvolution kernel의 weight를 보면, 흥미로운 모양을 가집니다. 아래는 ImageNet에서 랜덤하게 1024장의 이미지를 샘플링하여 15*15의 deconv kernel을 왼쪽부터 R, G, B로 나타낸 것입니다. 이는 실제 망막신경절세포의 center-surround receptive field와 (우연히도..!) 동일한 구조를 갖는데, R, B 필터는 중심부에 들어온 신호로 자극되지 않는 off-center cell, G 필터는 중심부의 신호만 수용하는 on-center cell로 볼 수 있습니다.
notion image
 
 
Network deconvolution은 (저자들에 따르면) 널리 쓰이는 다른 방법들의 더 진보된 버젼이라고 볼 수 있는데요, 예를 들어 커널 사이즈를 1로 하여 deconv를 하면 channel-wise decorrelation(Ye et al., 2018; Huang et al., 2018)에 해당합니다. 또한 커널 사이즈와 채널 블록 갯수가 모두 1인 경우에는 batch normalization과 동일합니다
 

Experiment

동일한 네트워크에 batch norm을 사용하는 경우와, batch norm을 제거하고 deconv를 사용하는 경우를 비교하였습니다. 먼저 Fashion-MNIST 데이터셋을 이용하여 분류 네트워크를 학습한 결과입니다.
Vanilla SGD에서는 발산을 막기위해 0.02-0.1 정도의 learning rate 값을 유지해야 했으나, deconvolution에서는 1.0의 learning rate를 사용할 수 있었습니다. Deconv를 사용한 경우는 최종적으로 정확도를 향상시킬뿐만 아니라, weight가 수렴하기 위해 걸리는 시간 또한 단축시켜 줍니다.
notion image
(a)는 한 레이어의 네트워크를 이용하여 L2 loss를 사용했을 때, (b)는 동일한 문제에 대하여 logistic loss를 사용한 경우입니다. (c), (d)는 이를 3-hidden-layer MLP로 확장하고 sigmoid activation을 사용하여 학습한 결과입니다. (a)와 (b)를 보면, Deconv의 초기 수렴 값이 매우 빠른 것을 확인할 수 있습니다.
CIFAR, ImageNet 데이터셋에서 다양한 네트워크들을 이용하여 실험한 결과입니다. BN #은 batch norm을 이용하여 # iteration동안 학습한 것이며, ND #은 network deconvolution을 적용한 것입니다. 결과를 보면, 열개나 되는 다양한 네트워크의 종류를 막론하고, (초기) epoch에서는 BN에 비해 ND의 성능이 월등하게 나타났습니다.
notion image
notion image
특히 VGG-11의 ND top-1 결과(71.95%)는 VGG-13의 BN top-1 결과로 알려진 71.55%보다도 높아, deconv 학습이 아키텍처의 개선보다도 더 좋은 효과를 낼 수 있다는 것을 보여주고 있습니다.
ND는 convolution layer가 포함된 다른 task들에도 확장이 가능합니다. 굳이 convolution layer가 아니더라도 1*1 conv로 치환하여 deconvolution을 하는 것이 가능하기 때문에, 다양한 분야에 적용이 가능할 것으로 보입니다.
 
Share article