こんにちは､ 人工知能のコースにようこそ｡
今日のチュートリアルでは､ そのアドオンについてお話します｡
3つのC言語アルゴリズムのために実装することになります｡
長短期記憶､ 略して長短と呼ばれるものです｡
では､ これまでの内容を確認した上で､ なぜLSTが必要なのか､ LSMとは何なのかについて説明しましょう｡
これまで､ 3つのCアルゴリズムについて説明してきました｡
A3 Cの3つのAの文字すべてについてお話しましたが､ もちろん､ 実際にはもう少し複雑で､ この画像にあるものよりもずっと複雑であることはおわかりいただけたと思います｡
実際には3つ以上の複数のエージェントが環境内を行き来し､ お互いに通信し合ったりしています｡
でも､ 今日のお話では､ わかりやすくするために､ このエージェント1つですべてを説明することにしましょう｡
最後に､ この俳優の部分､ 評論家の部分があります｡
つまり､ 基本的には､ 状態が決まると､ その状態は畳み込み層を経て､ プーリング層を経て､
平坦化層へと進みます｡
そして､ この時点では､ 値や数値がネットワークを通じて伝搬され､ 隠れ層に入ることになります｡
そして､ 出力として､ 私たちはポリシーやアクターの部分を得て､ 彼らは状態の値を得て､ 私たちは評論家の部分を得ます｡
そして､ 今日はこの隠れた部分についてお話します｡
そこで､ 隠れ層では､ 実際に次のレベルまで持っていき､ 修正を加えることができます｡
そして､ このアルゴリズムには複数の改変が存在することも､ すでに確認されています｡
そのうちの1つを見たことがあります｡
このように､ ネットワークの主要な部分を各エージェントが個別に持つ場合と､ ネットワークの主要な部分を共有する場合があることが分かっています｡
これまでの直感的な実験でも､ ネットワークの一部を共有していることがわかりました｡
このネットワークは､ 代理店の間で共有されていた｡
アドロンが実践的なチュートリアルで詳しく説明しますが､ これはブレイクアウトの挑戦に本当に役立ちます｡
また､ アルゴリズムを修正する方法は他にもたくさんあり､ 実装可能な追加機能もたくさんあります｡
そのうちの1つについて説明します｡ 実際にチュートリアルの実践セットで､
レイヤーに当たる前に､ 追加できるのは､ lshtmレイヤー､ ニューラルネットワークレイヤーで､
アルゴリズムに記憶を持たせ､ 前に起こったことを記憶させることができるようにします｡
そして､ たった今､ Lshtmについて､ より詳しくお話します｡
しかし､ 基本的にはここにリストレイヤーを追加して､ 別の機能のためにメモリを追加してアルゴリズムを強化することができます｡
そして､ 実際にフラクタル素材を見るとわかるのですが､ 最後のレイヤー以降は隠しレイヤーも必要なかったということで､
事前の実装で確認することができます｡
すぐに平坦化層ができたそうです｡
その後､ システムレイヤーを持っている｡
つまり､ 基本的にはこのボックスがlshtmレイヤーを表しています｡
そして､ その後にすぐに出力があります｡
だから､ それ以降の隠れ層は必要なかったんです｡ Lshtm層がどれだけアルゴリズムに力を与えるか､
それだけです｡
また､ ニューラルネットワークのアルゴリズムやアーキテクチャは､ 非常に個別的なものです｡
個人的な好みで､ とてもクリエイティブなことなんです｡
そのため､ 2つのレイヤー､ 1つの分析者レイヤー､ そして5つの隠しレイヤーが必要かもしれません｡
それは完全にあなた次第で､ あなたが実験し､ 探求するためです｡
でも､ これは実践的なチュートリアルで思いついたことなんです｡
フラット化､ フラットレイヤー､ そしてその後にldsd1レイヤー､ さらに出力があるのがわかると思います｡
さて､ ここまでこのレイヤーの話をしてきましたが､ このリストレイヤーとは何なのでしょうか？
さて､ lshtm層は記憶を追加することで､ ニューラルネットワークが以前の反復で何が起こったかを記憶できるようにするような機能を提供します｡
そして､ それはしばしば次のようなシンボルで象徴されたり､ 示されたりします｡
これは､ 私たちが始めたばかりで､ ここに載せているだけです｡
非常に曲がっているように見えますが､ この画像についてさらに議論するときに､ 何が起こっているのかわかるように､
ここに載せておきます｡
このレイヤーの出力がここに入り､ これが私たちのレイヤー全体です｡
つまり､ 値のベクトルなんですね｡
Xは､ サンドイッチに入るベクトル値です｡
出力として､ これらのストアを連結した別のベクトル､ あるいは何らかの形でネットワークと結びついたベクトルを得ることができます｡
私たちの場合､ 出力として､ こうなって､ こうなるんです｡
では､ もう少し詳しく見てみましょう｡
だから､ この部分だけに注目するのです｡
実は､ 文字がこの大きさになっていることでお気づきかと思いますが､
横向きにするんです｡
このように､ 全体がごちゃごちゃしているのは､ このように見えても､ 実際には値の層､ 値のベクトル全体がここに入ってきているという事実を再確認したのです｡
何かが起きている､ このことを今更ながら議論してみる｡
ベクトルバレーが丸ごと入っていますね｡
これがレイヤーなんですね｡
これは一つの要素だけでなく､ レイヤーそのものなんです｡
では､ もう一度戻ってみましょう｡
もう一度言いますが､ レイヤーはこのレイヤーに入ります｡
何かが起こる､ 層が出る｡
つまり､ それはシステムが味方してくれているだけなのです｡
だから､ 議論しやすいだけなんです｡
そして､ それが共通の表現です｡
わかりました｡
さて､ なぜこの画像が横向きだったのか､ そしてこれからどう進めていくのか､ 納得していただけたでしょうか｡
この状況をもう少し掘り下げてみることにしよう｡
では､ 蒸気層の内部では何が起こっているのでしょうか？
というわけで､ こんな感じです｡
そしてもちろん､ これは非常に複雑に見えます｡
そして､ これらについて議論することは非常に多いので､ 今すぐすべてを説明することは絶対にありません｡
ポイントは､ オペレーションはレイヤーワイズオペレーションであり､ 多くのことが行われている､
あるいは多くの複雑な細部がある､ ということです｡
そしてこれは､ ここでステムの話をすることが目的ではありません｡
それぞれのエラストマーを活用するだけです｡
タムズについてもっと知りたい方は､ こちらのクリストファー・オラスブログをご覧ください｡
彼はすべてのステムをうまく説明していますし､ 私たちもディープラーニングの年代でLCMSについて話しています｡
もちろん､ そこで確認することもできます｡
リカレント・ニューラル・ネットワークやステムに関するセクションもありますよ｡
これがLCMの内部で､ レイヤーを入れていくようなイメージです｡
そこで､ 直感的なレベル､ 非常に基本的な内部レベルで話をすることになります｡
ただ､ 何が起こるのか､ なぜメモリがあるのか､ また､ アランがこれを実装するときに何を話しているのかをよりよく理解するためには､
何があれば十分なのでしょう｡
つまり､ レイヤーはこのすべてに入るわけで､ 何か基本的なことが起こっています｡
レイヤーが外れる
実際に確認すべきは､ これらの部品､ このレイヤーへの追加入力があるということです｡
通常､ 前のレイヤーからの入力があり､ 次にこのレイヤーがあり､ そして出力がある､ と覚えておいてください｡
以前､ 私たちが持っていたイメージ､ 通常のネットワークを考えてみると､ それは､ 横からではなく､ 左から右へ､
上から下へという感じですが､ バニラステムの場合は､ 実際にはもっと多くの入力があるんですね｡
だから､ さらに複雑になっているのでしょうが､ 少なくともこういうことは理解できるのです｡
これが記憶細胞で､ これが鍵で､ これがアドロンの話を聞くことになるわけです｡
つまり､ メモリーセルはシステムの中に保存されているものなんですね｡
つまり､ これらの入力と出力は､ 実際にここにあるのです｡
見ているのは時間軸の方です｡
これが時間差で解けるわけです｡
つまり､ ある特定の繰り返しでこうなるのですが､ その後､ 過去からこの値が取り込まれ､ この値がこれらの値に渡されるのです｡
これらの価値観は過去から受け継いだものであり､ その価値観は未来に受け継がれ､ LHSチームの働き方によってうまく受け継がれていくのです｡
ここで何が起こっているかはあまり気にせず､ レイヤーが入り､ ここではすでに過去から来た値がlshtmの中に保存されていることだけを理解すればいいのです｡
長短の記憶の中｡
このメモリセルには､ 以前ここにあったどんな値もそのまま残っているのです｡
ご覧の通りです｡
ただ､ 点的な操作の場合は､ それを閉じたり､ 何かを加えたりすることができますが､ それ以外は自由に通り抜けていくのです｡
しかし､ それとは関係なく､ 自由に流れる何らかの価値観があるだけなのです｡
つまり､ 基本的には次のポイントタイムに受け継がれるわけです｡
つまり､ この細胞が持っているフラッシュドライブか何かのメモリのようなものだと思えばいいんです｡
そして､ この中にあった以前の値を記憶しているだけなのです｡
そして､ その値を使って､ その値に追加したり､ その値から読み出したりすることができるのです｡
そして､ この値が隠された状態､ つまりHであり､ 隠された状態は基本的に過去から来た別の値であり､
その後システムの内部で使われるのです｡
そして､ 最後にご覧のように､ このようなことが起こった後､ レイヤーが出てくるのです｡
つまり､ 出てきたこの値は､ 前方に渡されるのと同じ値なのです｡
だから､ 基本的にLLSのチームは2つのことを記憶している｡
lshtmの中にstayのような定数値があり､ このように変更することができます｡
定価のようなフラッシュドライブがあります｡
そのため､ メモリーセルは､ その空間､ メモリーに何かを保存することができ､ それが未来に受け継がれるという贅沢ができるのです｡
だから､ 次の反復ではいつでも､ アルゴリズムがある環境にいるように､ 何かを見て､ 何かをする､ ということを繰り返すのです｡
そして､ チーム内にある特定の値を保存しておけば､ 次の状態になったときでもこの値を覚えていてくれるのです｡
そして､ もう一つの値は､ その前の出力を記憶して､ 自動的にその前の出力を記憶します｡
だから､ 出力はここに行って､ ここに行くんです｡
これがLSMで起こることの､ 基本的な､ とても､ とても､ とても高いレベルです｡
もう一度言いますが､ もっと詳しく知りたい方は､ たくさんの資料がありますので､ そちらをご覧になってください｡
そして､ 現段階では､ これらすべてについて､ そこまで詳しく説明する必要はないでしょう｡
メモリーセルとは何か､ 隠れたメモリーセルとは何か､ 隠れた状態とは何か､ そしてそれらがどのように機能しているかを理解する必要があるのです｡
リスト用メモリ｡
そこで質問ですが､ この知識を補強したり､ 固めたりするために､ また､ この知識を得るための理由を示すために､
これらすべての概要を把握したところで､ 「なぜメモリが必要なのか」という質問をしてみましょう｡
なぜ､ a3cやその他のアルゴリズムにメモリが必要なのでしょうか？
では､ このセクションで挑戦している､ 私たちの例を見てみましょう｡
だから､ 課題はブレイクアウトなんです｡
そして､ ブレイクアウトでは何が起こるのでしょうか？
ブレイクアウトでは､ この環境と小さなブロックがあって､ この小さなボールで破壊する必要があるんです｡
そして､ これがラケットやプラットフォームのようなもので､ 動き回っていることを確認する必要があります｡
そして､ ボールが飛んでくるたびに､ ボールをキャッチして､ プラットフォームに跳ね返ってぶつけたり､ 壁にも跳ね返って戻って､
ブロックにぶつかって戻ってこなければなりません｡
というのが､ 達成すべき本質なんですね｡
しかし､ このボールを見てみましょう｡ あなたがan, an, a3cアルゴリズムで､ a3cの中のエージェントの1つだと想像してみてください｡
この絵が見えますか？
ここから何を抽出するのですか？
ここであなたはどのような行動をとりますか？
ここから？
だから､ ボールが飛んでいるのがわかるでしょ？
だからまあ......飛んでるよね｡
だから､ どこかに行ってしまうし､ もしかしたら自分に向かって飛んでくるかもしれない｡
そうですね｡
このような結論を出すことができるのでしょうか？
自分に向かってくるのを予測することはできますか？
おそらくできるはずです｡
そして､ もしかしたらボールをキャッチするのに最適な場所にいるかもしれない｡
しかし､ 実際にボールがそのように飛んでいない場合はどうでしょうか｡
何を飛ばしているのでしょうか？
そっちに飛んでいったらどうするんだ？
この1枚の画像からは､ 前の瞬間にどこにいたか分からないので､ どちらに飛んでいるのか分からないということです｡
だから､ ここにあったのなら､ これを飛ばしているのです｡
だから､ もしあなたが前の瞬間に知っていたなら､ そのときあなたがここで知っていたなら､ 今あなたは知っている､
ここでそれは人間としてある｡
この2つから線を引くだけで､ ああ､ かっこいい､ こっちに行くんだな､ と｡
でも､ ここにあると知ったら､ このスタンドはこっちに行くと線引きするんですね｡
さらに､ これを見てください｡
実はこっちのような場所だったのかもしれない｡
もしかしたら､ 上がっているかもしれないし､ 実際にそうなっているかもしれない｡
だから､ もしかしたらここにあって､ 私が登っていたのかもしれません｡
だから､ その1枚の画像からだけでも､ とても難しい｡
実は不可能なんです｡
ボールがどっちに飛んでいくかなんて､ 幾何学的に不可能なのと同じですからね｡
そのため､ 前回､ 記憶が本当に､ 本当に役立つアルゴリズムになりました｡ 記憶なしでも､
いい仕事はできますが､ おそらく推測したり､ どこに行くべきか他の方法を見つけたりすることができます｡
ですから､ その1つの値でも戻れば､ それは前の値の出力のようなもので､ あるいは､
ここに保存したり､ この値に基づいて､ 前の時点から得た情報に基づいて､ 保存したりすることができるかもしれません｡
ここで起こったことから､ あなたのボールが以前あった場所だとします｡
つまり､ 前の時点の環境の情報をここを通して伝えることができ､ そして今､ それがあるわけです｡
今は画像からの情報だけでなく､ さらにさかのぼれば､ 画像からの情報を記憶していることになります｡
これは "破滅 "ですが､ 実際には画像のブレイクアウト情報を使って､ ここ､ ここ､
ここで､ 平坦化された値に変換しているのです｡
というように､ 画像からの情報が入ってくるわけです｡
そして今､ 突然､ どこからかではなく､ 前の時点から来たことを思い出したかのように｡
そのため､ 実際にデモができるのは､ ボールからと左からと右からです｡
実際には......lshtmレイヤーにとどまるだけなんです｡
その情報は､ システムのアーキテクチャだけで持っているんですね｡
以前起きたことの情報を持っているのですね｡
そして､ この情報は､ あなたが何をすべきかの判断をするのに役立ち､ アルゴリズムが判断をするのに役立ち､ そして､
突然､ 「ああ､ そうか」とわかるのです｡
つまり､ ボールは､ 例えばこの方向に飛んでいるとか､ この方向に飛んでいるとか､ どちらかに転がっているわけです｡
だから､ 私はこの辺にいた方がいいんです｡
ボールは私の方に来るんです｡
あるいは､ ボールがそこに飛んでいることに気づいたら､ もう少し待っていたら手遅れになってボールを取り逃がしてしまうので､
左に移動し始めるはずです｡
このように､ lshtmレイヤーはこのアルゴリズムにとても役立っており､ Adlandを使った実践的なチュートリアルを行う際にも､
まさにそのようなことが言えると思います｡
そうそう､ そうなんです｡
それがこのチームのやり方です｡
そして､ もうひとつだけ補足しておくと､ 冒頭で述べたように､ エリス・タイムズは100％必要なものではありません｡
彼らは､ このアルゴリズムに完全に執着しているわけではないのです｡
入れておいたほうがいいかもしれませんね､ a3cアルゴリズム｡
選ぶアーキテクチャによって､ 状況によっては持たない方がいいかもしれません｡
たくさんの追加があり､ ニューラルネットワークがアクター間で共有されるか､ エージェント間で共有されないか､
といった追加や修正についてはすでに説明しました｡
今はそれにもかかわらず｡
Lshtm もうひとつ､ 実践的なチュートリアルで紹介される､ ポリシーロスの全体にわたって計算されるエントロピーを追加する方法がありますが､
これについてはアドロンが説明します｡
つまり､ アルゴリズムにはさまざまな変更が可能なのです｡
によるということだけは覚えておいてください｡
実現したいこと
また､ 多くの実装を行い､ さまざまなアルゴリズムを試すのであれば､ ぜひとも検討していただきたい点です｡
すでにいくつかご紹介しましたが､ もしかしたら､ さらにご興味のある改造が見つかるかもしれません｡
あるいは､ チュートリアルを見ていると､ その頃にはもっと面白い改造がされているかもしれませんね｡
人工知能やアルゴリズムの作り方に関する知識を深めるためにも､
ぜひ調べてみてください｡
というわけで､ 本日のチュートリアルを楽しんでいただけたら幸いです｡
それまではお楽しみに｡
I.