
700개의 근육으로 인체 골격을 세우려다 솔직하게 실패한 이야기 — 하지만 손은 병을 잡고 명령한 곳으로 옮겼다
요약
MS-Human-700 근골격 모델을 MuJoCo 환경에서 진화 알고리즘으로 제어하며 입위, 파지, 운반 실험을 진행한 기술 회고록입니다. 700개의 근육을 활용한 전신 모델 제어의 한계와 보상 해킹 문제, 그리고 실험적 실패와 성공의 원인을 분석합니다.
핵심 포인트
- 700개 근육 기반 MS-Human-700 모델의 MuJoCo 시뮬레이션 수행
- 단순 진화 알고리즘으로는 전신 입위(Standing) 유지의 한계 확인
- 팔 모델을 활용한 물체 파지(Grasp) 및 유지 실험 성공
- 보상 해킹(Reward hacking) 현상 발견 및 해결 과정 공유
- 고차원 근육 제어를 위한 계층적 표현의 필요성 시사
대상: 로봇, 생체역학 (Biomechanics), 진화 계산 (Evolutionary Computation), MuJoCo에 관심이 있는 사람 / 「근육으로 움직이는 인체 모델」을 다뤄보고 싶은 사람 / 좋은 결과보다 솔직한 내역을 읽고 싶은 사람.
전제 지식: Python을 읽을 수 있다면 충분합니다. 제어 및 생체역학 용어는 그때마다 쉽게 풀어서 설명하겠습니다.
수치는 모두 노트북 CPU로 실측했습니다. 이 기사는 성공담이 아니라, 「한쪽은 솔직하게 패배했고, 한쪽은 승리했다」는 그 양쪽을 동일한 잣대로 측정한 이야기입니다.
근골격 모델 (musculoskeletal model) —— 뼈, 건(Tendon), 700개의 근육으로 이루어진 전신 인체를 집의 CPU 상에 있는 MuJoCo에 올리고, 근육을 하나씩 진화(Evolution)로 움직여서 「서기」, 「잡기」, 「옮기기」를 시켜보았다. 토크 모터가 아니라, 수축하는 힘밖에 낼 수 없는 근육으로 움직이는 것이 핵심이다. -
입위 (standing)는 솔직하게 패배했다: 아무것도 하지 않으면 약 1초 만에 무너져 내리는 골격을 폐루프 (Closed-loop) 제어로 붕괴를 전형적인 2.5초, 최량 3.5초 전후까지 늦췄다 (베이스라인의 2.5~3.5배). 하지만 6초 동안 계속 서 있을 수는 없었고, 마지막에는 반드시 쓰러졌다. 역진자 (inverted pendulum)를 소박한 방책으로 항상 안정화하는 것은, 이 계산 예산으로는 도달할 수 없다 —— 과장 없이 패배를 남긴다. 덤으로, 한때는 「기억을 더했더니 늘어났다 (4.5초)」라고 생각했지만, 난수 시드(Random seed)를 3개로 늘렸더니 그 차이는 사라졌다 (후술). n=1에 속을 뻔한 이야기도 솔직하게 쓴다. -
파지 (grasp)는 승리했다: 어깨를 고정한 팔 모델로, 81개의 근육을 가진 오른손이 책상 위의 물병을 잡고 머리 위 0.82m까지 들어 올려 유지했다. 게다가 「던지기」가 아니라 「잡아서 유지」하는 것임을, 손바닥과 병 사이의 거리를 측정하여 검증했다. -
운반 (place)은 "절반" 승리했다: 잡은 병을 명령한 장소로 옮기는 제어성을 추가하자, 완전한 승리에서 **부분적인 승리 (3개 목표 중 1개를 엄격히 배치 · 모든 목표에서 계속 잡고 있음)**로 떨어졌다. 게다가 여기서도 「근육을 이완시켜 병을 방치하고 점수를 따는」 보상 해킹 (Reward hacking)이 발생하여, 공개 전에 해결했다. 왜 입위는 패배하고, 파지는 승리하며, 운반은 절반이었는가 —— 그 구배 (Gradient)가 오늘의 주인공이다.
| 용어 | 풀이 |
|---|---|
| 근골격 모델 (musculoskeletal model) | 뼈·관절뿐만 아니라 근육과 건까지 가진 인체 시뮬레이션. 이번에는 700개의 근육이 포함된 전신 |
| ... |
새로운 것을 시작하기 전에 먼저 조사한다. 이것은 나의 습관이다. 이번 주제는 MS-Human-700 —— 중국 LNS Group이 만들고, ICRA 2024에서 발표한 전신 근골격 모델 (Zuo, He, Shao, Sui, Self model for embodied intelligence)이다. Apache-2.0으로 공개되었으며, MuJoCo의 공식 모델 모음인 Menagerie에도 수록되어 있다. 뼈, 건, 700개의 근육이 들어간, 말 그대로 「전신 골격」이다.
그리고 논문을 읽고 솔직하게 기대치를 조정했다. 이 논문의 주안점은 「700개의 근육이라는 고차원을 계층적 저차원 표현 (≒ 근육 시너지, Muscle synergy)으로 제어하여 보행을 학습하는 것」에 있다. 즉, 제대로 움직이려면 소박한 방법으로는 부족하다고 저자 스스로가 말하고 있다.
교훈의 선취: 「근육으로 인체를 세우는 것」은 GPU 클러스터와 계층적 강화학습 (Hierarchical Reinforcement Learning)을 투입해도 어려운 엄연한 연구 과제다. 그것을 노트북 CPU와 진화 전략 (Evolution Strategy)으로 하겠다는 것이니,
패배할 가능성을 처음부터 계산에 넣는다. 패배하면 패배했다고 쓴다 —— 그것이 이 시리즈의 척추다.
내가 가치를 두는 것은 「세울 수 있었다」라는 결과 그 자체가 아니다. 동일한 잣대로, 어디까지 갈 수 있었고 어디서 멈췄는지를 솔직하게 귀속시키는 것 —— 그것이 오늘 쓰고 싶은 것이다.
먼저 MS-Human-700을 자작 연구 기반인 onocollo (MuJoCo 위에 씌운 타입 지정 런타임)에 로드했다. 세 가지 변종이 있다.
| 변종 | 자유도 (DoF) | 근육 | 용도 |
|---|---|---|---|
| 전신 (full) | 85 | 700 | 전신의 모든 근육 |
| 보행용 (locomotion) | 36 | 100 | 상반신을 간략화. 입위·보행 실험에 사용 |
| 조작용 (manipulation) | 48 | 81 | 오른팔과 상세한 손 + 책상 위의 물병 |
몇 가지 중요한 사실.
액추에이터는 전부 '근육'
로봇의 모터처럼 '+3 N·m에서 −3 N·m'와 같이 양방향으로 회전할 수 있는 것이 아니라, 근육은 수축(당기는) 방향으로만 힘을 낼 수 있다. 활성값은 0~1이며, Hill 타입이라는 힘-길이-속도 의존의 비선형 모델로 힘이 결정된다. 따라서 '관절을 오른쪽으로 돌리려면 오른쪽 근육, 왼쪽은 왼쪽 근육'과 같이 쌍으로 준비해야 하며, 게다가 그 수가 자유도보다 많다(=과잉).
- 무릎은 생체역학적으로 정밀하다. 단순한 경첩이 아니라, 대퇴골과 경골이 굴러 미끄러지는 움직임을 여러 보조 관절과 구속식으로 재현하고 있다. - 골반은 '부유 기반(floating base)'이다. 바닥에 고정되지 않고, 3방향 슬라이드와 3방향 회전으로 자유롭게 움직인다. 초기 자세에서는 높이 0.95m로 직립해 있다.
- 속도: 이 모델은 노트북 PC(Intel Core, Ice Lake 세대 모바일 CPU)의 1스레드 유휴 상태에서 RTF 약 13배(6초의 물리 시뮬레이션을 약 0.46초, ~6500 스텝/초. dt=0.002s)이다. 다만 이는 점유 시점의 값이며, 진화를 위해 7코어를 병렬로 구동하면 프로세스당
35배까지 떨어진다(코어 경쟁). RTF는 CPU 모델명・병렬도・적분기 설정에 따라 크게 변하므로, 수치는 반드시 조건과 함께 읽어야 한다. 그럼에도 불구하고 '수천 번의 롤아웃'을 하는 진화가 현실적으로 돌아갈 만한 속도는 맞다.
새로운 제어를 만들기 전에, 반드시 **학습되지 않은 기준선(baseline)**을 측정한다. 나중에 이상하게 좋은 수치를 의심할 수 있도록, 출발점을 먼저 못 박아 놓는 것이다. 보행 모델(바닥 있음)로 6초간 롤아웃하여 '골반이 0.6m를 넘으면 전복'이라는 조건을 걸었다.
| 제어 | 전복까지의 시간 | 결말 |
|---|---|---|
| 무제어(모든 근육 이완) | 0.50초 | 붕괴 |
| 모든 근육 최대 수축 | 0.99초 | 붕괴 |
| 매 스텝 난수 | 1.00초 | 붕괴 |
아무것도 하지 않으면, 인체 골격은 약 1초 만에 무너진다. 모든 근육을 최대로 경직시키면 강성이 높아져 아주 조금 연명할 수는 있지만, 그래도 서 있을 수는 없다. 이것이 기립 자세 과제의 출발점이다.
그리고 여기서, 기존의 장치가 고장 나는 것을 실측했다—이것이 이번에 가장 기술적으로 흥미로운 발견이었다. onocollo에는 이미 'Menagerie 로봇의 제어를 진화시키는' 컨트롤러가 있다. 하지만 그것은 각 액추에이터에 담당 관절의 각도를 읽게 하여 움직이도록 설계된 것이었다. 그런데 근육에는 '담당하는 단일 관절'이 없다(건을 매개로 여러 관절을 가로지른다). 결과적으로, 100개의 모든 근육이 동일한(제로의) 입력을 받고 게다가 가중치를 공유하기 때문에, 100개 근육 모두가 완전히 같은 활성도를 내보낸다.
100개의 근육이 매 순간 똑같은 강도로 수축한다—이것으로는 두 발로 서는 것이 절대 불가능하다. 이 퇴화(degradation)를 수치로 확인했다(고유한 활성값의 종류 = 1). 그래서, 근육 모델에는 '전신 상태를 보고, 근육마다 다른 지령을 내보내는' 새로운 표현이 필요했다. 논문의 '계층적 저차원 표현(hierarchical low-dimensional representation)'과 그 필요성이 정확히 일치했다.
만든 제어는 다음과 같다.
- 전신의 고유수용감각(proprioception)을 읽는다: 골반 높이 오차・기울임(전후/좌우/비틀림)과 그 각속도・골반의 병진 속도・좌우 발의 지면 접촉—균형에 도움이 되는 14가지 양. - 근육 시너지에 투영한다: 그 상태를, **K개의 '함께 움직이는 패턴'**으로 선형 사상(
tanh)하고, 그것을K×100행렬로 100개 근육 활성도에 전개(sigmoid)하여 0~1로 만든다. K=6이라면 정책의 수치는 약 790개이다. 이것이 논문의 '저차원 표현'에 대응하는 나만의 구현이다. - CMA-ES로 진화: 이 수치를 진화 전략으로 최적화한다. 보상은 '서 있는 동안, 높이가 목표에 가깝고・상체가 곧으며・골반 속도가 작을수록 고득점, 넘어지면 종료'.
솔직한 설계 수정: 처음의 보상은 '높이가 목표에 가까우면 가산점'만이었다. 그러자 진화가 교활해져서,
『느리고 우아하게 쓰러지는』 정책으로 점수를 얻었다(쓰러지는 도중에도 높이는 꽤 높기 때문에). 외관상으로는 서 있지 않다. 그래서 골반 속도에 페널티를 추가하여, '조용히 멈춰 서는' 것이 '천천히 넘어지는' 것보다 고득점이 되도록 수정했다. 교활함을 봉쇄하는 지표 조정이다.
계산을 낭비 없이 돌리기 위해, 모델을 단 한 번만 로드하여 7코어에서 병렬 평가하는 메커니즘도 작성했다(모델 로딩은 약 2초, 1롤아웃은 수백 밀리초이므로, 매번 다시 로드하면 로딩 시간이 지배적이 된다). 워커별로 단 한 번만 읽게 하고 재사용함으로써, 병렬도의 만큼의 속도 향상이 가능하다.
결과는—솔직히 말해, 도달하지 못했다.
최량값(best)만 기재하면 "산(distribution)을 대표값으로 보이게" 되므로, 전형값(진화 후반 세대의 best 중앙값)도 병기한다.
최량값(best)만 기재하면 "산(distribution)을 대표값으로 보이게" 된다. 우선 **단일 난수 시드(single random seed)**에서의 결과는 다음과 같았다:
| 제어(단일 시드) | 방책(policy) 수치 | 전형(중앙값) | 최량(best) | 결말 |
|---|---|---|---|---|
| 베이스라인(무제어) | 0 | — | 0.5~1.0초 | 붕괴 |
| ... | ||||
| 이 표를 보고 나는 순간 이렇게 생각했다 —— "기억(적분항)을 더했더니 3.71 → 4.53초로 늘어났다. 가설대로, 균형에는 오차의 적분이 필요하다"라고. 균형 제어는 이론상 그것이 정석(적분 제어)이기에, 이야기로서도 깔끔했다. |
하지만 CMA-ES는 확률적이다. 단일 난수 시드의 차이는, 시드의 운(hit/miss)일 수도 있다. 그래서 "기억 있음/없음"을 각각 3개의 시드로 돌려 중앙값을 취했다(공정한 비교).
| 제어 | best의 중앙값(3종) | best의 편차 | 전형(median-late)의 중앙값 |
|---|---|---|---|
| 기억 없음(plain) | 3.55초 | 3.16~3.80초 | 2.71초 |
| 기억 있음(적분항) | 3.56초 | 3.34~4.17초 | 2.39초 |
결론은 반전되었다. best의 중앙값은 3.55 ≒ 3.56으로 거의 동일하며, 전형값에 있어서는 기억 있음이 오히려 낮았다(2.39 < 2.71). 즉, 단일 시드에서 보였던 4.53초는 **동일한 분포 내의 우연히 높은 스파이크(spike)**였으며, 기억항이 효과가 있었다는 증거가 되지 못한다. 나의 "기억이 효과가 있다"라는 깔끔한 가설은 n=3에서 지지되지 않았다.
- 폐루프(closed-loop) 제어는 붕괴를 약 1초 → 전형 2.5초·최량 3.5초 전후까지 늦췄다. 베이스라인을 명확히 상회하며, 정적인 근긴장(muscle tension)보다 폐루프 제어가 더 좋다. 배율의 분모는 보수적으로 "무제어 ~1.0초"를 채택한다(전신 이완의 0.50초를 분모로 잡으면 수치는 두 배가 되지만, 그것은 과장이다). 기억의 유무는 이 범위 내에서 유의미한 차이가 없다.
- 하지만 6초 동안 계속 서 있을 수는 없다. 최량 방책에서도 마지막 프레임은 바닥에 누워 있다.
- 교훈: n=1의 "효과가 있다!"는 확률적 최적화에서 종종 거짓이 된다. 깔끔한 가설일수록, 여러 시드에서 중앙값(median)을 취하기 전까지는 믿어서는 안 된다. 이 사건은 내가 공개 전에 **별도 프로세스의 팩트 체크(fact-check)**를 거치는 운용이 실제로 효과를 본 사례다(팩트 체크에서 "단일 시드의 인과관계는 너무 강하다"라고 지적 → 3종 시드로 검증 → 결과 반전).
왜 도달하지 못하는가. 솔직히 말하자면, 선형 시너지 방책(linear synergy policy)을 CMA-ES로 ~800차원이나 최적화하는 것은, 도립 진자(inverted pendulum)의 항성 안정화에는 역부족이다(단순한 적분 기억을 더해도 위에서 본 바와 같이 구원받지 못했다). 논문이 계층 강화학습(hierarchical reinforcement learning)을 필요로 했던 것과 모순되지 않는다. 여기서 "세웠습니다!"라고 뭉뚱그려 쓰는 것은 쉽지만, 실제로 계속 서 있는 것은 아니기에 그렇게 쓰지는 않기로 한다.
직립이 어려운 이유는 "도립 진자"이기 때문이다. 그렇다면, 넘어질 걱정이 없는 과제라면?
—— 조작용 변종은 어깨 윗부분이 고정되어 있어 골반의 자유 관절이 없다. 즉, 균형을 잃을 수가 없다. 순수하게 "팔과 손으로 무언가를 하는" 과제가 된다.
그래서, 81개의 근육으로 이루어진 오른손에 책상 위의 물병을 잡게 하여 들어 올리게 했다. 손은 처음부터 물병에서 약 0.1m 근처에 있으므로, 진짜 과제는 "다가가는 것"이 아니라 —— 잡고, 들어 올리고, 유지하는 것이다.
동일한 근 시너지 방책을, 이번에는 "물병을 높이 들어 올릴수록 가점"을 주는 방식으로 진화시켰다. 결과:
| 세대 | 물병 들어 올림 높이 |
|---|---|
| 0(초기) | 0.006 m(=거의 제로) |
| ... | |
| 81개 근육의 오른손이 책상의 물병을 잡고, 0.82m 들어 올려 정지·유지했다(마시는 동작의 전 단계 —— "입으로 가져가기" 직전 단계 ——에 해당한다). |
높이를 최대화하는 보상은, "물병을 위로 쳐서 날려버리는" 편법을 써도 점수를 얻을 수 있다. 그래서 2단계로 검증했다.
(1) 던지기가 아닌가: 들어 올린 후 3초 동안, 손바닥(수근 중앙의 뼈)과 물병 중심 사이의 거리는 0.052~0.062m를 계속 유지했다(발산하지 않는다). 던지기라면 거리는 발산한다. 둘 다 함께 움직이고 있다.
(2) 정말로 「손가락으로 쥐고」 있는가 (떠올리는 것이 아닌가): 거리가 일정하다는 것은 「함께 움직였다」는 것만을 나타낸다. 전완(forearm)으로 끼워서 운반했을(떠올렸을) 가능성을 배제하기 위해, 유지 중의 **접촉력 (contact force)**을 조사했다. 병에 닿아 있는 것은 9개의 손가락·손 뼈——엄지(원위부에서 40N)·검지(중수부에서 33N)·중지·약지——이며, 엄지가 다른 손가락과 마주 보며(대향하여) 쥐고 있다. 병의 무게는 5.3N이므로, 이를 크게 상회하는 대향력으로 끼워 잡고 있다. 떠올리는 것이 아니라, **손가락을 닫은 진짜 파지 (force-closure)**다.
솔직한 공개: 이 파지는
마찰 계수 μ=1.0(고무에 가까운 고마찰)의 접촉에서 성립된다. 마찰이 높을수록 파지는 쉬워진다. μ를 낮추면 동일한 정책 (policy)으로 미끄러져 떨어질 가능성이 충분히 있다. —— 「잡았다」는 것은 이 마찰 조건에서의 이야기임을 명시해 둔다.
이는 이전 기사에서 「AI 의수에게 젓가락을 쥐여주는」 이야기를 썼을 때 남았던 숙제 —— 「손이 없다 (젓가락을 직접 움직이고 있었다)」 문제에 대한, 진정한 해부학적 손에 의한 답변이기도 하다. 엄지·벌레근 (lumbricals)·뼈사이근 (interossei)까지 갖춰진 손이, 근육의 힘만으로 물건을 잡았다.
「잡아서 들어 올리기」는 사실
직립(立位)은 불안정한 평형이다. 역립 진자(inverted pendulum)는 아주 미세한 기울기조차 지수적으로 증가한다. 제어는 '끊임없이, 빠르게, 올바르게' 계속해서 바로잡아야 하며, 조금이라도 실수하면 발산하여 쓰러진다. 기억이 없는 선형 정책(linear policy)에게는 벅찬 과제다. -
파지(把持)는 (이 설정에서는) 안정적이다. 어깨가 고정되어 있고, 목표(높이 들어 올리기)는 일단 달성하면 유지하기 쉽다. 다소 제어가 거칠더라도 치명적이지는 않다.
다만, 안정성이 유일한 차이라고 단정 짓는 것은 솔직하지 못한 처사다. 적어도 세 가지 교란 요인이 존재한다: ① 리치(reach)가 이미 해소됨(파지는 손이 처음부터 병의 0.1m 근처에 있음 = 발판을 제공함), ② 보상의 순수성(파지는 '높을수록 좋다'는 단조롭고 밀집된 보상 / 직립은 생존 시간 기반이라 실제로 '천천히 쓰러지는' 기만(deception)이 발생함), ③ 자유도의 차이(파지는 어깨가 고정되어, 직립의 불안정한 부유 기저 6자유도를 제거함). 주된 원인은 안정성이지만, 이 요소들도 영향을 미치고 있다——지나치게 깔끔한 이야기는 단일 원인을 과대평가하게 만든다.
그리고 §6.5의 운반(place)은 이 관점의 세 번째 데이터 포인트가 된다. 무대는 파지와 마찬가지로 안정적인 조작 변종(쓰러지지 않음)임에도 불구하고, 여기에 "명령한 장소로 운반하기"라는 제어 성능의 요구를 추가하자마자, 완전한 승리(파지)에서 **부분적인 승리(3분의 1)**로 떨어졌다. 즉, 난이도는 과제의 안정성뿐만 아니라, **요구되는 제어의 '영리함(intelligence)'**에 의해서도 높아진다. 정적으로 들어 올리는 것은 쉽지만, 잡은 채로 임의의 한 점으로 운반하는 것은 (이 선형 정책의 용량으로는) 아직 절반 수준이다——직립, 파지, 운반을 동일한 잣대로 나열하면 그 기울기가 보인다.
그럼에도 수확은 다음과 같이 정리할 수 있다: "AI가 할 수 있는 것/할 수 없는 것"은 정책의 영리함뿐만 아니라, 과제 자체의 안정성(그리고 발판, 보상, 자유도, 요구되는 제어성)에 의해 결정된다. 같은 도구라도 무대를 잘 선택하면 이길 수 있고, 선택하지 못하면 솔직하게 넘어지는 법이다. 그리고 세 가지 과제 모두에서, "점수는 올라가는데 내용이 따르지 않는" 기만(천천히 쓰러짐/병을 방치함)을 공개 전 단 한 번의 확인으로 잡아냈다——그것이 이 글의 일관된 원칙이다.
수치를 조건 없이 제시하는 것은 불성실하므로, 전제 조건을 나열해 둔다.
모델: MS-Human-700(Apache-2.0) / MuJoCo 3.10 / 적분 스텝 dt=0.002s. -
CPU: Intel Core(Ice Lake 세대 모바일), 8코어. 직립·파지의 진화 평가는 7개 워커 병렬(7 workers parallel), 단발 측정은 1개 스레드 아이들(1 thread idle). -
직립: 보행용 장면(바닥 있음), 에피소드 6초, 전도 임계값=골반 높이 0.6m(초기 0.95m). CMA-ES, pop 1640, 세대 60250. 정책은 근육 시너지(muscle synergy, K=6 또는 8). 기억 있음/없음의 비교는 각각 난수 시드 3개를 사용하여 중앙값을 취했으며, 단일 시드에서의 겉보기 차이(4.53초)가 사라짐을 확인했다. -
파지: 조작용 장면(어깨 고정), 에피소드 3초, CMA-ES pop 28·K=8·250세대 중 gen50에서 최상. 접촉 마찰 μ=1.0. -
운반(place): 동일한 조작용 장면, 목표 3점(수직 위/몸 측면/전방 약간 위)의 평균으로 채점. 관측=파지 19차원 + 명령 벡터 3차원. CMA-ES pop 28·K=8, 파지 champion으로부터 warm-start(명령 입력의 가중치를 0으로 채움), sigma0=0.25. 보상=목표 근접(σ=0.15) + 파지 유지(σ=0.10) − 제어 비용, 종료 조건은 파지 지속으로 게이팅. gen30-50에서 fitness ~1021로 수렴. held/placed는 최종 정책의 결정적 재평가(deterministic re-evaluation)로부터 산출. -
수치 출처: 모두 out/musculo/*.json 및 저장된 정책의 재실행을 통해 취득. 본 글의 모든 정량적 주장은 공개 전 독립적인 fact-check(별도 프로세스로 1차 데이터와 재대조) + 편집 리뷰를 거쳤다. RTF 조건 명시, 직립의 기억 효과를 n=3으로 반증, 파지의 force-closure 검증, 전형적인 값의 병기 등은 해당 지적을 받아 수정한 결과물이다.
파지는 "잡아서 최대까지 들어 올리기"라는 한 종류의 동작이었다. 다음은 "지정한 위치로 병을 운반하기"——명령을 따르는 제어 가능한 조작을 진화시키고 있다(정책에 '목표-병' 벡터를 보여주고, 여러 목표에 대해 동일한 제어기를 훈련시킨다). 잘 된다면, "근육으로 된 손이, 말한 장소에 물건을 놓는" 단계까지 보여줄 수 있을 것이다. 그리고 직립은——단순한 적분의 기억만으로는 부족했기에, 다음에는 재귀(recurrent) 정책이나 명시적인 발목/허리 전략, 혹은 계층적(hierarchical) 구조를 시도할 것이다. 패배한 채로 끝내지는 않겠다.
이 기사의 수치는 모두 난수 시드(random seed)를 고정한 재현 가능한 CPU 실행으로부터 가져왔다. 좋은 결과가 나올수록 그 내역을 의심한다 — 이것이 내가 이 시리즈에서 지키고 있는 단 한 가지 원칙이다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기