우리는 최신(frontier) LLMs가 인간이나 기존 알고리즘이 기대하는 수준을 훨씬 뛰어넘어 신경망 가중치(neural network weights)를 네이티브하게 읽고 쓰는 데 놀라울 정도로 능숙하다는 것을 발견했습니다. 이는 최적화와 해석 가능성 모두에 큰 의미가 있을 수 있습니다.
단순히 원시 가중치를 살펴보는 것만으로도 GPT-6 Astra는 어떤 네트워크가 무엇을 하도록 훈련되었는지 알려줄 수 있습니다. 그리고 어떤 환경 피드백(environment feedback) 없이도, PPO로 1억 단계 동안 훈련된 네트워크보다 더 잘하는 작은 게임 플레이 네트워크를 처음부터 작성하는 데 어려움을 느끼지 못합니다.
마찬가지로, Astra에게 기울기(gradients) 없이 Qwen3.5-0.8B의 수학 능력을 향상시키라고 요청했을 때, Astra는 Qwen 자체 모델 카드에서 경고하는 추론 루프를 유발하는 가중치 문제를 식별하고, 이 문제를 가중치의 0.016%만 네이티브하게 편집하여 수정했습니다. 동일한 샘플링 설정을 사용하자, 이러한 가중치 보정은 MATH-500 점수를 7.9%에서 48.1%로 끌어올렸으며, 별도의 지침 따르기(instruction following)에서도 일반화되어 IFEval을 3배 향상시켰습니다.
이 모든 것은 Astra가 훈련 루프를 작성하도록 허용하지 않은 상태에서 가능했습니다. Astra는 추론 능력을 사용하여 신경망의 각 부분이 무엇을 계산하는지, 또는 무엇을 계산해야 하는지를 파악하고 그에 따라 가중치를 변경합니다. 우리는 이것을 Weight-Space Programming이라고 부릅니다.
딥러닝 역사 전반에 걸쳐, 우리는 우리의 단순한 귀납적 편향(inductive biases)을 Adam이나 Muon과 같은 작은 기호 기반 최적화기(symbolic optimizers)로 인코딩해 왔습니다. 이것이 변화하고 있습니다: 우리의 신경망 가중치는 곧 LLMs에 의해 그 가중치에 대해 의도적으로 추론하면서 네이티브하게 최적화될 것입니다.
만약 당신에게 바둑을 두는 신경망을 수작업으로 만들라고 요청받는다면, 무엇을 하시겠습니까? 만약 당신에게 원시 신경망 가중치가 주어지고 그 행동을 예측하라고 요청받는다면, 어디서부터 시작해야 할까요? 거의 모든 사람에게 이는 사실상 불가능합니다.
오늘날 가중치는 최적화(optimization)를 통해서, 가중치를 작성하도록 훈련된 사용자 지정 네트워크를 통해서, 또는 형식 프로그램으로부터의 컴파일러에 의해 작성됩니다. 본 게시물에서 우리는 자연어 환경에서 네이티브하게 사용되는 현 세대의 최첨단 LLM들이 자연어 목표를 중심으로 신경망 가중치(neural network weights)를 이해하고 구성하는 데 소름 끼치도록 능숙해지고 있음을 발견했습니다.
몇 년 동안 우리는 모두 프롬프트와 그 주변에 구축된 프로그램 같은 텍스트 아티팩트(text artifacts)를 최적화하기 위해 LLM을 사용해 왔습니다.
우리는 종종 이러한 방법들을 미분 가능한 신경망의 가중치를 업데이트하는 것과는 달리, 텍스트 아티팩트를 언덕 오르기(hill-climb) 할 다른 원칙적인 방법을 알지 못한다는 사실을 근거로 정당화했습니다. 결국 인간은 예를 들어 코드를 손으로 "최적화"할 수 있기 때문에 LLM에게 그렇게 하도록 요청하는 것이 타당했지만, 신경 가중치를 손으로 "최적화"할 수는 없었기 때문에 이는 주로 기호 알고리즘(symbolic algorithms)의 영역에 머물렀습니다.
본 게시물에서 우리는 추론 기반 최적화(reasoning-driven optimization)의 패러다임이 이제 미분 가능한 신경망에도 적용될 수 있음을 주장할 수 있게 해주는 매우 초기 결과를 공유합니다.
Weight-Space Programming에서는 범용적인 LLM이 자연어 사양(spec)을 중심으로 네트워크의 가중치를 직접 읽고 씁니다(즉, 최적화기(optimizer)를 통하지 않고, 특히 경사 하강법(gradient descent)을 사용하지 않습니다). 때로는 환경 피드백(environment feedback)조차 없이 이루어집니다.
자연어로는 LLM에게 신경망 가중치 내부의 숨겨진 특성이나 실패를 네이티브하게 찾아내거나, 그 실패를 수정하거나, 처음부터 새로운 네트워크를 작성하도록 "단순히 요청"하는 것이 가능해지고 있습니다.
우리는 아래에서 이 각각에 대한 초기적이고 흥미로운 결과를 보고하며, 먼저 소규모 네트워크에 대해, 그리고 나아가 실제 언어 모델(language models)에도 적용합니다:
우리는 LLM이 본질적으로 단지 숫자 목록에 불과한 연속적인 가중치 공간(continuous weight space)을 이해할 수 있는지 확인하기 위한 소규모 실험부터 시작합니다.
우리의 첫 번째 실험에서 우리는 어떤 알고리즘으로 신경망을 훈련시킵니다. 만약 LLM이 오직 가중치만으로 그 행동을 설명할 수 있다면 매우 흥미로울 것입니다.
우리는 PPO(Proximal Policy Optimization)를 사용하여 네 개의 컴퓨터 게임을 플레이하도록 신경망 정책을 훈련시켰습니다. 네 네트워크 모두 동일한 입력 채널을 사용하고, 동일한 행동 옵션을 선택하며, 정확히 같은 네트워크 차원을 가지고 있어 가중치를 읽지 않고는 어떤 게임인지 구별할 수 없습니다.
이러한 각 네트워크에 대해, 우리는 그 원시 가중치(raw weights)를 Astra에게 프롬프트로 전달하고 '이 신경망은 어떤 게임으로 훈련되었습니까?'라고 질문했습니다. 우리가 고려하는 게임 옵션을 공개하지 않았음에도 불구하고, Astra는 네 개의 모든 네트워크에 대해 올바른 게임 이름을 말할 수 있었습니다. 이는 특히 Astra가 선택할 수 있는 게임의 수가 매우 많다는 점을 감안할 때 흥미롭습니다.
Astra가 각 네트워크가 어떤 게임을 하도록 구축되었는지 그 가중치의 특징만으로 파악할 수 있었던 것 같습니다. 예를 들어, 각 입력 채널의 첫 번째 레이어 가중치가 어디에 집중하는지(예: Breakout의 경우, 에이전트의 가중치는 아래쪽 줄, 즉 패들 라인을 따라 놓여 있음)와 출력 레이어가 어떤 행동들을 구별해내는지 등이 그렇습니다.
다음으로, 우리는 이것이 다른 작업과 모델에도 일반화되는지 확인하고 싶었습니다.
우리는 원(circle), 삼각형(triangle), 사각형(square) 이미지를 독립적으로 생성하도록 확산 모델(DDPM: Denoising Diffusion Probabilistic Model)을 훈련시켰습니다. 그런 다음 Astra에게 도구 사용이나 순전파 계산(forward passes) 없이, 가중치만으로 DDPM이 무엇을 생성하도록 훈련되었는지 알려줄 수 있는지 물었습니다.
Astra는 가중치만으로 각 모델이 무엇을 생성하는지 말할 수 있었습니다. 이는 출력 레이어에서 모양의 특징을 찾아내는데, 여기서 각 은닉 유닛(hidden unit)의 가중치가 모양 가장자리의 한 조각을 그리고 있으며, 그 부분만을 그려냅니다. 흥미롭게도, 실제 모델들이 채워진 모양을 생성함에도 불구하고, Astra는 모든 모양을 윤곽선 형태로 그리면서 이 사실을 무시합니다. 이러한 실수는 Astra가 순전파 계산에 의존하는 것이 아니라, 실제로 가중치의 구조/기하학적 형태를 읽고 있다는 것을 보여줍니다.
앞서 제시된 첫 두 실험에서 Astra는 전체 네트워크를 살펴보지 않았으며, 단지 첫 번째 또는 마지막 레이어만 읽어도 충분했습니다. 이는 우리가 진정으로 관심을 갖는 대규모(특히 언어) 모델이나 문제에 적용하기에는 확장성이 떨어지는 전략입니다. 왜냐하면 모델이 입력을 처리하고 사고하는 과정은 종종 중간 레이어(intermediate layers)에서 발생하기 때문입니다. 따라서 다음으로는 첫 번째와 마지막 레이어를 제거하고 Astra에게 오직 중간 레이어만 남겨두었습니다.
우리는 파이썬 코드에 각각 하나씩, 세 개의 소규모 언어 모델(7.2M 매개변수)을 훈련시켜 다음 문자를 예측하도록 했습니다.
우리가 던진 질문은 다음과 같습니다: 이 네트워크는 어떤 언어로 훈련되었으며, 그 24개의 어텐션 헤드 각각은 무엇을 수행하는가? Astra는 세 개의 모든 네트워크에 대해 시도한 두 번 모두 올바른 언어를 이름 지었습니다. 또한 모델이 이전에 본 텍스트를 반복하게 만드는 '복사 헤드(copying head)', 즉 유도 헤드(induction head)인 모든 헤드를 찾아냈으며, 다른 어떤 헤드는 그러한 역할을 하는 것으로 명명하지 않았습니다.
| 학습 데이터 | Astra의 답변 (& 신뢰도), 두 번 시도 | Astra가 이름 지은 복사 헤드 (레이어.헤드) | 복사 헤드, 실제 값(ground truth) |
|---|
| Python | Python (0.56), Python (0.52) | 2.1, 3.1, 3.5 | 2.1, 3.1, 3.5 |
| ... | | | |
추론 과정은 다음과 같았습니다. 파이썬을 구별하기 위해 Astra는 모델이 이전 텍스트를 반복하게 만드는 복사 헤드를 찾았는데, 예를 들어 'tot' 다음에 'tal'이 올 때와 같이 완성하는 경우입니다. 아무것도 실행하지 않고도, 이 모델은 한 글자 전을 살펴보는 첫 번째 레이어의 헤드와, 그 헤드가 가져오는 정보를 사용하여 검색하는 후속 헤드를 가중치 행렬(weight matrices)을 곱함으로써 찾아냈습니다 (그림 1). 우리는 이것이 실제로 Elhage 등이 제시한 방법이라는 것을 발견했습니다.
대신 로마자(Romaji)가 두드러졌는데, 이는 주어진 네 개의 블록 중 마지막 블록(제거된 출력 레이어는 아님)이 모델이 구별해야 할 문자가 적은 것처럼 덜 독특한 방향으로 작성되었기 때문입니다. 실제로 로마자는 q, l, v, x와 같은 일부 문자를 사용하지 않습니다.
지금까지 Astra는 가중치만 읽었습니다. 이제 우리는 Astra가 가중치를 '쓰는' 방법을 알고 있는지 질문합니다.
우리는 Kinetix 환경에서 경사로를 오르내릴 수 있도록 PPO 네트워크를 훈련시킵니다.
우리는 GPT-6 Astra에게 가중치(weights), 장면 설명, 그리고 기록된 에피소드 하나를 제공하고 네트워크가 왜 실패하는지 설명하도록 요청한 다음, 새로운 가중치를 작성하여 수정하도록 합니다.** 도구 없이 단 한 번의 시도만으로, Astra의 수정은 차량이 1,024개 에피소드 전체에서 성공하게 만들었으며, 이 과정에서 가중치의 3.5%가 변경되었습니다. **
Astra는 환경 컨텍스트와 PPO 네트워크의 궤적을 통해 네트워크가 지역 최솟값(local minimum)에 수렴했음을 파악합니다. 가중치에 최소한의 편집을 가하여, Astra는 차량이 전속력으로 앞으로 운전하기 전에 후진하도록 정책을 변경합니다. Astra의 추론 과정은 다음과 같습니다: 레이어당 몇 개의 유닛을 거치는 작고 별도의 경로를 추가하여 차량의 위치와 속도를 읽게 하고, 녹색 바퀴가 빨간 줄을 지나면 해당 경로가 꺼지고 훈련된 네트워크가 나머지 구간을 운전하게 합니다.
이제 Astra가 제로샷(zero-shot)으로 신경망을 처음부터 작성할 수 있는지 살펴보겠습니다.
우리는 세 가지 MinAtar 게임을 사용합니다.
**Astra가 생성한 네트워크는 세 게임 모두에서 1억 스텝으로 훈련된 PPO를 능가합니다. 5억 스텝으로 훈련된 PPO와 비교했을 때, Breakout에서는 20배의 점수를 기록하고, Asterix에서는 근접하며, Seaquest에서는 해당 점수의 60%에 도달했습니다. **
| Game | PPO, 100M steps | PPO, 500M steps | Astra, one-shot |
|---|
| Breakout | 15.8 | 25.3 | 517.4 |
| ... | | | |
작동 방식은 다음과 같습니다: Astra는 각 네트워크가 구현하기를 원하는 목표 프로그램에 대해 추론하고 이를 신경망 형태로 변환합니다. 예를 들어, Breakout에서 Astra는 첫 번째 레이어가 공이 어디에 떨어질지 계산하도록 프로그래밍하고, 두 번째 레이어는 패들을 그 위치로 이동하도록 프로그래밍합니다.
지금까지 우리가 검토한 대부분의 네트워크는 가중치가 Astra의 컨텍스트에 직접 들어갈 수 있었으며, 도구 사용(tool use)은 활성화하지 않았습니다. 이러한 제약은 대규모 언어 모델(LLM)이 본질적으로 가중치 공간(weight space)을 해석하는 일부 능력을 가지고 있다는 사실을 강조하는 데 초점을 맞추기 위해 설정되었습니다.
이제부터 우리는 Weight-Space Programming의 역량을 확장하고, 네트워크가 컨텍스트(context)에 맞지 않거나 도구가 LLM이 가중치 공간(weight space)을 이해/작성하는 것을 도울 수 있는 더욱 현실 세계와 관련된 시나리오를 고려합니다.
우리는 이제 Astra가 직접 컨텍스트에 담기에는 너무 큰 150만 개 매개변수(parameter) 규모의 가중치를 편집하는 능력을 테스트합니다. Astra에게는 주어진 아키텍처 (243 → 512 × 6 → 82)의 고성능 가중치를 학습이나 웹 접근 없이 처음부터 작성하도록 지시되었습니다.
여기서 하네스(harness)는 Astra에게 Python 샌드박스(sandbox)를 제공합니다. 이곳에서 Astra는 네트워크의 가중치 텐서(weight tensors)(시작 시 모두 0)를 읽고 저장하며 numpy나 PyTorch를 사용하여 CPU 상에서 분석할 수 있지만, 네트워크 자체를 실행할 수는 없습니다. 네트워크가 실제로 무엇을 하는지 확인하려면 순전파(forward pass) 중 하나를 사용해야 합니다.
우리는 또한 Astra가 네트워크에 일부 순전파를 수행하도록 허용하고, 허용되는 순전파 횟수에 따라 생성된 네트워크의 충실도(fidelity)가 어떻게 확장되는지 측정합니다. 구체적으로, 우리는 0개의 순전파 예산부터 최대 50개의 순전파 예산까지 테스트하며 (각 순전파는 배치 크기 128의 롤아웃을 가짐), Astra는 순전파 사이에 편집 작업을 끼워 넣습니다(interleaves edits).
순전파 예산이 0일 때, Astra는 두 개의 더 작은 PPO 네트워크(243 → 32 → 32 → 82)를 상대로 게임의 절반 이상에서 승리했습니다. 50개의 순전파가 허용되었을 때, Astra가 생성한 네트워크는 2천만 개 게임으로 학습된 동급 크기의 PPO 네트워크를 이겼습니다.
작동 방식: 아스트라(Astra)는 네트워크를 파이썬으로 레이어별로 작은 Go 프로그램 형태로 작성합니다. 첫 번째 레이어들은 각 진영의 돌과 그 옆의 빈 점들(생존점, liberties)을 표시하고, 중간 레이어들은 이들을 연결된 돌들의 사슬을 따라 몇 단계 이동시켜 위험에 처한 그룹을 찾고, 마지막 레이어는 이를 모든 수에 대한 점수로 변환합니다: 포획, 자신의 그룹 구하기, 자진 아타리(atari)를 피하거나 자신의 눈을 채우기, 그리고 보드 위의 좋은 지점에 대한 선호도입니다. 순전파(forward passes) 없이, 그것은 336줄의 단일 파이썬 실행으로 이 모든 것을 작성했습니다. 순전파를 사용할 때는 연습 게임을 플레이하고, 자신이 어떻게 패배하는지 살펴본 후, 그 뒤에 있는 네트워크 부분을 변경하며, 승률이 더 높아질 때만 그 변화를 유지합니다.
최근 몇 년 동안 대규모 신경망(large neural networks)의 행동을 이해하는 것이 시급한 관심사(pressing concern)가 되었습니다. 여기서 우리는 일반적인 LLM이 네트워크의 행동 자체를 이해하는 데 사용될 수 있는지 조사하고자 합니다.
우리는 동일한 QA 데이터셋을 사용하여 Gemma 3 270M 두 복사본을 정확히 같은 방식으로 파인튜닝(fine-tune)했습니다.
아쉽게도 가중치만으로는 아스트라가 답할 수 없었습니다. 네 번의 시도 모두에서, 그것은 두 모델 간에 가중치 공간(weight space)에서 많은 차이점을 식별했지만, 이를 행동적 차이로 매핑하는 데는 실패했습니다. 하지만 실험을 완화하기 위해, 우리는 아스트라가 오직 어텐션 패턴(attention patterns)(각 어텐션 헤드가 어디를 바라보는지)만을 보도록 허용했습니다. 이 때 두 모델 모두 아스트라 자신이 작성한 텍스트에 대해 실행되었습니다 (단, 네트워크의 출력물은 보지 않음). 이를 바탕으로, 아스트라는 우리가 학습시킨 세 쌍의 모든 경우에서 비위 맞추는 사람(sycophant)을 식별할 수 있었습니다.
또한 그것은 그들이 어떻게 다른지에 대해서도 추론할 수 있었습니다. 비위 맞추는 네트워크의 경우, 중간 레이어의 어텐션 헤드들은 사용자 제안(user’s suggestion)에 있는 토큰들에 더 많은 가중치를 할당합니다 (그림 2).