Position Encoding의 종류와 분석

by 박승원 (http://swpark.me/)

Prologue

​Position Encoding(이하 PE)은 자연어/이미지와 같은 데이터를 이루는 토큰/픽셀의 위치 정보 및 그들 사이의 순서 정보를 나타내기 위한 수단으로, 대개 Transformer를 통해 그 쓰임새가 알려졌다. 처음에는 자연어 처리를 위해 제시되었던 Transformer가 요즘은 분야를 막론하고 쓰이고 있는 만큼, PE 또한 이미지/음성 관련 논문에서도 자주 등장하는 개념이 되었다. 또한, Transformer가 아니더라도 PE와 유사한 개념이 여러 곳에서 제시된 바가 있고, 그 자체만으로도 활발한 연구 주제가 되고 있다.​

Sinusoidal PE for Transformer

​우선은 가장 기본적인 예시로 Transformer에서의 Sinusoidal PE를 짚고 넘어가려 한다. 이 개념에 대해 이미 익숙한 독자라면, 바로 다음 절로 넘어가도 좋다.

Permutation equivariance of Multi-Head Self-Attention

​사실 Transformer를 통해 PE가 주목을 받게 된 까닭에는 그것이 PE 없이는 아예 작동할 수 없다는 점이 컸다고 볼 수 있겠다. Transformer를 구성하는 Multi-Head Self-Attention layer는 permutation equivariant한 특성을 갖는다. 예를 들어, (1, 2, 3)이 입력될 때 (a, b, c)와 같은 출력을 낸다면, (1, 3, 2)가 입력되었을 때는 (a, c, b)가, (2, 3, 1)이 입력되었을 때는 (b, c, a)가 출력되는 것이다. 해당 layer가 왜 이런 특성을 갖는지는 간단한 수식 전개를 통해 증명할 수 있을 것이다.​

Sinusoidal PE for representing order of elements

​그렇다면 어떤 식으로 Transformer에 원소들의 위치/순서 정보를 제공해줄 것인가가 관건인데, 결론적으로는 사인파(sin, cos 두 가지)가 사용된다. 구체적으로는, 위치 정보를 제공할 대상이 되는 word embedding의 차원에 해당되는 개수의 사인파를 구성해, 각각의 word embedding에 element-wise하게 더해준다. 이것이 Sinusoidal PE이다.

On the learnability of PE

​우리가 접하는 대부분의 PE는 삼각함수와 같은 고정된 함수에 의해 계산된 값을 사용하지만, 이 또한 학습 가능하게 (learnable) 만들지 못할 이유는 없다. Transformer 논문에서도 sinusoidal 대신 learnable한 PE를 시도해봤지만, 거의 동일한 성능을 띠기에 입력 길이에 대한 일반화를 위해 sinusoidal을 택했던 사연이 있었다. 이처럼 고정된 값의 PE를 사용하는 경우가 대부분이지만, 이 글에서 소개할 논문 중 몇 가지는 learnable한 PE로 해석될 수 있기도 하니 참고하길 바란다.​

PE for CNN

​CNN은 동일한 필터가 데이터의 모든 영역에 대해 공유되어 적용되므로, 각 영역에서 필터가 적용될 때를 생각해보면 해당 영역이 이미지 상에서 어떤 위치에 놓여 있는지 직접적으로 알아내고 활용할 방법이 없다. 이러한 문제 때문에 CNN에 대해서도 PE를 제공하는 것이 도움이 될 때가 있고, 이 절에서는 그 사례를 몇 가지 소개하려 한다.​

CoordConv / Spatial Broadcast Decoder

​Computer Vision 분야에서 PE가 적용된 가장 이른 예시 중 하나는 CoordConv이다. CoordConv를 제시한 논문이 주목한 문제는, 2차원 좌푯값 (x, y)를 받아 그에 해당하는 공간을 pixel space 상에 그려내는 간단한 toy task를 deep CNN이 잘 해내지 못한다는 점을 지적하고 그를 PE로 해결하는 것이다. 여기에서 사용된 PE는 아주 간단하다. (C, H, W) 차원의 입력 텐서가 있다고 할 때, 가로/세로방향으로 -1에서 1까지 선형적으로 증가하게끔 채워넣은 (H, W) 차원의 텐서 두 가지를 channel 차원에서 concat하여 (C+2, H, W) 차원이 되게끔 만드는 것이다. 이렇게 할 경우 CNN에 위치 정보를 직접적으로 scalar로써 제공할 수 있게 되고, 그에 따라 앞서 언급한 toy task를 잘 수행할 수 있게 된다는 것이다.​

StyleGAN

​StyleGAN에서 사용된 FFHQ dataset을 제작할 때 얼굴이 이미지 중앙에 위치하도록 정렬되어있다는 점을 고려하면, 위쪽에는 머리카락이, 아래쪽에는 턱이 있는 등 위치에 따라 구성 요소가 어느 정도 정해져 있다. 따라서 StyleGAN의 generator에 대해서도 일종의 PE를 제공해준다면 도움이 될 것이라 예상해 볼 수 있는데, 이미 PE 역할을 수행한다고 해석할 수 있는 부분이 있다: 바로 4x4x512 constant 부분이다.​

Height-driven Attention Networks (HANet)

​데이터 분포와의 연관성으로 인해, instance segmentation에 있어서도 위치(높이) 정보가 중요할 수 있다. HANet 논문의 제목은 “Cars can’t fly up in the sky” 이다. 말 그대로 자동차는 항상 땅에 있기 때문에, 사진에서도 대부분 아래쪽에 위치할 것이다. 실제로 urban-scene segmentation dataset으로 유명한 Cityscapes dataset을 기준으로 분석해볼 때, 사진에서의 위치에 따라 class 분포가 크게 차이가 났다고 한다 (HANet 논문에서의 Figure 1).​

Zero-padding

​우리의 불쌍한 CNN은 위치 정보가 너무 알고 싶었던 것인지, PE를 받지 않는 상황에서도 각 영역의 위치 정보를 조금이나마 알아내는 방법을 터득해냈던 것으로 드러났다. 그 방법은 바로 zero-padding을 활용하는 것으로, 첫 layer에서 zero-padding을 활용해 가장자리 부분의 feature에 “여기는 이미지의 왼쪽 가장자리다”라는 정보를 담고, layer를 하나씩 거쳐가며 위치 정보를 이미지 전체에 대해 전달시키는 방식으로 말이다.​

Other types of PE for Transformer variants

​서론에서 언급했듯 이제는 Transformer가 데이터 유형을 불문하고 온갖 task에 대해 사용되고 있기에, 각 상황에 맞는 variant 또한 활발히 연구되고 있다. 따라서 PE의 종류도 다양하게 제시되고 있다. 이 절에서는 그들에 대해 사례를 위주로 소개하려 한다.​

Absolute PE

​Transformer에서 사용된 가장 기본적인 형태로, n번째 위치를 나타내기 위해 n에 대한 함수로 PE를 계산하는 방식이다. 이렇게 절대적인 위치를 기반으로 PE를 만들어내더라도 토큰 사이의 상대적인 관계는 유지되어야 하는데, Sinusoidal PE에서 사용되는 삼각함수가 이를 만족하고, 이는 삼각함수의 덧셈정리를 통해 증명된다.​

Relative PE

​PE를 Transformer 내부 attention에서의 key-query matching matrix에 더해주는 방식이다. 구체적으로는, key를 이루는 i번째 요소와 query를 이루는 j번째 요소 사이의 dot prouct에 대해, (i-j) 값을 기반으로 learnable한 lookup table로부터 PE를 가져와 더해주는 것이다. 이 경우 Sinusoidal PE에서와 같이 특정 조건을 만족하는 PE를 계산하는 함수를 설계하기 위해 노력할 필요가 없어지는 장점이 있다. 다만 |i-j|가 너무 커질 경우 (16 이상) 일정한 index로 clip해 활용해야 한다는 까다로운 면이 있는데, 구체적으로 어떤 단점이 있을지는 필자가 잘 알지 못해 말을 아끼려 한다.​

Complex PE

​PE가 갖춰야 할 조건을 수학적으로 분석한 결과 복소수를 사용하는 유일한 해가 있음을 보인 논문이 있다. 다만 이렇게 complex PE를 사용할 경우 NN 또한 complex가 되어야 해서, 현재로서는 활용되기 어려운 점이 있다. 따라서 여기서는 complex PE라는 것이 있다는 사실만 언급하고, 자세히는 다루지 않으려 한다. 관심 있는 독자는 References에 있는 해당 논문을 읽어보길 바란다.​

No PE — Convolutional context

​Transformer를 사용하기 전에 convolution과 같이 order-aware한 layer를 거친다면 별도로 PE를 사용하지 않아도 된다. 이 방법을 적용한 가장 유명한 사례로 wav2vec 2.0 이 있다.​

Related Topics​

MLP-based Neural Rendering

​최근 NeRF를 비롯해 MLP를 활용하여 이미지를 합성해내는 연구가 활발히 이뤄지고 있다. 구체적으로는, 합성하고자 하는 이미지의 각 픽셀에 대해 좌푯값을 입력으로 받아 해당 픽셀에서의 RGB 값을 출력으로 내는 MLP를 학습하는 것이다. MLP에 위치 정보를 제공하기 위해 단순히 좌푯값 자체를 입력으로 사용하기보다는, NeRF의 경우 앞서 다뤘던 Sinusoidal PE를 도입했고, 다른 논문에서는 Fourier feature라는 개념을 도입해 고주파 성분을 더 빠르게 학습할 수 있도록 만들기도 했다. 관심 있는 독자는 가장 아래의 References에 기재된 논문들을 읽어보길 바란다.​

PE for representing timestep of iterative network

​동일한 parameter를 사용하는 network를 하나의 입력에 대해 반복해서 여러 번 적용해야 할 경우, network 입장에서 해당 입력이 몇 번째로 적용되는 것인지 직접적으로 알 수 있는 수단을 제공하는 것이 좋을 수 있다. 가장 대표적인 예시가 DDPM(Denoising Diffusion Probabilistic Model)이라는 생성모델이고, 해당 논문과 그로부터 영감을 받았던 WaveGrad에서는 짤막하게나마 “Transformer-style”의 Sinusoidal PE를 사용했다는 언급이 있다. 또한, Flow 기반 생성모델에 대한 parameter sharing을 연구한 NanoFlow에서는 각각의 step을 알 수 있는 Flow Indication Embedding을 제공하는데, 이는 learnable한 PE로 해석될 수 있겠다.​

Hypernetworks

​이 글의 두 번째 절에서 언급했던 CNN의 한계점 중 하나는, 그것이 적용되는 위치에 따라 다른 weight가 사용되어야 할 수도 있음에도 불구하고 항상 동일한 weight가 공유되어 사용된다는 것이다. 이를 해결하기 위한 방법 중 하나는 CNN의 weight 자체를 입력값으로부터 생성해내는 Hypernet, 즉 NN을 만들어내는 NN을 학습시키는 것이다. 이는 이 글의 주제인 PE와 직접적인 관련이 (아직은) 없지만, CNN에 사용된 inductive bias로 인해 발생하는 문제를 해결하기 위한 방법으로써 PE와 축을 나란히 한다는 점이 있다. 이 때문에 필자는 가까운 미래에 PE와 Hypernet을 연관지어 생각하는 연구가 나올 것이라고 예상해본다.​

Epilogue

​지금까지 여러 논문의 사례를 중심으로 PE의 종류에 대해 알아보며 분석했다. 작성해놓고 보니 짧지 않은 글이 되었는데, 몇 가지 takeaway를 나열하면 아래와 같다:​

References

​이 글에서 언급된 논문을 여기에 나열한다. 본문에서 언급된 순서로 정렬되어 있으며, 검색의 편의성을 위해 학회 게재 여부와 무관하게 일괄적으로 arXiv 링크를 달아두었다.​

Sinusoidal PE for Transformer​

PE for CNN​

  • An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution (arXiv:1807.03247)
  • Spatial Broadcast Decoder: A Simple Architecture for Learning Disentangled Representations in VAEs (arXiv:1901.07017)
  • A Style-Based Generator Architecture for Generative Adversarial Networks (arXiv:1812.04948)
  • Positional Encoding as Spatial Inductive Bias in GANs (arXiv:2012.05217)
  • Cars Can’t Fly up in the Sky: Improving Urban-Scene Segmentation via Height-driven Attention Networks (arXiv:2003.05128)
  • How Much Position Information Do Convolutional Neural Networks Encode? (arXiv:2001.08248)​

Other types of PE for Transformer variants​

  • Self-Attention with Relative Position Representations (arXiv:1803.02155)
  • Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context (arXiv:1901.02860)
  • An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (arXiv:2010.11929)
  • Encoding word order in complex embeddings (arXiv:1912.12333)
  • Transformers with convolutional context for ASR (arXiv:1904.11660)
  • wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations (arXiv:2006.11477)​

Related Topics

​MLP-based Neural Rendering​

  • Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains (arXiv:2006.10739)​