AI 101
ํธ๋์คํฌ๋จธ ์ ๊ฒฝ๋ง์ด ๋ฌด์์ธ๊ฐ?

트랜스포머 신경망 설명
트랜스포머는 순차적 데이터를 처리하고 해석하는 데 전문적인 기계 학습 모델이며, 자연어 처리 작업에 최적화되어 있습니다. 트랜스포머가 무엇인지 및 어떻게 작동하는지 더 잘 이해하기 위해 트랜스포머 모델과 이를 구동하는 메커니즘을 자세히 살펴보겠습니다.
이 기사에서는 다음을 다룹니다:
- 시퀀스-시퀀스 모델
- 트랜스포머 신경망 아키텍처
- 주의 메커니즘
- 트랜스포머와 RNN/LSTM의 차이
시퀀스-시퀀스 모델
시퀀스-시퀀스 모델은 한 유형의 시퀀스를 다른 유형의 시퀀스로 변환하는 데 사용되는 자연어 처리 모델입니다. 시퀀스-시퀀스 모델에는 순환 신경망 모델 및 장단기 메모리(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를 사용하는 병렬 컴퓨팅을 사용하는 트랜스포머 네트워크의 생성으로 이어졌습니다.












