paint-brush
트랜스포머: 주의의 시대~에 의해@bhavdeepsethi
1,925 판독값
1,925 판독값

트랜스포머: 주의의 시대

~에 의해 Bhavdeep Sethi7m2024/08/26
Read on Terminal Reader

너무 오래; 읽다

BERT 및 GPT와 같은 많은 최첨단 모델의 기반이 되는 혁신적인 논문 "Attention is All You Need"에 나와 있는 Transformer 모델에 대한 간단한 설명입니다.
featured image - 트랜스포머: 주의의 시대
Bhavdeep Sethi HackerNoon profile picture
0-item



2017년, 연구자 그룹(Google과 토론토 대학 소속)은 자연어 처리(NLP) 작업을 처리하는 새로운 방법을 도입했습니다. 그들의 혁신적인 논문 " Attention is All You Need "는 Transformer 모델을 제시했는데, 이 아키텍처는 오늘날 많은 고급 AI 시스템의 기반이 되었습니다. 이 모델의 성능, 확장성, 다양성은 광범위한 채택으로 이어졌고, BERT(Bidirectional Encoder Representations) 및 GPT(Generative Pre-trained Transformers)와 같은 최첨단 모델의 중추를 형성했습니다.


Transformer 모델 이전에는 언어를 처리하는 대부분의 AI 모델은 순환 신경망(RNN) 또는 개선된 버전인 장단기 기억 네트워크(LSTM)라는 신경망 유형에 크게 의존했습니다. 특히 언어 모델링 및 기계 번역(시퀀스 변환이라고도 함)과 같은 문제가 있었습니다. 이러한 모델은 왼쪽에서 오른쪽으로(또는 그 반대로) 순서대로 단어를 하나씩 처리했습니다. 이 접근 방식은 문장의 단어가 종종 이전 단어에 따라 달라지기 때문에 의미가 있었지만 몇 가지 중요한 단점이 있었습니다.


  • 훈련 속도가 느림: RNN과 LSTM은 한 번에 한 단어씩 처리하기 때문에, 이러한 모델을 대규모 데이터 세트로 훈련하는 데 시간이 많이 걸렸습니다.
  • 긴 문장의 어려움: 이러한 모델은 문장에서 멀리 떨어져 있는 단어 간의 관계를 이해하는 데 종종 어려움을 겪었습니다.
  • 제한된 병렬화: 단어가 순차적으로 처리되었기 때문에 한 번에 여러 작업을 수행하는 현대 컴퓨팅 하드웨어(병렬화)의 이점을 활용하기 어려웠습니다.


핵심 아이디어: 건축에 대한 관심

Transformer 모델의 핵심 아이디어는 "주의"라고 하는 것입니다. 간단히 말해서 주의는 모델이 단어의 의미/맥락을 이해하려고 할 때 문장의 특정 부분에 집중하도록 돕습니다. "차고에 주차된 차는 파란색입니다."라는 문장을 생각해 보세요. 파란색이라는 단어에 대해 생각하면 자연스럽게 문장 앞부분의 "자동차"에 집중하게 되는데, 그 이유는 파란색이 무엇인지 알려주기 때문입니다. 기계 번역 모델은 "파란색"이 차를 가리키는지 차고를 가리키는지 식별하는 데 어려움을 겪을 것입니다. 이것이 바로 자기 주의가 하는 일입니다. 모델이 문장의 어느 부분에 있든 관련 단어에 집중하도록 돕습니다.


주의는 새로운 개념이 아니며 이미 RNN과 함께 사용되고 있었습니다. Transformer는 주의에만 의존한 최초의 전환 모델이었으며, 따라서 신경망의 필요성을 없앴습니다. 이는 다음과 같은 이점을 제공했습니다.

  • 병렬 처리: 단어를 하나씩 처리하는 RNN과 달리 Transformer는 문장의 모든 단어를 동시에 처리할 수 있습니다. 이를 통해 학습 속도가 훨씬 빨라집니다.
  • 맥락에 대한 더 나은 이해: 자기 주의 메커니즘 덕분에 Transformer는 문장에서 단어가 아무리 떨어져 있어도 단어 간의 관계를 포착할 수 있습니다. 이는 복잡한 문장을 이해하는 데 중요합니다.
  • 확장성: 모델은 더 많은 레이어를 추가하여 쉽게 확장할 수 있어 매우 큰 데이터 세트와 복잡한 작업을 처리할 수 있습니다.


보시다시피, 새로운 모델은 신경망의 모든 단점을 제거했을 뿐만 아니라 기계 번역의 성능도 실제로 향상시켰습니다!


원래 논문은 이해하기 다소 어려울 수 있으므로, 논문에 기술된 모델 아키텍처를 더 간단하게 설명하겠습니다.

변압기 - 모델 아키텍처


인코더 및 디코더 스택 : Transformer는 인코더 스택(왼쪽)과 디코더 스택(오른쪽)으로 구성됩니다. 인코더 스택은 입력 시퀀스(예: 문장)를 연속 표현 집합으로 변환하는 반면, 디코더 스택은 이러한 표현을 출력 시퀀스(예: 번역)로 변환합니다. 각 스택에 대해 아래에서 위로, 예를 들어 모델의 핵심 구성 요소를 설명합니다.


  1. 인코더에서의 입력 문장 처리

    • 입력 : 번역하려는 텍스트. 예: "차고에 주차된 차는 파란색입니다."

    • 입력 임베딩 : 단어를 임베딩이라고 하는 고정 길이의 숫자 표현(벡터)으로 변환합니다. 이러한 임베딩은 모델이 이해할 수 있는 방식으로 단어의 의미적 의미를 포착합니다. 우리의 예에서:

      • "그" -> [0.9, -0.4, 0.2, ...]

      • "자동차" -> [0.5, 0.1, -0.7, ...]

      • "그것" -> [-0.8, 0.2, 0.8, ...]

      • 위 문장의 각 단어에 대해서도 마찬가지입니다.


    • 위치 인코딩 : 모델은 순서가 없는 입력 임베딩을 처리하기 때문에 문장에서 단어의 순서를 이해할 방법이 필요합니다. 위치 인코딩은 시퀀스에서 각 단어의 위치에 대한 정보를 임베딩에 추가합니다.

      • 위치 1의 "the"는 [0.9 + P1, -0.4 + P1, 0.2 + P1, ...]로 조정될 수 있습니다. 여기서 P1은 첫 번째 위치에 대한 위치 인코딩을 나타내므로 위치 P1에 대해 고유한 새로운 임베딩이 생성됩니다.


    • 셀프 어텐션 메커니즘 : 앞서 설명한 대로, 이를 통해 모델은 맥락에 따라 문장의 다른 단어에 초점을 맞출 수 있습니다. 각 단어에 대해 셀프 어텐션 메커니즘은 현재 단어를 인코딩할 때 다른 단어에 얼마나 많은 초점을 맞춰야 하는지를 나타내는 점수를 계산합니다.

      • "자동차"라는 단어의 경우, 자기 주의는 "주차됨", "차고", "파란색"이 맥락을 이해하는 데 특히 관련이 있다고 결정할 수 있습니다.


    • 멀티헤드 어텐션 : 트랜스포머 모델의 새로운 부분. 멀티헤드 어텐션은 단순히 병렬로 실행되고 선형적으로 연결된 여러 개의 셀프 어텐션 레이어/작업입니다.

      • 예를 들어, 한 문장은 주어("car")와 그 속성("blue")에 초점을 맞출 수 있고, 다른 문장은 관계절("that was parked in the garage")에 초점을 맞출 수 있습니다.

      • 멀티 헤드 어텐션 모듈은 모델이 차고보다는 자동차에 "파란색"이 더 적합하다는 것을 이해하는 기능을 제공합니다.


    • 피드포워드 신경망 : 셀프 어텐션 레이어 다음에 출력은 피드포워드 신경망을 통과하는데, 이는 각 위치에 별도로 동일하게 적용됩니다(다시 한 번, 병렬로 실행할 수 있습니다!). 이는 ReLU 활성화가 중간에 있는 두 개의 선형 변환으로 구성됩니다.


    • Add & Norm : 잔여 연결(add)은 레이어의 입력을 출력에 더하는 데 사용되며, 이는 정규화(norm)됩니다. 이는 그래디언트가 사라지거나 폭발하는 것을 방지하여 딥 네트워크를 훈련하는 데 도움이 됩니다.


  2. 디코더에서 번역 생성

    NLP에서는 시퀀스 시작 토큰의 시작을 특수 문자 <SOS>로, 시퀀스의 끝을 <EOS>로 표시하는 것이 일반적입니다. 디코더는 인코더에서 처리된 입력을 가져와 프랑스어 번역 "La voiture qui était garée dans le garage est bleue"를 생성합니다. 이 부분의 작동 방식은 다음과 같습니다.


    • 디코더에 대한 입력 : 디코더는 인코더에서 영어 문장의 인코딩된 표현으로 시작합니다. 알아차리셨다면, 디코더는 자체 출력도 입력으로 받습니다. 초기 단어에 대한 입력이 없으므로, <SOS> 토큰을 시작 부분에 삽입하고(따라서 오른쪽으로 이동) 마지막 단어를 제거합니다. 이 이동된 시퀀스가 디코더에 입력되는 것입니다.


    • 마스크된 자기 주의 : 디코더에서 마스크된 자기 주의 메커니즘은 출력 시퀀스의 각 단어가 그 앞의 단어에만 주의를 기울일 수 있도록 보장합니다. 이를 통해 모델이 미리 보는 것을 방지하고 한 번에 한 단어씩 왼쪽에서 오른쪽으로 번역을 생성하도록 보장합니다.

      • 예를 들어, 디코더가 "La"(프랑스어의 첫 단어)라는 단어를 생성하려고 할 때, 디코더는 <SOS>의 맥락만 알고 "Voiture"와 같은 미래의 단어는 알지 못합니다.


    • 피드포워드 신경망 : 디코더는 또 다른 피드포워드 신경망을 적용하여 이 정보를 더욱 처리하고 단계별로 변환을 세부적으로 조정합니다.


디코더에서 입력 문장을 여러 층의 마스크된 자기 주의, 인코더-디코더 주의, 피드포워드 네트워크를 통해 처리한 후, 대상 문장(우리의 경우 프랑스어)의 각 위치에 대한 연속 표현(부동소수점 벡터) 시퀀스를 얻습니다. 이러한 표현은 실제 단어로 변환해야 합니다. 여기서 최종 선형 및 소프트맥스 계층이 작용합니다.


  • 선형 계층 : 이 계층은 마지막 디코더 계층의 출력(각 위치에 대한 밀집 벡터 표현)을 대상 어휘(예: 프랑스어의 모든 가능한 단어) 크기의 벡터로 변환하는 완전히 연결된 신경망 계층입니다.
  • 소프트맥스 레이어 : 선형 변환 후, 소프트맥스 함수를 적용하여 이러한 로짓(원점수)을 확률로 변환합니다. 이러한 확률은 대상 어휘의 각 단어가 번역에서 올바른 다음 단어가 될 가능성을 나타냅니다. 이를 통해 프랑스어 어휘에서 어떤 단어를 선택해야 할지 추측할 수 있습니다(확률이 가장 높은 셀).


디코더는 기본적으로 다음을 수행합니다.

  • 첫 번째 단계: 디코더는 <SOS>로 시작하여 첫 번째 단어 "La"를 생성합니다.
  • 두 번째 단계: <SOS> La를 입력하면 모델은 다음 단어인 "Voiture"를 예측합니다.
  • 세 번째 단계: 디코더는 <SOS> La Voiture를 받아 "quit"이라는 단어를 생성합니다.
  • 계속 프로세스: 이 프로세스는 계속되어 "était", "garée", "dans", "le", "garage", "est" 및 마지막으로 "bleue"를 생성합니다.
  • 시퀀스 종료 토큰: 디코더는 결국 번역이 완료되었음을 나타내는 시퀀스 종료 토큰 <EOS>를 생성합니다.


이러한 단계를 결합함으로써 Transformer는 이전 모델보다 전체 문장의 구조와 의미를 더 효과적으로 이해할 수 있습니다. Self-attention 메커니즘과 병렬 처리를 통해 Transformer는 소스 언어와 대상 언어의 뉘앙스와 구조를 효과적으로 포착하여 기계 번역과 같은 작업에 매우 능숙합니다.