こんにちは､ このチュートリアルにようこそ｡
今度は､ 保険契約上の損失と価値損失を計算するフルループを作ります｡
そして､ この2つの損失がわかれば､ オプティマイザーを使って確率的勾配降下法を適用し､ 損失を減らすことができるようになるのです｡
わかりました｡
そうそう､ そうなんです｡
ここからスタートです｡
ところで､ 前回のチュートリアルでは､ この部分を実装したのですが､ インデントを削除するのを忘れていました｡
申し訳ございませんでした｡
つまり､ ここのrから始まるのはforループの中ではなく､ 今は新しいforループを始めているのです｡
では､ 4から始めます｡ これから行うのは､ 期限切れの間に行われた最後のステップから始めて､
時間を逆行させるということです｡
そのため､ ここでは逆レンジのLen Rewardsで4つのIを行っています｡ Rewardsはリストだからです｡
そして､ 探索の各ステップは報酬に関連付けられているので､ 各ステップでLenの報酬がこのステップ数であるときに報酬を得ることができます｡
そうそう､ そうなんです｡
そして､ これから行うのは､ Rである累積報酬を更新することであり､ このように更新していきます｡
実はこれ､ 『Doom』のときと同じなんです｡
パラメータから得られるガンマと等しくなる｡
私は､ ガンマ倍Rプラスステップの報酬は､ 我々はリストの報酬を取ることによって得ることができ､ インデックスハイを取ること最初のparamsを取る｡
だからまず､ これが最後のステップの報酬になり､ 次に前のステップの報酬になり､
といった具合に｡ そして､ 毎回､ ガンマを掛けて更新し､ このステップでこの報酬を追加しています｡
そうすることで､ 最終的に手に入れることができるのだと､ 覚えておいてください｡
というわけで､ コメントとして書かせていただきます｡
我々は､ ループの終わりに等しくなる我々の累積報酬を取得します
r ゼロ､ ステップゼロの報酬プラスガンマ倍r 1､ 最初のステップの報酬プラスガンマ二乗倍Rに第二ステップの報酬プラスそのプラスガンマでステップとマイナス1で得られた報酬の1乗（nはステップ数です）｡
でも､ その時は気をつけてください｡
最終的には､ ステップ数のべき乗でガンマを得ることになります｡
最後の状態に適用される V 関数の値を 2 倍した値｡
これは最後に得られるべきもので､ これを得ることができるのです｡
そして､ その値を取得し､ その値と等しくなるように設定したのです｡
つまり､ 今､ この2番目のループの始まりにいるのは､ このless状態の値に等しいということです｡
しかし､ こうすることで､ 最終的に得られるのは､ 0＋ガンマr 1＋ガンマの2乗､
または2＋ガンマのn乗-1乗､ ステップn-1＋ガンマのステップ数乗の報酬に､
この少ない状態の値をかけたものです｡
それが､ この累積報酬の計算で理解すべき大きなポイントです｡
そのため､ この値で初期化することから始めて､ 最終的な方程式を完璧なものにするために､
この逆ループを行うことが重要なのです｡
そして､ 累積報酬の正しい値がわかったので､ さて､ アドバンテージを計算します｡
そして､ ここでのアドバンテージは､ あくまでも価値と比較してこの報酬を得られるかどうかということです｡
そこで､ 新たに変数advantageを導入し､ したがって､ この累積報酬からステップIIで得られたV関数の値を引いたものとする｡
つまり､ 誤差を除いた値､ つまり完全な値ということになります｡
そして､ 累積報酬とアドバンテージがわかったところで､ 次にバリューロスを求めます｡
これは今得られる最初のクラスなので､ バリューロス変数を取得し､ これは次のように更新されます｡
ここまでの記憶では､ バリューロスは0に初期化されていたので､ もう一度バリューロスを取って0を足すことになります｡
アドバンテージの平方根の5倍なので､ このように求めることができる｡
アドバンテージ・ドットPOW2｡
つまり､ アドバンテージの2乗､ 2の累乗でアドバンテージが決まるということですね｡
そして､ それこそが､ 評論家が出力したV関数の値の予測によって発生する損失､ バリューロスなのである｡
そして､ これが価値の損失であることは理にかなっている｡ なぜなら､ 状態ステートにおける行動Aの利点aは､
Q値とV関数の値の差であることを思い出してほしい｡
それで､ 最適なアクションをうまく演じると､ で定常状態になる｡
として､ その状態でスターが行った最適なアクションのQ最適｡
状態を保存する最適な値に等しい｡
ですから､ アドバンテージがゼロに等しくないときは､ この2つの間に差が生じるので､ それで損失が測定されるというのは､
極めて直感的な理解です｡
だから､ バリューロスはダウンが1つ少ない計算となる｡
残すところ､ あと1回となりました｡
政策的損失であり､ まさに今､ それを計算することになるのです｡
そして､ それを計算するためには､ 再び一般化された優位性推定を考える必要がある｡ なぜなら､ 政策損失を計算するためには､
一般化された優位性推定が必要で､ 一般化された優位性推定を得るためには､ まず､ 状態値の時間差が必要だからである｡
つまり､ ここでは複数のことを計算しなければならないのです｡
そして､ この時間的な違いからスタートすることになります｡
時間差を求めると､ 一般化された優位性推定が得られる｡
そして､ 一般化された優位性の推定ができれば､ ポリシーロスを得ることができる｡
わかりました｡
では､ まず時間的な違いから説明しましょう｡
tはステップIIの報酬にガンマ値を加えたもので､ これはパラメータリストのおかげで得ることができます｡
そこで､ そのガンマにステップIIの値をプラス1した値をパラメータとして､ そのデータをプラスしてアクセスするのです｡
そして､ 同じようにそのデータを追加します｡
わかりました｡
それが､ 状態値の時間差の式なんですね｡
そして､ 一般化された優位性推定にアップデートすることができるようになりました｡
また､ ガスにガンマパラメータを乗じ､ そのガンマパラメータにセルをかけて､ パラメータと一緒にアクセスすることで､ どのように更新されるのですか？
そこで､ Params Cellを取り出し､ この状態値の時間差を加算する｡
だから､ 気をつけよう｡
ループの中で､ 毎回､ ガスにガンマとタウを掛け､ 時間差を加えています｡
ですから､ このループの最後には､ まあ､ この一般化された利点の推定は､
ガンマ時間のすべてのステップで太陽と等しくなることを理解することが重要です｡
AI時代のパワーでタウを｡
での時間差は､ ステップバイステップ｡
わかりました｡
だから､ そのことが大切なんです｡
そして､ 一般化された優位性､ 推定､ 時間差の3つが揃ったので､ いよいよ政策的損失を計算することができる｡
では､ こうしてみましょう｡
古いポリシーロスを取って､ ステップIIで得られた対数確率を引き､ この一般化された優位性推定値を変数に掛けて､
勾配を計算するので､ 以下の方法で更新します｡
だから､ ダイナミックグラフのグラデーションにくっつける必要がある｡
そして､ マイナス0を足す｡ forループのStep IIで得られるエントロピーを01倍したもの｡
そしてまた､ 今､ 注意すること｡
これはforループの内部での計算であり､ forループの最後に得られるのはポリシーロスということになる｡
ステップの総和を引いた値に等しい｡
ステップIIでの政策の積分対数×一般化優位性推定値にこの0を加えたもの｡
01.
ステップのエントロピーが高いときがある｡
そうそう､ そうなんです｡
そして今､ ステップではどのような方針をとっているのでしょうか｡
それは､ アクションのソフトマックス確率とステップのエントロピーですね｡
I まあ､ さっき計算したものとか､ 追記したものとか､ そういうことですね｡
だから､ すでに持っているのです｡
しかし､ ここにあるパイは､ アクションのソフトマックス確率です｡
そして､ なぜここにマイナスをつけるのか｡
それは､ 確率の対数とエントロピーが負の値であるためです｡
そして､ その絶対値を最小化したいので､ この最後を距離ではなく対数尤度としてとらえる必要があります｡
アドバンテージを最大化するアクションを､ 最大限の確率で行いたいということですね｡
というのが､ 全体のイメージです｡
アドバンテージを最大化するアクションをプレイする確率を最大化したいのです｡
そして､ この係数0であるエントロピー係数は何のためにあるのかと思われる方のために｡
01はこちら？
まあ､ その目的は､ 確率が1である1つの行動を除いて､ すべての行動が0である確率分布を持つという罠に､
すぐに陥るのを防ぐためなのですが｡
そうなれば､ エントロピーを最小にすることができますね｡
だから､ この小さな係数0を加えているわけです｡ 01ここで､ 勾配降下でエントロピーを増加させることになる｡
なるほど｡
だから今､ 一番難しい部分が終わったというのは良いニュースです｡
2つの損失があるわけですから､ あとは確率的勾配降下法を使って､ この2つの損失を減らすだけです（やり方はすでに知っています）｡
これから行うのは､ このループから抜け出して､ 別に作ったオプティマイザを使うことです｡
それから､ 最初にすべてのグラデーション・パラメータをゼロに初期化することを思い出してください｡
そして､ そのために､ ドットを追加し､ ゼロアンダースコアのグリッドメソッドを追加します｡
よし､ それならこれで終わりです｡
今度は逆伝播を行うのですが､ ポリシーの損失が小さいので､ 失われた値よりも2倍の重要度を与えることにします｡
そこで､ これを行うために､ 括弧内の方針､ アンダースコア・ロスプラス0を入れることにします｡ 5価値損失｡
だから4． 5倍の値崩れ｡
そして､ ここにドットを追加し､ バックワード法を適用して逆伝播を行いました｡
そして､ このトリックのおかげで､ 保険金の損失と価値の損失の半分を加えることで､ 損失した価値よりも少ない保険金を2倍重要視しているのです｡
次に､ もう一つの仕掛けとして､ 勾配が極端に大きな値をとらないようにすることで､
アルゴリズムを生成していきます｡
そのためには､ まずtorchライブラリを取得し､ 次にtorchライブラリのinnerモジュール､ そしてutilsのサブモジュールを取得するのがコツです｡
そして､ 関数clip､ アンダースコアのgradをスコアノルムに使用し､
モデルパラメータを2番目の入力として40を入力します｡
そしてこのトリックは､ 基本的に勾配が極端に大きな値を取ってアルゴリズムを生成することがないようにするものです｡
そして､ この40年とはいったい何だろうと思われる方のために｡
つまり､ この値を使って､ グラデーションのノルムが0から40の間になるようにしているのです｡
したがって､ そうやってグラデーションが大きな値を取りすぎるのを防いでいるのです｡
これでほぼ完成ですね｡
ファイルの冒頭で､ エージェントと共有モデルが同じ勾配を共有することを確認し､ ここでこの関数を適用できるようにするために､
この共有関数の確保を行ったことを思い出してください｡
そして､ モデルと共有モデルが同じグラデーションを共有するように､ 共有グラッツを確実に追加していくわけです｡
わかりました｡
だから､ それはあくまで予防線なんです｡
それが全く必要ないとは言い切れませんが､ 少なくともここで問題が起こることはないでしょう｡
そして最後の行ですが､ もちろん､ 損失を減らすために最適化のステップを実行するのですが､ その方法はご存知の通りです｡
もちろん､ オプティマイザーを使って､ そのステップを括弧で囲んで追加すれば､ それで完了です｡
脳のトレーニングはもう終わりです｡
だから､ おめでとうございます｡
無理がなかったでしょうか｡
すべてのコメントと一緒にコードを提供しますので､ ご安心ください｡
だから､ 細かいところを見逃したら､ コメントを見てもらえばいいんです｡
また､ 何も理解できていなくても気にしないでください｡
これは非常に高度なことです｡
でも安心してください､ これが最強でもあるんです｡
PyTorchの作者から作られたものであることを忘れないでください｡
だから､ 私たちはここで最高の､ 最先端のものを使って仕事をしているのです｡
だから､ 一回目で全部分からなくても全然構わないんですが､ 何回も取り組むことで必ずだんだん慣れてくるんです｡
これでトレーニングは終了ですね｡
だから､ 基本的に一番大事なものは全部作りました｡
私たちは､ 畳み込み､ Lshtm､ 完全連結層などのニューラルネットワークのアーキテクチャを構築することで､
脳を作りましたよね｡
この電車のコードをここにすることで､ この脳を鍛えているのです｡
つまり､ 基本的にアルゴリズムの心臓部はできているのです｡
a3cを作ったんですね､ おめでとうございます｡
さて､ これからが本番ですが､ それは楽しみなところです｡
人が失敗するこのテストを作って､ エージェントをテストし､ AIがブレイクアウトをプレイしている動画を提供する必要がありますね｡
だから､ これはとても楽しいことだと思います｡
このテストのすべての行をPIファイルにコーディングすることはしません｡ なぜなら､ 先ほど言ったように､ 最も重要なことを行ったからです｡
a3cと関連付けますが､ もちろんコードの説明もします｡
そして最終的には､ このmain da piファイルでコードを実行することになります｡
そして､ このコードを実行した瞬間から､ すべてのコードが生成されることになる｡
だから､ 頭脳が作られ､ 訓練が行われ､ AIがブレイクアウトの新しいゲームを行い､ 私たちはすべてのビデオを手に入れることができるのです｡
だから､ 最終的には早く観たいんです｡
AIがボールをキャッチできるほど賢いかどうか､ これから見ていきたいと思います｡
では､ 次のチュートリアルで､ このPIのテストができるように､ 新しいゲームでAIをテストして､ それまでAIを楽しんでくださいということです｡