KT 에이블스쿨 - 2달 차 후기(1)

근데 6주 차만 있는

by 김형준

※ 본 글에 작성된 정보는 작가가 이해한 대로의 정보로 실제 정보와 다른 점이 있을 수 있습니다. 이 점에 유의해주시기 바랍니다.


안녕하세요! 오랜만에 글 쓰러 들어와서 인사드려요~

지난번 1달 차 후기 이후에 글을 열심히 쓰고자 마음먹었는데 못했던 이유는

어쩌다 보니 병원에서 간병을 하느라.. 2달 정도가 삭제되었기 때문..


어쨌든! 이제는 온전히는 아니지만 현생으로 돌아오게 되어서 빠르게 후기를 써보고자 합니다

그럼 주차별로 빠르게 가보겠습니다!


6주 차- 생성형 AI(RAG, 에이전트, 프롬프트 엔지니어링)


빠르고도 깊이 있게 분석형 AI를 5주 만에 넘어서, 6주 차에는 드디어 생성형 AI에 대해 배우게 되었습니다!

저도 분석형 AI만 다뤄봤지 실제 생성형 AI에 대한 이해도가 거의 없는 정도..^_^ 였기 때문에 많이 긴장이 됐지만, 이러나저러나 교육은 시작됐으니 걱정은 뒤로 미루고 공부부터 했습니다.


그렇게 시작한 생성형 AI의 내용은 꽤나 무거웠습니다.

막연히 GPT만 떠오르던 '생성형 AI'라는 것의 실제 정의와 LLM, 그리고 Transformer와 Attention, 토큰 등 정말 처음 들어보는 단어가 많았거든요. 간단히 넘어가고자 했지만 이번 파트는 너무 중요한 부분이라 이번만큼은 한 번이라도 더 글로 쓰면서 머릿속에 남기기 위해 각 개념에 대해 아래에 적어보도록 하겠습니다.


1. 생성형 AI이란?

: 대규모 데이터에서 학습한 패턴을 통해 텍스트, 이미지, 코드 등 새 결과물을 만들어내는 모델 계열

: 모델, 프롬프트, 콘텍스트, 피드백 루프 (구성 4요소)


추가적인 개념을 빠르게 나열하는 것도 좋겠지만, LLM과 생성형 AI를 둘러싼 트랜스포머와 어텐션에 대한 개념을 이해하기 위해서는 인간의 언어를 컴퓨터가 이해하기 위해 어떤 서사를 거쳤고 니즈가 존재했는가를 알아볼 필요가 있어 보여서 RNN 구조부터 설명해보고자 합니다.


2. RNN

: 쉽게 말해 직렬로 모든 단어를 차례대로 하나씩 두들겨보는 겁니다. 1번 단어를 처리한 후 그 정보를 2번으로 넘기고, 2번 -> 3번, 3번 -> 4번 순으로 넘기는 걸 말하죠. 그럼 어떤 문제가 생길까요?


- 장기 기억 상실증: 첫 단어부터 끝까지 계속해서 연결해 나가며 정보를 전달함에 따라서 초반부의 단어에 대한 내용을 까먹습니다. 이런 불편은 문장의 길이가 길면 길수록 더 심해지죠.

- 느린 속도: 1번에서 2번, 2번에서 3번과 같은 식으로 순차적으로 진행되기에 시간이 오래 걸립니다. 그렇기 때문에 좋은 컴퓨터더라도 많은 데이터를 학습시키기에 어려웠죠.


인간의 언어로 컴퓨터와 소통하기 위해서는 위에서 보이는 RNN의 치명적인 단점 두 가지를 최소화할 수 있는 방법이 필요했고, 그 후로 LSTM이라는 구조가 탄생합니다.


3. LSTM

: RNN의 '장기 기억 상실증'을 망각/입력/출력 게이트라는 세 가지의 게이트를 통해 치료하고자 했던 구조. 모든 단어의 맥락을 가져가고자 했던 RNN과 달리, LSTM은 중요한 부분을 집중하고 나머지는 흘려듣는 방법을 택했죠. 망각/입력/출력 게이트는 각각 다음을 뜻합니다.


- 망각 게이트: 필요 없는 과거 메모리 삭제

- 입력 게이트: 새로운 메모리 저장

- 출력 게이트: 결과 출력


하지만 아쉽게도 LSTM 또한 직렬(순서대로 하나씩) 작업 구조를 띄고 있었기 때문에 여전히 작업 속도가 현저히 느렸습니다. 그렇기에 빠른 속도와 긴 문장 해석에 강인한 모습을 가지는 새로운 구조가 필요했고, 2017년 "Attention is All you need"라는 논문에 소개된 Attention이라는 개념으로 인해 전환점을 맞게 됩니다.


4. Attention

: 모든 단어를 전지적 시점에서 바라보고 중요한 단어에 집중하는 원리. 단어를 처리할 때 전체 문장 내 각 단어와의 관련성을 점수 매김으로써 그 맥락을 이해합니다. 조금 더 자세히 이해하기 위해서는 각각 쿼리(Q), 키(K), 밸류(V)를 뜻하는 QKV를 이용한 작동 원리를 알아볼 필요가 있는데요.


- 쿼리: 질문("현재 분석하려는 단어"랑 관련된 단어는 뭐지?)

- : 문장 속의 각 단어에 붙은 라벨링

- 밸류: 각 단어의 실제 의미


위의 세 가지 요소를 이용해 "질문 던지기 → 점수 매기기 → 정보 흡수 → 결과 도출"이라는 과정을 거치게 됩니다(Self-Attention).

질문 던지기를 통해 각 단어의 라벨을 확인해 보고, Q와 K의 관련성을 계산합니다. 이후 관련성 점수가 높은 단어의 내용은 많이, 적은 점수인 단어의 경우 내용은 적게 가져오게 되면서 정보 흡수를 하게 되고, 그렇게 분석할 단어의 맥락을 정의합니다.


직전 단어와의 관련성만 따지던 RNN과 달리 전체 문장 내 관련성을 살펴볼 수 있는 "어텐션"이라는 원리를 이용함으로써 이전과는 다른 트랜스포머라는 구조가 등장했습니다.

=> 문장을 조각으로 보고, 각 조각이 서로에게 가지는 중요도를 계산함으로써 문맥(콘텍스트) 파악


5. Transformer

: 어텐션 메커니즘병렬 처리 구조를 통해 LLM처럼 방대한 데이터의 학습을 가능케 한 구조.


6. LLM(Large Language Model)

: 수많은 텍스트 데이터를 학습해 인간의 언어를 이해, 생성할 수 있는 인공지능 모델

: 트랜스포머 구조를 통해 만들어졌으며 급속도로 발전할 수 있었다


7. 토큰(LIKE 형태소..?)

: 각 모델이 이해하는 최소 단위(문자, 음절, 단어 조각 등)

→ 한글의 경우 기본적으로 토큰을 많이 씀


8. 토크나이저

: 텍스트를 토큰으로 쪼갬 + 다시 문자열로 복원시키는 도구

→ 토크나이저의 성능에 따라 연산 비용 + 출력 안정성에 영향을 준다.

→ 동일 문장도 토크나이저에 따라 토큰이 달라진다.

→ 불필요한 특수문자 등의 경우 불필요한 토큰이 되기 때문에 전처리가 필요

→ 토크나이저 복원 가능성(복원시킬 때 의미가 바뀌지 않게 되돌리는 성질) 중요!


이렇게 여러 개념들을 통해 생성형 AI의 정의와 LLM이 탄생할 수 있었던 과정을 살펴봤는데요, 처음 교육을 들었을 때에는 사실 와닿지 않는 개념들이 많았습니다만 AI 에이전트 생태계라는 책을 선물 받고 살펴보게 되면서 그 내용과 중요성을 조금 더 깊이 이해할 수 있었습니다.



이제 LLM에 대해 배웠으니 거쳐야 할 정해진 수순이 있습니다.. 바로 RAG에이전트죠.

우선 RAG에 대해서 이야기해보고자 하는데요, 챗지피티 같은 LLM을 이용하면서 다들 "출처"가 없는 가짜 정보 때문에 의아했던 적이 한 번쯤은 있으실 거라 생각합니다. 그걸 할루시네이션(Hallucination, 환각)이라고 부르는데요, 이런 환각 문제를 해결하고자 RAG라는 파이프라인이 생겨났습니다.


1. RAG(Retrieval-Augmented Generation)

: 모델이 답을 만들 때 외부 문서/데이터베이스 내의 내용을 참고해서 답변에 포함하는 것

→ 목적: 환각 감소, 최신 정책 반영, 검증 가능 산출물 확보


이런 RAG 파이프라인의 프로세스는 다음과 같습니다.

질의 정제(질문을 재작성)

후보 검색(문서 및 데이터분서에서 관련 부분 탐색)

관련 청크 선택 및 재순위(문서 내 중요한 부분만 선택, 어텐션의 논리로 연관성 재평가)

생성 및 인용(선택된 청크를 바탕으로 답변 생성)

품질 점검


그럼 RAG의 활용도를 높이려면 어떤 게 중요할까요? 첫 번째는 참고할 데이터의 질을 높이는 것입니다.

그러기 위해서는 신뢰도가 높은 문서 수집, 문서 형식 통일, 메타데이터 추가(맥락을 위해), 품질 점검(중복/최신 여부에 따라 각 문서 라벨링) 등이 필요합니다.

다음은 "청크"인데요, 긴 문서를 빠르게 살펴보기 위해서는 맥락을 해치지 않는 선에서 잘게 쪼갠 덩어리로 나눠 살펴봐야겠죠. 그러기 위해 각 청크는 그 효율을 높이기 위해 하나의 주제로, 맥락이 끊기지 않도록 나누는 것이 중요합니다.

문서를 빠르게 훑기 위해 청크를 나눴으면, 이제는 청크와의 연관성을 따지기 위한 방법이 필요하게 되죠. 그런 방법은 임베딩(Embedding)입니다. 임베딩이란 각 청크 간의 연관도를 거리로 계산하기 위해 숫자 벡터로 표현하는 과정을 뜻하고, 코사인 유사도 등의 기준을 통해 각 벡터 간의 유사도를 측정합니다.

마지막으로 인덱싱(Indexing)이라는 과정이 존재하는데요. 저희가 임베딩을 통해 많은 벡터가 생겨났고, 그 벡터들 중에서 가까운 것을 빠르게 찾기 위해 데이터 구조를 만드는 과정을 뜻합니다. 벡터가 많으면 많을수록 당연히 가까운 것을 찾기에는 시간이 오래 걸리기 때문에 인덱싱 과정을 통해 전체를 살펴보지 않고도 빠르게 가까운 것을 찾을 수 있도록 합니다.



2. 에이전트(Agent)

: "스스로 계획하고 실행하는 요원"


다음은 에이전트입니다. 저희가 챗지피티와 제미나이를 사용하면서 느꼈던 불편한 점으로는 환각뿐이 아니라, 하는 방법은 다 알면서 말만 하고 직접 해주지는 않는 점이 있었을 거라고 저는 개인적으로 생각합니다. 챗지피티 같은 경우 위로도 해주고 충고도 해주는 챗봇의 기능이 주요하다면, 이런 모델들을 활용해 목표 달성을 위해 스스로 계획을 세우고 도구를 사용해 문제를 해결하는 에이전트라는 개념에 대해서 이제 알아볼 필요가 있습니다.


"실행"이라고 하는 단어가 초점일 수 있다고 개인적으로 생각하는데요, 이런 에이전트는

계획(Plan) → 도구 호출(Action) → 결과 확인(Observation) → 재계획(Reflect)이라는 작동 순서를 가지고 있습니다.


계획: ReAct, Plan-and-Execute, Routing 등의 전략을 이용

도구 호출: 이전에 설계한 도구(에이전트가 못하는 일을 대신 수행하게 해주는 외부 기능)를 호출

결과 확인: 행동한 결과를 관찰

재계획: 결과를 반영해 재계획

네 가지의 과정이 ReAct라는 전략을 통해 반복되는데요, 이런 과정을 통해 에이전트는 "주어진 태스크에 대해 스스로 찾아 알맞게 해결하는" 하나의 단위가 됩니다.





이제 진짜 진짜 마지막... 프롬프트와 콘텍스트 엔지니어링입니다.

이 부분은 내용이 너무 방대한 관계로 아주 아주 아주 요약해서 이야기해보고자 합니다.


회사나 학교에서 크로버 노트처럼 음성을 AI로 분석해 대화내용을 메모해 주는 앱을 많이들 써보셨을 텐데요. 방대한 텍스트의 양을 보고 벌써 질려서 요약을 포기한 분들도 많으실 거라 생각합니다.

그런 회의록 요약과도 같은 귀찮은 업무를 자동화할 수 있다면 얼마나 편할까요? 그럴 수 있는 방법이 바로 프롬프트와 콘텍스트 엔지니어링입니다.


Role 역할

Goal 목적

Audience 대상

Constraints 제한

Steps 출력할 내용

Output 출력 스키마

Stop 종료

의 내용을 가지고 엔지니어링을 통해 구조화해 매번 동일한 양식으로 결과물을 뽑아낼 수 있는데요, 자세한 내용은.. 이 글이 너무 길어지는 관계로 빠르게 패스해 보도록 하겠습니다.





분명 2달 차 후기라고 했지만 결국 한 주의 내용밖에 뽑아내지 못했습니다.. 물론 그만큼 새롭게 배우고 체득한 개념, 그리고 지식들이 쌓여서 그를 풀어내려다 보니 글이 길어질 수밖에 없었는데요.

우선 이렇게 글을 쓰고 있는 시점에서 에이블스쿨에 입교한 것이 후회되냐고 누군가가 묻는다면 절대 아니라고 할 것 같습니다! 분석형 AI와 생성형 AI를 폭넓고 깊이 있게 배울 수 있는 큰 장점이 있다고 생각하고요. 이제 9기를 모집하고 있는 것 같던데 관심 있으신 분들은 아래의 링크에서 한번 일정과 커리큘럼 확인해 보시면 좋을 것 같습니다. 그럼 빠르게 2탄으로 돌아오겠습니다!


https://aivle.kt.co.kr/home/main/indexMain

keyword
작가의 이전글에이블스쿨 1달차 교육 후기