熟考を学ぼう」をPyTorchで実装したものです。入力に基づいて計算を調整します。入力に基づいてリカレントネットワークで実行するステップの数を変更します。PonderNetはこれを端から端までの勾配降下法で学習します。s任意のニューラルネットワーク(LSTM、MLP、GRU、アテンションレイヤーなど)にすることができます。その場合、nステップで停止する無条件の確率は、pn​=λn​j=1∏n−1​(1−λj​)これは、前のどのステップでも停止せず、ステップで停止する確率です。n推論中は、λn​停止確率に基づいてサンプリングして停止し、y^​n​停止層での予測を最終出力として取得します。トレーニング中、すべてのレイヤーから予測を取得し、各レイヤーの損失を計算します。次に、各レイヤーで停止する確率に基づいて、損失の加重平均を取ります。pn​ステップ機能は、Nから寄付されたステップの最大数に適用されます。全体的な損失はLLRec​LReg​​=LRec​+βLReg​=n=1∑N​pn​L(y,y^​n​)=KL(pn​∥pG​(λp​))​Lyy^​n​はターゲットと予測の間の正規損失関数です。KLはカルバックとライブラーのダイバージェンスです。pG​はでパラメータ化された幾何分布です。λp​λp​関係ありませんλn​。紙と同じ表記法にこだわっているだけです。PrpG​(λp​)​(X=k)=(1−λp​)kλp​。正則化損失は、ネットワークを手順を実行する方向に偏らせ、λp​1​すべてのステップでゼロ以外の確率を誘発します。トレーニングするためのトレーニングコードは次のとおりです。Cellを使用するシンプルなモデルです。入力がのベクトルであるパリティタスク用です。いずれかで、出力はパリティです。モデルの予測は、パリティが存在する対数確率です。n_hidden)#y^​n​=sy​(hn​)hxとを入力として連結するレイヤーを使用することもできますが、簡略化のためにこれを使用しました。n_elems]これは4つのテンソルのタプルを出力します。