現実では一切練習させず、シミュレーターの中だけで学習したロボットが、調整なしで人間とエアホッケーで対戦する。そんなプロジェクトを、Hudson Nock氏と少人数のチームが公開した。カナダのブリティッシュコロンビア大学(UBC)の卒業制作で、約16か月をかけた。
シミュレーターで覚えたことを、そのまま実機で動かすのは難しい。整った計算上の世界と、ばらつきのある現実とのずれがあるからだ。今回の台は木製で、当たる場所によって跳ね方が変わり、表面は完全には平らでなく、台もきっちり長方形ではない。急に動かすと電源の電圧も下がる。チームは測れるものは測って計算に取り込み、残るばらつきはシミュレーター内でわざと散らした。こうしてロボットは、きれいな条件に頼らないように育つ。
動きの再現には工夫を重ねた。マレット(打つ円盤)の動きは数式で表し、目標の経路を1mm以内でなぞる制御を組んだ。難しかったのが跳ね返りで、木の縁は不規則に弾むため、きれいな式では合わない。そこで、跳ね返り方とそのばらつきを予測する、わずか112個の変数からなる小さなニューラルネットワークを学習させた。
位置の検知はカメラ1台でこなす。円盤に反射テープを貼り、レンズ脇の強いLEDで照らすことで、100マイクロ秒の短い露光でも点としてくっきり写る。盤面のゆがみを補正し、誤差を約1mmに抑えた。自作のシミュレーターは、既製の物理エンジンを使わず、解析的な数式で動く。何千試合も同時に走らせ、普通のノートパソコンで実時間の約230倍の速さで計算できる。
学習にはSoft Actor-Criticという強化学習を使い、約20万個の変数を持つネットワークを育てた。自分の過去の型や、守りに特化した相手、人の守り方をまねた相手など、いろいろな相手と戦わせることで、一つの戦い方に偏らないようにした。コードと2本の技術報告書、構成図は、Hudson Nock氏のGitHubで公開している。