

{"id":69,"date":"2026-08-11T18:05:46","date_gmt":"2026-08-11T16:05:46","guid":{"rendered":"https:\/\/project.inria.fr\/avigame\/?page_id=69"},"modified":"2026-09-09T17:19:55","modified_gmt":"2026-09-09T15:19:55","slug":"69-2","status":"publish","type":"page","link":"https:\/\/project.inria.fr\/avigame\/","title":{"rendered":"Home"},"content":{"rendered":"\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"Approximate Value Iteration for Self-Play\">\n<meta name=\"twitter:description\" content=\"Project page for Approximate Value Iteration for Self-Play.\">\n<meta name=\"twitter:image\" content=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/09\/main_figure_x_preview.jpg\">\n\n\n\n<style data-wp-block-html=\"css\">\n\/*\n * Styles for website-block.html.\n * The .page-id-69 rules integrate the block with the current WordPress page;\n * all project component styles are scoped beneath .avi-paper.\n *\/\n\n\/* WordPress\/Nirvana page-shell overrides. *\/\n.page-id-69 #header-full,\n.page-id-69 #footer,\n.page-id-69 .entry-title,\n.page-id-69 #toTop {\n  display: none;\n}\n\n.page-id-69 #wrapper,\n.page-id-69 #main,\n.page-id-69 #forbottom,\n.page-id-69 #container,\n.page-id-69 #content,\n.page-id-69 #post-69,\n.page-id-69 .entry-content {\n  width: 100%;\n  max-width: none;\n  margin: 0;\n  padding: 0;\n}\n\n.page-id-69 #main::before,\n.page-id-69 #main::after,\n.page-id-69 .entry-content::before,\n.page-id-69 .entry-content::after {\n  display: none;\n}\n\nhtml {\n  scroll-behavior: smooth;\n}\n\n.avi-paper {\n  --avi-ink: #15213a;\n  --avi-muted: #5e6a7f;\n  --avi-navy: #0b1736;\n  --avi-navy-light: #152b59;\n  --avi-blue: #2563eb;\n  --avi-blue-dark: #1748b4;\n  --avi-cyan: #5dd5e7;\n  --avi-pale: #f3f7ff;\n  --avi-pale-blue: #e9f1ff;\n  --avi-line: #dbe4f2;\n  --avi-white: #ffffff;\n  --avi-shadow: 0 18px 45px rgba(31, 55, 94, 0.12);\n  --avi-radius: 18px;\n  --avi-width: 1160px;\n  --avi-text-width: 980px;\n\n  position: relative;\n  isolation: isolate;\n  overflow: hidden;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n  color: var(--avi-ink);\n  background: var(--avi-white);\n  font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n  font-size: 17px;\n  line-height: 1.68;\n  text-rendering: optimizeLegibility;\n  -webkit-font-smoothing: antialiased;\n}\n\n.avi-paper,\n.avi-paper *,\n.avi-paper *::before,\n.avi-paper *::after {\n  box-sizing: border-box;\n}\n\n.avi-paper article,\n.avi-paper aside,\n.avi-paper figure,\n.avi-paper footer,\n.avi-paper header,\n.avi-paper main,\n.avi-paper nav,\n.avi-paper section {\n  margin: 0;\n  padding-left: 0;\n  padding-right: 0;\n  border: 0;\n  background-image: none;\n}\n\n.avi-paper p,\n.avi-paper h1,\n.avi-paper h2,\n.avi-paper h3,\n.avi-paper ol,\n.avi-paper pre {\n  margin-top: 0;\n}\n\n.avi-paper p {\n  margin-bottom: 1.15em;\n}\n\n.avi-paper h1,\n.avi-paper h2,\n.avi-paper h3 {\n  color: inherit;\n  font-family: inherit;\n  font-style: normal;\n  font-weight: 750;\n  letter-spacing: -0.025em;\n  line-height: 1.13;\n}\n\n.avi-paper h1 {\n  max-width: 1050px;\n  margin-bottom: 25px;\n  font-size: clamp(2.45rem, 5.2vw, 4.85rem);\n}\n\n.avi-paper h2 {\n  margin-bottom: 19px;\n  font-size: clamp(2rem, 3.5vw, 3.15rem);\n}\n\n.avi-paper h3 {\n  margin-bottom: 12px;\n  font-size: 1.24rem;\n}\n\n.avi-paper a {\n  color: var(--avi-blue);\n  text-decoration-thickness: 1px;\n  text-underline-offset: 3px;\n}\n\n.avi-paper a:hover {\n  color: var(--avi-blue-dark);\n}\n\n.avi-paper a:focus-visible {\n  outline: 3px solid var(--avi-cyan);\n  outline-offset: 4px;\n}\n\n.avi-paper .avi-container {\n  position: relative;\n  width: min(calc(100% - 48px), var(--avi-width));\n  margin-inline: auto;\n}\n\n.avi-paper .avi-container--narrow {\n  max-width: var(--avi-text-width);\n}\n\n\/* Hero *\/\n.avi-paper .avi-hero {\n  position: relative;\n  overflow: hidden;\n  padding: clamp(68px, 8vw, 106px) 0 clamp(64px, 7vw, 92px);\n  color: var(--avi-white);\n  background:\n    radial-gradient(circle at 92% 14%, rgba(93, 213, 231, 0.18), transparent 31%),\n    radial-gradient(circle at 8% 90%, rgba(37, 99, 235, 0.28), transparent 35%),\n    linear-gradient(135deg, #07122c 0%, var(--avi-navy) 45%, var(--avi-navy-light) 100%);\n}\n\n.avi-paper .avi-hero::after {\n  position: absolute;\n  right: -170px;\n  bottom: -260px;\n  width: 580px;\n  height: 580px;\n  border: 1px solid rgba(255, 255, 255, 0.12);\n  border-radius: 50%;\n  box-shadow:\n    0 0 0 55px rgba(255, 255, 255, 0.025),\n    0 0 0 115px rgba(255, 255, 255, 0.02);\n  content: \"\";\n  pointer-events: none;\n}\n\n.avi-paper .avi-hero .avi-container--narrow {\n  max-width: var(--avi-width);\n}\n\n.avi-paper .avi-eyebrow,\n.avi-paper .avi-kicker {\n  margin-bottom: 18px;\n  color: var(--avi-blue);\n  font-size: 0.78rem;\n  font-weight: 800;\n  letter-spacing: 0.14em;\n  line-height: 1.35;\n  text-transform: uppercase;\n}\n\n.avi-paper .avi-eyebrow {\n  color: var(--avi-cyan);\n}\n\n.avi-paper .avi-authors {\n  margin-bottom: 5px;\n  color: rgba(255, 255, 255, 0.96);\n  font-size: 1.14rem;\n}\n\n.avi-paper .avi-affiliation {\n  margin-bottom: 27px;\n  color: rgba(255, 255, 255, 0.68);\n  font-size: 0.97rem;\n}\n\n.avi-paper .avi-lead {\n  max-width: 820px;\n  margin-bottom: 29px;\n  color: rgba(255, 255, 255, 0.82);\n  font-size: clamp(1.12rem, 2vw, 1.35rem);\n  line-height: 1.58;\n}\n\n.avi-paper .avi-actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 12px;\n}\n\n.avi-paper .avi-button {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 48px;\n  padding: 11px 21px;\n  border: 1px solid rgba(255, 255, 255, 0.28);\n  border-radius: 999px;\n  color: var(--avi-white);\n  font-size: 0.94rem;\n  font-weight: 750;\n  line-height: 1;\n  text-decoration: none;\n  transition: transform 160ms ease, background-color 160ms ease, border-color 160ms ease;\n}\n\n.avi-paper .avi-button:hover {\n  transform: translateY(-2px);\n  border-color: rgba(255, 255, 255, 0.7);\n  color: var(--avi-white);\n  background: rgba(255, 255, 255, 0.08);\n}\n\n.avi-paper .avi-button--primary {\n  border-color: var(--avi-cyan);\n  color: var(--avi-navy);\n  background: var(--avi-cyan);\n}\n\n.avi-paper .avi-button--primary:hover {\n  border-color: #8be5f1;\n  color: var(--avi-navy);\n  background: #8be5f1;\n}\n\n\/* Shared section layout *\/\n.avi-paper .avi-section {\n  padding: clamp(56px, 6vw, 82px) 0;\n}\n\n\/* Alternate content-section backgrounds; the hero is outside <main>. *\/\n.avi-paper main > .avi-section:nth-of-type(odd) {\n  background: var(--avi-white);\n}\n\n.avi-paper main > .avi-section:nth-of-type(even) {\n  background: var(--avi-pale);\n}\n\n.avi-paper .avi-section-heading {\n  max-width: var(--avi-text-width);\n  margin-bottom: 36px;\n}\n\n.avi-paper .avi-section-heading > p:last-child,\n.avi-paper .avi-split__text > p,\n.avi-paper .avi-abstract p {\n  color: var(--avi-muted);\n}\n\n.avi-paper .avi-section-heading > p:last-child {\n  margin-bottom: 0;\n  font-size: 1.05rem;\n}\n\n.avi-paper .avi-results,\n.avi-paper .avi-scaling,\n.avi-paper .avi-citation {\n  border-top: 1px solid var(--avi-line);\n}\n\n\/* Headline results *\/\n.avi-paper .avi-highlights {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n  gap: 18px;\n}\n\n.avi-paper .avi-highlight {\n  position: relative;\n  min-width: 0;\n  padding: 24px 23px 22px;\n  border: 1px solid var(--avi-line);\n  border-radius: 12px;\n  background: var(--avi-white);\n  box-shadow: none;\n}\n\n.avi-paper .avi-highlight::before {\n  display: none;\n}\n\n.avi-paper .avi-highlight__value {\n  margin-bottom: 10px;\n  color: var(--avi-blue);\n  font-size: 0.73rem;\n  font-weight: 800;\n  letter-spacing: 0.1em;\n  line-height: 1.35;\n  text-transform: uppercase;\n}\n\n.avi-paper .avi-highlight p:last-child {\n  margin-bottom: 0;\n  color: var(--avi-muted);\n  font-size: 0.91rem;\n  line-height: 1.58;\n}\n\n\/* Method *\/\n.avi-paper .avi-split {\n  display: grid;\n  grid-template-columns: minmax(0, 1.15fr) minmax(330px, 0.85fr);\n  gap: clamp(50px, 8vw, 105px);\n  align-items: center;\n}\n\n.avi-paper .avi-split__side {\n  min-width: 0;\n}\n\n.avi-paper .avi-split__text > p:last-child {\n  margin-bottom: 0;\n}\n\n.avi-paper .avi-method-note {\n  color: var(--avi-muted);\n  font-size: 1rem;\n  line-height: 1.58;\n}\n\n.avi-paper .avi-equation {\n  overflow-x: auto;\n  margin: 29px 0;\n  padding: 22px 24px;\n  border: 1px solid var(--avi-line);\n  border-left: 4px solid var(--avi-blue);\n  border-radius: 4px var(--avi-radius) var(--avi-radius) 4px;\n  color: var(--avi-ink);\n  background: var(--avi-pale);\n  font-family: Georgia, \"Times New Roman\", serif;\n  font-size: clamp(1.05rem, 2.1vw, 1.35rem);\n  line-height: 1.45;\n  white-space: nowrap;\n}\n\n.avi-paper .avi-equation-note {\n  margin: -17px 0 27px;\n  color: var(--avi-muted);\n  font-size: 0.82rem;\n}\n\n.avi-paper .avi-pipeline {\n  position: relative;\n  margin: 0;\n  padding: 8px 0;\n  list-style: none;\n}\n\n.avi-paper .avi-pipeline::before {\n  position: absolute;\n  top: 37px;\n  bottom: 37px;\n  left: 22px;\n  width: 2px;\n  background: var(--avi-line);\n  content: \"\";\n}\n\n.avi-paper .avi-pipeline li {\n  position: relative;\n  display: grid;\n  grid-template-columns: 46px minmax(0, 1fr);\n  gap: 18px;\n  align-items: center;\n  margin: 0;\n  padding: 14px 0;\n}\n\n.avi-paper .avi-pipeline__number {\n  z-index: 1;\n  display: grid;\n  width: 46px;\n  height: 46px;\n  place-items: center;\n  border: 5px solid var(--avi-white);\n  border-radius: 50%;\n  color: var(--avi-white);\n  background: var(--avi-blue);\n  box-shadow: 0 0 0 1px var(--avi-line);\n  font-size: 0.8rem;\n  font-weight: 800;\n}\n\n.avi-paper .avi-pipeline strong,\n.avi-paper .avi-pipeline span:not(.avi-pipeline__number) {\n  display: block;\n}\n\n.avi-paper .avi-pipeline strong {\n  margin-bottom: 1px;\n  color: var(--avi-ink);\n  font-size: 1.04rem;\n}\n\n.avi-paper .avi-pipeline span:not(.avi-pipeline__number) {\n  color: var(--avi-muted);\n  font-size: 0.91rem;\n  line-height: 1.45;\n}\n\n\/* Figures and result callouts *\/\n.avi-paper .avi-figure {\n  width: 100%;\n  margin: 0 0 30px;\n  padding: clamp(10px, 2vw, 20px);\n  border: 1px solid var(--avi-line);\n  border-radius: var(--avi-radius);\n  background: var(--avi-white);\n  box-shadow: var(--avi-shadow);\n}\n\n.avi-paper .avi-figure--medium {\n  max-width: 900px;\n}\n\n.avi-paper .avi-figure a {\n  display: block;\n  border-radius: 11px;\n  line-height: 0;\n}\n\n.avi-paper .avi-figure img {\n  display: block;\n  width: 100%;\n  height: auto;\n  margin: 0;\n  padding: 0;\n  border: 0;\n  border-radius: 11px;\n  box-shadow: none;\n}\n\n.avi-paper .avi-figure figcaption {\n  padding: 17px 7px 1px;\n  color: var(--avi-muted);\n  font-size: 0.9rem;\n  line-height: 1.56;\n  text-align: left;\n}\n\n.avi-paper .avi-figure figcaption strong {\n  color: var(--avi-ink);\n}\n\n.avi-paper .avi-takeaway {\n  display: grid;\n  grid-template-columns: 118px minmax(0, 1fr);\n  gap: 24px;\n  align-items: start;\n  max-width: 960px;\n  margin: 30px 0 0;\n  padding: 25px 29px;\n  border: 1px solid #cbdcff;\n  border-left: 5px solid var(--avi-blue);\n  border-radius: 6px var(--avi-radius) var(--avi-radius) 6px;\n  background: var(--avi-pale-blue);\n}\n\n.avi-paper .avi-takeaway p {\n  margin-bottom: 0;\n}\n\n.avi-paper .avi-takeaway__label {\n  padding-top: 3px;\n  color: var(--avi-blue-dark);\n  font-size: 0.75rem;\n  font-weight: 850;\n  letter-spacing: 0.12em;\n  line-height: 1.4;\n  text-transform: uppercase;\n}\n\n.avi-paper .avi-takeaway p:last-child {\n  color: #344563;\n  font-size: 0.98rem;\n  line-height: 1.62;\n}\n\n.avi-paper .avi-insight {\n  display: block;\n  align-items: start;\n  margin: 30px 0 0;\n  padding: 22px 25px;\n  border: 1px solid #f0d59a;\n  border-left: 5px solid #d89016;\n  border-radius: 6px var(--avi-radius) var(--avi-radius) 6px;\n  background: #fff8e8;\n}\n\n.avi-paper .avi-insight p {\n  margin-bottom: 0;\n}\n\n.avi-paper .avi-insight__label {\n  margin-bottom: 8px !important;\n  color: #9a6209;\n  font-size: 0.75rem;\n  font-weight: 850;\n  letter-spacing: 0.12em;\n  line-height: 1.4;\n  text-transform: uppercase;\n}\n\n.avi-paper .avi-insight p:last-child {\n  color: #5f4a25;\n  font-size: 0.98rem;\n  line-height: 1.62;\n}\n\n\/* Abstract and reference *\/\n.avi-paper .avi-abstract .avi-container {\n  max-width: var(--avi-width);\n}\n\n.avi-paper .avi-abstract p:last-child {\n  max-width: var(--avi-text-width);\n  margin-bottom: 0;\n  font-size: 1.04rem;\n  line-height: 1.82;\n}\n\n\/* Checkpoint table *\/\n.avi-paper .avi-table-card {\n  overflow: hidden;\n  border: 1px solid var(--avi-line);\n  border-radius: var(--avi-radius);\n  background: var(--avi-white);\n  box-shadow: var(--avi-shadow);\n}\n\n.avi-paper .avi-table-wrapper {\n  overflow-x: auto;\n}\n\n.avi-paper .avi-table {\n  width: 100%;\n  margin: 0;\n  border-collapse: collapse;\n  color: var(--avi-ink);\n  font-size: 0.95rem;\n  text-align: left;\n}\n\n.avi-paper .avi-table th,\n.avi-paper .avi-table td {\n  padding: 16px 19px;\n  border-bottom: 1px solid var(--avi-line);\n  vertical-align: middle;\n  text-align: left;\n}\n\n.avi-paper .avi-table th {\n  color: var(--avi-muted);\n  background: var(--avi-pale);\n  font-size: 0.73rem;\n  font-weight: 800;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n}\n\n.avi-paper .avi-table tr:last-child td {\n  border-bottom: 0;\n}\n\n.avi-paper .avi-table__game {\n  font-weight: 700;\n}\n\n.avi-paper .avi-table__action {\n  width: 1%;\n  white-space: nowrap;\n  text-align: right;\n}\n\n.avi-paper .avi-tag {\n  display: inline-block;\n  padding: 4px 9px;\n  border: 1px solid var(--avi-line);\n  border-radius: 999px;\n  color: var(--avi-muted);\n  background: var(--avi-pale);\n  font-size: 0.82rem;\n  font-weight: 700;\n}\n\n.avi-paper .avi-tag--avi {\n  border-color: #b9d0ff;\n  color: var(--avi-blue-dark);\n  background: var(--avi-pale-blue);\n}\n\n.avi-paper .avi-tag__meta {\n  font-weight: 500;\n}\n\n.avi-paper .avi-download-btn {\n  display: inline-flex;\n  gap: 7px;\n  align-items: center;\n  padding: 8px 12px;\n  border: 1px solid var(--avi-blue);\n  border-radius: 8px;\n  color: var(--avi-blue);\n  background: var(--avi-white);\n  font-size: 0.82rem;\n  font-weight: 750;\n  text-decoration: none;\n}\n\n.avi-paper .avi-download-btn:hover {\n  color: var(--avi-white);\n  background: var(--avi-blue);\n}\n\n.avi-paper .avi-citation pre {\n  overflow-x: auto;\n  margin-bottom: 0;\n  padding: 25px 27px;\n  border: 1px solid #263858;\n  border-radius: var(--avi-radius);\n  color: #dfe9ff;\n  background: var(--avi-navy);\n  box-shadow: var(--avi-shadow);\n  font: 0.88rem\/1.65 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n  white-space: pre;\n}\n\n.avi-paper .avi-citation code {\n  color: inherit;\n  background: transparent;\n  font: inherit;\n}\n\n\/* Project footer *\/\n.avi-paper .avi-footer {\n  color: rgba(255, 255, 255, 0.68);\n  background: #07122c;\n}\n\n.avi-paper .avi-footer .avi-container {\n  display: flex;\n  gap: 24px;\n  align-items: center;\n  justify-content: space-between;\n  min-height: 86px;\n}\n\n.avi-paper .avi-footer p {\n  margin: 0;\n  font-size: 0.86rem;\n}\n\n.avi-paper .avi-footer a {\n  color: var(--avi-cyan);\n  font-size: 0.86rem;\n  font-weight: 700;\n  text-decoration: none;\n}\n\n@media (max-width: 980px) {\n  .avi-paper .avi-highlights {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n\n  .avi-paper .avi-split {\n    grid-template-columns: 1fr;\n    gap: 42px;\n  }\n\n  .avi-paper .avi-pipeline {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 13px;\n    padding: 0;\n  }\n\n  .avi-paper .avi-pipeline::before {\n    display: none;\n  }\n\n  .avi-paper .avi-pipeline li {\n    padding: 18px;\n    border: 1px solid var(--avi-line);\n    border-radius: 14px;\n    background: var(--avi-pale);\n  }\n}\n\n@media (max-width: 680px) {\n  .page-id-69 .moove-gdpr-info-bar-container {\n    padding-right: 18px;\n    padding-left: 18px;\n  }\n\n  .avi-paper {\n    font-size: 16px;\n  }\n\n  .avi-paper .avi-container {\n    width: min(calc(100% - 32px), var(--avi-width));\n  }\n\n  .avi-paper .avi-hero {\n    padding-top: 68px;\n    padding-bottom: 72px;\n  }\n\n  .avi-paper .avi-hero::after {\n    right: -310px;\n  }\n\n  .avi-paper h1 {\n    font-size: clamp(2.25rem, 11.5vw, 3.2rem);\n  }\n\n  .avi-paper h2 {\n    font-size: clamp(1.8rem, 8.7vw, 2.45rem);\n  }\n\n  .avi-paper .avi-actions {\n    display: grid;\n    grid-template-columns: 1fr;\n  }\n\n  .avi-paper .avi-button {\n    width: 100%;\n  }\n\n  .avi-paper .avi-section {\n    padding: 54px 0;\n  }\n\n  .avi-paper .avi-section-heading {\n    margin-bottom: 30px;\n  }\n\n  .avi-paper .avi-highlights,\n  .avi-paper .avi-pipeline {\n    grid-template-columns: 1fr;\n  }\n\n  .avi-paper .avi-highlight {\n    padding: 22px 20px 20px;\n  }\n\n  .avi-paper .avi-equation {\n    margin-right: -2px;\n    margin-left: -2px;\n    padding: 19px 18px;\n  }\n\n  .avi-paper .avi-figure {\n    width: calc(100% + 12px);\n    margin-left: -6px;\n    border-radius: 13px;\n  }\n\n  .avi-paper .avi-takeaway {\n    grid-template-columns: 1fr;\n    gap: 8px;\n    margin-top: 26px;\n    padding: 22px 21px;\n  }\n\n  .avi-paper .avi-insight {\n    margin-top: 26px;\n    padding: 22px 21px;\n  }\n\n  .avi-paper .avi-footer .avi-container {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n    padding-top: 24px;\n    padding-bottom: 24px;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  html {\n    scroll-behavior: auto;\n  }\n\n  .avi-paper .avi-button {\n    transition: none;\n  }\n}\n\n@media print {\n  .page-id-69 #header-full,\n  .page-id-69 #footer,\n  .avi-paper .avi-actions,\n  .avi-paper .avi-footer {\n    display: none;\n  }\n\n  .avi-paper .avi-hero {\n    padding: 40px 0;\n    color: var(--avi-ink);\n    background: var(--avi-white);\n  }\n\n  .avi-paper .avi-eyebrow,\n  .avi-paper .avi-authors,\n  .avi-paper .avi-affiliation,\n  .avi-paper .avi-lead {\n    color: var(--avi-ink);\n  }\n\n  .avi-paper .avi-section {\n    padding: 42px 0;\n  }\n\n  .avi-paper .avi-highlight,\n  .avi-paper .avi-figure,\n  .avi-paper .avi-citation pre {\n    box-shadow: none;\n  }\n}\n<\/style>\n\n<article class=\"avi-paper\" aria-labelledby=\"avi-title\">\n  <header class=\"avi-hero\">\n    <div class=\"avi-container avi-container--narrow\">\n      <p class=\"avi-eyebrow\">Approximate Value Iteration for self-play<\/p>\n\n      <h1 id=\"avi-title\">The Surprising Effectiveness of Approximate Value Iteration in Self-Play<\/h1>\n\n      <p class=\"avi-authors\">\n        <strong>Rapha\u00ebl Boige<\/strong>, Amine Boumaza, and Bruno Scherrer\n      <\/p>\n      <p class=\"avi-affiliation\">\n        Universit\u00e9 de Lorraine, CNRS, Inria, LORIA, F-54000 Nancy, France\n      <\/p>\n\n      <p class=\"avi-lead\">\n        How much search does a strong self-play agent really need? We revisit Approximate\n        Value Iteration (AVI), a particularly simple alternative that learns through 1-step\n        negamax updates without using MCTS during training. Across several games, this\n        approach proves more competitive than its simplicity might suggest: where exact\n        evaluation is available, it learns more accurate values than our AlphaZero\n        baseline, while requiring substantially less computation. On larger games, the\n        method remains stable, and its values can also strengthen existing AlphaZero\n        agents when incorporated into their search.\n      <\/p>\n\n      <nav class=\"avi-actions\" aria-label=\"Paper resources\">\n        <a class=\"avi-button avi-button--primary\" target=\"_blank\" href=\"https:\/\/arxiv.org\/abs\/2609.09094\">Paper<\/a>\n        <a class=\"avi-button avi-button--secondary\" target=\"_blank\"\n          href=\"https:\/\/github.com\/Egiob\/avi\/tree\/main\">Code<\/a>\n        <a class=\"avi-button avi-button--secondary\" href=\"#avi-citation\">Citation<\/a>\n        <a class=\"avi-button avi-button--secondary\" href=\"#avi-checkpoints\">Checkpoints<\/a>\n      <\/nav>\n    <\/div>\n  <\/header>\n\n  <main>\n    <section class=\"avi-section avi-abstract\" aria-labelledby=\"avi-abstract-title\">\n      <div class=\"avi-container\">\n        <p class=\"avi-kicker\">Paper summary<\/p>\n        <h2 id=\"avi-abstract-title\">Abstract<\/h2>\n        <p>\n          Combining search with function approximation has driven major advances in game-playing\n          programs, making self-play algorithms more competitive than ever. Still, the computational\n          overhead of the most popular methods, based on Monte Carlo Tree Search (MCTS), can be\n          substantial. We investigate whether simpler methods remain competitive in non-trivial,\n          moderately sized games such as Connect Four, Hex(7&#215;7), and synthetic games. We train a\n          minimal self-play implementation of Approximate Value Iteration (AVI) and use ground-truth\n          oracles for exact evaluation. Contrary to expectations, AVI learns more accurate value\n          functions than AlphaZero, while its one-step-lookahead greedy policies remain competitive\n          with MCTS-based policies at substantially lower training and inference costs. Preliminary\n          experiments on Othello and Go(9&#215;9) show that AVI trains stably on larger games and learns\n          effective value functions. These findings suggest that the success of MCTS-based methods\n          may have eclipsed simpler approaches that have become increasingly practical with modern\n          deep-learning tools.\n        <\/p>\n      <\/div>\n    <\/section>\n\n\n    <section class=\"avi-section avi-method\" aria-labelledby=\"avi-method-title\">\n      <div class=\"avi-container avi-split\">\n        <div class=\"avi-split__text\">\n          <p class=\"avi-kicker\">The method<\/p>\n          <h2 id=\"avi-method-title\">Approximate Value Iteration in self-play<\/h2>\n          <p>\n            Approximate Value Iteration extends Value Iteration to state spaces that cannot be\n            represented exactly. In an alternating two-player game, its update takes the form\n            of a one-step negamax backup.\n          <\/p>\n\n          <div class=\"avi-equation\" role=\"img\"\n            aria-label=\"The training target y of s equals the maximum over actions of reward minus gamma times the value of the successor state s prime\">\n            <i>y<\/i>(<i>s<\/i>) = max<sub><i>a<\/i><\/sub>\n            [ <i>R<\/i>(<i>s<\/i>, <i>a<\/i>) \u2212 \u03b3<i>V<\/i>(<i>s<\/i>\u2032) ]\n          <\/div>\n          <p class=\"avi-equation-note\">\n            Here, <i>s<\/i>\u2032 is the state reached after action <i>a<\/i>. Its value is subtracted\n            because the next state is evaluated from the opponent\u2019s perspective.\n          <\/p>\n\n          <p>\n            Our implementation combines this update with a neural value function,\n            epsilon-greedy self-play, and a replay buffer. It uses neither a policy network nor\n            MCTS during training. At inference time, the learned value function can guide either\n            one-step greedy play or deeper search.\n          <\/p>\n\n          <p class=\"avi-method-note\">\n            In practical terms, AVI keeps the learning loop deliberately small, making it\n            straightforward to inspect and reproduce. Its empirical stability is nevertheless\n            not guaranteed: the algorithm combines function approximation, bootstrapping, and\n            off-policy learning\u2014the three ingredients commonly known as the \u201cdeadly triad\u201d of\n            reinforcement learning.\n          <\/p>\n        <\/div>\n\n        <div class=\"avi-split__side\">\n          <ol class=\"avi-pipeline\" aria-label=\"AVI training pipeline\">\n            <li>\n              <span class=\"avi-pipeline__number\">1<\/span>\n              <div><strong>Explore<\/strong><span>Generate positions through epsilon-greedy self-play.<\/span><\/div>\n            <\/li>\n            <li>\n              <span class=\"avi-pipeline__number\">2<\/span>\n              <div><strong>Back up<\/strong><span>Compute one-step negamax value targets and store them in the replay\n                  buffer.<\/span><\/div>\n            <\/li>\n            <li>\n              <span class=\"avi-pipeline__number\">3<\/span>\n              <div><strong>Learn<\/strong><span>Fit the value network to sampled targets by minimizing squared\n                  error.<\/span><\/div>\n            <\/li>\n          <\/ol>\n\n          <aside class=\"avi-insight\" aria-label=\"Comparison with AlphaZero\">\n            <p class=\"avi-insight__label\">How it differs from AlphaZero<\/p>\n            <p>\n              AVI and AlphaZero share several components, including neural function approximation,\n              self-play, and replay. They differ primarily in how they construct their training\n              targets. AVI applies a one-step maximization over bootstrapped value estimates. This\n              update is comparatively inexpensive when the action space is manageable, but it can\n              propagate approximation errors and introduce instability. AlphaZero instead trains\n              its policy from MCTS visit counts and its value function strictly from final game\n              outcomes. Its value targets avoid bootstrapping and are generally more stable, though\n              they have higher variance. Producing its policy targets may also require hundreds of\n              MCTS simulations per move.\n            <\/p>\n          <\/aside>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"avi-section avi-results\" aria-labelledby=\"avi-results-title\">\n      <div class=\"avi-container\">\n        <div class=\"avi-section-heading\">\n          <p class=\"avi-kicker\">Main result<\/p>\n          <h2 id=\"avi-results-title\">More accurate values under exact evaluation<\/h2>\n          <p>\n            Perfect oracles for Connect Four and Hex(7&#215;7) provide ground-truth values and\n            optimal actions. This makes it possible to measure value error, policy regret,\n            and errors against perfect play (which are better metrics than win-rate against an arbitrary baseline).\n          <\/p>\n        <\/div>\n\n        <figure class=\"avi-figure avi-figure--wide\">\n          <a href=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/09\/main_figure-scaled.jpg\">\n            <img src=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/09\/main_figure-scaled.jpg\"\n              alt=\"AVI and AlphaZero compared on value error, policy regret, oracle error rate, and compute budget for Connect Four and Hex\"\n              loading=\"lazy\" decoding=\"async\">\n          <\/a>\n          <figcaption>\n            <strong>AVI reaches lower value error across the tested settings.<\/strong>\n            Its greedy policy is competitive with the stronger AlphaZero configurations while\n            using fewer network evaluations. Lines show means and shaded areas show 95% confidence intervals.\n          <\/figcaption>\n        <\/figure>\n\n        <aside class=\"avi-takeaway\" aria-label=\"Main-result takeaway\">\n          <p class=\"avi-takeaway__label\">Takeaway<\/p>\n          <p>\n            AlphaZero improves as its MCTS budget increases, but even its largest tested budget\n            does not match AVI&#8217;s value accuracy. AVI remains stable across all 20 runs.\n          <\/p>\n        <\/aside>\n      <\/div>\n    <\/section>\n\n    <section class=\"avi-section avi-search\" aria-labelledby=\"avi-search-title\">\n      <div class=\"avi-container\">\n        <div class=\"avi-section-heading\">\n          <p class=\"avi-kicker\">Value quality<\/p>\n          <h2 id=\"avi-search-title\">Better values provide better search guidance<\/h2>\n          <p>\n            What if we scale the inference budget of AVI? Can AVI values&#8217; be used to guide deeper search? We place the\n            learned\n            values inside AlphaZero&#8217;s MCTS inference to isolate their contribution.\n          <\/p>\n        <\/div>\n\n        <figure class=\"avi-figure\">\n          <a href=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/cross_inference-scaled.jpg\">\n            <img src=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/cross_inference-scaled.jpg\"\n              alt=\"Cross-inference and minimax experiments comparing search guided by AVI values with search guided by AlphaZero values\"\n              loading=\"lazy\" decoding=\"async\">\n          <\/a>\n          <figcaption>\n            Holding AlphaZero&#8217;s policy and MCTS procedure fixed, replacing its value estimate\n            with AVI&#8217;s reduces the error rate in both games. AVI also remains stronger in\n            value-only minimax search.\n          <\/figcaption>\n        <\/figure>\n\n        <aside class=\"avi-takeaway\" aria-label=\"Search-guidance takeaway\">\n          <p class=\"avi-takeaway__label\">Takeaway<\/p>\n          <p>\n            The result is consistent across different decision procedures: the values learned\n            by AVI provide stronger guidance in both cross-inference and value-only minimax search.\n          <\/p>\n        <\/aside>\n      <\/div>\n    <\/section>\n\n    <section class=\"avi-section avi-scaling\" aria-labelledby=\"avi-scaling-title\">\n      <div class=\"avi-container\">\n        <div class=\"avi-section-heading\">\n          <p class=\"avi-kicker\">Larger games<\/p>\n          <h2 id=\"avi-scaling-title\">Stable learning on Othello and Go(9&#215;9)<\/h2>\n          <p>\n            Oracle-available games are limited in size, how does AVI scale to larger games? We train AVI on games\n            without practical exact oracles and compare\n            it with published <a href=\"https:\/\/rlg.iis.sinica.edu.tw\/papers\/minizero\/\">MiniZero<\/a> agents. Greedy AVI\n            improves steadily but remains weaker\n            than search-based MiniZero. Interestingly, its learned values nevertheless make MiniZero&#8217;s search stronger.\n          <\/p>\n        <\/div>\n\n        <figure class=\"avi-figure avi-figure--medium\">\n          <a href=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/go_othello_hth.jpg\">\n            <img src=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/go_othello_hth.jpg\"\n              alt=\"Head-to-head scores against MiniZero during AVI training on Othello and Go 9 by 9\" loading=\"lazy\"\n              decoding=\"async\">\n          <\/a>\n          <figcaption>\n            Solid lines show greedy AVI. Dashed lines use MiniZero&#8217;s policy and MCTS with AVI&#8217;s\n            value under the same 200-simulation search budget. Scores are measured against native MiniZero.\n          <\/figcaption>\n        <\/figure>\n\n        <aside class=\"avi-takeaway\" aria-label=\"Scaling-result takeaway\">\n          <p class=\"avi-takeaway__label\">Takeaway<\/p>\n          <p>\n            Search still matters for allocating inference-time computation in complex games.\n            The results suggest that it may be more important for choosing actions than for\n            learning an effective value function. Remarkably, AVI learns improved values on both games, despite being\n            trained from one-step bootstrapped targets and without MCTS.\n          <\/p>\n        <\/aside>\n      <\/div>\n    <\/section>\n\n    <section id=\"avi-checkpoints\" class=\"avi-section avi-checkpoints\" aria-labelledby=\"avi-checkpoints-title\">\n      <div class=\"avi-container\">\n        <div class=\"avi-section-heading\">\n          <p class=\"avi-kicker\">Pretrained weights<\/p>\n          <h2 id=\"avi-checkpoints-title\">Model Checkpoints<\/h2>\n          <p>Trained model checkpoints ready for evaluation, cross-inference, and benchmark replication. The weights are\n            provided in JAX (Equinox) format.<\/p>\n        <\/div>\n\n        <div class=\"avi-table-card\">\n          <div class=\"avi-table-wrapper\">\n            <table class=\"avi-table\">\n              <thead>\n                <tr>\n                  <th scope=\"col\">Game<\/th>\n                  <th scope=\"col\">Algorithm<\/th>\n                  <th scope=\"col\" class=\"avi-table__action\">Download<\/th>\n                <\/tr>\n              <\/thead>\n              <tbody>\n                <tr>\n                  <td class=\"avi-table__game\">Connect Four<\/td>\n                  <td>\n                    <span class=\"avi-tag\">\n                      AlphaZero <span class=\"avi-tag__meta\">(512 sims)<\/span>\n                    <\/span>\n                  <\/td>\n                  <td class=\"avi-table__action\">\n                    <a class=\"avi-download-btn\"\n                      href=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/connect_four_az_n512.eqx_.zip\" download=\"\"\n                      aria-label=\"Download Connect Four AlphaZero checkpoint\">\n                      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                        stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                        <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"><\/path>\n                        <polyline points=\"7 10 12 15 17 10\"><\/polyline>\n                        <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"><\/line>\n                      <\/svg>\n                      Weights (.zip)\n                    <\/a>\n                  <\/td>\n                <\/tr>\n                <tr>\n                  <td class=\"avi-table__game\">Connect Four<\/td>\n                  <td>\n                    <span class=\"avi-tag avi-tag--avi\">AVI<\/span>\n                  <\/td>\n                  <td class=\"avi-table__action\">\n                    <a class=\"avi-download-btn\"\n                      href=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/connect_four_avi.eqx_.zip\" download=\"\"\n                      aria-label=\"Download Connect Four AVI checkpoint\">\n                      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                        stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                        <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"><\/path>\n                        <polyline points=\"7 10 12 15 17 10\"><\/polyline>\n                        <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"><\/line>\n                      <\/svg>\n                      Weights (.zip)\n                    <\/a>\n                  <\/td>\n                <\/tr>\n                <tr>\n                  <td class=\"avi-table__game\">Hex 7\u00d77<\/td>\n                  <td>\n                    <span class=\"avi-tag\">\n                      AlphaZero <span class=\"avi-tag__meta\">(512 sims)<\/span>\n                    <\/span>\n                  <\/td>\n                  <td class=\"avi-table__action\">\n                    <a class=\"avi-download-btn\"\n                      href=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/hex_7x7_az_n512.eqx_.zip\" download=\"\"\n                      aria-label=\"Download Hex 7x7 AlphaZero checkpoint\">\n                      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                        stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                        <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"><\/path>\n                        <polyline points=\"7 10 12 15 17 10\"><\/polyline>\n                        <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"><\/line>\n                      <\/svg>\n                      Weights (.zip)\n                    <\/a>\n                  <\/td>\n                <\/tr>\n                <tr>\n                  <td class=\"avi-table__game\">Hex 7\u00d77<\/td>\n                  <td>\n                    <span class=\"avi-tag avi-tag--avi\">AVI<\/span>\n                  <\/td>\n                  <td class=\"avi-table__action\">\n                    <a class=\"avi-download-btn\"\n                      href=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/hex_7x7_avi.eqx_.zip\" download=\"\"\n                      aria-label=\"Download Hex 7x7 AVI checkpoint\">\n                      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                        stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                        <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"><\/path>\n                        <polyline points=\"7 10 12 15 17 10\"><\/polyline>\n                        <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"><\/line>\n                      <\/svg>\n                      Weights (.zip)\n                    <\/a>\n                  <\/td>\n                <\/tr>\n                <tr>\n                  <td class=\"avi-table__game\">Othello<\/td>\n                  <td>\n                    <span class=\"avi-tag avi-tag--avi\">AVI<\/span>\n                  <\/td>\n                  <td class=\"avi-table__action\">\n                    <a class=\"avi-download-btn\"\n                      href=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/othello_avi.eqx_.zip\" download=\"\"\n                      aria-label=\"Download Othello AVI checkpoint\">\n                      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                        stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                        <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"><\/path>\n                        <polyline points=\"7 10 12 15 17 10\"><\/polyline>\n                        <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"><\/line>\n                      <\/svg>\n                      Weights (.zip)\n                    <\/a>\n                  <\/td>\n                <\/tr>\n                <tr>\n                  <td class=\"avi-table__game\">Go 9\u00d79<\/td>\n                  <td>\n                    <span class=\"avi-tag avi-tag--avi\">AVI<\/span>\n                  <\/td>\n                  <td class=\"avi-table__action\">\n                    <a class=\"avi-download-btn\"\n                      href=\"https:\/\/project.inria.fr\/avigame\/files\/2026\/08\/go_9x9_avi.eqx_.zip\" download=\"\"\n                      aria-label=\"Download Go 9x9 AVI checkpoint\">\n                      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                        stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n                        <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"><\/path>\n                        <polyline points=\"7 10 12 15 17 10\"><\/polyline>\n                        <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"><\/line>\n                      <\/svg>\n                      Weights (.zip)\n                    <\/a>\n                  <\/td>\n                <\/tr>\n              <\/tbody>\n            <\/table>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n\n\n    <section id=\"avi-citation\" class=\"avi-section avi-citation\" aria-labelledby=\"avi-citation-title\">\n      <div class=\"avi-container\">\n        <p class=\"avi-kicker\">Reference<\/p>\n        <h2 id=\"avi-citation-title\">Citation<\/h2>\n        <pre><code>@misc{boige2026surprisingeffectivenessapproximatevalue,\n      title={The Surprising Effectiveness of Approximate Value Iteration in Self-Play}, \n      author={Raphael Boige and Amine Boumaza and Bruno Scherrer},\n      year={2026},\n      eprint={2609.09094},\n      archivePrefix={arXiv},\n      primaryClass={cs.AI},\n      url={https:\/\/arxiv.org\/abs\/2609.09094}, \n}<\/code><\/pre>\n      <\/div>\n    <\/section>\n  <\/main>\n\n  <footer class=\"avi-footer\">\n    <div class=\"avi-container\">\n      <p>Universit\u00e9 de Lorraine \u00b7 CNRS \u00b7 Inria \u00b7 LORIA<\/p>\n      <a href=\"#avi-title\">Back to top <span aria-hidden=\"true\">\u2191<\/span><\/a>\n    <\/div>\n  <\/footer>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>Approximate Value Iteration for self-play The Surprising Effectiveness of Approximate Value Iteration in Self-Play Rapha\u00ebl Boige, Amine Boumaza, and Bruno Scherrer Universit\u00e9 de Lorraine, CNRS, Inria, LORIA, F-54000 Nancy, France How much search does a strong self-play agent really need? We revisit Approximate Value Iteration (AVI), a particularly simple alternative\u2026<\/p>\n<p> <a class=\"continue-reading-link\" href=\"https:\/\/project.inria.fr\/avigame\/\"><span>Continue reading<\/span><i class=\"crycon-right-dir\"><\/i><\/a> <\/p>\n","protected":false},"author":2713,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"templates\/template-simple.php","meta":{"footnotes":"","_members_access_role":[],"_members_access_error":""},"class_list":["post-69","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/project.inria.fr\/avigame\/wp-json\/wp\/v2\/pages\/69","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/project.inria.fr\/avigame\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/project.inria.fr\/avigame\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/avigame\/wp-json\/wp\/v2\/users\/2713"}],"replies":[{"embeddable":true,"href":"https:\/\/project.inria.fr\/avigame\/wp-json\/wp\/v2\/comments?post=69"}],"version-history":[{"count":55,"href":"https:\/\/project.inria.fr\/avigame\/wp-json\/wp\/v2\/pages\/69\/revisions"}],"predecessor-version":[{"id":181,"href":"https:\/\/project.inria.fr\/avigame\/wp-json\/wp\/v2\/pages\/69\/revisions\/181"}],"wp:attachment":[{"href":"https:\/\/project.inria.fr\/avigame\/wp-json\/wp\/v2\/media?parent=69"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}