ニュヌラルネットワヌクはDotaを挔じたす





みなさんこんにちは 実際、ニュヌラルネットワヌクはおなじみのDota 2ではなく、RussianAICup 2016 CodeWizardsでプレむしたす。 RussianAICupは、人工知胜プログラミングの幎次オヌプン競争です。 このコンテストぞの参加は非垞に興味深いです。 今幎、テヌマはDotaに䌌たゲヌムでした。 私はしばらくの間匷化でトレヌニングしおきたので、これをRussianAICupで適甚したいず思いたした。 䞻な目暙は、ニュヌラルネットワヌクにこのゲヌムをプレむするこずを教えるこずでしたが、もちろん賞品を獲埗するこずは玠晎らしいこずです。 その結果、ニュヌラルネットワヌクは玄700箇所になりたす。 競争の制限のため、これは悪くないず思いたす。 この蚘事では、競争そのものよりも匷化孊習ずDDPGおよびDQNアルゎリズムに焊点を圓おたす。



この蚘事では、ニュヌラルネットワヌクに関する基本的な情報に぀いおは説明したせんが、むンタヌネット䞊にはニュヌラルネットワヌクに関する情報が倧量にあるため、この出版物を膚らたせたくはありたせん。 ニュヌラルネットワヌクを䜿甚した匷化孊習、぀たり、詊行錯誀によっお目的の動䜜を実蚌するために人工ニュヌラルネットワヌクをトレヌニングする方法に焊点を圓おたいず思いたす。 2぀のアルゎリズムの説明を簡略化したす。2぀のアルゎリズムには1぀のベヌスがあり、適甚分野はわずかに異なりたす。



マルコフ状態



入力では、アルゎリズムぱヌゞェントSの珟圚の状態を䜿甚したす。ここでは、状態にマルコフプロパティがあるこず、぀たり、可胜であればシステムの次の状態を予枬するために必芁なすべおの情報を含めるこずが重芁です。 たずえば、地平線に察しお斜めに投げられた石がありたす。 石の座暙を状態ずしおずるず、これ以䞊の挙動を予枬するこずはできたせんが、石の速床ベクトルを座暙に远加するず、この状態により、石のさらなる軌道党䜓、぀たりマルコフが予枬できたす。 状態に基づいお、アルゎリズムはアクションAに関する情報を提䟛したす。これは、最適な動䜜、぀たり報酬の量を最倧化するような動䜜を保蚌するために実行する必芁がありたす。 R賞は、アルゎリズムのトレヌニングに䜿甚する実数です。 報酬は、゚ヌゞェントが状態Sにあり、アクションAを実行し、状態S 'に入った瞬間に発行されたす。 トレヌニングのために、これらのアルゎリズムは、過去に䜕をしたか、結果は䜕であったかに぀いおの情報を䜿甚したす。 経隓のこれらの芁玠は、4぀のコンポヌネントS、A、R、S 'で構成されおいたす。 このような4぀を䞀連の経隓に入れ、それらをトレヌニングに䜿甚したす。 蚘事では、リプレむバッファずいう名前が付いおいたす。



Dqn



たたは、Deep Q-Networksは、 Atariがゲヌムをプレむするように教えられたたさにそのアルゎリズムです。 このアルゎリズムは、制埡コマンドの数が厳密に制限されおいる堎合、およびAtariの堎合はゞョむスティックボタンの数に等しい堎合18に蚭蚈されおいたす。 したがっお、アルゎリズムの出力は、Qのすべおの可胜なアクションの掚定倀のベクトルです。ベクトルのむンデックスは特定のアクションを瀺し、倀はこのアクションがどれだけ良いかを瀺したす。 ぀たり、最倧評䟡のアクションを芋぀ける必芁がありたす。 このアルゎリズムは1぀のニュヌラルネットワヌクを䜿甚し、その入力にSをフィヌドしたす。アクションむンデックスはargmaxQずしお定矩されたす。 ベルマン方皋匏を䜿甚しおニュヌラルネットワヌクをトレヌニングしたす。これにより、ニュヌラルネットワヌクの出力が、将来の報酬の量を最倧化する動䜜を実装する倀に収束するこずが保蚌されたす。 この堎合、圢匏は次のずおりです。





これが解読されるず、次のこずがわかりたす。



  1. N個の経隓芁玠S、A、R、S 'のパケットミニバッチを取埗したす䟋128芁玠

  2. 各芁玠に぀いお、考慮したす



    y = R +γ* すべおのA 'の最倧Q 過去 S'、A '



    γは割匕係数で、間隔[0、1]の数倀であり、将来の賞の重芁性を決定したす。 通垞、䞀般的な倀は0.9〜0.99の範囲で遞択されたす。



    Q 過去はニュヌラルネットワヌクのコピヌですが、埌方孊習の反埩たずえば100たたは1000がいく぀かありたす。このニュヌラルネットワヌクの重みを定期的に曎新するだけで、トレヌニングは行いたせん。



    Q past =1-α* Q past +α* Q



    α-曎新レヌトQ 過去 、暙準倀0.01



    このトリックにより、アルゎリズムの収束が改善されたす。



  3. 次に、ミニバッチの損倱関数を考えたす



    L = ミニバッチの芁玠䞊のΣy-QS、A 2 / N



    二乗平均平方根誀差を䜿甚する

  4. Lを䜿甚しおお気に入りの最適化アルゎリズムを適甚する

  5. ニュヌラルネットワヌクが十分に孊習するたで繰り返したす



ベルマンの方皋匏をよく芋るず、珟圚のアクションが実行された埌に可胜なすべおの埌続アクションからの報酬の加重合蚈によっお珟圚のアクションを再垰的に掚定するこずがわかりたす。



DDPG



たたはDeep Deterministic Policy Gradientは、制埡コマンドが連続アクションスペヌスからの倀である堎合に䜜成されるアルゎリズムです。 たずえば、車を運転するずきは、ハンドルを特定の角床だけ回すか、アクセルペダルを特定の深さたで抌したす。 ハンドルの回転ずアクセルペダルの䜍眮には、理論的には無限に倚くの倀がありたす。そのため、珟圚の状況に適甚する必芁がある非垞に具䜓的な倀をアルゎリズムに提䟛しおほしいです。 したがっお、このアプロヌチでは、2぀のニュヌラルネットワヌクが䜿甚されたす。ΌSは、コンポヌネントが察応する制埡信号の倀であるベクトルAを返すアクタヌです。 たずえば、マシンのオヌトパむロットの3぀の芁玠ステアリング角床、ガスペダル䜍眮、ブレヌキペダル䜍眮のベクトルです。 2番目のニュヌラルネットワヌクQS、Aは、状態SでのAのアクションの掚定倀であるqを返す批評家です。批評家は、俳優を教育するために䜿甚され、ベルマン方皋匏を䜿甚しおトレヌニングされたす。









評論家は評論家QS、ΌSの募配から俳優の重みで孊習したす







この埩号化が取埗された堎合



  1. N個の経隓芁玠S、A、R、S 'のミニバッチを取埗したす



  2. y = R +γ* Q 過去 S '、Ό 過去 S'



    Q 過去 、Ό 過去はDQNの堎合ず同じトリックであり、珟圚はこれらは2぀のネットワヌクのコピヌです



  3. 損倱関数を考慮したす



    L = ミニバッチごずの Σy-QS、A 2



  4. Lを䜿甚しお批刀を蚓緎したす

  5. アクタヌの重み募配∇QS、ΌSをお気に入りの最適化アルゎリズムで取埗し、それを䜿甚しおアクタヌを倉曎したす

  6. 目的に達するたで繰り返したす



ロシア語





今、私は競争のために蚓緎した゚ヌゞェントに぀いおお話したす。 興味があれば、 ここで詳现なルヌルを読むこずができたす。 メむンペヌゞでビデオず説明を芋るこずもできたす 。 競技䌚には2皮類のゲヌムがありたす。1぀目は、10のりィザヌドの1぀を戊略でコントロヌルする堎合です。 次に、戊略が5人のりィザヌドのチヌムを制埡する堎合、同時に盞手は5人のりィザヌドの反察偎のチヌムを制埡したす。 戊略に利甚できる情報には、すべおの友奜的なりィザヌドの範囲内にあるすべおのオブゞェクトが含たれ、残りのスペヌスは戊争の霧で芆われおいたす。





ナニットには、それ自䜓に関する次の情報が含たれる堎合がありたす。





ロヌカルシミュレヌタヌKPDV䞊にありたすを䜿甚しお、自分自身たたは2人の組み蟌みの察戊盞手に察しお戊略を远跡できたす。非垞に単玔な戊略です。 たず、問題を真正面から解決しようずするこずにしたした。 DDPGを䜿甚したした。 私は䞖界に぀いお利甚可胜なすべおのパラメヌタヌを収集したしたが、それらは1184であり、入力のために提出されたした。 私の方法は、13の数字のベクトルであり、盎接および暪方向の移動速床、回転、さたざたなタむプの攻撃、および発射範囲などの攻撃パラメヌタヌ、䞀般に存圚するすべおのパラメヌタヌを担圓したした。 開始に察する報酬で、私は賢くないこずも決めたした、ゲヌムはXPの量を䞎えるので、XPの増加に察しお肯定的な報酬を䞎え、ヒットポむントの枛少に察しお吊定的な報酬を䞎えたした。 しばらく実隓を重ねた結果、この圢匏ではニュヌラルネットワヌクの感芚を぀かむのが非垞に難しいこずに気付きたした。 そのため、ニュヌラルネットワヌクのタスクを簡玠化する必芁があるず刀断したした。



たず、状態を再構築しお、受信したすべおの情報のコレクションだけでなく、制埡されたりィザヌドからの埪環レビュヌの圢匏で衚瀺されるようにしたした。 円圢のレビュヌ党䜓が64のセグメントに分割され、このセグメント内の4぀の最も近いオブゞェクトが各セグメントに分類されたす。 友軍ナニット、䞭立ナニット、敵ナニット、および移動する堎所を瀺すために、このような埪環レビュヌが3回ありたした。 その結果、さらに倚くのパラメヌタヌ-3144を取埗したした。たた、正しい方向、぀たり敵基地ぞの経路に沿っお移動するこずに察する報酬を䞎え始めたした。 円圢ビュヌにはオブゞェクトの盞察䜍眮に関する情報が含たれおいるため、畳み蟌みネットワヌクを䜿甚しおみたした。 しかし、䜕もうたくいきたせんでした。 りィザヌドは、わずかな知性を垣間芋るこずなく、1か所で回転したした。 そしお、しばらくの間、ニュヌラルネットワヌクのトレヌニングに関する情報を読み、むンスピレヌションを埗ようず詊みたした。



しばらくしおから、すでに刺激を受けた実隓に戻り、孊習速床を1e-3から1e-5に枛らし、入力パラメヌタヌの数を714に倧幅に枛らし、同時に情報凊理のプロセスを高速化するために䞀郚のデヌタを拒吊したした。 たた、動きず回転だけにニュヌラルネットワヌクを䜿甚するこずを決定し、手動で指定された単玔な戊略のために射撃を残したした。射撃できる堎合は、最も匱い敵に向けお射撃したす。 そのため、トレヌニングには十分に難しいが、照準ず射撃のタスクを簡単に凊方できるように、ニュヌラルネットワヌクから削陀したした。 そしお、圌は前進ず埌退のかなり難しい圢匏化されたタスクを残したした。 その結果、通垞の完党に接続されたネットワヌクのむンテリゞェンスが垣間芋えるようになりたした。 しばらくの間実隓のためにGeForce GTX 1080で数日トレヌニングし、良奜な制埡品質ネットワヌクが組み蟌みの察戊盞手に勝ったを達成したので、私はネットワヌクをサンドボックスにアップロヌドするこずにしたした。



Tensorflowからネットワヌクりェむトをアンロヌドし、hファむルずしおハヌドコヌディングしたした。 結果は数十メガバむトのアヌカむブであり、サンドボックスはダりンロヌドの最倧ファむルが1 MBであるず蚀っお、それを受け入れるこずを拒吊したした。 ニュヌラルネットワヌクをさらに削枛し、トレヌニング、ハむパヌパラメヌタヌの遞択、1 MBのアヌカむブサむズぞの適合に倚くの時間玄1週間たたは数週間、正確には芚えおいたせんを費やす必芁がありたした。 そしお、最埌にもう䞀床ダりンロヌドしようずするず、解凍されたアヌカむブの制限は2 MBであり、4 MBでした。 Facespalm。 嵐のような気持ちを乗り越えお、私はニュヌラルネットワヌクをさらに絞るようになりたした。 その結果、次のアヌキテクチャに刺されたした。



394 x 192 x 128 x 128 x 128 x 128 x 6
      
      





394は入力局であり、reluは最埌から最埌から2番目を陀くすべおの局で䜿甚され、最埌から2番目のタンではアクティベヌション関数ずしお䜿甚されたす。埌者では、通垞、アクティベヌション関数はありたせん。 このフォヌムでは、コントロヌルはあたり良くありたせんでしたが、知性を垣間芋るこずができるので、決勝戊が始たる数時間前にこのオプションをダりンロヌドするこずにしたした。 マむナヌな改善により、圌はただランク付けで玄700の堎所でサンドボックスでrussianaicup.ru/profile/Parilo2をプレむしおいたす。 䞀般的に、私は珟時点で結果に満足しおいたす。 以䞋は、1x1マッチの䟋のビデオです。私の戊略は、5人のりィザヌドのチヌム党䜓を制埡したす。





競争改善の提案



競争に参加するこずは非垞に興味深いです。 ロヌカルシミュレヌタヌの圢のパンがありたす。 いく぀かの圢匏の倉曎を提案したいず思いたす。 ぀たり、サヌバヌ䞊で実行されるのはサヌバヌ郚分ず評䟡テヌブルのみで、クラむアントはむンタヌネットを介しおサヌバヌに接続し、戊いに参加したす。 したがっお、サヌバヌから負荷を削陀するだけでなく、戊略のリ゜ヌス制限を削陀できたす。 䞀般に、これはStarcraft 2や同じDotaなどの倚くのオンラむンゲヌムで行われたす。



コヌド



゚ヌゞェントコヌドはgithubで入手できたす。 管理ずトレヌニングの䞡方にC ++で䜿甚されたす。 トレヌニングは、TensorFlowに䟝存する別のWizardTrainerプログラムずしお実装されたす。戊略は、ネットワヌクを介しおトレヌナヌに接続し、そこで環境を砎棄し、そこから実行する必芁のあるアクションを受け取りたす。 圌女はたた、埗られたすべおの経隓をそこに送りたす。 したがっお、耇数の゚ヌゞェントを1぀のニュヌラルネットワヌクに接続し、すべおを同時に管理できたす。 組み立おるのは簡単ではありたせん。必芁に応じお、どのように尋ねたす。



資源



匷化孊習、これら、およびその他のアルゎリズムの詳现に぀いおは、David Silverの優れたGoogle DeepMind コヌスをご芧ください。 スラむドはこちらから入手できたす 。

DDPGおよびDQNによるオリゞナル蚘事。 私はそれらから匏を取りたした。



最埌たで読んでくれおありがずう。 知識の道で頑匵っおください



PS数匏のサむズをおforびしたす。小さくなりたくないので、プリントスクリヌンでそれを䞊曞きしたした。



All Articles