Generative AI 기초 지식 - LLM? RAG? Foundation Model?
LLM? RAG?? Foundation Model???
많이 들어만 봤지 정확히 이런 기술용어들이 AI의 어느 단계에서 사용되는지, 어떻게 구현되었는지 학부졸업생인 나로는 알 길이 없었다
웹 개발자로 일하면서, AI를 직접 건드리는 일은 없겠지만 앞으로 AI를 활용한 개발은 많이 할 것 같아서 기반 지식을 알아야 할 것 같아서 회사에서 진행하는 Gen AI 교육을 신청해 수강한 내용을 정리해보고자 한다
Gen AI가 탄생하기 까지...
Gen AI가 탄생하기 전 단계는 ML, RL, DL 등이 존재했다고 한다
머신 러닝 (Machine Learning)
일반 프로그램이 output을 결과로 내놓는다면 머신 러닝은 데이터 input을 가지고 program 생성
- Feature Engineering By 인간
- 특정 속성을 가진 데이터의 결과는 이것이다! 라고 데이터에 레이블을 붙여서 학습 (지도학습)
- task별로 모델을 생성해야했음 ex. 문장생성을 위한 데이터 및 모델 / 요약을 위한 데이터 및 모델 등
- 데이터와 실제 알고자 하는 결과값을 같이 넣어서 학습
- 예측가능한 Program을 스스로 만들어줌
- 특정 속성을 가진 데이터의 결과는 이것이다! 라고 데이터에 레이블을 붙여서 학습 (지도학습)
- Model
- 라벨링된 데이터를 통해 학습되어 만들어진 Program
- 명시적으로 훈련된 특정 작업을 수행
딥 러닝 (Deep Learning)
사람의 뉴런을 컴퓨터화
데이터 input을 가지고 program을 생성한다는 것을 머신러닝과 동일
머신러닝과 다르게 딥러닝에 학습되는 데이터는 레이블화하지 않음
- Feature Engineering By 컴퓨터
- 컴퓨터가 직접 데이터들을 가지고 속성값들을 추출
- 각 속성값들은 파라미터로 분석되면 파라미터가 많다는 것을 고차원으로 딥러닝 할 수 있다는 뜻
생성형 AI (Generative AI)
단순 데이터 input에 대해서 결과를 만드는 거싱 아니라, 알고 있는 데이터를 기반으로 창의성 있는 콘텐츠 생성
- 학습의 주체는 알고리즘
- 해결하고자 하는 문제 정의에 따라 알고리즘 선택은 달라짐
- 알고리즘에 따라서 요구되는 데이터 유형은 다름
- Foundation Model
- 무엇이든지 잘하는 모델 But 전문성은 없을수도! -> 대규모 데이터에서 학습된 범용적인 모델
- 기존의 모델과 달리 특정 분야의 데이터만 학습시키는 것이 아니라, 모든 분야의 데이터를 학습한 ML 모델
- 머신이 스스로 feature들을 가지고 데이터를 분류 -> 학습 (비지도학습)
- 명시적으로 훈련되지 않은 작업을 수행
- 언어, 이미지, 비디오등 여러 도메인에 걸쳐 범용적으로 훈련되지 않은 작업을 수행
아무리 Gen AI Foundation Model이라고 해도 하나의 모델이 모든 문제를 해결해주지 못한다
데이터들을 가지고 창의성있는 결과를 내놓지만, 깊이 전문성이 없는 All Rounder라고 생각하면 된다.
따라서 개발자인 우리는 우리가 Gen AI를 통해 하고자 하는 작업을 먼저 정의하고 그에 맞에 Gen AI Foundation Model을 튜닝하여 사용해야 한다.
Foundation Model을 기반으로 우리가 어떤 목적으로 쓸것인가에 따라 다양한 모델이 탄생할 수 있는데 그중 하나가 LLM이다
Large Language Model (LLM)
- 자연어 처리(NLP)에 특화된 Foundation Model 의 종류
- 대규모 Text 데이터에서 학습된 언어 모델
- 가장 자연스러운 단어 시퀀스를 찾아내는 모델로, 사람의 말을 이해할 수 있는 모델
- 검색어 자동완성 처럼, 키워드 중심으로 다음에 나올 용어를 예측하는 시스템과 달리 사람이 말하려는 문맥을 보고 다음 단어 시퀀스를 예측
Encoder / Decoder
Tokenizer가 자연어를 숫자형태인 Token으로 분리하면 인코더는 단어들을 Vector 공간에 배치
디코더는 토큰을 다시 자연어로 변환
- Token
- LLM이 인식하는 자연어의 단위는 Token
- 사람의 언어를 vector 숫자 array로 변환한 단위
- Token Embedding
- 유사한 단어들을 인코더는 Vector 공간에 근접하게 배치
Attention Mechanism
- 문장에서 중요한 키워드만 뽑아서 병렬로 분석 처리하는 방법
- 사람의 문장이 길어질 수록 LLM에 들어갈 수 있는 토큰의 개수 한계로 문장 앞쪽을 누락하고 순차 검색으로 속도가 느려지는 단점을 보완
- 중요 단어 중심으로 분석이 진행되므로, 문장 해석 결과의 퀄리티에는 문제가 적음
Transformer
Attention Mechanism을 동작원리로 나온 알고리즘
Transformer 알고리즘을 이용하여 훈련시킨 모델이 LLM
- Encoder
- 자연어가 input으로 들어오면, Token화하여 vector로 만들어 병렬 처리
- Decoder
- ouput으로 나올 가장 그럴듯한 자연어로 변환
- 출력 자연어를 예측하는 모든 순간 Attention Mechanism을 기반으로 해당 시점에서 예측 해야할 단어와 연관있는 부분을 집중적으로 탐색
어떤 모델은 필요에 따라, 인코더만 있는 경우도 있고 디코더만 있는 경우도 있음
하지만 LLM 자체는 많은 한계를 가지고 있다
학습된 데이터가 잘못되었거나, 편향성을 가지고 있을 때 이를 인식/구별하기 어렵고
문장 단위는 이해하지만, 긴 글이 되는 경우 입력 토큰 개수의 한계(ChatGPT의 경우 4096token limit)로 장문의 글과 복잡한 맥락은 이해하기 어려울 수 있다
또한 모델이라는 것이 확률적 특성상, 매 요청마다 응답이 달라질 수도 있다
여기서 LLM의 잘못된 데이터로 인한 편향 / 맥락 이해를 보완하기 위해 RAG 라는 것이 등장했다
Retrieval Augmented Generation (RAG)
질의가 LLM에 먼저 가는 것이 아니라, 기업 및 전문 데이터를 가지고 있는 지식 기반 DB에 가서 선검색
검색된 데이터를 가지고 보다 사실에 기반한 답변 생성
- 외부 지식을 통해 질의에 대한 배경지식과 맥락 파악
- 단순 유사 단어 패턴 매칭이 아닌 지식을 기반으로 추론성을 기반한 답변 생성
- 지식 증강 검색기 (Knowledge Retriever)
- 인코더로 인해 vector array로 인코딩된 사용자의 자연어 질의를 바탕으로 외부 지식 DB에서 관련 정보 조회
- wiki 피디아, 기업 데이터 등에서 연관된 단어 위주로 연관성 있는 정보를 조회
- 지식 증강 생성기 (Knowledge-Augmented Generator)
- 검색된 지식을 추가된 파라미터로 받아서 답변 생성
Gen AI가 이전의 머신러닝과 어떤 차이점이 있는지부터
코어인 Foundation Model이 어떻게 만들어지는지, Transformer 등 근간을 이루는 매커니즘과 알고리즘은 무엇인지
Foundation Model의 한계점과 그러한 한계를 극복하기 위해
Gen AI를 사용하는 목적을 명확히 하고
목적을 자연어 처리에 두었을 때 등장한 LLM
LLM의 한계를 또 극복하기 위해
외부 지식 데이터베이스를 두어서, 검색 데이터의 최신화 / 답변의 정확성을 보완하려한 RAG까지
웹 개발자로 AI의 동작 원리에 대해서 명확히 알기는 힘들지만,
AI를 사용할 때 어떤 부분에 초점을 두고 사용해야하는지 감을 잡을 수 있었다
다음에는..?
- Fine Tuning이 무엇인지
- AWS에서 AI 를 위해 제공하는 서비스는 무엇이 있는지
공부해보도록 하겠다