AI 101
트랜스포머 신경망이란 무엇인가요?

트랜스포머 신경망 설명
트랜스포머는 순차 데이터를 처리하고 해석하는 데 특화된 일종의 머신러닝 모델로, 자연어 처리 작업에 최적화되어 있습니다. 머신러닝 트랜스포머가 무엇이며 어떻게 작동하는지 더 잘 이해하기 위해, 트랜스포머 모델과 이를 구동하는 메커니즘을 자세히 살펴보겠습니다. 이 글에서는 다음을 다룹니다:
- 시퀀스-투-시퀀스 모델
- 트랜스포머 신경망 아키텍처
- 어텐션 메커니즘
- 트랜스포머와 RNN/LSTM의 차이점
시퀀스-투-시퀀스 모델
시퀀스-투-시퀀스 모델은 한 유형의 시퀀스를 다른 유형의 시퀀스로 변환하는 데 사용되는 NLP 모델의 한 유형입니다. 순환 신경망 모델이나 장단기 메모리(LSTM) 모델과 같은 다양한 유형의 시퀀스-투-시퀀스 모델이 있습니다. RNN과 LSTM과 같은 기존의 시퀀스-투-시퀀스 모델은 이 글의 주요 주제는 아니지만, 트랜스포머 모델이 어떻게 작동하며 왜 기존 시퀀스-투-시퀀스 모델보다 우수한지 이해하기 위해서는 이들에 대한 이해가 필요합니다. 간단히 말해, RNN 모델과 LSTM 모델은 다양한 시간 단계에서 입력 데이터를 분석하는 인코더 및 디코더 네트워크로 구성됩니다. 인코더 모델은 입력 데이터의 단어에 대한 인코딩된 표현을 형성하는 역할을 합니다. 인코더 네트워크는 각 시간 단계마다 입력 시퀀스와 시리즈의 이전 시간 단계에서 온 은닉 상태를 취합니다. 데이터가 네트워크를 통과하면서 은닉 상태 값이 업데이트되며, 마지막 시간 단계에서 “컨텍스트 벡터”가 생성됩니다. 이 컨텍스트 벡터는 디코더 네트워크로 전달되어, 해당 시간 단계에 대한 입력 단어와 가장 잘 짝을 이루는 단어를 예측함으로써 목표 시퀀스를 생성하는 데 사용됩니다. 이러한 모델은 “어텐션 메커니즘”을 사용하여 향상될 수 있습니다. 어텐션 메커니즘은 네트워크가 적절한 출력을 생성하기 위해 입력 벡터의 어떤 부분에 집중해야 하는지를 정의합니다. 달리 말하면, 어텐션 메커니즘은 트랜스포머 모델이 하나의 입력 단어를 처리하면서도 다른 입력 단어에 포함된 관련 정보에도 주의를 기울일 수 있게 합니다. 어텐션 메커니즘은 관련 정보를 포함하지 않는 단어들을 마스킹하기도 합니다.
트랜스포머 신경망 아키텍처
어텐션 메커니즘에 대해서는 나중에 더 자세히 다루겠지만, 지금은 트랜스포머 신경망의 아키텍처를 상위 수준에서 살펴보겠습니다. 일반적으로, 트랜스포머 신경망은 다음과 같이 생겼습니다: 
위치 인코딩과 단어 벡터
트랜스포머 신경망은 일련의 입력을 받아 이 입력들을 두 개의 다른 시퀀스로 변환하는 방식으로 작동합니다. 트랜스포머는 단어 벡터 임베딩 시퀀스와 위치 인코딩 시퀀스를 생성합니다. 단어 벡터 임베딩은 신경망이 처리할 수 있는 수치 형식으로 표현된 텍스트일 뿐입니다. 한편, 위치 인코딩은 현재 단어가 입력 문장에서 다른 단어들과 관련하여 어떤 위치에 있었는지에 대한 정보를 포함하는 벡터화된 표현입니다. RNN이나 LSTM과 같은 다른 텍스트 기반 신경망 모델은 입력 데이터의 단어를 표현하기 위해 벡터를 사용합니다. 이러한 벡터 임베딩은 단어를 상수 값에 매핑하지만, 단어가 다른 맥락에서 사용될 수 있기 때문에 이는 제한적입니다. 트랜스포머 네트워크는 단어 벡터가 문장 내 단어의 위치에 따라 다른 값을 취할 수 있도록 사인 함수를 사용하여 단어 값을 더 유연하게 만듦으로써 이 문제를 해결합니다. 이를 통해 신경망 모델은 벡터가 트랜스포머 네트워크의 계층을 통과한 후에도 입력 단어들의 상대적 위치에 대한 정보를 보존할 수 있습니다. 위치 인코딩과 단어 벡터 임베딩은 합산된 후 인코더와 디코더 네트워크 모두에 전달됩니다. 트랜스포머 신경망이 RNN 및 LSTM과 마찬가지로 인코더/디코더 스키마를 사용하지만, 이들 사이의 한 가지 주요 차이점은 모든 입력 데이터가 동시에 네트워크에 공급되는 반면, RNN/LSTM에서는 데이터가 순차적으로 전달된다는 점입니다. 인코더 네트워크는 입력을 네트워크가 학습할 수 있는 표현으로 변환하는 역할을 하고, 디코더 네트워크는 그 반대로 인코딩을 출력 문장에서 가장 가능성 높은 단어를 생성하는 데 사용되는 확률 분포로 변환합니다. 중요한 것은 인코더와 디코더 네트워크 모두 어텐션 메커니즘을 가지고 있다는 점입니다. GPU는 병렬 처리가 가능하기 때문에, 여러 개의 어텐션 메커니즘이 병렬로 사용되어 모든 입력 단어에 대한 관련 정보를 계산합니다. 한 번에 여러 단어에 “주의”를 기울일 수 있는 이 능력, 즉 “멀티 헤드” 어텐션은 신경망이 문장 내 단어의 맥락을 학습하는 데 도움이 되며, 이는 트랜스포머 네트워크가 RNN 및 LSTM에 비해 가지는 주요 이점 중 하나입니다.
어텐션 메커니즘
어텐션 메커니즘은 트랜스포머 네트워크의 가장 중요한 부분입니다. 어텐션 메커니즘은 트랜스포머 모델이 일반적인 RNN 또는 LSTM 모델의 주의 한계를 넘어설 수 있게 합니다. 기존의 시퀀스-투-시퀀스 모델은 모든 중간 상태를 버리고, 입력 시퀀스에 대한 예측을 생성하기 위해 디코더 네트워크를 초기화할 때 최종 상태/컨텍스트 벡터만 사용합니다. 입력 시퀀스가 상당히 짧을 때는 최종 컨텍스트 벡터만 남기고 나머지를 버리는 방식이 괜찮게 작동합니다. 그러나 입력 시퀀스의 길이가 증가하면 이 방법을 사용할 때 모델의 성능이 저하됩니다. 긴 입력 시퀀스를 단일 벡터로 요약하는 것이 상당히 어려워지기 때문입니다. 해결책은 모델의 “주의”를 증가시키고 중간 인코더 상태를 활용하여 디코더용 컨텍스트 벡터를 구성하는 것입니다. 어텐션 메커니즘은 주어진 토큰에 대한 인코딩이 생성될 때 다른 입력 토큰들이 모델에 얼마나 중요한지를 정의합니다. 예를 들어, “it”은 일반 대명사로, 성별을 알 수 없는 동물을 지칭할 때 자주 사용됩니다. 어텐션 메커니즘은 트랜스포머 모델이 현재 맥락에서 “it”이 다람쥐를 가리킨다고 판단할 수 있게 해줍니다. 왜냐하면 입력 문장의 모든 관련 단어를 검토할 수 있기 때문입니다. 어텐션 메커니즘은 세 가지 다른 방식으로 사용될 수 있습니다: 인코더-디코더, 인코더 전용, 디코더 전용. 인코더-디코더 어텐션은 디코더가 출력을 생성할 때 입력 시퀀스를 고려하게 하며, 인코더 전용 및 디코더 전용 어텐션 메커니즘은 각각 네트워크가 이전 시퀀스와 현재 시퀀스의 모든 부분을 고려하게 합니다. 어텐션 메커니즘의 구성은 다섯 단계로 나눌 수 있습니다:
- 모든 인코더 상태에 대한 점수 계산.
- 어텐션 가중치 계산
- 컨텍스트 벡터 계산
- 이전 시간 단계 출력으로 컨텍스트 벡터 업데이트
- 디코더로 출력 생성
첫 번째 단계는 디코더가 모든 인코더 상태에 대한 점수를 계산하는 것입니다. 이는 기본적인 순방향 신경망인 디코더 네트워크를 훈련시킴으로써 수행됩니다. 디코더가 입력 시퀀스의 첫 번째 단어에 대해 훈련될 때는 아직 내부/은닉 상태가 생성되지 않았으므로, 일반적으로 인코더의 마지막 상태가 디코더의 이전 상태로 사용됩니다. 어텐션 가중치를 계산하기 위해 소프트맥스 함수가 사용되어 어텐션 가중치에 대한 확률 분포를 생성합니다. 어텐션 가중치가 계산되면 컨텍스트 벡터를 계산해야 합니다. 이는 각 시간 단계마다 어텐션 가중치와 은닉 상태를 함께 곱함으로써 수행됩니다. 컨텍스트 벡터가 계산된 후, 이전 시간 단계에서 생성된 단어와 함께 사용되어 출력 시퀀스의 다음 단어를 생성합니다. 디코더는 첫 번째 시간 단계에서 참조할 이전 출력이 없기 때문에, 종종 특별한 “시작” 토큰이 대신 사용됩니다.
트랜스포머와 RNN/LSTM의 차이점
RNN과 LSTM의 차이점을 간략히 살펴보겠습니다. RNN은 입력을 순차적으로 처리하며, 입력 단어들이 네트워크를 통과하면서 은닉 상태 벡터가 유지되고 변경됩니다. RNN의 은닉 상태는 일반적으로 초기 입력에 대한 관련 정보를 거의 포함하지 않습니다. 새로운 입력이 현재 상태를 자주 덮어쓰기 때문에 정보 손실이 발생하고 시간이 지남에 따라 성능이 저하됩니다. 반면, 트랜스포머 모델은 전체 입력 시퀀스를 한 번에 처리합니다. 어텐션 메커니즘을 통해 모든 출력 단어가 모든 입력 및 은닉 상태의 정보를 받을 수 있어, 네트워크가 긴 텍스트에 대해 더 신뢰할 수 있게 됩니다. LSTM은 더 긴 입력 시퀀스를 처리하도록 조정된 RNN의 수정된 버전입니다. LSTM 아키텍처는 “게이트”라는 구조를 사용하며, “입력 게이트”, “출력 게이트”, “망각 게이트”가 있습니다. 게이트 설계는 RNN 모델에 흔한 정보 손실 문제를 다룹니다. 데이터는 여전히 순차적으로 처리되며, 아키텍처의 순환적 설계로 인해 LSTM 모델을 병렬 컴퓨팅을 사용하여 훈련시키기 어려워 전체 훈련 시간이 더 길어집니다. LSTM 엔지니어들은 종종 네트워크에 어텐션 메커니즘을 추가했으며, 이는 모델의 성능을 향상시키는 것으로 알려져 있었습니다. 그러나 결국 어텐션 메커니즘만으로도 정확도가 향상된다는 사실이 발견되었습니다. 이 발견은 GPU 덕분에 어텐션 메커니즘과 병렬 컴퓨팅을 사용하는 트랜스포머 네트워크의 창조로 이어졌습니다.








