Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

방카@Dev

[AI]LLM을 활용한 실전 AI 애플리케이션 개발_2장.트랜스포머 아키텍쳐 본문

AI

[AI]LLM을 활용한 실전 AI 애플리케이션 개발_2장.트랜스포머 아키텍쳐

방카킴 2024. 10. 4. 23:39

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=343185652&start=slayer

 

LLM을 활용한 실전 AI 애플리케이션 개발

LLM의 기본 아키텍처에서 출발해 애플리케이션의 요구사항에 맞춰 LLM을 길들이고 제한된 컴퓨팅 환경에서 동작하게 경량화해서 원활하게 서빙하게끔 기초를 다진 다음에 RAG라는 LLM의 대표적인

www.aladin.co.kr

토큰임베딩 : 임베딩을 통해 숫자 집합인 임베딩으로 입력값 변환

위치임베딩 : 트랜스포머는 순차적인 처리 방식을 버리고 모든 입력을 동시 처리 하기 때문에 순서 정보가 사라지므로, 위치 인코딩을 통해 순서 정보 추가

 

인코더(Encoder) : 언어를 이해하는 역할

디코더(Decoder) : 언어를 생성하는 역할

자기회귀적(Auto-regressive) : 앞에서 생성한 토큰을 기반으로 다음 토큰을 생성. 이렇게 순차적으로 생성해야하는 특징을 인과적 또는 자기회귀적

 

어텐션

  • 단어와 단어 사이의 관계를 계산해서 그 값에 따라 관련이 깊은 단어와 그렇지 않은 단어를 구분할 수 있어야 함
  • 관련이 깊은 단어는 더 많이, 관련이 적은 단어는 더 적게 맥락을 반영

셀프 어텐션(self-attention) : 입력된 문장 내의 각 단어가 서로 어떤 관련이 있는지 계산해서 각 단어의 표현을 조정하는 역할

멀티 헤드 어텐션 : 토큰 사이의 관계를 한 가지 측면에서 이해하는 것보다 여러 측면을 동시에 고려할 때 언어나 문장에 대한 이해도 상승,

                            헤드의 수만큼 어텐션 연산을 수행

Q,K,V

  • query : 입력한 검색어
  • key : 쿼리와 관련이 있는지 계산하기 위해 문서가 가진 특징(예 문장 속의 각 단어)
  • value : 토큰 임베딩 값
  • 쿼리와 키의 벡터와 벡터를 곱해 관계를 계산하면 그 관계도에 따라 주변 맥락 반영 가능, 문자열이 일치하지 않더라도 유사한 의미의 키로 저장된 정보를 검색 가능
  • 토큰 임베딩을 변환하는 가중치 Wq, Wk 이 가중치를 통해 토큰과 토큰 사이의 관계를 계산하는 능력을 학습
  • Wr 가중치를 통해 값도 토큰 임베딩을 변환

- 쿼리와 키의 관계를 계산한 관련도 값과 토큰 임베딩을 값 가중치(Wv)로 변환한 값을 가중합하면 문장 속의 단어를 재해석한 결과를 얻을 수 있음

- 어텐션을 거치고 나면 입력과 형태는 동일하면서 주변 토큰과의 관련도에 따라 값 벡터를 조합한 새로운 토큰 임베딩 생성

 

정규화 :

- 딥러닝 모델에서 입력이 일정한 분포를 갖도록 만들어 학습이 안정적이고 빨라질 수 있도록 하는 기법

- 특정 차원에서 정규화를 수행하는 층 정규화

- 각 토큰 임베딩의 평균과 표준편차를 구해 정규화를 수행. 문장별로 실제 데이터의 수가 다르더라도 각각의 토큰 임베딩 별로 정규화를

  수행하기 때문에 정규화 효과에 차이가 없음

 

피드포워드 :

- 어텐션 연산이 입력 단어 사이의 관계를 계산해 토큰 임베딩을 조정하는 역할을 한다면 전체 입력 문장을 이해하는 연산이 필요

- 데이터의 특징을 학습하는 완전 연결 층 (fully connected layer)

- 멀티 헤드 어텐션이 단어 사이의 관계를 파악하는 역할이라면 피드 포워드 층은 입력 텍스트 전체를 이해하는 역할 

- 선형 층, 드롭아웃 층, 층 정규화, 활성 함수로 구성

 

마스크 어텐션 : 

특정 시점에는 그 이전에 생성된 토큰까지만 확인할 수 있도록 마스크 추가

 

크로스 어텐션 :

쿼리는 디코더의 잠재상태를 사용하고, 키와 값은 인코더의 결과를 사용


밑의 유튜브는 3Blue1Brown의 트랜스포머 시각화 강의, 트랜스포머에 대해 궁금했던 부분이 해당 강의를 보면서 해소되었다.

 

https://www.youtube.com/watch?v=wjZofJX0v4M&t=1s

 

https://www.youtube.com/watch?v=eMlx5fFNoYc&t=2s