이 글은 업스테이지 Kevin Ko님의 페이스북에 올라온 글을 보고 궁금증을 해소하기 위해 작성된 글이다.

kevin : 만약 어떤 모델의 context length가 1T~10T 토큰 수준이라면, 수년간 했던 모든 대화를 요약 없이 원본으로 context에 들고 있고 매번 토큰 레벨 어텐션으로 참조할 수 있다면 더 이상 학습과 추론을 구분할 수 있을까?

긴 컨텍스트는 학습을 대체할 수 있을까?

LLM의 학습과 추론을 가르는 근본적인 차이

LLM을 쓰다 보면 이상한 감각이 든다. 모델은 방금 내가 한 말을 기억한다. 앞에서 정한 조건을 따라온다. 긴 문서를 넣으면 그 안의 정보를 찾아 답한다. 심지어 몇 년 치 대화 기록을 전부 넣을 수 있다면, 모델은 내 취향, 사고방식, 프로젝트 이력, 말투까지 모두 고려해서 답할 수 있을 것처럼 보인다.

그러면 자연스럽게 이런 질문이 생긴다.

모델이 모든 과거 맥락을 context로 들고 있을 수 있다면, 그것은 사실상 학습한 것과 같은 것 아닌가?

처음에는 그렇다고 생각하기 쉽다. 사용자의 입장에서 보면 “모델이 나를 학습했다”와 “모델이 내 과거 대화를 전부 읽고 답했다”는 결과적으로 비슷하게 느껴질 수 있다. 둘 다 과거를 반영하고, 둘 다 개인화된 답을 내놓고, 둘 다 이전 경험을 고려하는 것처럼 보인다.

하지만 내부 메커니즘을 보면 둘은 다르다. 아주 근본적으로 다르다.

학습은 모델 자체를 바꾸는 과정이다. 추론은 바뀌지 않은 모델이 현재 주어진 자료를 읽고 답을 계산하는 과정이다.

이 차이를 이해해야 LLM의 긴 컨텍스트, 메모리, attention, fine-tuning, 사전학습의 의미가 한꺼번에 정리된다.


모델의 지식은 어디에 있는가

LLM은 텍스트를 그대로 이해하지 않는다. 먼저 문장을 작은 조각으로 나눈다. 이 조각을 토큰이라고 한다.

예를 들어 “고양이 이름은 모모야”라는 문장은 단순화하면 다음과 같은 토큰들로 나뉜다.

고양이 / 이름 / 은 / 모모 / 야

모델은 이 토큰들을 다시 숫자 ID로 바꾼다.

고양이 → 15231 이름 → 9842 모모 → 44782

하지만 토큰 ID 자체에는 의미가 없다. 15231이라는 숫자가 고양이를 뜻하는 것은 아니다. 그래서 모델 안에는 각 토큰 ID에 대응하는 벡터 표가 있다. 이것을 embedding matrix라고 부른다.

고양이 → [0.42, -0.71, 0.33, ...]

이 벡터는 사람이 직접 설계한 의미표가 아니다. “고양이는 동물성 0.9, 귀여움 0.7, 반려동물성 0.8” 같은 식으로 사람이 값을 넣은 것이 아니다. 학습 과정에서 다음 토큰을 더 잘 맞히도록 수많은 숫자가 조금씩 조정된 결과다.

처음에는 이 벡터도 거의 랜덤에 가깝다. 그런데 모델이 “고양이는 야옹하고 운다”, “강아지는 멍멍하고 짖는다”, “고양이에게 사료를 줬다”, “고양이와 강아지는 반려동물이다” 같은 문장을 반복적으로 학습하면서, 고양이·강아지·사료·반려동물·동물 같은 토큰들이 예측에 유리한 방식으로 배치된다.

여기서 중요한 점은 모델의 지식이 하나의 사전처럼 저장되어 있지 않다는 것이다. 모델 안에는 “고양이 = 포유류” 같은 명시적 항목이 들어 있는 것이 아니다. 대신 수많은 weight와 embedding이 함께 조정되면서, 특정 문맥에서 어떤 토큰이 자연스러운지 계산할 수 있는 구조가 형성된다.

즉 LLM의 지식은 문장 목록이 아니라 확률적 구조에 가깝다. 그리고 그 구조는 weight에 분산되어 있다.


학습은 세계를 압축하는 과정이다

LLM의 기본 학습 목표는 단순하다.

앞의 토큰들이 주어졌을 때 다음 토큰을 맞힌다.

예를 들어 학습 데이터에 이런 문장이 있다고 하자.

“프랑스의 수도는 파리이다.”

모델은 이런 문제를 계속 푼다.

“프랑스의 수도는” 다음에 올 토큰은 무엇인가?

처음 모델은 틀릴 수 있다. “런던”에 높은 확률을 줄 수도 있고, “도시”에 높은 확률을 줄 수도 있다. 정답인 “파리”에 낮은 확률을 주면 loss가 커진다.

학습은 이 loss를 줄이는 방향으로 모델 내부 weight를 조금씩 바꾸는 과정이다. 이때 backpropagation이 사용된다. 모델이 왜 틀렸는지 계산하고, 어떤 weight를 어느 방향으로 바꾸면 다음에는 덜 틀릴지 계산한다.

이 과정이 한 번 일어난다고 모델이 똑똑해지는 것은 아니다. 하지만 수많은 문장, 코드, 논문, 대화, 수학 풀이, 설명문, 지시문에 대해 같은 과정을 반복하면 모델 내부에는 거대한 압축 구조가 생긴다.

이 압축 구조 안에는 여러 층위의 패턴이 들어간다.

단어와 단어의 관계. 문장 구조. 문체. 사실 지식. 개념 간 연관. 논리 전개 방식. 코드 작성 패턴. 수학 문제 풀이 절차. 질문에 답하는 방식. 사람이 선호하는 답변의 형태.

그래서 학습은 단순히 데이터를 외우는 과정이 아니다. 물론 빈도는 중요하다. 많이 반복되는 패턴은 모델에 더 강하게 반영될 가능성이 높다. 하지만 모델은 단순 빈도표가 아니다.

예를 들어 “Apple”이라는 단어를 생각해보자.

“Apple released a new iPhone.” “Apple is a fruit.”

모델은 Apple이 항상 회사라고 외우지 않는다. 문맥에 따라 회사일 수도 있고 과일일 수도 있음을 배운다. 즉 모델은 단어 자체보다 조건부 관계를 배운다.

어떤 문맥에서 어떤 의미가 활성화되는가. 어떤 단어가 어떤 단어와 함께 등장할 때 어떤 해석이 자연스러운가. 어떤 문제 상황에서 어떤 답변 구조가 선호되는가.

이것이 학습이다. 학습은 데이터를 모델 내부의 weight 공간에 압축해 넣는 과정이다.


추론은 압축된 세계관으로 현재 문맥을 읽는 과정이다

추론은 학습과 다르다. 추론 시점에는 weight가 바뀌지 않는다.

사용자가 질문을 입력하면, 모델은 그 질문과 현재 대화 기록, 시스템 지시, 첨부 문서, 검색 결과 등을 하나의 context로 받는다. 그리고 그 context를 토큰으로 쪼갠 뒤, 이미 학습된 embedding과 weight를 사용해 계산한다.

예를 들어 context가 다음과 같다고 하자.

“내 고양이 이름은 모모야. 내 고양이 이름이 뭐였지?”

모델은 먼저 이 문장을 토큰으로 나누고, 각 토큰을 벡터로 바꾼다. 그리고 Transformer layer를 통과시키면서 context 안의 토큰들이 서로를 참조하게 한다. 이때 핵심적으로 쓰이는 메커니즘이 self-attention이다.

self-attention은 쉽게 말해 “지금 이 토큰을 해석하려면 context 안의 어떤 토큰들을 봐야 하는가”를 계산하는 장치다.

질문 부분의 “고양이”, “이름”, “뭐였지”는 앞쪽의 “고양이 이름은 모모”와 관련이 있다. 모델은 attention을 통해 앞쪽의 “모모” 정보를 강하게 참조할 수 있다. 그러면 다음 토큰으로 “모모”가 나올 확률이 높아진다.

여기서 중요한 점은 모델이 새로 학습한 것이 아니라는 사실이다.

“모모”라는 이름이 모델 weight에 새겨진 것이 아니다. 모델은 단지 현재 context 안에 있는 “모모”라는 토큰을 찾아서, 이미 학습된 언어 이해 능력으로 그것이 고양이 이름임을 해석했을 뿐이다.

즉 추론은 다음과 같은 과정이다.

현재 context → 토큰화 → embedding → attention → 문맥화된 벡터 → 다음 토큰 확률 → 출력

그리고 이 과정을 토큰 하나씩 반복한다.

모델은 답변 전체를 한 번에 쓰지 않는다. 매 순간 다음 토큰 하나를 고르고, 그 토큰을 다시 context 뒤에 붙인 뒤, 다시 다음 토큰을 고른다. 우리가 보는 자연스러운 문장은 이 반복의 결과다.


학습과 추론은 같은 attention을 쓰지만 목적이 다르다

여기서 헷갈리기 쉬운 지점이 있다. 학습 때도 attention이 쓰이고, 추론 때도 attention이 쓰인다. 그렇다면 둘이 같은 것 아닌가?

아니다.

학습과 추론은 앞쪽 계산, 즉 forward pass는 비슷하다. 입력 토큰이 embedding으로 바뀌고, attention과 MLP layer를 지나 다음 토큰 확률이 나온다.

차이는 그 다음이다.

학습에서는 모델이 예측한 토큰과 정답 토큰을 비교한다. 틀리면 loss를 계산한다. 그리고 backpropagation으로 weight를 수정한다.

추론에서는 정답 비교가 없다. loss를 계산하지 않는다. backpropagation도 없다. weight도 바뀌지 않는다. 모델은 그냥 현재 context에서 가장 적절한 다음 토큰을 고르고 넘어간다.

그래서 이렇게 정리할 수 있다.

학습은 attention으로 읽고, 틀린 만큼 weight를 고친다. 추론은 attention으로 읽고, weight는 그대로 둔 채 답을 낸다.

이 차이는 사소한 차이가 아니다. 이것이 “모델이 변했는가, 변하지 않았는가”를 가르는 기준이다.


context는 지식이 아니라 작업 자료다

긴 context를 이해할 때 가장 중요한 비유는 이것이다.

학습된 weight는 모델의 머릿속에 들어 있는 압축된 세계관이다. context는 지금 책상 위에 펼쳐져 있는 자료다.

책상 위에 자료가 많으면 당연히 더 많은 것을 참고할 수 있다. 사용자의 과거 대화, 프로젝트 문서, 코드베이스, 논문, 회의록이 context에 들어 있다면 모델은 그 자료를 바탕으로 훨씬 개인화되고 구체적인 답을 할 수 있다.

하지만 자료가 많다고 해서 모델 자체가 똑똑해지는 것은 아니다. 그 자료를 읽고 해석하는 능력은 이미 학습된 weight에서 나온다.

이 차이를 놓치면 긴 context의 의미를 과대평가하게 된다.

예를 들어 두 모델에게 같은 100페이지짜리 논문을 넣어준다고 하자. 약한 모델은 문장을 요약할 수는 있지만, 실험 설계의 문제나 수식의 허점을 놓칠 수 있다. 강한 모델은 같은 논문을 읽고도 가정, 방법론, baseline, ablation, 통계적 한계까지 짚어낼 수 있다.

context는 같다. 차이는 모델이다.

즉 context는 정보를 제공한다. 하지만 정보의 의미를 구성하는 것은 모델의 학습된 능력이다.


긴 context가 학습처럼 보이는 이유

그럼에도 긴 context가 학습처럼 보이는 순간이 있다.

예를 들어 사용자가 몇 년 동안 이런 말을 해왔다고 하자.

“나는 답변이 너무 장황한 것을 싫어한다.” “코드 리뷰에서는 성능보다 가독성을 먼저 봐줬으면 좋겠다.” “기술 설명은 예시가 있을 때 잘 이해된다.” “마크다운 표가 너무 많으면 읽기 어렵다.” “나는 제품 전략을 볼 때 단기 매출보다 장기 유지율을 중요하게 본다.”

이 모든 기록이 매번 context에 들어간다면, 모델은 사용자의 선호를 반영해서 답할 수 있다. 코드 리뷰를 요청하면 가독성을 먼저 보고, 전략 검토를 요청하면 장기 유지율을 중시하고, 설명을 요청하면 예시를 넣되 장황하지 않게 답할 수 있다.

사용자 입장에서는 모델이 나를 학습한 것처럼 보인다.

하지만 내부적으로는 다르다. 모델이 사용자의 선호를 weight에 새긴 것이 아니다. 매번 context에 있는 과거 발화를 읽고, 그때그때 반영하는 것이다.

이 차이를 비유하면 다음과 같다.

학습은 공부해서 머릿속에 익힌 것이다. 긴 context 추론은 시험장에 모든 노트를 가져와서 찾아보는 것이다.

노트가 완벽하고, 찾는 속도가 매우 빠르고, 매번 모든 노트를 펼쳐볼 수 있다면 겉보기에는 공부한 사람과 비슷해 보일 수 있다. 하지만 원리는 다르다.

공부한 사람은 노트를 치워도 어느 정도 답할 수 있다. 노트만 보는 사람은 노트가 사라지면 그 정보를 잃는다.

LLM도 마찬가지다.


새로운 개념을 context로 넣으면 모델은 이해할 수 있을까

여기서 더 깊은 문제가 나온다.

모델이 학습하지 않은 새로운 개념이 context 안에 등장하면, 모델은 그것을 이해할 수 있을까?

답은 “어느 정도는 가능하지만, 한계가 있다”이다.

간단한 규칙은 context만으로도 배울 수 있다.

예를 들어 이렇게 정의한다고 하자.

“블릭스는 숫자 n에 대해 n²+1을 반환하는 연산이다. 예를 들어 블릭스(2)=5, 블릭스(3)=10이다.”

이제 “블릭스(4)는?”이라고 물으면 모델은 17이라고 답할 수 있다. “블릭스”라는 단어를 사전학습에서 본 적이 없어도, context 안의 정의와 예시를 기반으로 규칙을 추론한 것이다.

이것이 in-context learning이다.

하지만 이 능력은 무한하지 않다. 새로운 개념이 복잡하고, 기존 학습된 개념 체계와 멀고, context 안의 정의가 부족하면 모델은 표면적으로만 따라간다. 예를 들어 완전히 새로운 수학 체계, 회사 내부의 복잡한 운영 규칙, 낯선 법률 프레임워크, 새로운 프로그래밍 언어의 세부 semantics를 몇 문장만으로 정확히 다루기는 어렵다.

왜냐하면 context는 자료일 뿐이고, 그 자료를 해석하는 기준은 모델 안에 이미 형성된 개념 체계이기 때문이다.

모델이 새로운 개념을 잘 다루려면 최소한 다음 중 하나가 필요하다.

첫째, 그 개념이 기존에 학습한 개념들과 잘 연결되어 있어야 한다. 둘째, context 안에 정의와 예시와 반례가 충분해야 한다. 셋째, 모델 자체가 추상화와 규칙 추론 능력이 강해야 한다. 넷째, 반복 사용되는 개념이라면 fine-tuning이나 별도 memory로 안정화하는 편이 낫다.

즉 context는 새로운 정보를 제공할 수 있지만, 새로운 개념을 모델 내부의 안정적인 능력으로 통합하는 것은 학습 쪽에 더 가깝다.


학습은 압축이고, context는 비압축 참조다

학습과 긴 context 추론의 가장 중요한 차이는 “압축”이다.

학습은 수많은 데이터를 weight 안에 압축한다. 모델은 모든 원문을 그대로 들고 있지 않다. 대신 반복되는 구조, 관계, 패턴을 내부 파라미터에 녹인다.

반대로 context는 원문 또는 원문에 가까운 자료를 그대로 제공한다. 모델은 그 자료를 읽고, attention으로 필요한 부분을 참조한다.

예를 들어 사용자가 5년 동안 여러 번 “짧고 명확한 답변을 좋아한다”고 말했다고 하자.

학습 또는 개인화된 모델은 이 반복되는 선호를 압축해서 “이 사용자는 간결한 답변을 선호한다”는 내부 정책처럼 반영할 수 있다.

긴 context 모델은 매번 과거 기록 속에서 해당 선호를 찾아 읽고 반영한다.

둘 다 결과적으로 짧은 답변을 만들 수 있다. 하지만 하나는 내부에 압축된 것이고, 다른 하나는 외부 자료를 참조한 것이다.

이 차이는 비용과 안정성에서 중요하다.

매번 5년 치 대화를 다 읽는 것은 비싸고 느리다. 또한 오래된 선호와 최신 선호가 충돌하면 무엇을 우선해야 할지 판단해야 한다. 반면 학습된 선호는 빠르고 안정적이지만, 잘못 학습되면 수정하기 어렵고 최신 변화에 둔감할 수 있다.

그래서 실제 시스템에서는 둘 중 하나만 쓰지 않는다.

자주 반복되고 안정적인 패턴은 학습이나 memory에 압축하는 것이 유리하다. 일시적이고 최신성이 중요한 정보는 context나 retrieval로 넣는 것이 유리하다.


왜 긴 context만 키우면 안 되는가

긴 context는 강력하다. 하지만 그것만으로 프론티어 모델 경쟁이 끝나지는 않는다.

이유는 간단하다.

context는 자료의 양을 늘리고, 모델 개선은 자료를 해석하는 능력을 높인다.

긴 context는 더 많은 문서를 넣게 해준다. 하지만 문서 안에서 중요한 정보를 찾고, 모순을 해결하고, 추상화하고, 새로운 문제에 적용하는 능력은 모델에서 나온다.

많은 자료를 준다고 좋은 판단이 자동으로 나오지는 않는다. 책을 100권 준다고 모두가 훌륭한 연구자가 되는 것은 아니다. 연구자는 필요한 부분을 찾고, 주장과 근거를 구분하고, 전제를 의심하고, 기존 지식과 연결하고, 반례를 생각하고, 결론의 한계를 판단할 수 있어야 한다.

LLM도 마찬가지다. 긴 context는 책상 크기를 키운다. 하지만 모델의 학습된 weight는 그 책상 위 자료를 읽는 지적 능력이다.

그래서 좋은 AI 시스템은 단순히 context만 키우는 방향으로 가지 않는다. 더 강한 base model, 더 긴 context, 더 좋은 retrieval, 더 안정적인 memory, 더 정확한 tool use, 더 나은 post-training이 함께 필요하다.

긴 context는 모델의 지능을 대체하지 않는다. 긴 context는 모델의 지능이 활용할 수 있는 작업 공간을 넓힌다.


결국 LLM의 “이해”는 어디에서 발생하는가

LLM이 context를 이해한다는 말은 조심해서 써야 한다. 모델이 사람처럼 의식을 가지고 의미를 경험한다는 뜻은 아니다. 하지만 기능적으로 보면, 모델은 입력 토큰들을 학습된 벡터 공간 안에 배치하고, attention과 MLP를 통해 관계를 계산하고, 그 결과로 다음 토큰 확률을 만든다.

즉 LLM의 이해는 다음 세 요소가 결합된 결과다.

첫째, 학습된 weight. 이것은 모델이 세상을 해석하는 렌즈다. 언어, 개념, 문법, 상식, 문제풀이 패턴, 선호된 답변 방식이 여기에 압축되어 있다.

둘째, 현재 context. 이것은 지금 모델에게 주어진 작업 자료다. 사용자 질문, 대화 기록, 문서, 코드, 검색 결과, 명령 등이 여기에 포함된다.

셋째, attention을 포함한 forward computation. 이것은 학습된 렌즈로 현재 자료를 읽고, 어떤 정보를 참조할지 결정하고, 다음 토큰을 계산하는 과정이다.

이 세 가지를 구분하면 많은 혼란이 풀린다.

모델이 context 안의 정보를 사용했다고 해서 그 정보를 학습한 것은 아니다. 모델이 과거 대화를 반영했다고 해서 weight가 바뀐 것은 아니다. 모델이 낯선 용어를 처리했다고 해서 그 개념이 내부 지식으로 안정적으로 통합된 것은 아니다. 반대로 context가 없더라도 모델이 답할 수 있다면, 그것은 학습된 weight에 이미 관련 구조가 들어 있기 때문이다.


최종 결론

LLM을 이해하는 핵심은 학습과 추론을 “정보가 어디에 저장되고, 언제 바뀌는가”의 관점에서 보는 것이다.

학습은 모델 내부를 바꾼다. 추론은 모델 내부를 바꾸지 않고 현재 context를 해석한다.

학습된 weight는 압축된 지식과 능력이다. context는 현재 참고할 수 있는 외부 자료다.

attention은 context 안의 토큰들을 서로 연결하는 메커니즘이다. 하지만 attention이 의미를 만들어내는 것은 학습된 weight가 이미 의미를 해석할 수 있는 구조를 갖고 있기 때문이다.

그래서 긴 context는 학습을 완전히 대체하지 않는다. 긴 context는 모델이 더 많은 자료를 보고 답하게 만들 수 있고, 때로는 학습한 것처럼 보이게 만들 수 있다. 하지만 weight가 바뀌지 않는 한 그것은 여전히 추론이다.

가장 정확한 비유는 이렇다.

학습은 세계를 머릿속에 압축해 넣는 과정이다. 추론은 그 머릿속 구조로 지금 펼쳐진 자료를 읽는 과정이다. 긴 context는 책상을 넓히는 것이고, 좋은 모델은 그 책상 위 자료를 제대로 읽는 두뇌를 만드는 것이다.

이 관점에서 보면 LLM의 발전 방향도 분명해진다.

미래의 강한 AI는 단순히 context만 긴 모델도 아니고, 단순히 weight만 큰 모델도 아닐 것이다. 강한 base model, 긴 context, 검색, memory, tool use, fine-tuning, post-training이 결합된 시스템일 가능성이 높다.

왜냐하면 인간의 지능도 비슷하기 때문이다.

우리는 모든 것을 외우지 않는다. 필요한 것은 기억하고, 필요한 것은 기록하고, 필요한 것은 찾아본다. 하지만 기록을 아무리 많이 가지고 있어도, 그것을 해석하는 사고력이 없으면 좋은 판단을 할 수 없다.

LLM도 마찬가지다.

context는 기억의 확장이다. 학습은 해석 능력의 형성이다. 추론은 그 능력으로 현재 상황을 읽고 답을 만드는 행위다.