모든 이야기

Titans를 읽고: 추론 중 가중치가 기억 장치가 된다면

처음 보는 계약서에 “이 문서에서 Aurora는 프로젝트 코드명이다”라는 문장이 있다고 하자. 모델이 이 사실을 뒤 문단에서 정확히 꺼내 쓰려면, 어디에 보관해야 할까. 익숙한 답은 둘 중 하나다. 전체 계약서를 계속 문맥 창에 붙여 넣거나, 외부 검색 시스템에 따로 저장해 두는 것. Titans원문는 전혀 다른 세 번째 위치를 제안한다. 읽는 동안 갱신되는 작은 신경망의 가중치에, 정보를 담아 두는 방식이다.

여기서 중요한 표현은 “가중치를 갱신한다”이다. 입력이 바뀌어 activation만 달라지는 일반 추론과는 다르다. 전용 neural memory가 테스트 시퀀스에서 학습하듯 정보를 축적한다. 그렇다고 서비스에 쓰는 기반 모델 전체를 사용자 대화마다 다시 학습한다는 뜻은 아니다. Titans는 기억을 맡는 모듈과 나머지 구성요소를 분리한다. 기억은 특정 모듈의 상태가 되고, 나머지 부분은 그 기억을 활용하는 구조를 유지한다.

기억도 예측 문제로 만들 수 있다

Titans가 설계한 neural memory는, key를 받으면 연결된 value를 복원하는 함수를 배운다. 입력 토큰의 표현에서 key (k)와 value (v)를 만들고, 기억 네트워크 (M)이 낸 (M(k))와 실제 (v)의 차이를 잰다. 가장 기본적인 연상 기억 손실은 (|M(k) - v|^2)처럼 쓸 수 있고, 이 손실의 기울기로 (M)의 파라미터를 갱신한다.

이해를 돕는 사고실험으로, 프로젝트 이름과 담당자 정보의 관계를 생각해 보자. “Faker — 상혁”이라는 관계를 읽을 때마다, 이름 표현에서 담당자 표현으로 가는 작은 연상 함수를 조금씩 조정한다. 나중에 이름 쪽 query가 들어오면, 기억 네트워크가 관련 표현을 꺼내 주는 식이다. 다만 실제 모델의 key와 value는 사람이 만든 표나 문자열이 아니라 학습된 벡터다. 즉 이 예는 계산의 역할을 설명하기 위한 비유이지, 논문의 특정 동작 시연을 그대로 옮긴 것은 아니다.

이 설계에서 기억하는 일과 검색하는 일의 형태는 달라진다. 과거 문장을 그대로 보관하는 대신, 관계를 함수에 압축한다. 검색은 저장소를 순회해서 찾는 일이 아니라, 그 함수의 순전파 한 번으로 수행한다. 기억 장치를 “내용을 쌓아 두는 곳”으로 보기보다, “내용을 보고 내부 함수를 고치는 곳”으로 보는 편이 더 정확하다.

놀라움은 gradient로 측정한다

Titans는 잘 예상하지 못한 입력을 더 강하게 기억한다는 직관을 사용한다(like 정보이론 by Shannon) . 이때 말하는 surprise는 사람이 느끼는 놀라움도, 다음 단어 확률의 단순한 역수도 아니다. 기억의 연상 손실이 만드는 기울기를 통해 정의되는 양이다. 현재 기억이 key-value 관계를 잘 복원하지 못할수록 갱신 신호가 커질 수 있다.

문제는 짧은 surprise만으로 갱신하면, 중요한 사건 뒤를 따라오는 관련 정보가 약하게 기록될 수 있다는 점이다. 그래서 논문은 과거 surprise의 흔적을 남기는 momentum 성분을 더한다. 새 기울기와 이전 갱신 방향을 함께 쓰고, 이 영향이 얼마나 이어질지도 입력에 따라 조절한다. 여기에 기존 기억을 감쇠시키는 forgetting 항도 둔다. 제한된 공간에 새 내용만 계속 쌓아서는 필요한 정보를 유지하기 어렵기 때문이다.

업데이트의 모양은 대략 “기존 파라미터를 일부 유지하고, 이전 갱신의 흔적과 새 기울기를 더한다”로 읽을 수 있다. 학습률, momentum의 유지량, 감쇠량이 입력 의존적으로 조절된다는 점이 핵심이다. 오래 기억할 관계와 지나가는 내용에 서로 다른 갱신을 적용할 통로가 생기는 것이다.

이 발상에서 내가 좋게 본 지점은 보존과 망각을 같은 설계 문제로 다룬다는 데 있다. 기억을 강하게 쓰는 능력만 만들면, 나중에 쓸모없는 내용도 오래 남을 수 있다. 반대로 지나치게 빨리 잊으면 새 사건의 맥락을 연결하지 못한다. 좋은 기억은 많이 적는 기능 하나로 완성되지 않는다.

물론 기울기가 크다는 사실과 업무상 중요하다는 사실이 같지는 않다. 복잡한 잡음이나 낯선 표현이 강한 갱신을 유발할 수 있고, 무엇을 기억해야 유용한지는 전체 모델을 학습시키는 목표와 데이터에 의존한다. 인간 기억에 대한 비유는 설계 동기로 읽는 게 맞다. 이 시스템이 인간처럼 사건의 중요성을 이해한다는 증거와는 거리가 있다.

가까운 문맥과 먼 기억을 함께 쓰기

Titans는 기억 네트워크 하나로 모든 일을 처리하려 하지 않는다. 제한된 창의 attention을 단기 기억으로 쓰고, neural memory로 더 오래된 정보를 활용한다. 여기에 입력 시퀀스에 따라 매번 갱신되지 않는, 학습된 persistent memory도 둔다. persistent memory는 사용자 정보를 영구 저장하는 계정별 기록이라는 뜻이 아니다. 학습 과정에서 얻은 과제 관련 정보를 담는 구성요소에 가깝다.

이들을 연결하는 방식도 하나로 고정하지 않는다. 원문에는 memory as context, memory as gate, memory as layer라는 변형이 있다. 기억에서 읽은 결과를 attention의 문맥에 넣거나, 별도 경로의 출력을 gate로 합치거나, 층으로 배치하는 방법이다. 같은 기억 모듈이라도 현재 토큰의 처리에 어떻게 참여하는지가 달라진다.구성 변형

이 구분은 꽤 실용적이다. 먼 과거는 압축해 보관하되, 지금 처리하는 짧은 구간에서는 원래 토큰 사이의 관계를 세밀하게 계산할 수 있다. 전체 회의의 핵심은 메모에 남기고, 현재 논쟁 중인 몇 문장은 정확하게 펼쳐 놓는 방식과 닮았다. 어떤 정보가 단기 창을 벗어나기 전에 장기 기억으로 전달되어야 하는지도 중요한 조건이 된다.

내 해석으로는 이 구조의 재미가 단순히 문맥 길이를 늘린 데 있지 않다. 기억의 종류를 분리하고, 서로 다른 비용과 정밀도를 갖게 만든다는 점이 핵심이다. 정확한 가까운 참조와 압축된 먼 참조를 하나의 처리 흐름 안에서 조합하는 것이다.

이중 학습을 어떻게 실행할까

테스트 중 기울기를 쓴다는 말을 들으면, 느린 순차 학습부터 떠오르기 쉽다. 논문은 시퀀스를 chunk로 묶고, 갱신을 행렬 연산과 scan 형태로 계산하는 방법을 다룬다. 이때 병렬화 방식은 계산 성능뿐 아니라 갱신의 의미와도 연결되므로, “토큰마다 일반 최적화 도구를 호출하면 된다”는 식의 구현으로 읽으면 부족하다.기억 학습의 병렬화

구분해야 할 것은 두 종류의 학습이다. 내부에서는 새 시퀀스를 기억하도록 (M)을 조정한다. 외부에서는 그런 내부 갱신이 이후 예측에 도움이 되도록 projection과 전체 아키텍처를 학습한다. 단순한 온라인 회귀를 한 번 붙이는 것보다, 잘 기억하는 학습 과정 자체를 다시 학습한다는 관점에 가깝다.

모델을 실제 서비스에 넣는다면 상태 초기화도 명시해야 한다. 요청 사이에 어떤 기억을 이어가고 언제 새로 시작하는지에 따라 모델의 입력 조건이 달라진다. 이것은 원문이 모든 제품 정책을 해결했다는 말이 아니라, 가중치가 실행 중 상태가 되는 구조를 읽고 떠올릴 운영상의 질문이다. 기반 가중치와 요청별 기억 상태를 구분하면 문제를 더 명확하게 설계할 수 있다.

길게 읽었다는 성과의 범위

저자들은 언어 모델링, 회상 과제, needle-in-a-haystack, 시계열과 DNA 등에서 평가하고, 긴 입력에서도 기억을 활용할 가능성을 보고한다. 합성 회상 실험에서 긴 문맥을 처리했다는 결과는 주목할 만하다. 다만 드문 사실을 회수하는 일과, 긴 문서 전체의 모순을 검토하며 근거를 제시하는 일은 요구하는 능력이 다르다. 전자가 잘된다고 후자까지 자동으로 해결되지는 않는다.평가와 분석

신경망에 압축된 기억은 원문을 정확히 보존하는 데이터베이스와도 다르다. 고정된 용량 안에서는 오래된 정보 사이에 간섭이 생길 수 있고, 어떤 사실이 잊혔는지 사람이 직접 확인하기 어려울 수 있다. 정확한 인용과 이력 관리가 필요한 업무에서는 명시적 저장소가 여전히 다른 역할을 한다.

Titans를 읽고 얻는 가장 생산적인 질문은 “이제 무한히 기억하나”가 절대 아니다. 추론 중 바뀌는 기억을 어떤 함수로 만들 수 있는지, 그 함수가 가까운 문맥과 먼 기억을 어떻게 나누는지, 그리고 보존과 망각을 하나의 설계로 어떻게 묶을 수 있는지가 더 중요하다. 기억을 activation, 캐시, 외부 문서에만 놓을 이유는 없다. 작은 모델의 가중치도 실행 중 상태가 될 수 있다는 관점이, 긴 문맥 연구의 설계 공간을 넓힌다.

논문: Ali Behrouz, Peilin Zhong, Vahab Mirrokni, Titans: Learning to Memorize at Test Time, arXiv 사전 공개본. 원문

Dne Cna

컴퓨터공학 잘 하고 싶다

블로그 보기