こんにちは､ 人工知能のコースにようこそ｡
今日は83 Cの世界への旅の続きです｡ Cの非同期側について話しているので､ 私たちの略語である同期の利点､
アクティブ・クリティックがあります｡
そして今日は､ ここにあるシンクロナスとは何の略なのか､ その意味するところを探ってみたいと思います｡
そして､ 一歩さかのぼってみましょう｡
では､ この講座のスタートは何だったのかを見てみましょう｡
私たちは強化学習と､ エージェントがある状態にあるということがどういうことなのか､ ということから始めました｡
その状態を観察し､ ある決定を下し､ その状態で行動を起こす｡
そして､ 状態を変化させる｡
だから､ 新しい状態になり､ しかも報酬を得ることができるのです｡
つまり､ その行動を取ることで報酬を得るか､ あるいはペナルティにもなりうる何らかの報酬を得るのです｡
そして､ 新しい州で終わるのです｡
そして､ それをもとに今度はまた別の行動を起こし､ 報酬を得て新しい状態で終わり､ また次の行動を起こす､
ということを繰り返しています｡
これが強化学習の基本です｡
そして､ それを学習､ 深層学習､ 深層畳み込み学習で使ってきたのです｡
そして､ そのおかげで､ 我々のエージェントは徐々に複雑化していく環境に打ち勝つことができるようになったのです｡
しかし､ 今回はさらにその上を行くコンセプトをご紹介します｡
A3Cが導入しているシンクロナス要素とは､ 1人のエージェントが環境を攻撃するのではなく､
3人のエージェント､ あるいは何人かのエージェントがいる､ というものです｡
つまり､ 複数のエージェントが同じ環境を攻撃しているわけです｡
ここで重要なのは､ 同期と呼ばれるのは､ 初期化が異なるからだということです｡
つまり､ スタート地点が違うのです｡
例えば､ 実用上もわかると思いますが､ ランダムシードを設定し､ それをエージェントごとに異なるように設定するわけです｡
そうすると､ スタート地点が違うので､ まず環境をいろいろと調べて､ いろいろと探検していくことになります｡
そして､ 次のイテレーションでは､ また､ さまざまな方法で探索することになります｡
例えば､ 3人のエージェントがいれば､ 1人のエージェントが環境を探索し､
その環境での操作方法を理解する代わりに､ 突然3倍の経験値を得ることができるのです｡
それを3人でも何人でも経験して､ この経験を積んでいるわけです｡
そしてそこで､ この大きな経験を通じて､ 一人ひとりが学んでいくように｡
また､ 単に経験の幅を広げるだけでなく､ 一人のエージェントが地域の最大公約数にはまり込む可能性を減らすことができるのです｡
例えば､ あるエージェントが環境に打ち勝つ方法を見つけたとして､ それが最も最適とは言えない場合､ その見つけた解決策から左や右に逸脱すると､
常により多くのペナルティを受けることになるからです｡
その局所的な最大値に引っかかってしまうかもしれません｡
それが最適解だと思い込んで､ 実際にはそうでないところをそうし続けるかもしれない｡
さて､ 複数のエージェントがその同じ局所最大値にはまり込む可能性は､ エージェントの数によって減少したり､ 減ったりします｡
つまり､ あるエージェントがある局所的な最大値にはまる確率は高いかもしれないが､ あるいはある値かもしれないのである｡
しかし､ 3つもあると､ 3つともその局所最大値にはまり込む確率はずっと低くなります｡
そして､ お互いの経験を共有していれば､ お互いに助け合うことができるのです｡
ですから､ 例えばそのうちの1つが引っかかると､ 局所的な最大値で止まってしまうんです｡
ただ単純に､ あれが一番いい､ あれが一番いい解決策だとずっと思っていて､ 他のエージェントと相互作用している限り､
それをうまくやり続けている｡
つまり､ この男がローカル・マックスに陥ったとしましょう｡ 私たちがアルゴリズム全体を構築する方法を通じて､
他のエージェントと相互作用している限り､ アルゴリズムを通じて､ 他のエージェントが彼を助けてくれるのです｡
このような知識を与えることで､ 「おい､ お前はこれを探求するべきだ」「彼はそこから抜け出す可能性が高い」ということを実際に知ることができるのです｡
また､ 全体的に見れば､ 「これは最高の選択肢だが､ 他のエージェントはもっといい選択肢を見たことがあり､
その方がよさそうだから調査を続けるべきだ」と環境は認識します｡
このように､ 非同期型エージェントの利点について､ ざっくりとした直感的な理解で､ 簡単に説明することができます｡
まず､ あなたは､ 好きなように､ より多くの経験から選択し､ 学ぶことができます｡
より早く解答にたどり着けるはずです｡
そして一般的には､ ある局所的な最大値にはまる可能性が低くなると言われています｡
では､ これまで作ったこのモデルで､ どのように展開していくかを見ていきましょう｡
ということで､ 思い出していただくと､ ここまでがエクストラクリティックを通じて得たものです｡
そして､ ここがすべてのつながりのようなものです｡
これは､ 前回のチュートリアルで紹介したとおりで､ 深い畳み込みQ学習でもすでにあったものなので､
今回は余計にそう名付けただけです｡
しかし､ 今回､ クリテックを導入しましたが､ 今のところ､ あまり意味がないですね｡
この批評があって､ 同じニューラルネットワーク､ この同じアプローチで国家の価値を測ったり､
予測することに何の意味があるのでしょうか｡
でも､ これからが本番です｡
これからどうするかというと､ 複数のエージェントがいるので､ これを複製するのです｡
だから､ 複数のエージェントで､ これは｡
こんな感じでしょうか｡
だから
最初のイメージは､ 今､ 私たちはこの3つを手に入れたということです｡
さて､ 「お互いの経験を共有する」と言ったことを思い出してください｡
だから､ これは実は正しいんです｡
今は､ みんな独立しているんです｡
ゲームで遊んでいる人､ ゲームで遊んでいる人､ ゲームで遊んでいる人がいますよね｡
まるで､ 3台のパソコンでエージェントを起動するような感じです｡
3種類のコンピュータを横に並べて､ 起動させるんです｡
そして､ その､ 素晴らしいことです｡
そうですね､ 確かに......経験値が上がりますね｡
特に初期化が異なれば､ より多くのバリエーションを得ることができます｡
ですから､ ここからはすべて初期値､ 常に異なる初期化であると仮定します｡
ここに同じ絵があっても､ 実は初期化が違うことを知ることになる｡
だから､ このゲームから同一のトレーニング､ 同一の学習をするようなことはありえない｡
3台のコンピュータを並べて起動させたとしても､
3人のエージェントがプレイすることになるので､ より多くの経験を積むことができますし､ 可能なソリューションの種類も多くなります｡
そうなんですね｡
しかし､ 問題は､ 彼らがその経験を私たちと共有していないことです｡
互いに学び合っていない｡
だから､ その相乗効果がないんです｡
協力することで得られるアドバンテージや余分なパワーがないのです｡
例えば､ チームで仕事をする場合､ 一人一人が別々に仕事をするよりも､ 一緒に仕事をした方がうまくいきますよね｡
つまり､ このチームでは､ 1＋1＋1で3人ということですね｡
しかし､ チームでは､ 1＋1＋1は3ではない｡
お互いの長所を活かし､ 短所を緩和し合うので､ 33みたいな感じですね｡
そして､ ここでも同じことが言える｡
この3台のコンピュータを並べると､ そうですね､ より多くの経験､ より多くの種類､ そしておそらく誰かが他のものよりも良い解決策を得ることができるでしょう｡
それは素晴らしいことですが､ その経験を共有するようになれば､ さらに素晴らしいことになります｡
そして､ それをどのように実現しているのか｡
まあ､ このVを通して計算するんですけどね｡
つまり､ このネットワークの出力であるV値は､ 実際にはそのようなものなのです｡
つまり､ 彼らは同じVを持ち､ すべてのエージェントが同じ評論家に貢献しているわけです｡
評論家が別にいるわけではないのです｡
彼らには共通の批判者がいる｡
そして､ それが俳優評論家と同期がどう結びつくかの鍵になります｡
だから､ 経験を積みながら見ている評論家が一人いるんです｡
では､ どうやってVを計算するかというと､ 覚えているように､ 得られた値からVを計算するのである｡
つまり､ 環境を通して得られる報酬です｡
エージェントは環境を探索しながら､ Vを計算し､ 予測し､ さらに計算できるVを手に入れるわけです｡
これは､ このコースの前のセクションですでに説明したこととすべて結びついているのです｡
つまり､ 彼らはすでに､ この迷路に存在し､ すでに探索したことのある報酬を通じて､
予想できるVを手にしているのです｡
そして､ 探索するうちに､ もちろんその値が変わることもありますが､ このVがニューラルネットワークの出力であるということもわかっています｡
そのため､ このようなことを繰り返しているうちに､ その予想に合うようにニューラルネットワークを調整するようになるのです｡
V つまり､ 基本的にこれは共有されるもので､ 重要な部分はエージェント間で共有され､ それが互いの情報を共有する方法です｡
このようにして､ 互いに共有された環境の中で何が起こっているかを確認し､
次のパートでさらに詳しく説明します｡
その環境下での行動を最適化するために､ それを利用する｡
そして､ もうひとつ注目すべきは､ ここがa3cだったわけで､ ここまではa3cのコアのようなものです｡
これはa3cの一種ですが､ 実はこれのさらに優れた実装であるa3cがあり､ 実用面では最初のチュートリアルの1つでアドランドが実際に話しているのを聞くことができます｡
そして､ 彼が話すのは､ PyTorchの作者が実際にGitHubで共有されているコードの1つに調整を加えて､
これらすべてを取り込んだという話です｡
今はご覧の通り､ 別々のニューラルネットワークを持っていて､ その2つだけがVを共有しています｡
その調整とは､ 実は､ これらのニューラルネットワークをすべて1つにまとめ､ 取り込んで､ 一緒にすることでした｡
つまり､ 最終的にエージェント間で共有されるニューラルネットワークは1つだけなのです｡
ですから､ 以前は､ 俳優用と評論家用にそれぞれ1つのニューラルネットワークが共有されていました｡
クリティカルな1つのニューラルネットワークをアクター用に共有した図｡
今では､ 俳優､ 評論家､ 俳優､ 評論家､ 俳優､ 評論家のために共有されている1つのニューラルネットワークを持っているのです｡
そして､ 評論家がここに共通している｡
では､ これらの写真を左側に移動してみましょう｡
だから､ スペースを作ってください｡
そして､ これが基本的に､ 実践的なチュートリアルで使用するアーキテクチャや構造になっているのです｡
このように､ 今の段階ではちょっと無理があるように聞こえるかもしれませんが､ もう1つ､ そのアドバンテージについてお話します｡
そして､ そこで､ これがどのように進んでいるのか､ もう少し実際に見てみることにします｡
だから
そこでの直感的な行動についてお話します｡
しかし､ 一般的にはこれはこれであります｡
これは､ 各エージェントが使用するネットワークが1つで､ それを共有するというものです｡
基本的にその意味は､ ウェイトを共有するということです｡
ネットワークの重みは､ エージェント間で共有されます｡
そして､ 更新されると､ 自分のネットワークだけでなく､ ネットワーク全体が更新されるのです｡
そして､ アウトプットをするのです｡
各エージェントのアクションがあり､ それを共有する評論家がいて､ それがモニタリングになるわけです｡
今はいろいろと大変ですが､ 少しずつでもまとまっていけばいいと思っています｡
少なくともここから得られる主な収穫は､ 批評家は共有されているので､ エージェントはより速く結果に到達するために協力し合うことを確認できるということです｡
そして､ 次のチュートリアルでは､ このすべてがどのように組み合わされ､ どのように組み合わされるのかを､ さらに詳しく見ていきます｡
そして今のところ､ 私がお勧めしたい､ あるいは私たちがお勧めしたい､ 追加の読み物があるようです｡
というわけで､ 今回はJaromir Jaenischのブログです｡
Let's Make an A 3つのキーで実施ということです｡
実は､ 実装と理論の2つのパートがあるんです｡
リンク先があります｡
そしてそれは､ チュートリアルの実践編でアランが実装するものと非常によく似ています｡
このチュートリアルのためだけでなく､ このセクション全体の励みになるような､
追加情報､ 追加洞察を提供します｡
だから､ ここで取り上げるのです｡
しかし､ それでも､ 次のチュートリアルでは､ これまでに説明したことをすべてまとめていきます｡
そして､ 次回お会いできるのを楽しみにしています｡
そしてそれまで､ お楽しみに｡
I.