タグ付けされた質問 「backpropagation」

「エラーの後方伝播」の省略形であるバックプロパゲーションは、勾配降下法などの最適化方法と組み合わせて使用​​される人工ニューラルネットワークをトレーニングする一般的な方法です。

6
バックプロパゲーションなしでニューラルネットワークをトレーニングすることは可能ですか?
多くのニューラルネットワークの本やチュートリアルでは、基本的に勾配を計算するツールである逆伝播アルゴリズムに多くの時間を費やしています。 〜10Kのパラメーター/ウェイトでモデルを構築していると仮定しましょう。勾配のない最適化アルゴリズムを使用して最適化を実行することはできますか? 数値勾配の計算は遅すぎると思いますが、ネルダーミード、シミュレーテッドアニーリング、遺伝的アルゴリズムなどの他の方法はどうですか? すべてのアルゴリズムは極小に苦しむでしょうが、なぜ勾配に取りつかれているのでしょうか?

1
確率的勾配降下の場合、バッチサイズはどれくらいの大きさにすべきですか?
確率的勾配降下法を使用して、トレーニングデータセットの異なるサンプルで各反復を更新することにより、バックプロパゲーションを使用してニューラルネットワークを最適化できることを理解しています。 バッチサイズはどれくらいの大きさにすべきですか?

1
softmax_cross_entropy_with_logitsはsoftmax_cross_entropy_with_logits_v2とどう違うのですか?
具体的には、私はこの声明について疑問に思うだろう: TensorFlowの将来のメジャーバージョンでは、デフォルトでbackpropのラベル入力に勾配が流れるようになります。 を使用すると表示されますtf.nn.softmax_cross_entropy_with_logits。同じメッセージの中で、それを見ることを促しますtf.nn.softmax_cross_entropy_with_logits_v2。私はドキュメントを調べましたが、それは次のことだけを述べていtf.nn.softmax_cross_entropy_with_logits_v2ます: バックプロパゲーションは、ロジットとラベルの両方に発生します。ラベルへの逆伝播を禁止するには、この関数にフィードする前にstop_gradientsにラベルテンソルを渡します。 反対に、tf.nn.softmax_cross_entropy_with_logits「S: バックプロパゲーションはロジットにのみ発生します。 件名が非常に新しいので(基本的なチュートリアルを進めようとしています)、これらのステートメントはあまり明確ではありません。私は逆伝播の浅い理解を持っていますが、前のステートメントは実際には何を意味しますか?バックプロパゲーションとラベルはどのように接続されていますか?そして、これtf.nn.softmax_cross_entropy_with_logits_v2はオリジナルとは対照的に私がどのように働くかをどのように変えますか?

6
Softmax /クロスエントロピーによる逆伝播
私は、ソフトマックス/クロスエントロピー出力層での逆伝播の仕組みを理解しようとしています。 クロスエントロピー誤差関数は E(t,o)=−∑jtjlogojE(t,o)=−∑jtjlog⁡ojE(t,o)=-\sum_j t_j \log o_j とニューロンにおける目標出力としてそれぞれ。合計は、出力層の各ニューロンに対するものです。自体は、関数の結果です。tttooojjjojojo_j oj=softmax(zj)=ezj∑jezjoj=softmax(zj)=ezj∑jezjo_j=softmax(z_j)=\frac{e^{z_j}}{\sum_j e^{z_j}} この場合も、合計は出力層の各ニューロンあり、はニューロンへの入力です。zjzjz_jjjj zj=∑iwijoi+bzj=∑iwijoi+bz_j=\sum_i w_{ij}o_i+b これは、対応する出力とニューロンに対する重みにバイアス加えた、前の層のすべてのニューロンの合計です。oioio_iwijwijw_{ij}jjjbbb ここで、出力層のニューロンを前の層のニューロンに接続する重みを更新するには、チェーンルールを使用して誤差関数の偏微分を計算する必要があります。wijwijw_{ij}jjjiii ∂E∂wij=∂E∂oj∂oj∂zj∂zj∂wij∂E∂wij=∂E∂oj∂oj∂zj∂zj∂wij\frac{\partial E} {\partial w_{ij}}=\frac{\partial E} {\partial o_j} \frac{\partial o_j} {\partial z_{j}} \frac{\partial z_j} {\partial w_{ij}} ニューロンへの入力として、。zjzjz_jjjj 最後の用語は非常に簡単です。と間に重みが1つしかないため、導関数は次のようになります。iiijjj ∂zj∂wij=oi∂zj∂wij=oi\frac{\partial z_j} {\partial w_{ij}}=o_i 最初の項は、出力に関するエラー関数の導出です。ojojo_j ∂E∂oj=−tjoj∂E∂oj=−tjoj\frac{\partial E} {\partial o_j} = \frac{-t_j}{o_j} 中間項は、その入力に対する関数のが難しいことです。zjzjz_j ∂oj∂zj=∂∂zjezj∑jezj∂oj∂zj=∂∂zjezj∑jezj\frac{\partial o_j} {\partial z_{j}}=\frac{\partial} {\partial z_{j}} \frac{e^{z_j}}{\sum_j …

5
ニューラルネットワークトレーニングの逆伝播と遺伝的アルゴリズム
私は各方法の長所と短所を議論するいくつかの論文を読みました。GAが最適な解決策を見つけるのに何の改善ももたらさないと主張する人もいれば、それがより効果的であることを示す人もいます。文学では一般的にGAが好まれているようですが(ほとんどの場合、人々は必要な結果を得るために何らかの方法でそれを変更します)、ソフトウェアソリューションの大半は逆伝播のみを使用するように見えるのはなぜですか? どちらを使用するかについて、一般的な経験則はありますか?多分それはNNのタイプに依存するか、一般的に他のものよりも優れた最先端のソリューションが存在しますか? 可能であれば、一般的な答えを探しています。つまり、「NNが大きい場合、GAの方が良い」、または「GAは常に優れていますが、計算パフォーマンスの問題があります」などです。

4
活性化関数としてtanhがシグモイドよりも常に優れているのはなぜですか?
Andrew NgのCourseraのニューラルネットワークとディープラーニングコースでは、tanhtanhtanhを使用することはを使用するよりもほぼ常に好ましいと述べていsigmoidsigmoidsigmoidます。 彼が与える理由は、を使用する出力tanhtanhtanhはsigmoidsigmoidsigmoidの0.5 ではなく0を中心とし、これにより「次の層の学習が少し簡単になる」からです。 アクティベーションの出力速度を中心に学習するのはなぜですか?バックプロップ中に学習が行われると、彼は前のレイヤーを参照していると思いますか? tanhtanhtanh推奨する他の機能はありますか?より急な勾配は、消失する勾配を遅らせますか? sigmoidsigmoidsigmoidが望ましい状況はありますか? 数学的に軽く、直感的な回答が望ましい。


1
ゼロ中心でないアクティベーション関数が逆伝播で問題になるのはなぜですか?
私はここで次を読みました: シグモイド出力はゼロ中心ではありません。これは、ニューラルネットワークの処理の後の層のニューロン(これについては後ほど説明します)がゼロ中心でないデータを受信するため、望ましくありません。これは、勾配降下中のダイナミクスに影響を与えます。ニューロンに入るデータが常に正の場合(たとえば 、f = w T x + bでx>0x>0x > 0要素単位)、逆伝播中の重みwの勾配は次の いずれかになります。すべて正またはすべて負(式全体の勾配fに依存) f=wTx+bf=wTx+bf = w^Tx + bwwwfff)。これにより、重みの勾配更新に望ましくないジグザグダイナミクスが導入される可能性があります。ただし、これらの勾配がデータのバッチ全体で加算されると、重みの最終更新に可変符号が付き、この問題が多少緩和されることに注意してください。したがって、これは不便ですが、上記の飽和した活性化の問題と比較して、それほど深刻な結果はありません。 すべてのx>0x>0x>0(要素ごと)がwwwすべて正またはすべて負の勾配になるのはなぜですか?

1
ResNet経由の勾配バックプロパゲーションは接続をスキップします
ResNetモジュール/スキップ接続を使用してニューラルネットワークを介して勾配がどのように逆伝播されるかについて興味があります。ResNetに関するいくつかの質問(スキップレイヤー接続のニューラルネットワークなど)を見てきましたが、これは特にトレーニング中の勾配の逆伝播について尋ねています。 基本的なアーキテクチャは次のとおりです。 この論文「画像認識のための残差ネットワークの研究」を読み、セクション2で、ResNetの目標の1つが、勾配がベースレイヤーに逆伝播するためのより短い/より明確なパスを可能にすることについて話します。 勾配がこのタイプのネットワークをどのように流れているのか説明できますか?加算操作、および加算後のパラメーター化されたレイヤーの欠如が、より良い勾配伝播を可能にする方法をよく理解していません。加算演算子を介して流れるときに勾配が変化せず、乗算なしで何らかの形で再配布される方法と関係がありますか? さらに、グラデーションがウェイトレイヤーを通過する必要がない場合、消失するグラデーションの問題がどのように軽減されるかを理解できますが、ウェイトを通るグラデーションフローがない場合、逆方向パス後にどのように更新されますか?

3
ニューラルネットワークで勾配降下を使用する理由
逆伝播アルゴリズムを使用してニューラルネットワークをトレーニングする場合、勾配降下法を使用して重みの更新を決定します。私の質問をされています。むしろ、ゆっくりと一定の重量に対して、最小点を見つけるために勾配降下法を使用するよりも、なぜ私たちは派生しないでください、そして、誤差を最小にする重みの値を見つけますか?d(Error)dw=0d(Error)dw=0\frac{d(\text{Error})}{dw}=0www また、逆伝播におけるエラー関数が最小になると確信しているのはなぜですか?代わりに、エラー関数が最大値であることがわかりませんか?任意の重みと入力ベクトルを持つ任意の数の隠れノードを持つネットワークが常に最小値を持つエラー関数を与えることを保証する、スカッシュ関数の特定のプロパティはありますか?

2
ニューラルネットでは、なぜ他のメタヒューリスティックではなく勾配法を使用するのですか?
深くて浅いニューラルネットワークのトレーニングでは、他のメタヒューリスティックとは対照的に、勾配法(勾配勾配、Nesterov、Newton-Raphsonなど)が一般的に使用されるのはなぜですか? メタヒューリスティックとは、シミュレートされたアニーリング、アリのコロニーの最適化などの方法を意味します。これらの方法は、局所的な最小値にとどまることを避けるために開発されました。

2
重みを同じ値に初期化すると、逆伝播が機能しないのはなぜですか?
すべての重みを同じ値(たとえば0.5)に初期化すると、逆伝播が機能しないのに、乱数を指定すると正常に機能するのはなぜですか? 重みが最初は同じであるという事実にもかかわらず、アルゴリズムはエラーを計算してそこから機能するべきではないでしょうか?

2
バックプロパゲーションアルゴリズム
多層パーセプトロン(MLP)で使用される逆伝播アルゴリズムについて少し混乱しました。 エラーはコスト関数によって調整されます。バックプロパゲーションでは、隠れ層の重みを調整しようとしています。私が理解できる出力エラー、つまりe = d - y[添え字なし]。 質問は次のとおりです。 隠れ層のエラーはどのようにして得られますか?どのように計算しますか? バックプロパゲートする場合、重みを更新するために、適応フィルターのコスト関数として使用する必要がありますか、または(C / C ++で)プログラミングの意味でポインターを使用する必要がありますか?

1
(ミニ)バッチグラジエントのグラジエントの合計または平均は適切ですか?
ミニバッチグラジエントを適切に実装したとき、トレーニングバッチのすべての例のグラジエントを平均しました。しかし、私は今、最適な学習率がオンライン勾配まともな場合よりもはるかに高いことに気づきました。私の直感では、これは平均化された勾配のノイズが少ないため、より速く追跡できるためです。したがって、バッチの勾配を合計するだけでも理にかなっています。とにかく、値は正と負になります。 学習率を使用してバランスを取ることができるのは、単なる一定の要因であることは知っています。しかし、ニューラルネットワークの論文から結果を再現できるように、科学者が合意した定義はどれかと思います。 通常、バッチの合計勾配をバッチサイズで除算しますか?

3
RNNで時系列に逆伝播するのはなぜですか?
リカレントニューラルネットワークでは、通常、いくつかのタイムステップを順方向に伝播し、ネットワークを「展開」してから、入力シーケンス全体に逆方向に伝播します。 シーケンスの個々のステップごとに重みを更新しないのはなぜですか?(切り捨ての長さ1を使用するのと同じで、展開するものは何もありません)これにより、消失勾配の問題が完全に排除され、アルゴリズムが大幅に簡素化され、おそらくローカルミニマムで動けなくなる可能性が低くなり、最も重要なことにはうまく機能するようです。この方法でモデルをトレーニングしてテキストを生成しましたが、結果はBPTTトレーニングモデルで見た結果に匹敵するようでした。混乱しているのは、これまで見たRNNに関するすべてのチュートリアルが、BPTTを使用するように言っているからです。まるで適切な学習に必要であるかのように、そうではありません。 更新:回答を追加しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.