본문 바로가기
대학원

[인공지능 대학원생으로 살아남기] Transformer 세미나 진행 (1/27)

by Tiabet 2026. 1. 28.
반응형

연구실의 연례행사 중 연구원들끼리 세미나를 진행하는 것이 있다.

연구원 각자 한 개씩 논문을 읽고 발표 및 질의응답을 진행하는 건데, 취지는 각자가 논문을 읽는 데 필요한 시간들을 아끼되, 질의응답 및 토론을 하면서 더 깊은 이해를 하는 것에 있다.

 

세미나의 발표 흐름은 논문들이 나온 순서대로 진행하는 것이 이상적이라고 생각한다. 내가 세미나의 첫 순서를 맡았기 때문에, 현 시대 AI의 가장 필수적이고 기초적인 논문이라 할 수 있는 Transformer를 맡게 되었다.

https://tiabet0929.tistory.com/category/NLP/Transformer

 

'NLP/Transformer' 카테고리의 글 목록

배운 걸 기록하면서 학습 효과를 높이는 것을 도모하고 있습니다.

tiabet0929.tistory.com

트랜스포머는 내가 자연어 공부를 시작할 때부터 쭉 깊은 관심을 갖고 여러 차례 읽었던 논문이기도 하고, 특히 중요한 논문이기에 블로그에 모든 요소들을 자세히 살펴가며 내용을 정리하기도 하였기에 어느 정도 자신이 있었다. 하지만 아는 만큼 보이고 또 그래서 말하고 싶었던 것도 많아서 세미나 준비가 생각보다 오래 걸렸다.

 

세미나 목차는 논문의 원 순서를 충실히 따라가려 노력했다. 

Introduction과 Background는 합쳐서 한 파트로 진행했다. Transformer가 나오기 전에 주류였던 CNN, RNN 기반 SequencetoSequence 모델들을 간략하게만 설명하고, 저자들이 지적한 이러한 모델들의 한계와 함께 이 한계들을 Multi-Head Attention으로 풀 수 있다는 점을 설명했다.

 

그 뒤로는 Model Architecture에 대해서 간단하게 설명하고 (논문 순서에 따라) Embedding과 Softmax에 대해서 먼저 설명했다. 이는 원 논문에서는 뒤쪽에 나오는 내용인데 세미나라는 특성상 이를 먼저 이해하는 게 나을 것 같아서 순서를 앞으로 뺐다.
이번에 나도 공부하면서 처음 안 사실인데, 트랜스포머는 임베딩 결과에 $\sqrt{d_{model}}$ 을 곱해주는 스케일링을 진행하고 있었다. 이에 대해서 왜이런가 찾아보니 두 가지 근거가 있었다. 1. Positional Encoding과의 스케일링 문제 2. Xavier Initialization의 초기화 값들의 문제
이 두 문제는 서로 관련 있는 건데, Xavier Initialization의 초기화 공식은 다음과 같았다.

이게 [-x, x] 범위에 들어오게 Uniform Distribution으로 초기화를 하면 Xavier Uniform Distribution이고, Uniform Distribution, 즉 균등 분포의 분산 공식에 따라 이 분포의 표준편차는 위 식처럼 결정된다. 물론 임베딩 스페이스의 크기는 input이 Vocab size(트랜스포머에선 3만 이상), output이 512가 되어 표준 편차가 매우 작은, 즉 모든 값들이 0에 가깝게 존재할 것이다. 그런데 이게 0에 가까우면 문제가 되는게, Transformer의 Positional Encoding은 sinusoidal하기 때문에, 값이 [-1,1] 사이에 있다. 즉 임베딩 벡터와 위치 벡터를 더해버리면 위치 벡터에 지나치게 의존하게 되어버린다는 것.

내가 계산을 해보니 input을 V=30000, output을 d=512로 계산해보니 표준편차는 0.008 정도가 나온다. 그러면 값들이 -0.0139부터 +0.0139 사이의 값이 전부 동일한 확률로 나온다고 한다. 하지만  $\sqrt{d_{model}}$ 을 곱해주면 표준편차가 0.18로 커져서, 값들이 -0.312 ~ +0.312 사이에서 랜덤하게 나오게 된다. 20배 이상 스케일이 커지는 것.

물론 내가 생각했을 때, input의 dimension이 512가 됐을 때 비로소 완전히 표준편차가 1이 되어야 깔끔하고, Transformer의 저자들이 Scaled dot production attention을 했을 때도 이 표준편차를 1로 만드는 것에 집중한 거 봐도 더 깔끔한 느낌이 들긴 해서 수학적으로 그렇게 완벽한 식은 아닌 것 같다. 실제로 지금은 positional embedding을 쓰는 learnable parameter들로 위치정보까지 학습시키기도 하고.

 

 

그 뒤로는 Attention과 Multi-head attention에 대해서도 쭉 설명하고

FFN, Positonal Encoding, Residual Connection, Layer Normalization까지 다 설명했다.

이 Complexity를 구하는 부분이 이번에 준비하면서 가장 공을 많이 들였다. 1d-cnn을 잘 모르기도 했고, 1d-CNN의 구현 방식이 논문마다 천차만별이다보니 저 complexity가 어떻게 구해지는 것인지 잘 몰랐던 것.

알고 보니 이 때의 1d-CNN을 사용하는 모델들은 k*d크기의 채널로 한 번 보고, 이를 1*kd 행렬로 쭉 펼친 뒤 다시 1*d 차원으로 매핑하는 과정으로 진행한다고 한다. 이걸 앞뒤에 padding을 붙여서 모든 토큰 n에 대해서 반복하니 complexity per layer가 knd^2가 나오게 된 것.

 

$$X = (x_1, x_2, \dots, x_n), \quad x_i \in \mathbb{R}^d\\

X_i^{(k)} = [x_{i-\lfloor k/2 \rfloor}, \dots, x_i, \dots, x_{i+\lfloor k/2 \rfloor}]
\in \mathbb{R}^{k \times d}\\

\mathrm{vec}(X_i^{(k)}) \in \mathbb{R}^{kd}\\

W \in \mathbb{R}^{d \times (kd)}\\

y_i = W \, \mathrm{vec}(X_i^{(k)}) \in \mathbb{R}^d\\

Y = (y_1, y_2, \dots, y_n), \quad y_i \in \mathbb{R}^d\\

\mathcal{O}(k d^2) \quad \text{(per token)}\\

\mathcal{O}(k n d^2) \quad \text{(per layer)}$$

 

수식으로 나타내면 위와 같은 것이었다.

 

개인적으로 Transformer의 training이나 실험 결과 파트는 현재는 그다지 유의미하다고 생각하지 않아서 가볍게만 정리하고 넘어갔다.

마지막으로는 내가 현재 알고 있는 LLM들에서 사용하는 최신기법들을 정리하며 세미나를 마쳤다.

 

 

항상 이런 발표 같은 세미나를 진행하면서 느끼는 건데 내가 대본 같은 걸 준비하지 않고 즉흥적으로 하다 보니 말이 길어지거나 설명이 산만해지는 경향이 있는 것 같다. 내 연구 발표할 때는 그래도 다 머릿속에 있는 거라 쉬운데, 논문리뷰 같은 걸 하면 뭘 말하고 뭘 말하지 않을지 미리 정하지 않아서 발표가 내가 생각해도 너무 엉성한 느낌이 든다.

아무튼 이제 세미나도 내 차례가 끝났으니, 새로운 연구를 제대로 시작할 준비를 할 때가 된 것 같다.

반응형