こんにちは､ このPythonチュートリアルへようこそ｡
これから､ 入力映像の最初から出力まで､ 脳全体に信号を順伝播させる順関数を作りますが､
その中には､ 俳優のキュー値と､ 評論家のV関数がとる値であるV値が含まれます｡
だから､ 『Doom』でやったこととよく似ているのですが､ 今回は何かが変わるんです｡
これから大きく変わるのは､ 今は脳の中にATMがあるので､ 信号を伝播させるために､ みんながもっと何かしなければならないし､
そのことに気をつけなければならないということです｡
もうひとつは､ あまり重要ではありませんが､ 非線形活性化関数としてループ活性化関数を使うのではなく､
より洗練された関数であるループを使うということです｡
Pythonのドキュメントで確認することになります｡
では､ こうしてみましょう｡
この機能を作ってみましょう｡
まずはデフから｡
それが実は､ このアクティブクラスの最後の機能なんです｡
そこで､ 前回同様､ 前倒しで呼び出すことにした｡
そして､ この4番目の関数は､ オブジェクトと入力を使用するため､ オブジェクトを自己に取り込むことになります｡
そのため､ これらの入力がどうなるかを理解することが重要です｡
これは入力画像だけでなく､ これらの入力にはチームの隠れノードとセルノードも含まれる｡
だからこそ､ 変わるものがあることを強調したかったのです｡
さて､ 基本的には､ STMのセルノードの中の隠れノードを順関数で考えています｡
そして､ これから行うことは､ この引数の2つの入力､ 前進関数の入力を分離することです｡ そして､ どのように分離するのでしょうか？
さて､ 新しい変数を呼び出せば､ それが入力画像となります｡
つまり､ 今回は入力画像をH, X, C xというタプルで分離しています｡ これは､ lsg mの隠れ状態とセルの状態のカップルなので､
h xが隠れ状態､ c xがセルの状態です｡
わかりました｡
そしてそれは､ 入力とイコールになる｡
それがここでの主張です｡
そこで､ この分離を行うことで､ 脳全体に信号を伝播させることができるようになりました｡
そのために､ コンボリューション､ LSHTM接続､ 線形接続､
フル接続を使用して､ 最初の層から最後の層まで､ 異なる層を連続的に取得するつもりです｡
では､ 今からやってみましょう｡
今までと同じになるんです｡
これからXと呼ぶ最初のレイヤーを得ます｡ この最初のレイヤーを得るためには､ 入力からこの最初のレイヤーに信号を伝播させる必要があります｡
したがって､ 最初の畳み込みを使う必要があります｡ この最初の畳み込みが､ 入力画像から最初のレイヤーに信号を伝播させるからです｡
これから行うのは､ これをコピーして､ 最初のコンボリューションをここにペーストし､
この最初のコンボリューションを入力画像に適用することで､ 正しい入力になります｡
そして､ そこに行く｡
それが､ 入力画像からの信号を第1層に伝搬させる｡
しかし､ ここで思い出してほしいのは､ 画像内部の非線形関係を学習できるようにするためには､ 非線形活性化関数を用いて線形性を崩す必要があるということです｡
そのために､ PyTorchのドキュメントで今から紹介するALU活性化関数を使うことにします｡
でも､ その前に｡
つまり､ 機能モジュールには短いクリップF､ ドット､ Aluがあり､
これらをすべて括弧で囲みます｡ これは､ 入力に最初の畳み込みを適用して得た､ この第1層のニューロンを非線形に活性化したいからです｡
では次に､ ALUとは何かを理解するために､ PyTorchのDougに会いに行ってみましょう｡
ここにあるので､ pytorch dot org slash doug slash rn dot htmlにアクセスすることができます｡
そして､ ノンリニアなアクティベーションを見つけなければならない｡
非線形活性化関数では､ ルー､ これは私たちが知っている古典的なものです｡
つまり､ 0とxの最大値だけで､ グラフは頭に入っていて､ 次にリリース6､ これがあるわけです｡
だから､ もう少し洗練されたものを｡
そして､ そこに行く｡
ルーがあるんです｡
そして､ お分かりのように､ ループは､ ループに追加要素を加えたものです｡
つまり､ より洗練された価値観のようなものですね｡
これは､ 異なる層のニューロンを非直線的に活性化させるために使用するものです｡
ちなみに､ このループ活性化関数は指数線形ユニットと呼ばれているんだ｡
そうそう､ そうなんです｡
最初の畳み込み層にループを適用し､ これで物事は簡単に進むようになった｡
次の4番目の信号の伝播に進みます｡ それは最初の畳み込み層から2番目の畳み込み層までで､
ここではXと呼ぶことにします｡ 基本的にはXを更新するだけなので､ 現在xは最初の畳み込み層で､
最初の畳み込み層から次の層に信号を伝播することによって､ xは次の畳み込み層となるのです｡
そして､ 最初の畳み込み層から2番目の畳み込み層に信号を伝播させるには､ これをコピーしてここに貼り付け､
conf 1をconf 2に置き換えるだけでよいのです｡
そして今､ 当然ながら2回目の畳み込みは入力画像にではなく､ xに適用されます｡
これが最初の畳み込み層で､ ちょうどここにあります｡
よし､ 完璧だ｡
さて､ 2番目の畳み込み層ができたので､ 今度は2番目の畳み込み層から3番目の畳み込み層に再び信号を伝播させましょう｡
したがって､ これをそのままコピーして､ ここをベースにして､ 2を3に置き換えればいいわけです｡
これでよしとしよう｡
そして最後の1つは､ 3番目の畳み込み層から4番目の畳み込み層に信号を伝播させるためのものです｡
これでよしとしよう｡
では､ おさらいをしましょう｡
まずはインプットから｡
最初の畳み込みを適用して､ 最初の畳み込み層を得る｡
そして､ 第一畳み込み層に第二畳み込みを適用して､ 第二畳み込み層を得る｡
そして､ 2番目の畳み込み層に3番目の畳み込みを適用して､ 3番目の畳み込み層を得ます｡
そして最後に第3畳み込み層に第4畳み込みをかけて第4畳み込み層を得ます｡
このようにして､ AIの目全体に信号が伝搬されるのです｡
そうそう､ そうなんです｡
これで4回の畳み込みの後の出力信号ができ､ 何をすべきかがわかりました｡
この出力信号全体を1次元のベクトルに展開する必要がある｡
それが平らにするステップです｡
そこで､ 再びXを更新することになりました｡
Xはこのように平坦化された1次元のベクトルになります｡
そして､ これを行うには､ それは我々がXを取る必要があるのと同じで､ ここまでは4番目の畳み込み層xのドットである｡
そして､ Vueの機能を使って､ まずマイナス1を入力し､ 「欲しい」と言います｡
1次元のベクトル｡
そして､ 第二引数として､ このベクトルの要素数を入力する必要があるのですが､ これは､
32回､ 3回3回と覚えておいてください､ したがって､ ここに32と入力します｡
回×3回×3回
これでよしとしよう｡
これで､ 平坦化されたベクトルができ､ 平坦化のステップは終了です｡
完璧です｡
では､ 最後の仕上げをしましょう｡
つまり､ ご理解いただいたように､ Lshtmは私たちをインプットしてくれるのです｡
平坦化されたベクトル､ この1次元のベクトルは､ 3､ 2倍､ 3倍の3つの要素からなる｡
だから､ もうLshtmの準備は万端､ 万全なのです｡
Lshtmはこの平坦化されたベクトルを入力として受け取ることができるようになったので､ Lshtmと入力を引数として受け取ることができるようになったのです｡
最初のXは平坦化されたベクトルで､ 先ほど費やしたこのX線です｡
しかし､ それと同時に､ このダブルが登場するのです｡
H､ X､ C､ xを入力する必要がありますが､ ここでxを使ってxを見ることができるのは､ フォワード関数の元の入力引数からその分離を行ったからです｡
そこで､ lshtm xは4つの畳み込みとこの隠れノードとセルノードのテーブルまで平坦化された出力ベクトルである｡
そうそう､ そうなんです｡
そして､ lshtmは終了関数の変数であるため､ selfを忘れてはならない｡
つまり､ 変数はLCMという自己のオブジェクトにアタッチされ､ これは実際に2つの出力（出力ヘルスノードと出力セルノード）のテーブルを出力に返します｡
つまり､ これはタプルであり､ したがって､ h×隠れノードとsee×セルノードを更新することができるのです｡
素晴らしい｡
だから､ もうほとんど完成しているんです｡
LLSチームの出力が得られたので､ 有用な出力を得る必要があります｡ 実際にはHinduノートだけが有用なので､
xを再び更新してそれを得ようとすると､ xは今やh xと等しくなります｡
LSB xの出力カップルの最初の要素はh xに等しく､ ほぼ完了です｡
私たちには2つの脳があることを忘れないでください｡ 1つは俳優の脳､ もう1つは批評家の脳です｡
そのため､ 俳優の出力信号と評論家の出力信号を返すために､ 信号を出力しなければならないのです｡
したがって､ これから行うのは､ これら2つの出力信号を返すことです｡
そして､ どうすればいいのか？
まあ､ それはとても簡単なことです｡
私たちはただ､ 直線的なフル接続をするだけでいいのです｡
しかし､ それとは別に､ 評論家の直線的な完全接続と､ 俳優の直線的な完全接続がある｡
そして､ これらの接続をそれぞれ､ lshtmの有用な出力である出力xに適用すると､ それがすべて出力信号となるのです｡
そこで､ やってみましょう｡
まず self をオブジェクトとし､ critic underscore linear である critic の線形足接続を取得し､
それを lshtm の出力信号である x に適用し､ 同じように self を再び取得し､ 次にそれを取得し､ そして actor
underscore linear である actor の線形完全接続を取得して､ それを x に適用します｡
これでよしとしよう｡
だから､ それが一番必要なことなんです｡
しかし､ その後にLSBシーンのレトロループで使用するため､ 隠されたノートをすべてトップに戻し､
ノートを売るためにXを見ることになります｡
よし､ 完璧だ｡
というのも､ 実は俳優用と批評家用の2つの脳を作ったからです｡
というわけで､ a3cの頭脳化おめでとうございます｡
CNNとLCMの組み合わせに無理がなかったかとは思いますが､ 少なくとも､ 本当に最高・最強のモデルで仕事をしているということは､
良いニュースです｡
そうそう､ そうなんです｡
実はこの最初のファイルモデル､ あのパイで終わっているんです｡
それで､ 次のチュートリアルでは､ オプティマイザを別に作るので､ オプティマイザの面倒を見ることにします｡
多くは研究論文からなので､ 一行一行のコードを書くつもりはありません｡
そして､ これは実はかなり具体的な話なんです｡
このオプティマイザで何が起こっているのかを深く掘り下げていくと､ 次に起こることとしては少し無理があるかもしれません｡
なぜなら､ まだ作るべき列車関数があり､ それは巨大な関数になり､ リスクのアルゴリズムが含まれているのだからです｡
そのためのエネルギーを残しておきたいので､ あまり時間をかけないようにします｡
しかし､ それでも､ 私はコードを説明し､ あなたはこのオプティマイザの背後にある全体のアイデアを理解することができます｡
また､ 次回のチュートリアルでは､ オプティマイザーを作るためにお会いしましょう｡
それまではお楽しみに｡
I.