생성형 AI와 LLM
1. 개요:
Copilot Studio를 이해하려면 생성형 AI와 언어 모델을 이해해야만 합니다
이 두개를 모른 채 Copilot Studio에 접근한다는 것은 더하기 빼기도 모르는데
미적분을 하겠다는 것과 같습니다
생성형 AI는 기존 데이터를 학습하여 새로운 콘텐츠를 만들어내는 AI 시스템인데요
단순히 정보를 분류, 구축 하는걸 넘어서 창조하는 능력을 가진 친구들 입니다.
LLM(대규모 언어 모델)은 어마어마한 양의 텍스트를 학습하여 사람의 언어를 이해하고 생성할 수 있는 AI 모델 입니다
생성형 AI 안에 LLM이 포함되어 있는거죠
그런데 오케이 뭐 알겠다... 그래서 어떻게 학습하는건데? 라고 의문이 들 수 있는데요
2. 진행 과정:
언어 모델의 구조
언어 모델은 다음과 같은 구조로 되어 있습니다
1. 토큰화 : 텍스트를 작은 단위 (토큰) 으로 나누는 것
2. Embedding : 각 토큰 간의 의미를 수학적으로 벡터화 시키는 것
3. Attention : 토큰 시퀀스를 검토하고 해당 토큰 간 관계의 강도를 정량화 하는 것
1에서 2로 이어지는 과정은
국경의 긴 터널을 빠져나오자, 설국이었다. 밤의 밑바닥이 하얘졌다
라는 아주 유명한 문장을 작은 단위(토큰) 으로 나누어보자면
Python 코드 예시:
클릭해서 코드 보기
from konlpy.tag import Okt
okt = Okt()
text = "국경의 긴 터널을 빠져나오자, 설국이었다. 밤의 밑바닥이 하얘졌다."
tokens = okt.morphs(text)
print(tokens)
한국어 토큰화를 위해 KoNLPy 라이브러리의 Okt 토크나이저를 사용하였습니다
이 코드는 다음과 같은 토큰 리스트를 생성해줍니다:
['국경', '의', '긴', '터널', '을', '빠져나오자', ',', '설국', '이었다', '.', '밤', '의', '밑바닥', '이', '하얘졌다', '.']
토큰화된 단어들을 Embedding 하기 위해 사전 훈련된 한국어 워드 임베딩 모델을 사용해줍니다
Python 코드 예시:
클릭해서 코드 보기
from gensim.models import KeyedVectors
# 사전 훈련된 한국어 Word2Vec 모델 로드
model = KeyedVectors.load_word2vec_format('korean_word2vec_model.bin', binary=True)
# 각 토큰을 벡터로 변환
vectors = [model[token] for token in tokens if token in model]
국경: [0.2, -0.5, 0.1]
의: [-0.1, 0.3, 0.0]
긴: [0.4, 0.2, -0.3]
터널: [-0.3, 0.1, 0.5]
을: [0.0, -0.2, 0.1]
빠져나오자: [0.6, -0.4, 0.2]
설국: [-0.5, 0.3, 0.4]
이었다: [0.1, 0.5, -0.2]
밤: [-0.2, -0.3, 0.6]
밑바닥: [0.3, 0.4, -0.5]
하얘졌다: [-0.4, 0.2, 0.3]
이렇게 각 토큰 마다의 벡터 값들을 출력해줍니다
이것들을 전부 벡터 3D 그래픽 모델에 집어 넣을...수도 있습니다만 조금 귀찮으므로
국경: [2, -5, 1], 터널: [-3, 1, 5], 설국: [-5, 3, 4], 하얘졌다: [-4, 2, 3] 만
소수가 아닌 단순 절대값으로 3D 그래픽 모델에 입력해주면
이렇게 모델이 나오게 됩니다
보시면 의미상으로 유사성이 있는 설국과 하얘졌다 가 벡터 모델이 비슷한 것을 알 수 있고
이 방식이 언어 모델을 기반으로한 생성형 AI가 텍스트를 이해하는 방식입니다.
(출처 및 참고자료)
언어 모델이란? - Training | Microsoft Learn
언어 모델이란? - Training | Microsoft Learn
대규모 언어 모델의 트랜스포머 아키텍처에 대해 알아보세요.
learn.microsoft.com
생성 AI란? - Training | Microsoft Learn
나태함과 업무에 밀려 올해 첫 글이 되어부렀습니다
차근차근 다시 나아가겠습니다