LLM 개발 과정 8부 - 학습 가능한 Self-Attention 기술

1 week ago 2

블로그 소개

  • Sebastian Raschka의 책 "Build a Large Language Model (from Scratch)"를 기반으로 한 블로그 시리즈의 여덟 번째 글임.
  • 이번 글에서는 "trainable self-attention"을 구현하는 방법을 다루고 있음.

GPT-유형 디코더 전용 트랜스포머 기반 LLM의 작동 방식

  • 문자열을 토큰으로 분할하고, 각 토큰을 벡터 시퀀스로 매핑하여 토큰 임베딩을 생성함.
  • 위치 임베딩을 생성하여 입력 임베딩 시퀀스를 만듦.
  • 입력 임베딩을 사용하여 각 토큰에 대한 주의 점수를 생성함.
  • 주의 점수를 정규화하여 주의 가중치를 생성함.
  • 각 토큰에 대한 컨텍스트 벡터를 생성함.

스케일된 내적 주의 메커니즘

  • 입력 시퀀스를 세 가지 행렬(쿼리, 키, 값)로 투영하여 주의 점수를 계산함.
  • 주의 점수를 정규화하여 주의 가중치를 생성하고, 이를 사용하여 컨텍스트 벡터를 계산함.
  • 이 모든 과정은 효율적인 행렬 곱셈을 통해 수행됨.

행렬을 사용한 공간 간 투영

  • 행렬은 벡터를 다른 차원의 공간으로 투영하는 데 사용됨.
  • 입력 임베딩을 쿼리, 키, 값 공간으로 투영하여 주의 점수를 계산함.

주의 점수의 정규화

  • 주의 점수를 정규화하기 위해 소프트맥스 함수를 사용함.
  • 차원의 제곱근으로 나누어 정규화하여 작은 기울기 문제를 해결함.

컨텍스트 벡터 생성

  • 주의 가중치를 사용하여 각 토큰의 컨텍스트 벡터를 계산함.
  • 입력 임베딩을 값 공간으로 투영하고, 주의 가중치로 가중합하여 컨텍스트 벡터를 생성함.

다음 단계

  • 인과적 자기 주의와 멀티헤드 주의를 다룰 예정임.
  • 자기 주의 메커니즘의 "왜"에 대한 탐구를 계획 중임.

결론

  • 이 블로그 글은 자기 주의 메커니즘을 이해하는 데 도움을 줄 수 있음.
  • 추가적인 질문이나 의견은 댓글로 남길 수 있음.

Read Entire Article