벡터란? AI의 숫자 묶음에서 방향·크기·거리까지 이해하기

이미지
기초 시리즈에서는 임베딩을 “단어나 문장을 나타내는 숫자 묶음”이라고 설명했습니다. 이 표현은 시작점으로 충분하지만, AI의 계산을 더 깊이 이해하려면 숫자들이 왜 묶여 있고, 그 묶음의 방향과 길이, 서로의 거리가 무엇을 의미하는지 살펴봐야 합니다. 중급 시리즈의 첫 주제는 벡터(Vector) 입니다. 벡터는 임베딩뿐 아니라 신경망의 입력과 출력, 가중치 계산, Attention, 유사도 검색까지 이어지는 공통 언어입니다. 이번 글에서는 벡터를 단순한 숫자 목록에서 공간의 방향과 관계를 표현하는 대상으로 확장해 보겠습니다. 벡터란 무엇인가? 벡터는 순서가 있는 숫자들의 모음입니다. 예를 들어 [3, 4] 와 [4, 3] 은 같은 숫자를 포함하지만 순서가 다르므로 서로 다른 벡터입니다. 각 숫자를 벡터의 성분(Component) 이라고 부릅니다. 벡터를 이해하는 대표적인 두 관점이 있습니다. 목록 관점: 여러 특징이나 측정값을 순서대로 담은 숫자 배열입니다. 기하학 관점: 공간에서 특정 방향과 크기를 가진 화살표 또는 한 점의 위치입니다. 두 관점은 서로 다른 개념이 아닙니다. [3, 4] 는 첫 번째 축으로 3, 두 번째 축으로 4만큼 이동한다는 뜻으로 그릴 수 있습니다. 같은 숫자 묶음이 계산에서는 배열이고, 좌표 공간에서는 이동과 위치가 되는 것입니다. 스칼라와 벡터는 어떻게 다를까? 스칼라(Scalar) 는 하나의 숫자입니다. 온도 20도, 학습률 0.001처럼 크기 하나만 나타냅니다. 반면 벡터는 여러 성분을 함께 가지므로 하나의 대상을 여러 측면에서 표현할 수 있습니다. 예를 들어 학생 한 명을 [수학 점수, 영어 점수, 과학 점수] 순서로 표현하면 [80, 90, 70] 은 3차원 벡터가 됩니다. 여기서는 각 차원의 의미를 사람이 정했습니다. 임베딩에서는 각 차원의 의미가 이렇게 깔끔하게 이름 붙는 경우가 드물고, 학습 과정에서 여러 특징이 많은 차원에 분산됩니다. 벡터의 성분, 방향, 크기 벡터 v ...

프롬프트 엔지니어링이란? AI에게 원하는 답을 명확히 요청하는 방법

이미지
지난 글에서는 ChatGPT가 질문과 대화 문맥을 토큰으로 처리한 뒤, 다음 토큰을 반복해서 예측하며 답변을 만든다는 원리를 알아봤습니다. 그렇다면 같은 AI를 사용해도 어떤 사람은 원하는 결과를 빠르게 얻고, 어떤 사람은 계속 엉뚱한 답을 받는 이유는 무엇일까요? 차이는 모델의 성능뿐 아니라 무엇을 원하는지 얼마나 분명하게 전달했는가 에서 생길 수 있습니다. 프롬프트 엔지니어링은 AI에게 마법의 주문을 입력하는 기술이 아니라, 목표와 맥락, 자료, 제약 조건, 출력 형식을 설계하고 결과를 반복해서 개선하는 방법입니다. 프롬프트란 무엇일까? 프롬프트(Prompt) 는 AI 모델에 전달하는 입력입니다. 간단한 질문 한 줄일 수도 있고, 참고 문서와 작업 규칙, 결과 형식이 포함된 긴 요청문일 수도 있습니다. 대화형 AI에서는 이전 메시지와 현재 질문도 모델이 답을 만드는 문맥에 영향을 줍니다. 프롬프트 엔지니어링(Prompt Engineering) 은 원하는 결과를 얻기 위해 이 입력을 구조화하고 시험하며 개선하는 과정입니다. 한 번 잘 써서 영원히 사용하는 문장이라기보다, 실제 결과를 보고 부족한 조건을 보완하는 설계 작업에 가깝습니다. 왜 프롬프트가 결과를 바꿀까? 언어 모델은 현재 문맥을 바탕으로 이어질 토큰의 가능성을 계산합니다. “글을 써 줘”처럼 범위가 넓은 요청에는 주제, 독자, 길이, 말투, 포함할 내용이 정해져 있지 않습니다. 모델은 빈칸을 추정해서 채워야 하므로 사용자가 기대한 방향과 달라질 가능성이 커집니다. 반대로 “AI 입문자를 대상으로 임베딩을 설명하는 1,500자 글을 작성하고, 비유 한 개와 주의점 세 개를 포함해 H2 제목으로 구분해 줘”라고 요청하면 가능한 결과의 범위가 좁아집니다. 모델이 무엇을 선택해야 하는지 판단할 근거가 늘어나는 것입니다. 공식 OpenAI 모델 가이드 도 목표, 관련 맥락, 제약 조건, 필요한 근거, 성공 기준과 출력 형식을 명확히 전달하는 방식을 권장합니다. 다만 지시를 같은 뜻으로 ...

ChatGPT는 어떻게 답변할까? 질문이 답변으로 만들어지는 원리

이미지
지난 글에서는 토큰 ID가 임베딩 벡터로 바뀌고, 비슷한 맥락에서 쓰이는 표현들이 숫자 공간에서 관계를 형성하는 원리를 알아봤습니다. 그렇다면 사용자가 질문을 입력한 순간부터 화면에 답변이 나타날 때까지는 어떤 일이 일어날까요? ChatGPT의 답변은 저장된 문장 하나를 그대로 꺼내 보여주는 방식이 아닙니다. 입력된 질문과 대화 문맥을 처리한 뒤, 이어질 가능성이 있는 토큰을 예측하고 선택하는 과정을 반복해 답변을 만듭니다. 여기에 지시를 따르도록 학습된 방식, 안전 규칙, 그리고 필요할 때 사용할 수 있는 도구가 함께 작동할 수 있습니다. ChatGPT와 언어 모델은 같은 말일까? 둘은 밀접하지만 완전히 같은 개념은 아닙니다. 언어 모델 은 문맥을 바탕으로 다음 토큰의 가능성을 계산하는 핵심 모델입니다. ChatGPT 는 사용자가 이 모델과 대화할 수 있도록 입력과 출력, 대화 기록, 지시 체계, 안전 기능, 도구 연결 등을 구성한 서비스입니다. 따라서 “ChatGPT가 답변한다”는 말에는 기본적인 언어 생성뿐 아니라 사용자가 보낸 메시지를 정리하고, 현재 대화의 관련 내용을 전달하며, 결과를 화면에 보여주는 과정까지 포함됩니다. 기능과 설정에 따라 웹 검색, 파일 분석, 이미지 이해 같은 도구가 연결될 수도 있지만 모든 답변이 항상 외부 검색을 거치는 것은 아닙니다. ChatGPT 답변 생성의 전체 흐름 핵심 흐름은 다음 여섯 단계로 정리할 수 있습니다. 실제 시스템 내부에는 더 많은 처리와 검사가 존재할 수 있지만, 답변 생성 원리를 이해하기에는 이 구조가 유용합니다. 질문 입력: 사용자의 메시지와 필요한 대화 문맥이 모델 입력으로 준비됩니다. 토큰화: 텍스트를 모델이 처리할 수 있는 토큰으로 나누고 각각을 숫자 ID로 바꿉니다. 임베딩과 문맥 처리: ID를 벡터로 변환하고 Transformer가 토큰 사이의 관계를 계산합니다. 다음 토큰 예측: 현재 문맥 뒤에 올 수 있는 토큰마다 점수와 확률 분포를 만듭...

임베딩이란? AI가 단어의 의미를 숫자 벡터로 표현하는 방법

이미지
지난 글에서는 AI가 문장을 토큰(Token) 이라는 작은 조각으로 나누고, 각 토큰을 고유한 숫자 ID로 바꾼다는 것을 알아봤습니다. 하지만 “고양이”가 314번이고 “강아지”가 927번이라고 해서 AI가 두 단어의 관계를 이해할 수 있는 것은 아닙니다. 숫자 ID는 사전에서 토큰을 찾기 위한 주소일 뿐, 숫자의 크기나 간격에는 의미가 없기 때문입니다. 언어 모델이 단어 사이의 관계를 계산하려면 ID를 더 풍부한 숫자 표현으로 바꿔야 합니다. 이때 사용하는 것이 임베딩(Embedding) 입니다. 이번 글에서는 임베딩이 무엇이며 어떻게 학습되고, Transformer와 LLM에서 어떤 역할을 하는지 차근차근 살펴보겠습니다. 임베딩이란? 임베딩은 단어·토큰·문장 같은 대상을 여러 개의 실수로 이루어진 벡터(Vector) 로 표현하는 방법입니다. 예를 들어 “고양이”라는 토큰이 [0.2, -0.7, 0.4, …] 처럼 수백 개 이상의 숫자로 표현될 수 있습니다. 여기에 나온 숫자는 이해를 돕기 위한 예시이며, 실제 값과 벡터 길이는 모델마다 다릅니다. Google의 머신러닝 임베딩 학습 자료 는 임베딩을 희소한 데이터를 더 낮은 차원의 조밀한 벡터로 표현하여 항목 사이의 의미 관계를 담는 방법으로 설명합니다. 핵심은 하나의 번호 대신 여러 숫자의 조합으로 대상을 표현한다는 점입니다. 토큰 ID만으로는 왜 부족할까? 토큰 ID는 단지 어휘 사전의 항목을 구분하는 번호입니다. “고양이”의 ID가 314이고 “강아지”의 ID가 927이라고 가정해도, 927에서 314를 뺀 값은 두 동물의 의미 차이를 나타내지 않습니다. “자동차”의 ID가 315라고 해서 고양이와 자동차가 고양이와 강아지보다 비슷한 것도 아닙니다. 원-핫 인코딩처럼 한 위치만 1이고 나머지는 모두 0인 벡터를 사용할 수도 있지만, 어휘가 커질수록 벡터가 매우 길고 대부분이 0인 희소한 표현이 됩니다. 서로 다른 토큰의 원-핫 벡터만 보아서는 어떤 단어가 비슷하게 쓰이는지도 알기 어렵...

토큰이란? AI가 문장을 읽고 만드는 기본 단위

이미지
지난 글에서는 LLM이 문맥에 이어질 내용을 확률적으로 예측하고, 선택한 결과를 다시 문맥에 넣어 긴 답변을 만든다는 것을 알아봤습니다. 이때 모델이 한 번에 예측하는 기본 단위가 바로 토큰(Token) 입니다. 토큰은 AI가 글을 읽고 만드는 작은 조각입니다. 하나의 단어일 수도 있지만 단어의 일부, 문장 부호, 공백과 결합된 문자열이 될 수도 있습니다. 따라서 토큰을 단순히 ‘단어’라고만 생각하면 실제 동작을 이해하기 어렵습니다. 왜 문장을 토큰으로 나눌까? 신경망은 글자를 그대로 이해하지 않고 숫자로 계산합니다. 먼저 토크나이저(Tokenizer) 가 입력 문장을 정해진 규칙에 따라 토큰으로 나누고, 각 토큰을 어휘 사전에 등록된 숫자 ID로 바꿉니다. 예를 들어 “오늘 날씨가 좋다”라는 문장이 여러 토큰으로 분리되면 각 조각은 고유한 토큰 ID에 대응합니다. 모델은 이 ID를 입력받은 뒤 다음 글에서 살펴볼 임베딩 벡터로 변환해 계산합니다. 토큰은 단어와 어떻게 다를까? 사람은 보통 띄어쓰기 단위로 단어를 구분하지만, 토크나이저는 모델이 학습한 어휘와 분할 알고리즘을 기준으로 문장을 나눕니다. 자주 등장한 짧은 단어는 하나의 토큰이 될 수 있습니다. 긴 단어나 드문 단어는 여러 부분 단어로 나뉠 수 있습니다. 쉼표와 마침표 같은 문장 부호가 별도 토큰이 될 수 있습니다. 공백이 다음 단어와 결합된 형태로 저장될 수도 있습니다. Google의 대규모 언어 모델 입문 자료 에서는 토큰이 단어, 부분 단어 또는 한 글자일 수 있으며, 현대 언어 모델은 주로 부분 단어 단위의 토큰화를 활용한다고 설명합니다. 토큰화 과정 살펴보기 원문 입력: 사용자가 자연어 문장을 입력합니다. 정규화와 분할: 토크나이저가 규칙에 따라 글을 처리하고 여러 토큰으로 나눕니다. ID 변환: 각 토큰을 어휘 사전의 숫자 ID에 연결합니다. 모델 입력: ID가 임베딩으로 변환되어 신경망 계산에 사용됩니다. ...

LLM이란? 대규모 언어 모델이 문장을 배우고 만드는 원리

이미지
지난 글에서는 Transformer 가 Self-Attention으로 문장 안의 여러 토큰 관계를 살펴보고 문맥을 처리하는 구조라는 것을 알아봤습니다. 이 구조를 많은 데이터와 큰 규모의 신경망으로 학습하면 오늘날 자주 접하는 LLM 으로 이어집니다. LLM(Large Language Model, 대규모 언어 모델) 은 많은 텍스트에서 언어의 패턴을 학습하고, 주어진 문맥에 이어질 토큰의 가능성을 예측하는 모델입니다. 질문에 답하거나 글을 요약하고 번역할 수 있지만, 사람처럼 생각하거나 모든 사실을 정확히 기억하는 존재는 아닙니다. 먼저 언어 모델이란 무엇일까? 언어 모델은 어떤 문맥 뒤에 특정 단어나 토큰이 나타날 가능성을 계산합니다. “오늘 하늘이 매우 ___”라는 문장이 주어지면 ‘맑다’, ‘흐리다’, ‘어둡다’ 같은 후보에 서로 다른 확률을 부여하는 식입니다. 여기서 토큰(Token) 은 모델이 글을 처리하는 기본 단위입니다. 하나의 단어일 수도 있고, 단어의 일부나 문장 부호일 수도 있습니다. Google의 대규모 언어 모델 입문 자료 도 언어 모델을 긴 토큰 순서 안에서 토큰 또는 토큰 순서의 확률을 추정하는 모델로 설명합니다. LLM에서 ‘대규모’는 무엇을 뜻할까? ‘대규모’라는 말은 단순히 프로그램 파일이 크다는 뜻만은 아닙니다. 일반적으로 다음 요소들이 함께 커진 언어 모델을 가리킵니다. 학습 데이터: 다양한 주제와 표현이 담긴 많은 텍스트를 사용합니다. 파라미터: 학습으로 조정되는 수많은 가중치에 언어 패턴이 분산되어 반영됩니다. 계산량: 학습과 실행에 상당한 연산 자원이 필요할 수 있습니다. 문맥 처리: 여러 토큰 사이의 관계를 이용해 다음 내용을 예측합니다. 다만 크기만 키운다고 항상 좋은 모델이 되는 것은 아닙니다. 데이터 품질, 학습 방법, 모델 구조, 평가와 안전 조정도 결과에 큰 영향을 줍니다. LLM은 어떻게 학습할까? 대표적인 생성형 언어 모델의 기본 학습 목표는 앞의 ...

Transformer란? Attention으로 문맥을 한꺼번에 읽는 AI 구조

이미지
지난 글에서는 Attention(어텐션) 이 현재 필요한 정보와 입력 전체를 비교해 중요한 부분에 더 높은 가중치를 주는 원리를 살펴봤습니다. 그렇다면 이 Attention을 보조 기능이 아니라 모델의 중심 구조로 사용하면 어떻게 될까요? Transformer(트랜스포머) 는 Self-Attention을 중심으로 문맥을 처리하는 신경망 구조입니다. 단어를 반드시 처음부터 하나씩 읽으며 기억을 넘기는 대신, 입력 안의 여러 단어 관계를 직접 비교합니다. 현재 널리 쓰이는 언어 모델의 기반을 이해하려면 먼저 알아야 할 구조입니다. Transformer는 왜 등장했을까? RNN과 LSTM은 순서가 있는 데이터를 처리할 때 이전 단계의 상태를 다음 단계로 전달합니다. 하지만 이런 순차 구조는 문장이 길어질수록 먼 정보를 연결하기 어렵고, 앞 단계의 계산이 끝나야 다음 단계를 처리할 수 있다는 제약이 있습니다. 2017년 발표된 Attention Is All You Need 논문 은 순환 구조나 합성곱 없이 Attention을 중심으로 만든 Transformer를 제안했습니다. 핵심은 입력의 각 위치가 다른 모든 위치를 직접 참고하게 만드는 것입니다. Transformer의 핵심은 Self-Attention Self-Attention은 문장 안의 각 단어가 같은 문장의 다른 단어를 살펴보고, 자신을 이해하는 데 얼마나 중요한지 계산하는 방식입니다. 예를 들어 “철수가 영희에게 책을 주었고, 그녀는 웃었다”라는 문장에서 ‘그녀’의 의미를 파악하려면 ‘영희’와의 관계가 중요합니다. Self-Attention은 두 단어가 멀리 떨어져 있어도 직접 관련도를 계산할 수 있습니다. 지난 글에서 알아본 Query·Key·Value도 여기서 사용됩니다. 각 입력 표현으로부터 Query, Key, Value를 만들고, Query와 Key의 관련도에 따라 Value를 섞어 문맥이 반영된 새로운 표현을 만듭니다. 입력에는 단어 의미와 위치가 함께 들어간다 Tra...