숫자 배열을 프로그램처럼 다룰 수 있을까요?
보통 신경망을 개선하려면 학습 데이터를 모으고, 오차를 계산하고, 그 오차를 줄이는 방향으로 가중치를 조금씩 바꿉니다. Weight-Space Programming(WSP)은 다른 질문에서 출발합니다. 언어 모델이 신경망의 숫자 배열을 읽어 동작을 추론하고, 원하는 동작을 만들도록 그 숫자를 직접 써 줄 수 있을까요?
MIT CSAIL의 Rikiya Takehi, Jayden Teoh, Alex Zhang, Omar Khattab은 2026년 11월 2일 공개한 Sparks of Weight-Space Programming에서 GPT-6 Astra를 사용한 여덟 실험을 소개합니다. 이 자료는 저자들의 기술 블로그 글입니다. 이 글의 수치는 원문이 보고한 결과이며, 여기서 모델을 실행하거나 실험을 독립 재현하지는 않았습니다. 원문은 2026년 11월 9일 열람한 내용을 기준으로 읽었습니다.
관련 실험 기록 저장소 리뷰에서는 실행기와 공개 로그·가중치 복원 코드를 다뤘습니다. 여기서는 원문의 실험 질문과 조건에 집중합니다. 특히 가중치를 읽어 맞혔다는 관찰, 실제로 행동을 바꾼 편집, 그 행동이 왜 바뀌었는지에 대한 설명을 서로 다른 증거로 읽겠습니다.
가중치를 바꾼다는 말의 세 가지 뜻
가중치는 신경망의 계산을 정하는 수치입니다. 예를 들어 입력을 받는 행렬의 특정 열을 바꾸면 어떤 입력 특징이 중간 뉴런에 전달되는 방식이 달라질 수 있습니다. 여러 층을 거치는 비선형 계산이기 때문에, 숫자 하나의 변화가 곧바로 사람이 이름 붙인 능력 하나에 대응하는 것은 아닙니다.
원문은 다음 세 작업을 묶어 WSP라고 부릅니다.
| 작업 | 모델에게 요구하는 일 | 성공을 확인하는 방법 |
|---|---|---|
| 읽기 | 이미 학습된 숫자에서 과제·패턴·행동을 추론합니다. | 숨겨 둔 정체나 별도 측정 결과와 대조합니다. |
| 수정 | 실패를 일으키는 계산을 바꾸도록 기존 가중치를 편집합니다. | 편집 전후 실제 실행 결과를 비교합니다. |
| 작성 | 원하는 규칙을 수행할 신경망의 가중치를 처음부터 만듭니다. | 완성된 네트워크를 실행해 성능을 측정합니다. |
리뷰어 작성. 원문의 세 작업을 구분한 개념도이며, 저자들의 실험 화면이나 내부 추론 과정을 재현한 그림은 아닙니다.
핵심은 새 가중치를 일반적인 경사하강법 학습 루프로 얻지 않는다는 것입니다. 그렇다고 모든 실험이 도구·문제 예시·실행 피드백 없이 이뤄지는 것은 아닙니다. 뒤의 실험에서는 Python으로 행렬을 분석하고, 제한된 횟수로 네트워크의 반응을 확인한 뒤 편집을 반복합니다. 원문의 “학습 없음”을 “아무 정보도 보지 않음”으로 읽으면 안 됩니다.
여덟 실험을 먼저 한눈에 보기
| 실험 | 대상과 질문 | 허용 정보·피드백 | 원문이 보고한 핵심 결과 |
|---|---|---|---|
| 1 | 작은 게임 정책의 정체를 읽을 수 있나요? | 가중치 텍스트, 구조·입출력 설명. 도구 없음. | 네 게임을 모두 식별했습니다. |
| 2 | 확산 모델이 만드는 도형을 알 수 있나요? | 가중치 텍스트. 도구·순전파 없음. | 세 도형 이름은 맞혔지만 채워진 도형을 테두리로 설명했습니다. |
| 3 | 언어 모델의 중간층만 읽을 수 있나요? | 입력·출력층을 제외한 가중치와 Python 분석. 네트워크 실행 금지. | 세 학습 언어를 두 시도씩 식별하고 copying head를 찾았습니다. |
| 4 | 실패하는 차량 제어 정책을 고칠 수 있나요? | 가중치·장면·실패한 한 에피소드. 도구 없이 한 번 응답. | 원문 평가에서 편집 후 1,024회 모두 성공했습니다. |
| 5 | 게임 정책을 처음부터 쓸 수 있나요? | 규칙·소스 코드·입출력 설명. 실행 피드백 없이 한 번 작성. | 세 게임에서 PPO 100M 단계 기준선을 앞섰습니다. |
| 6 | 더 큰 바둑 정책을 쓸 수 있나요? | Python sandbox와 제한된 평가 호출. | 평가 호출 없이도 작은 PPO 상대를 이겼고, 호출을 늘려 정책을 개선했습니다. |
| 7 | 두 언어 모델 중 아첨하는 쪽을 알 수 있나요? | 처음에는 가중치, 이후 attention 관측을 추가합니다. | 가중치만으로는 실패했고 attention을 허용한 세 쌍에서는 구별했습니다. |
| 8 | 작은 언어 모델의 수학 성능을 고칠 수 있나요? | Python kernel, 연습 문제, 제한된 평가 호출. | Qwen의 반복을 줄였지만, 반복이 드문 Gemma에서는 뚜렷한 개선이 없었습니다. |
근거는 원문의 각 Experiment와 Setup입니다. 숫자 크기만 비교하기 전에, 무엇을 볼 수 있었고 무엇을 맞혀야 했는지가 실험마다 달랐음을 기억할 필요가 있습니다.
실험 1–3: 가중치를 ‘읽었다’는 증거
실험 1: 네 게임의 이름을 알아맞히기
저자들은 Breakout, Pong, Pac-Man, Freeway의 자체 격자 버전에서 PPO 정책을 학습했습니다. 모두 10×10 격자, 같은 다섯 행동, 같은 500 → 32 → 32 → 5 tanh 신경망을 사용합니다. 가중치는 17,253개이며, 게임별로 10억 학습 단계와 세 seed 중 가장 좋은 모델을 사용했다고 설명합니다.
Astra에는 게임 이름이나 후보 목록을 주지 않고 가중치와 관측 채널·행동의 의미를 설명했습니다. 네 게임을 모두 식별했다는 것이 원문의 결과입니다. 저자들은 Breakout의 경우 첫 층에서 에이전트 채널의 가중치가 바닥 쪽에 집중되는 모양과 출력 행동의 구분을 해석 근거로 듭니다.
같은 구조를 사용했다는 점은 “출력 차원만 보고 네 게임을 구분했다”는 단순한 설명을 줄여 줍니다. 그러나 성공한 이름 추론 하나가 모든 중간 계산을 따라갔음을 뜻하지는 않습니다. 원문도 다음 실험들에서 첫 층·마지막 층과 중간층의 읽기를 따로 시험합니다. 원문 실험 1
실험 2: 도형 이름을 맞혀도 생성 내용을 완전히 이해한 것은 아닙니다
원·사각형·삼각형을 만드는 DDPM을 각각 학습했습니다. 입력은 12×12 잡음 영상과 확산 단계 정보이며, 160 → 64 → 64 → 144 ReLU 신경망의 가중치 23,824개를 텍스트로 제공합니다. 학습은 Adam 40,000단계, 배치 512입니다. Astra에게는 도구와 순전파, 즉 입력을 실제 모델에 통과시키는 계산을 허용하지 않았습니다.
세 도형의 이름은 맞혔지만, 실제 모델은 내부가 채워진 도형을 생성하는데 Astra는 모두 테두리 도형으로 그렸습니다. 원문은 출력층 가중치의 기하학적 패턴을 읽었다는 해석을 제시합니다. 여기서 관찰과 해석을 나눌 수 있습니다. 도형의 종류를 식별했다는 결과는 있고, 생성 분포를 완전히 설명했다는 결과는 없습니다. 테두리 오류는 그 차이를 보여 줍니다. 원문 실험 2
실험 3: 입력·출력층을 제거하고 중간층 보기
이번에는 Python 코드, 로마자로 적은 일본어, 영어로 각각 학습한 문자 단위 Transformer를 사용합니다. 모델은 4층·층당 attention head 6개·폭 384, 약 716만 가중치이며, 각 학습 자료는 10억 문자입니다. 문자 집합은 a–z와 공백·줄바꿈의 28개입니다.
입력 embedding과 출력층을 빼고 네 Transformer 블록만 제공합니다. Astra는 세 학습 자료 중 무엇인지 고르고 head의 역할을 설명합니다. Python으로 행렬을 분석할 수 있지만, 실제·무작위·가상 입력 어느 것으로도 네트워크나 층을 실행할 수 없으며 분석 실행은 최대 100회입니다. 실험 1·2의 도구 없는 조건과 다릅니다.
원문은 세 자료에서 두 시도씩 정체를 맞혔고 copying head, 즉 앞에서 본 문자 뒤의 문자를 이어 복사하는 head를 정확히 찾았다고 보고합니다.
| 학습 자료 | Astra가 지목한 copying head | 별도 실행으로 측정한 head |
|---|---|---|
| Python | 2.1, 3.1, 3.5 | 2.1, 3.1, 3.5 |
| Romaji | 3.3 | 3.3 |
| English | 3.1 | 3.1 |
저자들의 검증은 무작위 문자열을 두 번 반복해 모델에 넣어 head의 복사 행동을 측정하는 방식입니다. 지목한 head의 점수는 0.22–0.55, 나머지는 최대 0.02이며, 이 측정 결과를 Astra에게 주지는 않았다고 설명합니다. 따라서 모델의 가중치 분석과 연구진의 사후 실행 검증을 구분해야 합니다. 원문 실험 3·Figure 1
저자들은 첫 블록의 직전 문자 참조 패턴과 이후 행렬의 결합을 통해 copying 경로를 해석했다고 설명합니다. 이는 중간층에 대한 구체적인 가설과 별도 측정의 일치를 보여 줍니다. 같은 논리를 임의의 대형 모델 전체를 해독한 증거로 확대하지 않는 것이 적절합니다.
실험 4–5: 가중치를 실제 행동으로 바꾸기
실험 4: 언덕을 넘지 못하는 차량 고치기
Kinetix의 차량은 바로 앞으로 가면 경사로에 걸리고, 먼저 뒤로 물러나 가속 거리를 확보해야 합니다. 원문은 PPO 정책이 이 실패 상태에 머문 경우를 선택합니다. 신경망은 입력 679개와 ReLU·tanh 층을 거쳐 행동 logit 16개를 내며 가중치는 171,664개입니다.
Astra에는 전체 가중치, 장면 설명, 실패한 한 에피소드를 주고 한 응답에서 원인 설명과 수정을 요구했습니다. 저자들은 가중치 3.5%를 바꾼 뒤 평가 1,024회 모두 성공했다고 보고합니다. 편집 전 결과는 별도 평가 256회에서 성공 0회입니다. 서로 다른 평가 횟수의 보고값이며 동일한 1,024개 실행을 편집 전후 짝지어 비교했다는 의미는 아닙니다.
설명에 따르면 Astra는 위치·속도를 읽는 작은 계산 경로를 여러 층에 추가해 먼저 후진하게 하고, 기준 지점을 지난 뒤에는 기존 정책이 다시 운전하도록 했습니다. 이 사례의 의미는 과제 설명을 숫자 행렬로 번역한 개입을 실제 실행으로 검증했다는 데 있습니다. 잘 작동하는 일반 제어기를 자동으로 얻었다는 범위의 실험은 아닙니다. 원문 실험 4
실험 5: 영 행렬에서 시작한 세 게임 정책
MinAtar의 Breakout·Seaquest·Asterix에서는 모든 가중치를 0으로 시작합니다. 네트워크는 600 → 32 → 32 → 6 tanh 구조입니다. Astra는 게임 규칙과 소스 코드, 여섯 관측 채널·행동의 의미와 채점 방식을 알고 있지만, 데이터를 학습하거나 게임을 미리 실행하지 않고 한 번의 응답으로 가중치를 씁니다.
| 게임 | PPO 100M 단계 | PPO 500M 단계 | Astra 한 번 작성 |
|---|---|---|---|
| Breakout | 15.8 | 25.3 | 517.4 |
| Seaquest | 5.6 | 88.9 | 53.1 |
| Asterix | 25.8 | 55.2 | 53.2 |
각 점수는 1,000개 에피소드, 확률적 행동 선택, sticky action 확률 0.1, 최대 10,000단계에서 평가합니다. PPO는 3–10개 seed 중 최고 결과를 사용합니다. Astra는 100M 단계 PPO보다 세 게임 모두 높지만, 500M PPO와 비교하면 Seaquest는 낮고 Asterix는 근접합니다. Breakout에서의 큰 차이를 세 게임 전체의 보편적 배수로 요약하면 안 됩니다. 원문 실험 5
이것은 신경망 형태로 제어 규칙을 작성한 결과입니다. 정책 작성 중 데이터·보상 피드백이 없었다는 조건과 실험자가 완성 정책을 실행해 점수를 매겼다는 조건은 양립합니다.
실험 6–7: 도구가 들어오면 바뀌는 질문
실험 6: 바둑 규칙을 층별 계산으로 옮기기
9×9 바둑에서는 1,480,274개 가중치의 ReLU 네트워크를 사용합니다. 입력 243개, 은닉 폭 512의 여섯 층, 출력 82개로 착수와 패스를 표현합니다. 불법 수는 별도로 가리고 행동은 확률적으로 고릅니다. Astra가 신경망으로 바둑의 모든 규칙을 직접 검증하는 설정은 아닙니다.
Python sandbox에서 가중치를 읽고 저장하고 NumPy·PyTorch로 계산할 수 있지만, sandbox 자체에서는 모델을 실행할 수 없습니다. 실행 반응을 보려면 별도 예산을 사용합니다. 원문에서 평가 호출 하나는 최대 128개 연습 게임 또는 최대 256개 위치의 출력을 의미합니다. 따라서 여기서 ‘50 forward passes’는 보드 상태 50개를 한 번씩 계산했다는 뜻이 아닙니다.
호출 0회 조건에서는 Python 실행 한 번으로 정책을 완성합니다. 저자들은 336줄 코드로 돌의 연결·활로·위험한 돌·포획·자기 atari 회피 등을 층별 계산으로 작성했다고 설명하며, 두 작은 PPO 상대에 대해 절반 이상 이겼다고 보고합니다. 반복 평가를 허용하면 패배를 보고 해당 계산을 고친 뒤 개선 여부를 확인합니다.
원문은 50회에서 같은 크기의 PPO도 앞섰다고 서술하지만, Setup에 명시된 최종 채점은 별도 작은 PPO 두 개를 상대로 각각 2,000게임입니다. 이 글에서는 큰 모델과의 비교 조건·정확한 승률을 해당 서술만으로 새로 만들어 제시하지 않습니다. 수치·상대·실행 예산을 함께 봐야 하는 사례입니다. 원문 실험 6
실험 7: 아첨을 가중치만으로 알아내지는 못했습니다
같은 QA 데이터와 학습 절차로 Gemma 3 270M 두 개를 조정합니다. 하나는 정답을, 하나는 사용자가 암시한 답을 따르게 합니다. 입력 embedding과 출력층은 고정합니다. 학습에 쓰지 않은 사실 중 모델이 아는 질문에서 아첨 모델은 잘못된 추측을 100% 따르고, 정직한 모델은 1–3% 따랐다고 설명합니다.
가중치만으로는 네 시도 모두 아첨 모델을 알아내지 못했습니다. 이후 모델이 작성한 텍스트에 두 신경망을 실행해 attention, 즉 어떤 토큰을 참조하는지 보여 주자 학습한 세 쌍에서 구분했습니다. 최대 16개 텍스트와 20회 실행을 허용하고 최종 출력은 보여 주지 않는 조건입니다.
원문의 한 head 예시에서는 정직한 모델이 질문의 숫자에 94.3%, 사용자 답에 0.75%를 배분한 반면, 아첨 모델은 각각 3.5%, 85.7%였습니다. 이 결과는 실행 중 내부 관측이 추가되면 행동 차이를 설명할 수 있었다는 증거입니다. 가중치만으로 숨겨진 행동을 읽어냈다는 성공 사례로 바꾸면 실험의 가장 중요한 실패 조건을 지우게 됩니다. 원문 실험 7·Figure 2
실험 8: 수학을 가르친 것인가, 답변을 끝내게 한 것인가
Qwen의 반복 문제를 겨냥한 작은 편집
Qwen3.5-0.8B는 사고 과정을 생성하는 설정에서 같은 내용을 반복해 토큰을 다 쓰는 문제가 있습니다. 원문은 첫 연습 응답 96개 중 85개가 32,768토큰 한도에 도달했다고 보고합니다. 이것은 최종 MATH-500 평가의 한도 도달률 93%와 별도 표본입니다.
Astra는 모델 가중치가 올라간 CPU Python kernel, GSM8K 학습 문제 7,469개와 MATH 학습 문제 7,275개, 제한된 평가 호출을 받습니다. 시험 문제는 보지 않습니다. 이 실험의 호출 한 번은 최대 512개 문제 응답 또는 최대 1,024개 텍스트 읽기를 허용합니다. 바둑 실험과도 단위가 다릅니다.
저자들에 따르면 Astra는 15·19층 MLP가 쓰는 한 방향을 반복의 원인으로 보고 두 행렬의 출력 열 64개씩에서 그 방향을 뺐습니다. 변경 대상으로 잡은 원소는 2 × 64 × 1,024 = 131,072개이며, 원문은 약 0.8B 모델의 0.016%라고 표현합니다. 이는 전체 모델 중 해당 부분의 크기입니다. 그 부분의 수정 강도가 작다는 뜻이나 나머지 행동이 반드시 보존된다는 증명은 아닙니다.
| Qwen3.5-0.8B | MATH-500 | GSM8K | IFEval | MATH-500 토큰 상한 도달 |
|---|---|---|---|---|
| 기본 | 7.9% | 13.8% | 21.0% | 93.0% |
| 평가 호출 10회 편집 | 12.3% | 25.7% | 49.0% | 87.2% |
| 평가 호출 25회 편집 | 14.1% | 25.1% | 39.9% | 86.4% |
| 평가 호출 50회 편집 | 48.1% | 67.1% | 62.3% | 33.1% |
리뷰어 재도표화. 원문 실험 8의 표를 같은 0–100% 축으로 그렸습니다. 그래프는 새 실험이나 원문의 시각 자료가 아닙니다.
원문의 평가는 thinking on, 최대 32,768토큰, temperature 0.6, top-p 0.95, top-k 20, presence penalty 1.5를 사용합니다. 점수는 문제당 여러 표본의 평균이며 MATH-500은 4회, GSM8K·IFEval은 2회입니다. 표의 상승은 각각 +40.2, +53.3, +41.3퍼센트포인트입니다. 정답률의 상대 배수와 퍼센트포인트를 혼용하지 않아야 합니다.
표에서는 정답률 상승과 반복 감소가 함께 관찰됩니다. 저자들 역시 다음 실험에서 이미 풀 잠재력이 있는 문제를 끝까지 답하게 만드는 것과 없던 수학 능력을 더하는 것을 분리합니다. 이 구분이 이 결과의 해석을 가장 크게 바꿉니다.
반복이 드문 Gemma에서는 같은 개선이 없었습니다
추가 실험은 Gemma 3 270M을 사용합니다. 이 모델의 토큰 상한 도달 비율은 8.5%로, Qwen의 93%보다 낮습니다. 원문은 Qwen에서 억제했던 반복 장애 대신 산술·대수 추론 자체의 오류가 관찰됐다고 설명합니다.
| Gemma 3 270M | MATH-500 |
|---|---|
| 기본 | 6.8% |
| 평가 호출 5회 편집 | 7.0% |
| 평가 호출 10회 편집 | 7.6% |
| 평가 호출 25회 편집 | 7.7% |
| 평가 호출 50회 편집 | 7.0% |
최대 차이는 기본 대비 0.9퍼센트포인트입니다. 저자들은 뚜렷한 개선이 확립되지 않았다고 설명합니다. Gemma는 temperature 1.0, top-k 64, top-p 0.95, 최대 8,192토큰, MATH-500 문제당 4회 표본으로 평가합니다. Qwen과 생성 설정·크기가 달라 두 표의 절대 점수를 동일 조건의 모델 순위로 읽을 수도 없습니다. 원문 추가 실험
이 결과를 어디까지 받아들일 수 있을까요?
이 글의 해석으로는 가장 구체적인 성과는 원하는 계산을 특정 가중치 편집으로 표현하고 실제 실행으로 확인한 사례들입니다. 차량 제어와 Qwen 반복 완화는 단순한 이름 추측과 달리 네트워크 행동에 대한 개입을 포함합니다. 다만 특정 개입이 효과가 있었다는 것과 그 개입에 붙인 내부 메커니즘 설명이 모두 검증됐다는 것은 구별할 필요가 있습니다.
원문이 제시하는 ‘가중치만으로 감사하기’, ‘최적화 비용 감소’, ‘데이터 없는 능력 조정·제거’, ‘재귀적 자기 개선’, ‘서로 다른 구조 사이의 기능 이식’은 저자들이 앞으로 가능할 수 있다고 제안하는 전망입니다. 여덟 실험으로 이 모든 기능이 완성됐다고 보고한 것은 아닙니다. 원문도 문맥 길이와 harness의 비효율, 초기 단계라는 경계를 밝히며 별도 benchmark와 harness를 만들고 있다고 설명합니다. 원문 What Comes Next?
비용 역시 문맥 길이·Python 분석·평가 호출·실험자 채점 비용을 구분해야 합니다. “경사하강법을 쓰지 않았다”는 사실만으로 전체 계산 비용이 기존 학습보다 작다는 측정 결과가 생기지는 않습니다. 이 리뷰는 원문이 제공하지 않은 총비용이나 신뢰구간을 계산해 보탰다고 주장하지 않습니다.
가중치 읽기의 해석에는 후속 검증도 있습니다. 별도 논문 리뷰는 Claude Opus 5.5에 CNN 가중치를 주고, 익숙한 데이터셋에 대한 사전 지식과 실제 수치 추론을 구분하는 실험을 다룹니다. 사용 모델·구조·과제가 다르므로 원 글의 모든 결과에 대한 동일 조건 재현이나, 가중치 수정·작성 전체의 반증으로 취급해서는 안 됩니다.
정리
Weight-Space Programming의 흥미로운 점은 신경망을 학습시킬 코드를 생성하는 수준을 넘어, 신경망의 계산을 이루는 숫자 자체를 언어 모델의 작업 대상으로 삼았다는 것입니다. 그 가능성을 읽으려면 입력에 무엇을 공개했는지, 분석 도구와 실행 피드백을 얼마나 허용했는지, 실제로 무엇을 채점했는지를 함께 보아야 합니다.
원문의 여덟 실험은 성공과 실패를 모두 포함합니다. 도형 이름은 맞혀도 채움 방식은 놓쳤고, 아첨은 가중치만으로 구분하지 못했습니다. Qwen의 반복을 줄이는 편집은 큰 개선을 냈지만 Gemma에 새로운 수학 능력을 더하는 데에는 같은 성과가 없었습니다. 이 차이들을 남겨 두어야 ‘가중치를 이해한다’는 넓은 표현을 구체적인 검증 가능한 주장으로 바꿀 수 있습니다.