Measure exploitability: ours is harder to farm than league
Winning the head-to-head says a policy is strong on average, not that it is hard to beat. So freeze each policy, train a fresh one from scratch whose only job is to beat that policy, and see how far it gets. Same exploiter budget (250 updates x batch 1024, 65.5M learner actions): ours (match stack, 131M) exploiter reaches 0.2278 [0.219, 0.237] league (web-deployed) exploiter reaches 0.3213 [0.311, 0.331] League gives up 9.4 more points to a dedicated attacker. Both sit far from 0.5, so neither is a pushover -- but the caveat left open by the head-to-head is now closed in our favour on both axes: stronger on average (0.6094) and harder to exploit. Worth noting against expectation: league was trained *with* an exploiter structure and we ran pure self-play, and we still come out less exploitable. Whatever the league machinery buys, it did not buy that here. The number is a lower bound -- a bigger exploiter would find more -- so it only means anything as a like-for-like comparison, which is how it is used. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XBQKgvBbxbheiTF1AVy1Sh
This commit is contained in:
@@ -539,3 +539,42 @@ Fable은 이것을 "가장 큰 누락 아이디어"로 꼽았다. 실측은 **
|
||||
엉터리 채점을 한다.
|
||||
|
||||
**Fable은 critic을 "가장 큰 누락 아이디어" 1순위로, 양쪽 좌석을 4순위로 꼽았다. 정확히 거꾸로였다.**
|
||||
|
||||
---
|
||||
|
||||
## Exploitability: 우리가 league보다 **덜 착취당한다** (2026-07-15)
|
||||
|
||||
**남겨뒀던 단서를 해소했다.** 평균 실력에서 이기는 것과 "파먹을 약점이 없는 것"은 다른
|
||||
속성이다. 가위바위보에서 바위를 60% 내는 놈은 아무한테나 이길 수도 있지만, 그 습관을
|
||||
알아챈 놈에게는 매번 진다.
|
||||
|
||||
**측정 방법:** 정책을 얼려놓고, **오직 그놈만 이기도록 특화된 새 정책을 처음부터 학습**시킨다
|
||||
(`src/lost_cities_jax/exploit.py`). 착취자가 도달한 승률이 곧 그 정책이 못 막아낸 습관의 크기다.
|
||||
|
||||
**동일 착취자 예산 (250 업데이트 × batch 1024 = 65.5M learner 액션):**
|
||||
|
||||
| 얼려놓은 정책 | 착취자 승률 | 95% CI |
|
||||
|---|---|---|
|
||||
| **우리 매치 스택 (131M)** | **0.2278** | [0.219, 0.237] |
|
||||
| league (웹 배포판, 122.6M) | **0.3213** | [0.311, 0.331] |
|
||||
|
||||
**league가 9.4%p 더 털린다.** 그리고 둘 다 0.5에서 한참 멀다 — 어느 쪽도 만만한 상대는 아니다.
|
||||
|
||||
### 최종 정리: 두 축 모두에서 이긴다
|
||||
|
||||
| 축 | 결과 |
|
||||
|---|---|
|
||||
| **평균 실력** (정면 대결) | 0.6094, +22.0점 ✅ |
|
||||
| **약점 적음** (exploitability) | 0.2278 vs 0.3213 ✅ |
|
||||
|
||||
### 단서
|
||||
|
||||
1. **하한선이다.** 더 세거나 더 오래 학습한 착취자는 더 찾아낼 수 있다. **절대값이 아니라
|
||||
동일 예산에서의 비교로만 의미가 있다.**
|
||||
2. 착취자 예산이 목표의 절반이다(65M vs 131M). 키우면 두 수치 다 오른다.
|
||||
3. league는 단판 정책이라 3라운드 게임에선 다소 제 물이 아니다 — 다만 carry가 무의미하다는
|
||||
것이 이미 증명됐으므로 큰 불리함은 아니다.
|
||||
|
||||
**흥미로운 점:** 우리는 **순수 셀프플레이**이고 league는 **착취자 구조를 학습에 넣은** 런인데,
|
||||
그런데도 우리가 덜 착취당한다. 착취자 구조가 exploitability를 낮춰줄 것이라는 기대가
|
||||
이 게임에서는 확인되지 않았다.
|
||||
|
||||
Reference in New Issue
Block a user