코드 시연으로 GPT·제미나이 완벽 해부! AI 언어 이해, 이 강의로 끝내세요!
6강: 트랜스포머 이후 AI는 어떻게 언어를 처리하는가? (실습 위주)
이번 강의에서는 AI가 언어를 어떻게 이해하고 처리하는지 직접 눈으로 확인해 볼 거야. 프로그래밍 경험이 없어도 괜찮아! 코드가 나와도 결과만 잘 따라오면 돼.
1. 토큰: AI가 글자를 쪼개는 방법
사람은 글을 읽을 때 단어 덩어리로 인식하잖아? AI도 똑같아. 텍스트를 자기만의 '조각'으로 나눠서 처리하는데, 이걸 토큰이라고 불러.
- 토큰은 단어 전체일 수도 있고, 단어의 일부나 글자 조합일 수도 있어.
- AI가 뭘 처리하는지, 비용, 처리 용량까지 토큰이 결정해.
실습:
- "안녕" → 우리한테는 단어 하나지만, AI한테는 2개의 토큰으로 쪼개져. (안, 녕)
- "안녕하세요. 어떻게 지내세요?" → 우리한테는 3단어지만, AI한테는 8개의 토큰으로 쪼개져. (안, 녕, 하세요, ., 어떻게, 지내, 세, 요)
- 한국어는 단어가 여러 조각으로 잘리는 경우가 많아.
- 영어는 같은 의미를 더 적은 토큰으로 표현할 수 있어. (예: "How are you?"는 6개 토큰)
이 때문에 같은 양의 정보를 담아도 한국어는 더 많은 토큰을 사용하게 돼. 이걸 컨텍스트 윈도우 (AI가 한 번에 처리할 수 있는 최대 토큰 수) 제약이라고 해.
- 주의: 영어도 항상 단어 하나가 토큰 하나가 되는 건 아니야. (예: "ChatGPT"가 2개 토큰으로 쪼개지기도 함)
2. 임베딩: 단어를 숫자로 바꾸는 마법
컴퓨터는 텍스트를 그대로 이해 못 해. 모든 걸 숫자로 바꿔야 하는데, 이걸 임베딩이라고 해.
- GPS 좌표가 특정 위치를 숫자로 나타내듯이, 임베딩은 단어의 '의미적 위치'를 숫자로 표현해.
- 의미가 비슷한 단어는 숫자 공간에서도 가까이 있어.
실습:
- 단어 간의 의미적 거리를 숫자로 측정해봤어.
- 사과와 배: 0.34 (비슷함)
- 사과와 자동차: 0.264 (덜 비슷함)
- 왕과 여왕: 0.6 (꽤 비슷함)
- 한국과 서울: 0.4 (비슷함)
- 이 수치는 모델에 따라 달라질 수 있어. (텍스트 임베딩 스몰 vs 라지 모델)
- 맥락에 따라 단어의 의미가 달라지면 임베딩 값도 달라져. (예: '먹는 사과' vs '사과하다')
- 이걸 문맥 의존적 표현 (Contextual Representation)이라고 하는데, AI가 같은 단어라도 문맥에 따라 다른 숫자로 표현하는 거야.
3. 어텐션: AI가 중요한 단어에 집중하는 방법
트랜스포머의 핵심 기술인 어텐션은 문장에서 어떤 단어가 다른 단어와 얼마나 관련 있는지 파악하는 거야.
- 예시: "소설의 결말은 충격적이었다"에서 '충격적'이 '결말'을 수식한다는 걸 파악하는 것.
- AI는 각 단어를 Q (쿼리), K (키), V (밸류) 세 가지 역할로 계산해.
- Q (쿼리): "나는 지금 뭘 찾고 있나?"
- K (키): "나는 어떤 정보를 가지고 있나?"
- V (밸류): "실제로 전달할 내용"
- Q와 K가 잘 맞을수록 V가 최종 결과에 더 많이 반영돼.
실습:
- AI가 문장을 생성할 때, 특정 단어가 어떤 단어에 '집중'하는지 시각화해서 보여줬어.
- 어텐션은 할 때마다 결과가 조금씩 달라질 수 있어. (이건 '온도(temperature)'라는 설정값 때문인데, 뒤에서 더 자세히 볼 거야.)
- AI 모델은 여러 개의 트랜스포머 블록으로 이루어져 있고, 각 블록 안에는 여러 개의 어텐션 헤드가 있어.
- 각 헤드는 문법, 의미, 위치 등 서로 다른 역할을 맡아서 문장을 분석해.
- 이런 구조 덕분에 AI는 같은 문장을 여러 관점에서 동시에 분석하고 결과를 합쳐서 최종 답변을 만들어내.
4. 생성 전략: AI가 다음 단어를 고르는 방법
AI는 다음에 올 수 있는 모든 단어에 확률을 부여하고 그중 하나를 뽑아. 마치 주사위를 던지는 것처럼 말이야. 이 생성 전략이 출력 결과의 다양성과 일관성을 결정해.
- 템퍼처 (Temperature):
- 낮으면: 확률 높은 단어가 거의 항상 선택돼. (결정적, 일관성 높음)
- 높으면: 확률 낮은 단어도 선택될 기회를 가져. (창의적, 일관성 낮음)
- 탑 P (Top P):
- 확률 순서대로 단어를 나열했을 때, 확률 합이 P에 도달하는 지점까지만 후보로 남겨.
- 너무 엉뚱한 단어가 선택되는 걸 막아줘.
실습:
- 같은 입력 문장을 템퍼처를 낮게 (0.1), 높게 (1.8) 설정해서 비교해봤어.
- 낮을 때는 결과가 거의 비슷하게 나왔지만,
- 높을 때는 완전히 다른 결과가 나왔어.
- 결론: 창의적인 글쓰기가 필요하면 템퍼처를 높게, 코드 생성이나 사실 기반 답변이 필요하면 낮게 설정하면 돼.
5. LLM의 한계: AI도 틀릴 수 있다!
AI가 완벽하지는 않아. 몇 가지 한계점을 알아두자.
- 할루시네이션 (Hallucination):
- 존재하지 않는 논문이나 정보를 사실처럼 지어내서 말하는 거야.
- AI는 모른다고 말하는 것보다 그럴듯한 내용을 만드는 게 확률적으로 더 자연스럽기 때문이야.
- 지식 단절 (Knowledge Cutoff):
- AI는 특정 시점까지의 데이터로만 학습했기 때문에, 그 이후의 정보는 몰라.
- 실시간 정보가 필요한 서비스에는 AI 단독으로는 한계가 있어. (이건 다음 강의에서 다룰 '툴 사용'으로 보완 가능)
- 컨텍스트 윈도우 제약:
- AI가 한 번에 처리할 수 있는 정보의 양에 한계가 있어.
- 한국어는 영어보다 같은 양의 정보를 담기 위해 더 많은 토큰을 사용하므로, 이 제약이 더 크게 느껴질 수 있어. (마치 책장에 꽂을 수 있는 책의 양이 정해져 있는 것과 같아.)
6. API 방식과 제어: AI를 내 마음대로 조종하기
웹사이트에서 직접 대화하는 대신, API를 사용하면 내가 만든 프로그램에서 AI를 호출하고 제어할 수 있어.
- API의 핵심은 '메시지 목록'이야.
- 메시지 역할:
- 시스템 (System): AI의 행동 방식, 말투 등을 설정해줘. (예: "너는 친절한 과학 선생님이야.")
- 유저 (User): 사용자의 입력 내용이야.
- 어시스턴트 (Assistant): AI의 이전 응답으로, 대화 맥락을 이어가는 데 사용돼.
실습:
- 시스템 프롬프트를 다르게 설정해서 AI의 답변이 어떻게 달라지는지 봤어.
- 친절한 과학 선생님: 중학생에게 설명하듯 친절하게 답변.
- 물리학 박사: 전문 용어를 사용하며 정확하고 간결하게 답변.
- 소크라테스: 답을 직접 알려주지 않고 질문을 던져 스스로 답을 찾게 유도.
- 멀티턴 대화 (여러 번 주고받는 대화):
- AI는 대화를 기억하지 못해. 맥락을 유지하려면 이전 대화 전체를 매번 다시 전달해야 해.
- 이 때문에 컨텍스트 윈도우 제약이 더 커져.
- 대화가 길어질수록 히스토리 관리와 비용이 중요해져.
이번 강의는 좀 어려웠을 수 있지만, AI가 언어를 어떻게 이해하고 처리하는지 직접 체험해 볼 수 있었을 거야. 다음 강의에서는 AI의 한계를 극복하는 방법에 대해 더 자세히 알아볼게!