AI 기초

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

mm
Unite.AI를 Google의 선호 소스에 추가

트랜스포머 신경망 설명

트랜스포머는 순차적 데이터를 처리하고 해석하는 데 전문적인 기계 학습 모델입니다. 기계 학습 트랜스포머가 무엇인지 및 어떻게 작동하는지 더 잘 이해하기 위해 트랜스포머 모델과 작동하는 메커니즘을 자세히 살펴보겠습니다.

이 기사에서는 다음을 다룹니다:

  • 시퀀스-시퀀스 모델
  • 트랜스포머 신경망 아키텍처
  • 주의 메커니즘
  • 트랜스포머와 RNN/LSTM의 차이

시퀀스-시퀀스 모델

시퀀스-시퀀스 모델은 한 유형의 시퀀스를 다른 유형의 시퀀스로 변환하는 데 사용되는 유형의 NLP 모델입니다. 시퀀스-시퀀스 모델에는 여러 가지 유형이 있습니다. 예를 들어, 재귀 신경망 모델과 장단기 메모리(LSTM) 모델이 있습니다.

전통적인 시퀀스-시퀀스 모델인 RNN 및 LSTM은 이 기사의 주요 내용이 아닙니다. 그러나 트랜스포머 모델이 작동하는 방식과 왜 전통적인 시퀀스-시퀀스 모델보다 우수한지 이해하기 위해 이러한 모델을 이해하는 것이 필요합니다.

간단히 말해서, RNN 모델과 LSTM 모델은 인코더와 디코더 네트워크로 구성되어 있으며 입력 데이터를 다양한 시간 단계에서 분석합니다. 인코더 모델은 입력 데이터의 단어를 인코딩된 표현으로 변환하는 역할을 합니다. 각 시간 단계에서 인코더 네트워크는 입력 시퀀스와 이전 시간 단계의 숨겨진 상태를 받습니다. 숨겨진 상태 값은 네트워크를 통해 데이터가 진행됨에 따라 업데이트되며, 마지막 시간 단계에서 “컨텍스트 벡터”가 생성됩니다. 컨텍스트 벡터는 디코더 네트워크에 전달되어 각 시간 단계에서 입력 단어와 가장 잘 짝을 이루는 단어를 예측하여 대상 시퀀스를 생성하는 데 사용됩니다.

이러한 모델은 “주의 메커니즘”을 사용하여 강화할 수 있습니다. 주의 메커니즘은 네트워크가 출력을 생성하기 위해 입력 벡터의 어느 부분에 집중해야 하는지 정의합니다. 즉, 주의 메커니즘을 사용하면 트랜스포머 모델이 하나의 입력 단어를 처리하는 동시에 다른 입력 단어에 포함된 관련 정보에 주의를 기울일 수 있습니다. 주의 메커니즘은 또한 관련 정보를 포함하지 않는 단어를 마스킹합니다.

트랜스포머 신경망 아키텍처

稍後 주의 메커니즘에 대해 더 자세히 설명하겠습니다. 지금은 트랜스포머 신경망의 아키텍처를 높은 수준에서 살펴보겠습니다.

일반적으로 트랜스포머 신경망은 다음과 같은 구조를 가지고 있습니다:

이 일반적인 구조는 네트워크 간에 다를 수 있지만 핵심 구성 요소는 동일합니다. 위치 인코딩, 단어 벡터, 주의 메커니즘, 피드 포워드 신경망입니다.

위치 인코딩과 단어 벡터

트랜스포머 신경망은 입력 시퀀스를 받아 두 개의 다른 시퀀스를 생성합니다. 트랜스포머는 단어 벡터 임베딩과 위치 인코딩의 시퀀스를 생성합니다.

단어 벡터 임베딩은 단어가 숫자 형식으로 표현된 것입니다. 이는 신경망이 처리할 수 있는 형식입니다. 위치 인코딩은 현재 단어가 입력 문장에서 다른 단어와의 상대적인 위치를 포함하는 벡터화된 표현입니다.

다른 텍스트 기반 신경망 모델인 RNN과 LSTM도 입력 데이터의 단어를 벡터로 표현합니다. 그러나 이러한 벡터 임베딩은 단어가 상수 값으로 매핑되므로 제한적입니다. 트랜스포머 네트워크는 단어 값을 더 유연하게 만들기 위해 사인 함수를 사용하여 단어 벡터가 문장에서 단어의 위치에 따라 다른 값을 취할 수 있도록 합니다.

이로 인해 신경망 모델은 트랜스포머 네트워크의 레이어를 통해 벡터가 이동한 후에도 입력 단어의 상대적인 위치에 대한 정보를 유지할 수 있습니다.

위치 인코딩과 단어 벡터 임베딩은 함께 합산되어 인코더와 디코더 네트워크에 전달됩니다. 트랜스포머 신경망은 RNN과 LSTM과 마찬가지로 인코더/디코더 스키마를 사용합니다. 그러나 트랜스포머 신경망과 다른 점은 모든 입력 데이터가 네트워크에 동시에 전달된다는 것입니다. 반면에 RNN과 LSTM은 데이터를 순차적으로 전달합니다.

인코더 네트워크는 입력을 네트워크가 학습할 수 있는 표현으로 변환하는 역할을 합니다. 디코더 네트워크는 인코딩을 대상 문장의 가장 가능성이 높은 단어를 예측하는 확률 분포로 변환하는 역할을 합니다. 인코더와 디코더 네트워크 모두 주의 메커니즘을 가지고 있습니다.

GPU는 병렬 처리가 가능하므로 여러 주의 메커니즘을 병렬로 사용하여 모든 입력 단어에 대한 관련 정보를 계산합니다. 이로 인해 신경망이 문장 내에서 단어의 컨텍스트를 학습할 수 있으며 트랜스포머 네트워크가 RNN과 LSTM보다 우수한 주요优势 중 하나입니다.

주의 메커니즘

주의 메커니즘은 트랜스포머 네트워크의 가장 중요한 부분입니다. 주의 메커니즘은 트랜스포머 모델이 전통적인 RNN 또는 LSTM 모델의 주의 제한을 초월할 수 있도록 합니다. 전통적인 시퀀스-시퀀스 모델은 중간 상태를 모두 폐기하고 디코더 네트워크를 초기화하여 입력 시퀀스에 대한 예측을 생성할 때 마지막 상태/컨텍스트 벡터만 사용합니다.

중간 상태를 모두 폐기하고 마지막 컨텍스트 벡터만 사용하는 방식은 입력 시퀀스가 충분히 작을 때는 괜찮게 작동합니다. 그러나 입력 시퀀스의 길이가 증가하면 모델의 성능이 저하되고 이러한 방법을 사용하면 어려움이 발생합니다. 이는 긴 입력 시퀀스를 단일 벡터로 요약하기가 매우 어렵기 때문입니다. 해결책은 모델의 “주의”를 증가시키고 중간 인코더 상태를 사용하여 디코더에 대한 컨텍스트 벡터를 생성하는 것입니다.

주의 메커니즘은 인코딩을 생성할 때 모델이 입력 토큰의 중요성을 정의하는 방식입니다. 예를 들어, “it”은 일반적으로 성별이 알려지지 않은 동물을 가리킬 때 사용되는 대명사입니다. 주의 메커니즘을 사용하면 트랜스포머 모델이 현재 컨텍스트에서 “it”이 고슴도치에 대한 것임을 결정할 수 있습니다. 모델은 입력 문장의 모든 관련 단어를 검사할 수 있기 때문입니다.

주의 메커니즘은 세 가지 방식으로 사용될 수 있습니다: 인코더-디코더, 인코더 전용, 디코더 전용.

인코더-디코더 주의 메커니즘을 사용하면 디코더가 출력을 생성할 때 입력 시퀀스를 고려할 수 있습니다. 인코더 전용 및 디코더 전용 주의 메커니즘을 사용하면 네트워크가 이전 및 현재 시퀀스의 모든 부분을 고려할 수 있습니다.

주의 메커니즘의 구축은 다섯 단계로 나눌 수 있습니다:

  1. 모든 인코더 상태에 대한 점수를 계산합니다.
  2. 주의 가중치를 계산합니다
  3. 컨텍스트 벡터를 계산합니다
  4. 이전 시간 단계의 출력으로 컨텍스트 벡터를 업데이트합니다
  5. 디코더를 사용하여 출력을 생성합니다

첫 번째 단계는 디코더가 모든 인코더 상태에 대한 점수를 계산하는 것입니다. 이는 기본 피드 포워드 신경망인 디코더 네트워크를 훈련함으로써 수행됩니다. 디코더가 입력 시퀀스의 첫 번째 단어에 대해 훈련될 때, 아직 내부/숨겨진 상태가 생성되지 않았으므로 인코더의 마지막 상태가 일반적으로 디코더의 이전 상태로 사용됩니다.

주의 가중치를 계산하기 위해 소프트맥스 함수를 사용하여 주의 가중치에 대한 확률 분포를 생성합니다.

주의 가중치를 계산한 후 컨텍스트 벡터를 계산해야 합니다. 이는 주의 가중치와 숨겨진 상태를 함께 곱함으로써 수행됩니다.

컨텍스트 벡터가 계산되면 이전 시간 단계에서 생성된 단어와 함께 사용되어 출력 시퀀스의 다음 단어를 생성하는 데 사용됩니다. 디코더가 첫 번째 시간 단계에서 이전 출력을 참조할 수 없으므로 일반적으로 “시작” 토큰을 대신 사용합니다.

트랜스포머와 RNN/LSTM의 차이

RNN과 LSTM의 차이를 간략히 다룹니다.

RNN은 순차적으로 입력을 처리하며 숨겨진 상태 벡터를 유지하고 입력 단어에 따라 변경합니다. 그러나 RNN의 숨겨진 상태에는 일반적으로 이전 입력에 대한 관련 정보가 거의 없습니다. 새 입력은 종종 현재 상태를 덮어쓰므로 정보가 손실되고 성능이 시간이 지남에 따라 저하됩니다.

반면에 트랜스포머 모델은 전체 입력 시퀀스를 한 번에 처리합니다. 주의 메커니즘을 사용하면 모든 출력 단어가 모든 입력과 숨겨진 상태에 의해 알릴 수 있으므로 네트워크가 더 긴 텍스트에 대해 더 신뢰할 수 있습니다.

LSTM은 정보 손실을 처리하기 위해 수정된 RNN 버전입니다. LSTM 아키텍처는 “게이트”라는 구조를 사용하며 입력 게이트, 출력 게이트, 忘却 게이트가 있습니다. 게이트 설계는 RNN 모델에서 일반적으로 발생하는 정보 손실을 처리합니다. 데이터는 여전히 순차적으로 처리되며 아키텍처의 재귀 설계로 인해 LSTM 모델을 병렬 컴퓨팅을 사용하여 훈련하기가 어렵습니다. 따라서 훈련 시간이 더 길어집니다.

LSTM 엔지니어는 종종 주의 메커니즘을 네트워크에 추가하여 모델의 성능을 향상시켰습니다. 그러나 주의 메커니즘만 사용하면 정확도가 향상된다는 것이 결국 밝혀졌습니다. 이 발견은 주의 메커니즘과 병렬 컴퓨팅을 사용하는 트랜스포머 네트워크의 생성으로 이어졌습니다. 트랜스포머 네트워크는 GPU 덕분에 병렬 컴퓨팅을 사용할 수 있습니다.

블로거이자 프로그래머로 Machine Learning Deep Learning 주제에 전문가입니다. 다니엘은 다른 사람들이 AI의 힘을 사회적善으로 사용하는 것을 돕기를 희망합니다.