🕚

Kervolutional Neural Networks

Tags
Model Architecture
Created
2021/01/31 08:41
Publication
CVPR'19
Rate
4
Source
https://arxiv.org/abs/1904.03955
Summary
딥러닝 모델에 사용되는 convolution layer는 말그대로 convolution(엄밀히 말하면 수학적인 의미의 convolution 연산과는 조금 다르다고 하지만) 연산을 수행하는 layer인데, 이러한 convolution 연산은 선형 연산이다. 이 페이퍼의 저자는 human visual receptive field가 비선형적인 패턴을 인식할 수 있다는 데에 착안하여, computer vision을 위한 딥러닝 모델에서 receptive field의 주축을 담당하는 convolution layer에 비선형적인 요소를 추가함으로써 보다 강력한 모델을 만들어낼 수 있다고 주장하며, 그 구현체로써의 kervolution layer(kernel convolution layer)를 제안한다. (상세 페이지 참고)
딥러닝 모델에 사용되는 convolution layer는 말그대로 convolution(엄밀히 말하면 수학적인 의미의 convolution 연산과는 조금 다르다고 하지만) 연산을 수행하는 layer인데, 이러한 convolution 연산은 선형 연산이다. 이 페이퍼의 저자는 human visual receptive field가 비선형적인 패턴을 인식할 수 있다는 데에 착안하여, computer vision을 위한 딥러닝 모델에서 receptive field의 주축을 담당하는 convolution layer에 비선형적인 요소를 추가함으로써 보다 강력한 모델을 만들어낼 수 있다고 주장하며, 그 구현체로써의 kervolution layer(kernel convolution layer)를 제안한다.
그 방법 자체는 복잡하지 않은데, 예컨대 일반적인 convolution layer의 연산을 내적 <x,w>=xTw<x, w> = x^T w와 같이 표현할 수 있다면, 모델 성능 강화를 위해 이러한 연산의 비선형 확장인 <φ(x),φ(w)><\varphi(x), \varphi(w)>를 사용할 수 있다는 것이다. 하지만 이러한 연산을 직접적으로 수행하는 것은 연산의 복잡성을 크게 늘리기 때문에, kernel trick을 이용하여 k(x,w)k(x, w)와 같은 kernel 연산을 이용할 것을 제안한다. Kernel에는 대표적으로 Gaussian kernel, polynomial kernel 등이 있는데 위의 reference를 참조하자.
연산에 대해 조금 더 자세하게 생각해보자면, 일단 convolution 연산은 필터 ww와 input vector xx간의 내적을 계산하는데, 내적은 <x,w>=cosθxw<x, w> = \cos{\theta} || x || || w ||와 같이 표현될 수 있으므로 간단히 말해 두 벡터의 유사도를 계산한다고 볼 수 있다. 한편 Gaussian kernel은 다음과 같이 표현될 수 있는데,
G(x,w)=exp(γxw2)=Ci=0(xTw)ii!G(x, w) = \exp{( -\gamma || x - w ||^2 )} = C \sum_{i = 0}^{\infty}{ \frac{ (x^T w)^i }{i!} }
이로써 convolution 연산에서 이루어지는 내적을 무한대 차원으로 확장한 것이라고 볼 수 있겠다. 어쨌거나 조금 더 복잡한(비선형적인) 거리를 계산한다고 볼 수 있다고 이해할 수 있지 않을까.
페이퍼에서는 이러한 kervolution layer를 가지고 이런 저런 실험을 수행하는데, 대표적으로 MNIST 데이터셋에 대해 LeNet의 CNN을 KNN으로 바꾸어 학습을 진행해보는 것, CIFAR나 ImageNet에 ResNet의 CNN을 KNN으로 바꾸어 학습을 진행해보는 것이 있다. 주요하게 볼만한 구석은 1) 기존 모델에 비해 evaluation 어느 정도 좋아졌다는 것, 2) 많은 경우 성능의 convergence가 빠르게 이루어졌다는 것, 3) 비선형 activation layer를 제외해도 좋은 성능을 보여주었다는 것 등이 있다.
하지만 아쉬운 점이 있는데, 현재 SOTA를 이루고 있는 모델의 convolutional layer를 kervolutional layer로 변경하여 SOTA를 갱신했다면 보다 강력한 인상을 줄 수 있었을 것 같다. 특히 복잡한 모델의 경우 성능이 크게 변하지 않았는데, 이는 모델의 과도한 비선형성으로 인해 overfitting 문제가 발생했기 때문일 것이라는 언급이 있었다. 그렇다면 kervolution layer가 기존의 activation layer를 포함한 모델 이상의 비선형 패턴을 잡아낼 수 있다는 증명이 이루어지지 않은 것이 아닌가 하는 의문이 든다. 즉 복잡한 모델에 대해서는 모델 성능의 향상을 기대할 수 없을 수도 있다는 말이다.
그럼에도 불구하고 인간의 인지 능력을 통해 아이디어를 얻어왔다는 점, 그리고 그것을 꽤 직관적이고도 간단한 형태로 구현하여 실험해보았다는 점에서 재밌는 페이퍼였다. 시간이 난다면 직접 적용하여 실험해봐도 좋을 것 같다.
E.O.D.