Position Encoding의 종류와 분석

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

Prologue

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

이 글에서는 PE의 여러 가지 종류에 대해 소개하고, 각각에 대해 간단한 분석을 할 것이다. Transformer에서의 용례에 국한되지 않게 예시를 중심으로 설명하려 한다.​

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가 왜 이런 특성을 갖는지는 간단한 수식 전개를 통해 증명할 수 있을 것이다.​

이 때문에 PE가 없는 Multi-Head Self-Attention을 사용해 어떤 classification task를 수행한다고 할 경우, (자연어의 경우) 문장을 이루는 토큰 사이의 순서가 뒤바뀌어도 같은 출력을 내게 될 것이다. 이것은 자연어 처리의 관점에서 아주 치명적인 문제다. “Alice like oranges”와 “Oranges like Alice”는 의미가 아주 다른 문장들이지만, 두 문장을 이루는 토큰들이 동일하다는 이유로 같은 결과값을 내게 되기 때문이다. (오히려 이러한 permutation equivariance가 필요해서 PE를 사용하지 않는 특수한 경우가 있다: Graph Attention.)​

Sinusoidal PE for representing order of elements

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

​Sinusoidal PE에서 왜 사인파가 사용되는지, 왜 concat이 아닌 element-wise sum을 해도 문제가 없는지 의문을 가져볼 수 있다. 전자에 대해서는 삼각함수의 덧셈정리를 통해 사인파를 사용하는 것이 PE가 순서 정보를 제공하기 위한 조건을 만족시킴을 증명할 수 있고, 후자에 대해서는 다음의 Reddit 댓글을 읽어보길 추천한다: r/ML: [D] Position Encoding in Transformer

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를 잘 수행할 수 있게 된다는 것이다.​

CoordConv와 아주 유사한 사례로 Spatial Broadcast Decoder가 있다. 해당 논문에서 해결하고자 하는 문제는 CoordConv와는 다르게 VAE에서의 원활한 disentanglement를 돕기 위한 것이지만, 가로/세로방향으로 -1에서 1까지 선형적으로 증가하는 형태의 PE를 제공한다는 면에서 CoordConv와 유사하다.​

StyleGAN

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

StyleGAN이 기존 GAN 구조와 구분되는 주된 요소 중 하나는, generator가 latent vector로부터 곧바로 이미지를 생성해내지 않고, 이전 단계에서의 결과물에 대해 latent vector로 AdaIN layer를 통해 style로써 conditioning하는 방식으로 이미지를 생성해낸다는 것이다. 이를 위해 StyleGAN의 가장 첫 단계에는 4x4x512 크기의 learnable constant를 사용한다. (StyleGAN 논문 Table 1에서의 D단계)​

비록 위치 방향으로는 4x4 만큼의 작은 차원밖에 되지 않는 값들이지만, 원본 데이터가 4x4로 downsampling되었을 때에도 위치에 따른 구성 요소의 분포가 달라질 것이라는 점과, CNN이 자체적으로는 필터가 적용되는 각 위치에 대한 정보를 알 방법이 없다는 점을 고려하면, StyleGAN의 4x4x512 learnable constant가 성능 향상을 이뤄낸 것은 그것이 PE 역할을 했던 덕분이라고 해석할 수 있겠다. 실제로 관련 analysis를 수행한 논문이 최근 arXiv에 게재되었으니, 관심 있는 독자는 가장 아래의 References를 참고하기 바란다.​

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).​

이 가정을 토대로, HANet 논문에서는 기존 instance segmentation 네트워크에 위치 정보를 제공하는 Sinusoidal PE를 추가함으로써 더 높은 성능을 낸다. 이 또한 앞서 소개한 다른 사례와 마찬가지로, CNN은 필터가 적용되는 각 영역에서 자신이 어떤 위치에 있는지 알 수 없으므로 그것을 PE로 보완해주면 도움이 된다는 주장을 뒷받침한다.​

Zero-padding

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

이러한 현상에 대한 분석이 더 궁금한 독자는 References에 있는 논문을 참고하길 바란다. 사실 해당 논문에서는 CNN에서 위치 정보가 활용되고 있는 것의 악영향을 주로 다루고 있는데, 필자는 아예 explicit하게 PE를 제공한다면 그 악영향을 줄일 수 있지 않을까 기대해본다.​

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해 활용해야 한다는 까다로운 면이 있는데, 구체적으로 어떤 단점이 있을지는 필자가 잘 알지 못해 말을 아끼려 한다.​

Relative PE는 Transformer-XL에서 사용된 바 있고, 최근에는 Computer Vision 분야에서 이미지 분류를 위해 이미지를 16x16 패치 여러 개로 쪼개 transformer에 넣을 때, 패치 사이의 상대적 (2차원) 위치 관계를 나타내기 위해 사용된 바 있다.​

Complex PE

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

No PE — Convolutional context

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

첫 layer로 convolution을 추가하는 것만으로 Transformer 사용에 있어서 PE의 필요성을 없앨 수 있는 이유를 하나의 toy task에 기반한 예시를 통해 설명해보겠다. NN의 입장에서 데이터를 이루는 요소들의 순서 정보를 알 수 있는지의 여부에 집중하기 위해, 이미 순서대로 나열된 글자들을 받아 그들을 다시 그대로 나열해내는 toy task를 고려하자. 입력으로 [‘가’, ‘A’, ‘@’, ‘=’, ‘%’]와 같이 글자 5개로 이뤄진 배열이 주어질 때, 애석하게도 PE가 없는 Transformer는 글자들 사이의 순서 정보를 알 수 없기 때문에, ‘가A@=%’와 같은 정답을 내놓을 방법이 없다. 하지만 가장 첫 layer를 kernel size 3의 convolution으로 구성하면, 그 뒤를 잇는 Transformer 입장에서는 [‘p가A’, ‘가A@’, ‘A@=’, ‘@=%’, ‘=%p’]와 같은 정보를 얻게 되는 셈이다. (p는 padding을 뜻한다.) 마찬가지로 5가지 원소 사이의 순서는 알 수 없지만, 각 원소 내의 글자들의 순서는 알게 되었기 때문에, 그들을 이어붙이는 것을 학습함으로써 ‘가A@=%’와 같은 정답을 얻을 수 있게 되는 것이다.​

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를 나열하면 아래와 같다:​

•⠀PE는 데이터의 위치/순서 정보를 나타내기 위해 쓰인다.

⠀⠀⠀• Sinusoidal PE가 가장 널리 쓰이고 있다.

•⠀CNN에 대해서도 PE가 중요할 수 있고, 이미 곳곳에서 매우 중요한 역할을 해내고 있다.

⠀⠀⠀• CNN에 PE를 안 줘도 zero-padding으로 학습하고 있었을 수도 있다.​

2021년 현재 딥러닝에 있어서 PE가 상당히 중요한 개념임에도, 단순히 Transformer를 인용하기만 하고 관련된 자료를 모아놓은 곳을 찾아보기 어려워 늘 아쉬웠다. 이번 글을 통해 PE에 관한 내용을 조금이나마 정리할 수 있게 되어 다행이다. 기회가 된다면 PE에 관한 survey paper를 써볼까 하는 생각도 드는데, 그 paper에 내용으로 들어갔으면 하는 부분이 있다면 독자들께 다음 이메일로 연락을 부탁드리고 싶다: yyyyy@snu.ac.kr

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​

  • NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (arXiv:2003.08934)
  • Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains (arXiv:2006.10739)​

PE for representing timestep of iterative network​

HyperNetworks