우리는 매일 언어를 사용하며 소통합니다. 별생각 없이 뱉는 말이나 쓰는 글도 사실은 정교한 규칙과 순서에 따라 의미를 전달합니다. 그런데 만약 이 '순서'가 뒤죽박죽이 된다면 어떻게 될까요?
가장 쉬운 예시를 들어보겠습니다.
"철수가 영희를 사랑했다."
"영희가 철수를 사랑했다."
이 두 문장은 사용된 단어는 똑같습니다. '철수', '영희', '사랑했다'. 하지만 단어의 순서만 바뀌었을 뿐인데, 문장의 의미는 완전히 달라집니다. 첫 문장에서는 철수가 사랑의 주체이고, 두 번째 문장에서는 영희가 사랑의 주체가 됩니다. 이처럼 우리 인간은 문장 속 단어의 순서를 통해 누가 무엇을 했는지, 사건의 흐름은 어떤지 직관적으로 파악합니다.
AI, 특히 ChatGPT 같은 LLM(거대 언어 모델)이 언어를 이해하는 첫 단계는 문장을 '토큰'으로 쪼개고, 이 토큰들을 '숫자(벡터)'로 바꾸는 과정이라고 이해했습니다. AI의 머릿속은 온통 이 숫자 벡터들로 가득합니다.
여기서 의문이 생길 수 있습니다.
"단어를 숫자 벡터로 바꿔서 수학적으로 계산한다면, 문장 속 단어들의 '순서 정보'는 어디로 갔지?"
수학적인 계산은 기본적으로 순서에 덜 민감할 수 있습니다. 예를 들어 1+2나 2+1이나 결과는 같습니다. AI가 단순히 단어들을 벡터로 변환해서 한데 모아놓는다면, "철수가 영희를 사랑했다"라는 문장의 벡터 집합과 "영희가 철수를 사랑했다"라는 문장의 벡터 집합은 동일하게 보일 수 있습니다. 이렇게 되면 AI는 문장의 의미를 정확히 파악할 수 없게 됩니다. 이는 AI가 언어를 이해하는 데 있어 커다란 숙제가 됩니다.
그럼에도 불구하고 ChatGPT는 우리가 입력한 문장의 의미와 맥락을 기가 막히게 파악하고, 복잡한 지시도 척척 수행합니다. 심지어 긴 대화 속에서 이전에 했던 말을 기억하며 자연스럽게 대화를 이어가기도 합니다. 우리는 이런 AI의 '맥락 파악 능력'과 '놀라운 이해력'에 감탄합니다.
하지만 이런 이해력은 단순히 단어를 숫자로 바꾸는 것만으로는 불가능합니다. AI가 문장 속에서 단어들이 어떤 '위치'에 있는지, 그리고 그 위치가 어떤 의미를 가지는지 파악하는 특별한 방법이 있기 때문입니다. 이 '위치 정보'를 AI가 어떻게 처리하는지 이해한다면, ChatGPT의 똑똑함 뒤에 숨겨진 또 하나의 비밀을 알게 됩니다.
단순히 단어를 숫자로 바꾸는 것만으로는 순서 정보를 담기 어렵습니다. 그렇다면 ChatGPT를 포함한 최신 AI 모델들은 어떻게 이 문제를 해결했을까요? 그 비밀은 바로 'Transformer(트랜스포머)'라는 혁신적인 구조에 있습니다.
AI 기술에 관심이 있으신 분들은 'Transformer'가 등장하면서 기존의 RNN(Recurrent Neural Network)이나 LSTM(Long Short-Term Memory) 같은 모델들이 가지고 있던 한계를 극복했다는 이야기를 들어보셨을 겁니다. RNN은 이름 그대로 '순환하는' 신경망이라, 단어를 하나씩 순서대로 읽고 다음 단어를 예측하는 방식이었습니다. 마치 사람이 한 글자씩 읽듯이 말입니다.
하지만 Transformer는 다릅니다. 문장 전체를 한 번에 보고, 그 안에서 단어들 간의 관계를 파악하는 방식을 사용합니다. 이것이 바로 '어텐션(Attention)' 메커니즘의 핵심입니다. 마치 우리가 복잡한 그림을 볼 때 특정 부분에 집중하면서 전체적인 구도를 파악하듯이, Transformer는 문장 내의 모든 단어들을 동시에 보면서 어떤 단어가 다른 단어와 더 밀접한 관련이 있는지 찾아냅니다.
여기서 중요한 질문이 떠오릅니다.
"순차적으로 처리하지 않는다면, 그럼 문장 앞뒤는 어떻게 구분하는 거죠?"
"한 문장 안에서 '먼저 나온 단어'랑 '나중 나온 단어'를 구분 못 하는 건가요?"
만약 AI가 단어들의 순서를 전혀 모른 채 무작위로 뒤섞인 단어들만 본다면, "철수가 영희를 사랑했다"와 "영희가 철수를 사랑했다"를 구별할 수 없다는 문제는 여전히 남게 됩니다.
바로 이 지점에서 Transformer의 숨겨진 영리함이 드러납니다. Transformer는 단어 자체의 의미(임베딩 벡터)에 더해, 각 단어가 문장 내에서 '어떤 위치'에 있는지에 대한 추가적인 정보를 함께 입력받습니다. 이 추가 정보가 바로 '위치 인코딩(Positional Encoding)'입니다.
위치 인코딩은 각 단어의 벡터에 '나 여기 있어!'라고 외치는 고유한 '자리표'를 붙여주는 것과 같습니다. 예를 들어, 문장 첫 단어는 '1번 자리', 두 번째 단어는 '2번 자리'와 같은 정보를 담은 벡터를 원래 단어 벡터에 더해주는 방식입니다.
"철수(1번 자리)가 영희(2번 자리)를 사랑(3번 자리)했다(4번 자리)."
"영희(1번 자리)가 철수(2번 자리)를 사랑(3번 자리)했다(4번 자리)."
이제 AI는 단어 벡터만 보는 것이 아니라, '어떤 단어가 어떤 자리에 있다'는 정보를 함께 보게 됩니다. 이렇게 되면 AI는 단어들의 내용뿐만 아니라, 그 단어들이 문장 안에서 어떤 순서로 배열되어 있는지, 즉 단어들의 상대적인 위치 관계를 파악할 수 있게 됩니다.
만약 이 '위치 정보'가 없다면 어땠을까요? ChatGPT는 아무리 많은 데이터를 학습했더라도, 문장 속 단어들의 관계나 흐름을 이해하지 못하고 그저 무작위로 단어를 나열하는 기계에 불과했을 겁니다.
우리가 ChatGPT의 놀라운 맥락 파악 능력이나, 복잡한 질문에 대한 논리적인 답변에 감탄하는 것은 단순히 단어의 의미만을 아는 것을 넘어, AI가 단어들의 위치 관계를 통해 문장 전체의 구조와 흐름을 완벽하게 이해하고 있기 때문입니다. 이 '위치 정보'야말로 Transformer 기반의 LLM이 이전 모델들의 한계를 뛰어넘어 인간의 언어를 놀랍도록 정교하게 이해하게 된 핵심 비밀 중 하나인 것입니다.
AI는 대체 어떤 마법으로 각 단어의 '자리'를 알아내는 걸까요? 복잡한 수학 공식이나 사인, 코사인 함수는 잠시 잊으셔도 좋습니다. 우리는 그 핵심 원리를 아주 직관적인 비유로 쉽게 알아보겠습니다.
우리가 친구들과 긴 회의를 하고 있습니다. 모든 사람이 동시에 자유롭게 발언해도, 우리는 누가 먼저 말했고 누가 나중에 말했는지, 어떤 발언이 어떤 발언 뒤에 나왔는지 자연스럽게 파악합니다. AI도 이와 비슷하게 문장 전체를 '동시에' 보면서도 단어들의 순서를 파악해야 합니다.
여기서 등장하는 것이 바로 '위치 인코딩(Positional Encoding)'이라는 기술입니다. 마치 각 단어에게 '너는 몇 번째 자리에 앉아!' 하고 고유한 표식을 달아주는 것과 같습니다.
가장 쉬운 비유는 기차 좌석 번호표입니다. AI는 문장을 구성하는 모든 단어(토큰)들을 마치 기차에 앉아 있는 승객처럼 생각합니다.
"철수(1호차)가 영희(2호차)를 사랑(3호차)했다(4호차)."
여기서 '철수'는 1호차, '영희'는 2호차... 이런 식으로 각 단어는 문장 내에서 자기만의 고유한 '좌석 번호'를 부여받게 됩니다. 그런데 단순히 '1, 2, 3, 4' 같은 숫자를 그대로 부여하는 건 아닙니다. 왜냐하면 '1'번과 '2'번은 서로 가깝고, '1'번과 '100'번은 멀다는 '거리 개념'을 AI가 바로 이해하기 어렵기 때문입니다.
그래서 위치 인코딩은 단순히 순서 번호를 붙이는 것을 넘어, '패턴이 있는 번호표'를 각 단어에 부여합니다. 예를 들어, 짝수 번째 단어는 '파란색 패턴'의 번호표를, 홀수 번째 단어는 '빨간색 패턴'의 번호표를 받는다고 해 보겠습니다. 그리고 같은 '파란색 패턴' 안에서도, 앞쪽 자리는 '밝은 파랑', 뒤쪽 자리는 '어두운 파랑' 같은 식으로 미묘하게 다른 색상 정보를 가지게 됩니다.
이렇게 되면 AI는 단어 자체의 의미 외에, 그 단어가 가진 '색상 패턴'을 통해 문장 내에서의 상대적인 위치와 다른 단어들과의 거리감을 파악할 수 있게 됩니다.
이제 AI는 문장을 볼 때, 단어의 의미(예: '철수'라는 단어의 벡터)뿐만 아니라, 그 단어에 붙어 있는 '위치 표식'도 함께 보게 됩니다.
AI는 '철수'라는 단어가 1번 자리에 있다는 표식을 통해, '철수'가 문장의 시작 부분에 있다는 것을 압니다.
'사랑했다'라는 단어가 3번 자리에 있고, 바로 앞 2번 자리에는 '영희'라는 단어가 있다는 표식을 통해, '영희가 사랑의 대상'일 가능성이 높다는 관계를 유추할 수 있습니다.
결국 이 위치 인코딩은 AI에게 문장이라는 긴 기차 안에서 각 단어가 어디에 앉아 있는지, 그리고 어떤 단어와 얼마나 떨어져 있는지에 대한 '보이지 않는 지도'를 제공합니다. 이 지도가 있기에 AI는 단어들의 의미를 조합하는 것을 넘어, 문장 전체의 흐름과 구조, 그리고 단어들 간의 복잡한 관계를 정확히 파악하며 우리처럼 자연스럽게 언어를 이해할 수 있게 되는 것입니다.
이제 우리는 AI가 단어 자체의 의미뿐 아니라, 단어들의 '위치 정보'를 통해 문장을 이해한다는 사실을 알게 되었습니다. 이 지식은 단순히 AI의 작동 원리를 아는 것을 넘어, 우리가 ChatGPT 같은 AI와 더 효과적으로 대화하는 '프롬프트 엔지니어링'에도 큰 영향을 미칩니다.
혹시 이런 경험 있으신가요? AI에게 질문을 했는데 뭔가 답변이 이상해서, 똑같은 내용이라도 단어의 순서만 살짝 바꿔 다시 물어보니 훨씬 더 좋은 답변을 받을 수도 있습니다.
아래와 같은 예를 보겠습니다.
첫 번째 시도: "파란색 사과에 대한 정보를 줘. 빨간색은 빼고."
두 번째 시도: "빨간색 사과 정보는 빼고, 파란색 사과에 대해서만 알려줘."
두 문장 모두 '빨간색 사과를 제외한 파란색 사과 정보'를 요구하는 것처럼 보이지만, AI는 두 번째 문장에서 더 명확하게 의도를 파악할 가능성이 높습니다. 왜냐하면 AI가 '제외'해야 할 정보(빨간색 사과)와 '중심'이 되는 정보(파란색 사과)의 위치와 관계를 더 명확하게 인지할 수 있기 때문입니다.
이처럼 AI는 단어의 절대적인 의미뿐 아니라, 문장 내에서 그 단어가 놓인 '자리'와 다른 단어들과의 '상대적인 관계'를 파르게 분석합니다. 그래서 질문 속에서 단어의 순서나 배치를 어떻게 하느냐에 따라 AI가 질문을 해석하는 방식이 달라지고, 결과적으로 답변의 품질도 크게 달라질 수 있습니다.
'위치 인코딩'의 원리를 이해했다면, AI가 내 질문의 의도를 정확히 파악하고 원하는 답변을 생성하도록 돕는 몇 가지 프롬프트 작성 팁을 활용할 수 있습니다.
가장 중요한 정보는 앞쪽에 배치
AI는 문장을 앞에서부터 읽어 나가며 맥락을 형성합니다. 따라서 질문의 핵심 요청이나 가장 중요한 키워드를 문장이나 단락의 초반에 배치하면, AI가 해당 정보에 더 큰 '어텐션(집중)'을 기울일 가능성이 높습니다.
예시: "이메일 초안을 작성해줘. [가장 중요한 목적/핵심 정보] 포함해서."
제약 조건이나 제외할 내용을 명확히 뒤에 작성
무엇을 해야 하는지 먼저 지시하고, 그 다음에 '단, ~은 제외하고' 또는 '~는 포함하지 마세요'와 같이 제약 조건을 덧붙이는 것이 좋습니다. 이는 AI가 먼저 메인 작업을 인지하고, 이후에 세부적인 필터링 조건을 적용하도록 유도합니다.
예시: "보고서를 요약해줘. (핵심 내용). 분량은 500단어 이내로, 그리고 기술 용어는 최소화해줘."
명령어와 대상의 순서
AI에게 특정 작업을 지시할 때, '무엇을 할지'와 '무엇에 대해 할지'의 순서를 명확히 하는 것이 좋습니다.
예시: "다음 문장을 번역해줘: [번역할 문장]."
나쁜 예: "[번역할 문장]을 번역해줘." (의미 전달은 되지만, AI는 명령어를 먼저 인지할 때 효율성이 높아집니다.)
역할 부여는 질문의 가장 앞쪽
AI에게 특정 역할을 부여할 때는 (예: "당신은 전문 마케터입니다.") 이를 질문의 가장 앞쪽에 두어 AI가 해당 역할의 '관점'에서 모든 이후의 문맥을 해석하도록 만드세요. 이는 AI의 답변 방향성을 설정하는 강력한 위치 정보가 됩니다.
AI의 '이해력'에서 단어의 의미는 물론 중요합니다. 하지만 때로는 단어 자체의 의미보다 문장 내에서의 '위치'가 훨씬 더 중요한 정보를 담기도 합니다.
이는 마치 우리가 문법적으로 정확한 문장을 구사해도 어순이 뒤바뀌면 의미가 모호해지거나 오해를 불러일으키는 것과 같은 이치입니다. AI는 수많은 데이터 속에서 학습하며, 특정 위치에 놓인 단어가 어떤 기능을 하는지, 앞뒤 단어들과 어떤 관계를 맺는지에 대한 패턴을 파악합니다.
결론적으로, AI와 대화할 때 단어를 '점'이 아닌 '선'으로 이해해야 합니다. 단어 하나하나의 점도 중요하지만, 그 점들이 어떤 순서로 연결되어 선을 이루고, 그 선이 전체 그림에서 어떤 위치를 차지하는지까지 고려해야 AI가 우리의 의도를 완벽하게 파악하고 최상의 결과물을 내놓을 수 있습니다. 이것이 바로 '위치 정보'를 이해하는 것이 프롬프트 엔지니어링의 핵심이 되는 이유입니다.
지금까지 GPT와 같은 최신 AI 모델이 언어를 어떻게 이해하는지, 그중에서도 '단어의 위치 정보'가 얼마나 중요한 역할을 하는지 자세히 살펴보았습니다. '토큰'이 AI 언어의 '음절'이라면, '위치 정보'는 그 음절들이 모여 어떤 멜로디와 의미를 만들어내는지 알려주는 '보이지 않는 악보'이자 '지도'라고 할 수 있습니다.
우리는 문장 속 단어의 순서가 바뀌면 의미가 완전히 달라진다는 것을 직관적으로 압니다. "철수가 영희를 사랑했다"와 "영희가 철수를 사랑했다"처럼, 같은 단어라도 위치에 따라 주어와 목적어가 뒤바뀌는 언어의 마법을 AI도 이해해야만 했습니다. 단순히 단어를 숫자로 변환하는 것만으로는 이 미묘하지만 결정적인 '순서'를 포착할 수 없었습니다.
여기서 바로 '위치 인코딩(Positional Encoding)'이 등장합니다. 이는 AI가 문장 내 모든 단어에 고유한 '좌석 번호표'나 '주소'를 부여하는 기술입니다. 이 '위치 표식' 덕분에 AI는 문장 전체를 한 번에 보면서도, 각 단어가 어디에 위치하며 다른 단어들과 어떤 상대적인 관계를 맺고 있는지 정확하게 파악할 수 있게 됩니다. 이 '보이지 않는 지도'가 없다면, ChatGPT의 놀라운 문맥 이해력과 논리적인 답변은 불가능했을 겁니다. AI는 그저 무작위로 단어를 나열하는 기계에 불과했을 것입니다.
결국, AI의 언어 이해력은 단어 하나의 의미를 아는 것을 넘어, 단어들이 문장 속에서 어떤 '위치'에 놓여 서로 어떤 '관계'를 맺고 있는지까지 종합적으로 분석하는 능력에서 나옵니다. 우리가 AI에게 질문할 때 '짧고 명확한' 질문이 때로는 더 효과적인 이유, 그리고 '구체적인 예시'나 '역할 부여'가 중요한 이유도 모두 AI가 이 '위치 정보'를 통해 우리의 의도를 가장 효율적으로 파악하도록 돕기 위함입니다.
이제 AI와 대화할 때 단순히 무슨 단어를 쓸지 고민하는 것을 넘어, 어떤 단어를 어디에 배치할지, 즉 '단어의 위치'가 전달하는 미묘한 뉘앙스까지 고려한다면, AI는 여러분의 가장 강력한 조력자가 될 것입니다.
깊이 파기 - 위치 임베딩이란?
참고 논문: Attention is All You Need (Vaswani et al., 2017)
GPT가 단어의 ‘순서’를 이해하는 데 사용하는 핵심 기술 중 하나가 Positional Encoding(위치 인코딩)입니다. Transformer는 RNN처럼 순차적으로 단어를 읽지 않기 때문에, 입력된 단어의 ‘몇 번째인지’를 수학적으로 표현해 줘야 합니다. 아래는 원래 Transformer 논문*에서 제시한 Positional Encoding 계산 방식입니다.
PE(pos, 2i) = sin(pos / 10000^(2i / d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i / d_model))
pos: 단어의 위치 (예: 0번째, 1번째, 2번째 …)
i: 벡터 차원의 인덱스
d_model: 전체 벡터의 차원 수 (예: 512)
이 수식은 각 단어 위치마다 고유한 사인파/코사인파 패턴을 만들어냅니다. 단어가 조금만 움직여도 벡터 패턴이 달라지기 때문에, 모델은 두 단어의 상대적 거리까지 자연스럽게 인식할 수 있게 됩니다.
비유로 풀기: “무지개 색깔로 위치를 구분한다”
이 과정을 색깔로 비유하면, 각 단어가 일정한 위치에 고유한 색상 조합(주파수 패턴)을 입히는 것과 같습니다. 예를 들어,
문장의 첫 단어는 파란색 계열,
중간쯤 오는 단어는 녹색 계열,
마지막 단어는 붉은색 계열로 칠해지는 식입니다.
단어들은 이 색상의 차이를 통해 “누가 먼저, 누가 나중에 나왔는지”를 모델 내부에서 식별할 수 있게 됩니다. 이렇게 색상처럼 반복적이면서도 위치마다 미묘하게 달라지는 패턴이 바로 사인·코사인 함수로 생성된 위치 임베딩입니다.