
초기 Seq2Seq 모델은 주로 RNN(순환 신경망)을 활용하여 구현되었다.
RNN은 시퀀스 데이터를 처리하는 데 뛰어난 성능을 보인 네트워크였지만, 다음과 같은 한계점이 존재하였다.
기울기 폭발 혹은 소실 : 신경망이 깊어질수록, 시퀀스가 길어질수록 그래디언트가 점점 커지거나 소실하는 현상.
장기 의존성 : 긴 시퀀스의 앞 부분과 뒷 부분의 연관성은 학습하기 어려움.
위 한계점들을 해결하기 위해 Attention 메커니즘이 제안되었다.
어텐션은 모델이 입력 시퀀스의 중요한 부분에 집중하여 관련성이 높은 정보를 효율적으로 처리할 수 있도록 하였다.
따라서 Attention과 RNN이 결합된 형태의 네트워크가 Seq2Seq의 새로운 표준으로 사용되었다.
Transformer는 오로지 Attention 메커니즘만을 사용해 Seq2Seq를 구현한 아키텍처이다.
이 모델은 복잡한 RNN 구조 없이 전체 시퀀스를 한번에 처리할 수 있도록 설계되었다.
이로 인해 학습 속도가 크게 향상되었으며, 더 긴 시퀀스와 더 깊은 네트워크를 구성할 수 있게 되었다.
Transformer는 Seq2Seq와 마찬가지로 특정한 문제에 국한되는 네트워크가 아니기 때문에 다양한 문제에 범용적으로 적용이 가능하다는 장점도 있다.
트랜스포머는 매우 혁신적인 아키텍처로 여겨지며, 'Attention is All You Need'라는 논문을 통해 소개되었다.
논문의 저자들이 트랜스포머를 통해 해결하고자 했던 문제들에 대해 자세히 살펴보자.
Transformer는 오직 Attention 메커니즘만으로 구성하여 Encoder-Decoder 구조를 구현하도록 설계되었다.
현실 세계의 데이터는 대부분 시계열 데이터이다.
시계열 데이터는 여러 개의 연속된 데이터 포인트로 구성되며, 일반적인 데이터보다 복잡하다.
따라서 이를 효과적으로 인코딩하여 의미 있는 벡터로 표현하는 것은 매우 중요하고도 어려운 문제이다.
이는 Attention 메커니즘을 통해 어느정도 해결할 수 있었다.
Attention은 특정 데이터 포인트가 다른 데이터 포인트와 얼마나 관련되어 있는지 파악하고, 이를 기반으로 입력 데이터의 전체적인 맥락을 파악할 수 있게 했다.
특히, Attention은 전체 데이터 포인트(Global Encoding)를 고려하여 각 데이터 포인트의 중요도를 파악하고, 이를 기반으로 전체 데이터를 압축한 벡터를 생성하도록 한다.
이러한 메커니즘은 RNN이 시계열 데이터를 순차적으로만 처리하는 것과 대비된다.
트랜스포머는 Attention의 이러한 특징을 통해 시계열 데이터와 장기 의존성 문제를 효과적으로 처리하고자 하였다.
Multi-head attention
트랜스포머는 동일한 데이터에 어텐션 메커니즘을 병렬로 적용하여 데이터의 다양한 측면을 동시에 고려할 수 있도록 하였다.
이는 더 풍부하고 다차원적인 데이터 표현을 얻는 결과를 가져온다.
Self-attention
셀프 어텐션은 입력 데이터 내 각 요소가 서로 어떻게 연관이 있는지 모델링하는 방식이다.
이 메커니즘은 입력 시퀀스 내 각 요소를 'Query'로 간주하고, 해당 'Query'와 입력 시퀀스 내 모든 요소들('Keys')과의 관계를 평가한다.
query : key = value
따라서 각 쿼리와 키들 사이의 가중치(어텐션 점수)가 계산되며, 각 쿼리와 가장 관련성이 높은 정보가 강조된다.
이런 메커니즘은 특히 장기 의존성 문제를 해결하는 데 유용하였다.
셀프 어텐션 메커니즘 덕분에 시퀀스 내에서 멀리 떨어진 요소 간의 연관성(상호 작용)도 효과적으로 포착할 수 있다.
크로스 어텐션은 주로 디코더 부분에서 활용되며, 인코더에서 생성된 표현과 디코더의 현재 입력 사이의 상호 작용을 모델링하는 데 사용된다.
디코더는 인코더가 생성한 정보를 기반으로 출력 시퀀스의 다음 요소를 예측하는데, 이를 크로스 어텐션이라고 한다.
이러한 메커니즘은 특히 기계 번역과 같이 입력 시퀀스를 다른 형태의 출력 시퀀스로 변환하는 작업에 필수적이다.
크로스 어텐션은 인코더와 디코더 사이의 교차되는 정보 흐름을 나타내며, 디코더의 Query가 인코더의 Key, Value와 상호작용하는 방식으로 구현된다.
어텐션 자체만으로는 입력 데이터의 순서 정보를 반영하지 못한다.
트랜스포머는 입력 임베딩 과정에서 순서 정보를 추가하는 방식으로 이러한 문제를 해결하였다.
포지셔널 인코딩은 시퀀스의 각 요소 위치에 대한 정보를 임베딩 벡터에 추가하여 모델이 단어의 순서를 인식할 수 있도록 한다.
처음 트랜스포머에서 제안된 포지셔널 인코딩 방법은 사인 함수와 코사인 함수를 조합하여 각 위치에 고유한 값을 할당하는 것이었다.
이러한 방식은 모델이 임의의 길이의 시퀀스를 처리할 수 있도록 하며, 위치 정보를 효율적으로 모델에 통합하도록 하였다.
이후 연구에서는 기존 포지셔널 인코딩 방식의 대안들이 제안되었다.
학습 가능한 포지셔널 인코딩 : 포지셔널 인코딩 값을 모델 학습 과정에서 함께 학습하도록 한다. 이는 모델이 데이터에 특화된 위치 정보를 스스로 학습하도록 한다.
상대적 포지셔널 인코딩 : 단어 간 절대적 위치 대신 상대적 위치 정보를 사용하는 방식이다. 이는 긴 시퀀스를 다룰 때 효과적이며, 문맥에 맞게 단어 사이의 관계를 더욱 유연하게 모델링할 수 있다.
상황에 맞는 포지셔널 인코딩 방법의 적용은 모델의 성능과 정교한 언어 처리를 위해 중요하다.
기존 순환 신경망(RNN)과 같은 모델들은 시퀀스의 각 요소를 순차적으로 처리하였다.
이는 다음 요소를 처리하기 위해선 이전 요소의 처리가 완전히 끝나야된다는 의미이며, 이로 인해 시퀀스가 길어질수록 처리 시간이 기하급수적으로 증가하였다.
트랜스포머는 어텐션 메커니즘으로 시퀀스 내의 모든 요소를 병렬적으로 처리하므로 빠른 인코딩을 가능하게 하였다.
트랜스포머는 Encoder-Decoder 구조를 어텐션 메커니즘만으로 구현하였기 때문에 단순한 아키텍처를 제공한다.
트랜스포머의 인코더와 디코더는 여러 레이어의 집합이며, 각 레이어는 Multi-Head attention + Position-wise feed-forward network로 구성되어 있다.
이러한 구조의 단순성이 갖는 특징은 다음과 같다.
모듈화 : 트랜스포머의 인코더와 디코더는 재사용 가능한 모듈로 구성되어 있어, 필요에 따라 조합하거나 확장하기가 용이하다.
표준화된 레이어 : 트랜스포머의 각 레이어는 멀티 헤드 어텐션과 피드 포워드 네트워크로 이루어져 있으며, 이러한 레이어가 반복되는 구조이다. 이로 인해 모델의 구조를 이해하기 쉬우며, 구현과 수정이 용이하다.
병렬 처리 : 트랜스포머는 병렬 처리에 최적화된 구조이며, 이는 모델의 학습과 추론 속도를 높여준다.
유연성 : 트랜스포머는 다양한 크기와 형태의 입력 데이터를 처리할 수 있는 유연성을 제공한다. 이는 포지셔널 인코딩을 통해 구현되는데, 시퀀스의 길이에 상관 없이 모델이 순서 정보를 효과적으로 활용할 수 있기 때문이다.
이러한 단순성으로 인해 한번의 코딩만으로도 소규모 모델 및 대규모 모델에 모두 대응이 가능하며, 모델의 이해와 확장, 적용을 용이하게 하였다.
트랜스포머는 레이어 정규화와 잔차 연결을 통해 학습 과정을 안정화하였다.
레이어 정규화(Norm layer)
각 레이어의 출력을 정규화하여 학습 과정에서 발생할 수 있는 수치적 불안정성을 줄이고 모델이 더 빠르게 수렴하도록 돕는다.
즉, 학습 과정에서 파라미터 스케일과 이동 변화에 강인한 모델이 되도록 한다.
잔차 연결
정보는 각 레이어를 거치면서 손실될 수 있다. 이를 방지하기 위해 트랜스포머의 각 레이어는 입력값에 대한 출력값을 더하는 잔차 연결을 포함한다.
잔차 연결은 정보 손실 방지에 더해 소실되는 기울기 문제를 완화할 수 있다. 따라서 더 깊은 네트워크에서도 학습 안정성을 높일 수 있다.
거기에 더해 어텐션 메커니즘은 시퀀스 내 각 요소가 전체 시퀀스와 어떻게 상호작용하는지 동적으로 결정할 수 있으므로, 불필요한 정보의 영향을 줄이고 학습의 효율성을 높인다.
트랜스포머를 더욱 강력하고 유연한 아키텍처로 만들어준 메커니즘은 사전 학습과 미세 조정의 패턴 일반화이다.
이 학습 패턴은 트랜스포머 모델을 다양한 문제에 적용하고 높은 성능을 달성하는 데 크게 기여하였다.
트랜스포머의 범용성은 개발자들이 복잡한 신경망 아키텍처를 직접 설계하지 않고도, 기존에 사전 학습된 트랜스포머 모델을 적용하여 다양한 문제를 해결 할 수 있도록 지원한다.
이는 시간과 자원이 제한된 상황에서 매우 효율적이며, 안정적으로 높은 성능을 달성할 수 있다는 큰 장점을 시사한다.
이러한 사적 학습 및 미세 조정 패턴은 실질적으로 인공 신경망의 표준화를 이루는 결과를 가져왔으며, 트랜스포머가 다양한 분야에서 널리 채택되는 주요 이유 중 하나이다.
트랜스포머는 N21, N2N, N2M과 같은 다양한 형태의 입력과 출력을 다루는 Seq2Seq 작업에 매우 효과적인 아키텍처이다.
덕분에 트랜스포머를 기반으로 한 모델이 매우 다양한 분야(NLP, CV, Generation, ...)에서 활용되고 있다.