본문으로 건너뛰기

고정 크기 hidden state는 메모리인가, 압축인가?

· 약 6분
p4r4d0xb0x
Rustacean, AI, OSS Enthusiast

cover placeholder

recurrent 모델의 hidden state를 “메모리”라고 부르는 것은 편리하지만, 그대로 믿으면 중요한 차이를 놓친다. hidden state는 이전 입력을 다음 계산에 전달한다는 의미에서 메모리처럼 작동한다. 그러나 보통은 과거 토큰을 원본 형태로 보관하지 않는다. 고정된 차원 안에서 현재 목적에 유용하다고 학습된 통계와 흔적을 갱신한다. 따라서 더 엄밀한 표현은 목적 함수에 맞춘 압축 상태다.

이 구분은 단순한 말장난이 아니다. 어떤 정보를 정확히 복원해야 한다면 외부 저장소나 attention이 필요할 수 있고, 어떤 정보는 요약된 동역학만으로 충분할 수 있다. S4, Mamba, RWKV, Resona를 읽을 때도 “얼마나 많이 저장하는가”보다 “어떤 질의를 위해 어떤 상태 변환을 학습하는가”를 물어야 한다.

상태, 메모리, 압축의 세 가지 뜻

용어 해설: hidden state

시퀀스의 현재 위치에서 모델이 들고 있는 내부 표현이다. 다음 입력을 처리할 때 사용되며, recurrent 구조에서는 이전 state와 새 입력으로 갱신된다.

용어 해설: 압축 표현

원래 데이터보다 적은 크기의 표현으로 바꾸되, 특정 작업에 필요한 정보는 최대한 보존하려는 표현이다. 무엇을 보존할지는 학습 목표가 결정한다.

일반적인 recurrent 업데이트를 단순화하면 h_t = f(h_{t-1}, x_t)로 쓸 수 있다. h_t의 차원이 시퀀스 길이에 따라 늘지 않는다면, 긴 입력을 일정한 크기의 병목으로 통과시키는 셈이다. 이 병목은 장점이면서 제약이다. 상태가 작으면 추론 메모리와 전송량이 예측 가능해지지만, 서로 다른 과거를 동일한 상태 근처로 보내는 충돌이 생길 수 있다. 이런 충돌을 정보 이론적으로 완전히 피할 수 있다는 보장은 없다.

S4: 고정 상태가 단순한 요약만은 아닌 이유

S4는 구조화된 상태공간 모델을 통해 긴 시퀀스를 효율적으로 모델링하려는 연구다. 논문은 연속시간 선형 시스템에서 출발해 장거리 의존성을 다루고, HiPPO 계열의 초기화와 구조화된 행렬을 활용해 계산 가능한 시퀀스 계층을 제안한다.

출처가 말하는 것: S4는 긴 범위의 의존성을 모델링하는 SSM 계층과 효율적인 계산 구조를 제시하며, 여러 장문맥 벤치마크에서 강한 성능을 보고한다.

해석: S4의 상태는 단순히 “최근 몇 토큰의 요약”으로만 이해하면 안 된다. 선형 동역학이 과거 입력의 여러 시간 척도에 반응하도록 설계될 수 있기 때문이다. 그래도 이것은 원문을 검색 가능한 형태로 저장하는 데이터베이스와 다르다. 상태는 특정한 연산 경로 안에서만 의미가 있으며, 임의의 문장을 그대로 꺼내 달라는 질의에 응답하도록 보장된 저장소가 아니다.

Mamba: 선택적으로 기억하고 선택적으로 버린다

Mamba는 입력 의존적인 선택성을 SSM에 도입한다. 초록의 표현대로라면 모델은 입력 내용에 따라 정보를 전파하거나 잊는 정도를 조절한다. 이 점은 hidden state를 수동적인 압축 버퍼가 아니라, 학습된 쓰기·망각 정책을 가진 동적 필터로 만든다.

여기서 “기억한다”는 말은 데이터가 상태에 들어간다는 뜻과, 나중에 원하는 형태로 정확히 복원된다는 뜻을 분리해야 한다. Mamba가 특정 벤치마크에서 긴 의존성을 처리한다고 해서 모든 과거 토큰이 보존되는 것은 아니다. 벤치마크가 요구하는 함수에 유용한 특징이 남는 것이다. 이 차이가 recurrent state와 검색 메모리를 가르는 핵심이다.

RWKV: attention의 직관과 recurrent 실행의 결합

RWKV 계열은 attention과 유사한 가중 집계 직관을 유지하면서, recurrent 방식으로 실행할 수 있는 구조를 탐구한다. 공개된 RWKV 논문 설명은 병렬 학습과 효율적인 recurrent 추론을 함께 지향한다.

출처와 해석: RWKV가 보여주는 것은 “recurrent state도 과거에 대한 가중 누적을 표현할 수 있다”는 설계 가능성이다. 하지만 누적 상태가 곧 무한한 기억은 아니다. 상태 차원과 업데이트 규칙이 정한 요약 공간 안에서, 모델이 다음 예측에 필요한 정보를 유지한다. 같은 상태에 여러 과거가 매핑될 수 있으므로, exact retrieval을 보장하는 메모리로 부르는 것은 과장이다.

Resona: 출처 확인이 필요한 확장 맥락

Resona는 고정 상태·반복적 추론 또는 메모리 효율적 시퀀스 처리와 관련해 논의되는 연구 명칭으로 이 배치에서 함께 지정되었다. 그러나 현재 작성 환경에서 확인 가능한 증거는 논문의 정확한 arXiv 식별자와 전체 초록을 포함하지 않는다. 따라서 Resona에 대해 특정 성능 수치나 세부 메커니즘을 단정하지 않는다.

이 글에서 Resona가 제공하는 맥락은 **검증 대기(unverified)**로 표시한다. 이름만으로 “더 오래 기억한다”거나 “압축 손실을 해결했다”고 쓰는 것은 source-bounded 작성 원칙에 맞지 않는다. 정확한 논문 링크·초록·실험 조건을 확인한 뒤에만 주장을 확장해야 한다.

외부 메모리 맥락: Qdrant와 Statey는 다른 층이다

Qdrant는 벡터를 저장하고 유사도 검색을 제공하는 벡터 데이터베이스다. Statey는 기존 글에서 확인했듯이 채팅 안에서 구조화된 레코드를 읽고 쓰는 공유 데이터베이스라는 제품 설명을 제시한다. 둘 다 recurrent hidden state와 같은 종류의 “내부 상태”가 아니다.

Qdrant/Statey에 대해 확인되는 맥락: 외부 저장소는 데이터를 세션·모델의 고정 차원 안에만 남겨 두지 않고, 나중에 검색하거나 구조화된 레코드로 다시 읽을 수 있게 한다. Qdrant는 임베딩 유사도 검색, Statey는 MCP 기반 레코드 공유라는 서로 다른 인터페이스를 강조한다.

해석: 외부 메모리는 저장 용량과 재조회 가능성을 늘리는 대신, 쓰기 권한·검색 품질·지연시간·데이터 격리·삭제 정책을 운영해야 한다. 반대로 hidden state는 요청 처리 중 매우 빠르게 전달되지만, 세션이 끝나면 사라지거나 별도 저장 없이는 감사와 복구가 어렵다. “메모리”라는 단어를 둘 모두에 붙이더라도 신뢰 경계와 실패 방식은 다르다.

실무에서 무엇을 어디에 둘 것인가

  • hidden state: 최근 문맥의 요약, 연속적인 신호, 스트리밍 입력의 상태 추적처럼 매 토큰 업데이트가 필요한 정보.
  • 검색 메모리: 나중에 원문 또는 근거를 재조회해야 하는 사실, 문서, 사용자 선호. 검색 키와 권한이 함께 설계되어야 한다.
  • 구조화 레코드: 상태·소유자·변경 이력처럼 정확한 필드와 감사가 필요한 업무 데이터.

이 분리는 모델 성능만의 문제가 아니다. hidden state는 압축 손실이 task loss에 반영되지만, 외부 메모리는 잘못된 쓰기나 오염된 검색 결과가 모델에 주입될 수 있다. 즉 압축은 표현상의 위험이고, 외부 메모리는 데이터 거버넌스상의 위험이다.

결론과 제한

고정 크기 hidden state는 메모리처럼 사용되지만, 본질적으로는 학습된 목적에 맞춘 압축 상태에 가깝다. S4는 장거리 동역학을, Mamba는 선택적 보존·망각을, RWKV는 recurrent 실행과 가중 집계의 결합을 보여준다. 이들은 모두 “과거를 일정한 표현으로 변환한다”는 공통점을 가지지만, exact storage나 임의 검색을 약속하지 않는다. Resona의 구체 주장은 식별자와 초록 확인 전까지 unverified다.

Qdrant와 Statey는 외부 메모리라는 별도 층의 사례다. 모델 내부 상태와 외부 저장소를 함께 사용할 때는 무엇이 요약이고 무엇이 원본인지, 누가 쓰고 읽는지, 삭제와 복구를 어떻게 하는지를 명시해야 한다.

Sources

// COMMENTS

댓글