두 개의 작은 네트워크가 언어를 발명할 수 있을까?
요약
본 기사는 언어 공유가 없는 두 개의 작은 신경망(sender/receiver)을 사용하여 에이전트들이 스스로 작동하는 하나의 언어를 발명할 수 있는지 탐구합니다. Lewis 참조 게임과 REINFORCE, 지도 교차 엔트로피를 결합한 실험 설계를 통해, 에이전트들이 메시지를 객체에 매핑하는 능력을 성공적으로 학습했음을 보여줍니다.
핵심 포인트
- 언어 공유가 없는 두 네트워크로 언어 발명 가능성을 탐구함.
- Lewis 참조 게임을 사용하여 최소 구조의 커뮤니케이션 환경 구축.
- REINFORCE와 지도 교차 엔트로피를 결합한 표준적인 분할 학습 방식 적용.
- 다수의 시드와 통과 임계값을 설정하여 결과의 신뢰성 확보.
두 가지 가설과 이 부분이 아무것도 테스트하지 않는 이유
저는 이번 시리즈를 시작하면서 두 가지 가설을 가지고 있었습니다. 첫째, 통제된 기억(governed memory)이 단순한 기억(naive memory)보다 출현적 커뮤니케이션 작업(emergent communication task)에서 더 나은 성능을 보일 것이라는 가설입니다. 둘째, 최적화(optimization) 과정이 제가 이전 프로젝트를 위해 수동으로 설계했던 타입 지정 표현(typed representation)을 재발견할 것이라는 가설입니다. 두 가지 모두 흥미롭습니다. 하지만 측정 기준이 되는 작동하는 베이스라인이 필요합니다.
따라서 어느 쪽도 테스트하기 전에, 저는 더 기본적인 질문에 답해야 했습니다. 언어 공유가 전혀 없는 상태에서 시작한 두 개의 작은 신경망(neural networks)이 실제로 작동하는 하나의 언어를 발명할 수 있을까요? 만약 그 답이 '아니오'라면, 이후의 모든 영리한 아키텍처 아이디어는 존재하지 않는 문제를 해결하고 있는 것입니다.
가장 정직한 첫 번째 질문은 "이것이 얼마나 심오한가"가 아니라 "여기에 무언가가 존재하는가"였습니다. 그래서 저는 모든 것을 걷어냈습니다. 통제(governance)도, 타입 지정 표현도, 사전 구조도 없습니다. 단지 커뮤니케이션이 일어나기 위한 최소한의 장치만 남기고, 결과를 신뢰할 수 있을 만큼 충분히 많이 실행했습니다.
게임
저는 Lewis 참조 게임(Lewis referential game)을 사용했습니다. 이 게임은 CPU에서 실행하기에 충분히 작아서, 운 좋은 단 하나의 시드 대신 여러 개의 시드를 돌릴 수 있게 해줍니다. 세계는 256개의 객체로 이루어져 있습니다. 각 객체는 네 가지 속성(attributes)과 각각 네 가지 값으로 구성되어 있어, 모든 객체가 고유하지만 근본적인 구조를 공유합니다.
시작할 때 공통된 어휘가 없는 두 개의 에이전트, 즉 송신자(sender)와 수신자가 있습니다. 송신자는 하나의 목표 객체를 보고 16개의 어휘에서 추출한 길이 고정 메시지 2개로 구성된 신호를 방출합니다. 이 기호들은 의미로 초기화되지 않습니다. 어떤 기호가 무엇을 의미하는지는 에이전트들이 스스로 발명해야 하는 것입니다.
수신자는 메시지와 목표물 하나 및 무작위 오답 후보 4개를 포함한 총 5개의 후보군을 보고, 목표물을 가리킵니다. 무작위로 추측할 경우 정답률은 0.20입니다. 송신자는 REINFORCE를 통해 학습하며, 수신자가 정답을 맞힐 때 보상(reward)에 따라 업데이트됩니다. 수신자는 지도 교차 엔트로피(supervised cross-entropy)를 통해 학습합니다. 이 분할 방식은 이러한 게임에서 표준적입니다. 즉, 수신자는 신호를 읽는 법을 배우고 송신자는 그 신호를 생성하는 법을 배웁니다.
왜 '진행/실패(go/no-go)', '답변에 무관한(answer-blind)', 그리고 '다수의 시드'가 필요한가
출현적 커뮤니케이션 실험은 단일 실행에서는 보기 좋지만 시드(seeds)가 달라지면 무너지는 것으로 악명이 높습니다. 에이전트들은 위치적 단서에 의존하는 퇴행적인 코드에 안주하거나, 커뮤니케이션처럼 보이지만 실제로는 암기인 것에 수렴할 수 있습니다. 멋진 실행 한 번으로는 아무것도 증명하지 못합니다.
그래서 저는 무언가를 실행하기 전에 통과 임계값(pass thresholds)을 설정하고, 3000 스텝씩 8개의 시드를 돌렸으며, 끝날 때까지는 보지 않았습니다. 만약 그 효과가 우연보다 훨씬 높고 시드 전반에 걸쳐 일관적이지 않다면, 프로젝트는 실패였고 더 이상 진행할 가치가 없었습니다. 이것은 보기 좋은 결과를 찾는 사냥이 아니었습니다. 기저(substrate) 자체가 진짜인지 확인하는 과정이었습니다.
무슨 일이 일어났나
결정적인 성공이었습니다. 본 적 있는 객체에 대한 정확도는 0.970으로, 기준선인 0.20보다 훨씬 높았기 때문에 에이전트들이 메시지를 객체에 매핑하는 것을 분명히 학습했습니다. 이것만으로는 암기일 수 있었기 때문에, 에이전트들이 훈련에서 본 적 없는 홀드아웃(held-out) 객체에 대해서도 테스트했습니다. 그곳의 정확도는 0.937이었습니다. 이것이 결정적인 숫자입니다: 이들은 객체의 정체성을 암기하는 것이 아니라 속성(attributes)에 걸쳐 일반화합니다.
두 가지 통제 실험은 지루한 설명을 배제합니다. 메시지를 무작위로 섞으면 정확도가 0.205로 떨어지는데, 이는 우연 수준이므로 수신자가 실제로 메시지에 의존한다는 것을 의미합니다. 수신자를 메시지-맹(message-blind)으로 만들면 정확도는 0.203으로 다시 우연 수준입니다. 따라서 위치적 또는 후보 누출(candidate leakage)이 작동하고 있지는 않습니다. 에이전트들은 또한 93개의 고유한 메시지를 사용했으므로, 이것은 단일 기호의 지름길이 아닙니다.
하나의 숫자는 더 조용합니다. 위상학적 유사성(Topographic similarity), 즉 비슷한 객체가 비슷한 메시지를 받는지 측정하는 수치는 0.2 근처에 머물러 있습니다. 이는 낮은 수치입니다.
걸림돌: 용량은 객체 개수와 같다
여기서의 승리는 제한적입니다. 기저가 존재한다는 것입니다. 이것이 구성성(compositionality)을 위한 승리는 아니며, 그 낮은 위상학적 유사성이 단서를 제공합니다.
채널 용량은 16의 제곱인 256이며, 이는 가능한 두 심볼 메시지의 개수와 같습니다. 이 숫자는 객체의 개수와도 같습니다. 따라서 에이전트들은 원칙적으로 객체당 고유한 하나의 메시지를 전달할 수 있으며, 공유된 규칙을 전혀 학습하지 않을 수도 있습니다. 과제에서 이를 처벌하는 것은 없습니다. 에이전트들은 그저 256개의 이름만 발명했을 수도 있습니다. 그들이 그 이상을 했음을 증명하는 것이 이 게임 전체입니다.
숫자들은 그들이 중간 어딘가에 도달했음을 보여줍니다. 0.937의 홀드아웃 정확도는 순수하게 암기된 레이블은 배제합니다. 왜냐하면 본 적 없는 객체는 이름을 붙일 수 없기 때문에, 실제 속성 구조가 코드에 새어 나오고 있다는 것을 의미하기 때문입니다. 하지만 0.2 근처의 위상적 유사성은 그 구조가 약하다는 것을 시사합니다. 이것은 구성적인 언어라기보다는 이름 붙이기에 약간의 체계적인 코딩을 더한 것에 가깝습니다. 구성성(Compositionality)이 나타날 이유가 없었습니다. 왜냐하면 이름 붙이기가 항상 가능했고, 항상 충분했기 때문입니다.
질문을 강제하기 위해, 저는 쉬운 선택지를 제거해야 합니다. 만약 제가 채널을 좁혀서 가능한 메시지 수가 객체 수보다 훨씬 적고, 객체당 하나의 이름 코드가 물리적으로 불가능하게 만든다면 어떨까요? 그러면 이름 붙이기가 그들을 구원할 수 없게 되고, 대신 그들이 더 구조화된 무언가를 구축할 수 있는지 확인할 수 있게 됩니다.
파트 2는 거기서 시작됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기