各層のノードが含まれているとします。バックプロパゲーションを使用してこのNNをトレーニングする時間の複雑さは何ですか?mmxxnini私はアルゴリズムの時間の複雑さをどのように見つけるかについての基本的なアイデアを持っていますが、ここでは4つの異なる要因、すなわち反復、レイヤー、各レイヤーのノード、トレーニング例、そしてさらに多くの要因があります。ここで答えを見つけましたが、十分に明確ではありませんでした。DuttaAソースhttps://qr.ae/TWttzqも参照してください。nbro回答:9信頼できるソースからの回答を見たことはありませんが、簡単な例を使って(現在の知識で)これに自分で答えようとします。一般に、逆伝播を使用したMLPのトレーニングは通常、行列で実装されることに注意してください。行列乗算の時間の複雑さMij∗MjkMij∗Mjkの行列乗算の時間計算量は単純にO(i∗j∗k)O(i∗j∗k)です。ここでは、最も単純な乗算アルゴリズムを想定していることに注意してください。時間の複雑さがいくらか改善された他のアルゴリズムがいくつか存在します。フィードフォワードパスアルゴリズムフィードフォワード伝播アルゴリズムは次のとおりです。レイヤーiiからjjに移動するには、次のようにします。Sj=Wji∗ZiSj=Wji∗Zi次に、アクティベーション機能を適用しますZj=f(Sj)Zj=f(Sj)我々が持っている場合はNN(入力と出力層を含む)層を、これが実行されますN−1N−1回。例として、44層のMLPのフォワードパスアルゴリズムの時間計算量を計算してみましょう。ここで、iiは入力層のノード数、jjは2番目の層のノード数、kkはノードのノード数3番目の層とllは出力層のノードの数です。44レイヤーがあるため、これらのレイヤー間の重みを表すには33マトリックスが必要です。WjiWji、WkjWkj、WlkWlkでそれらを示しましょう。ここで、WjiWjiはjj行ii列の行列です(したがって、WjiWjiにはレイヤーiiからレイヤーjjへの重みが含まれます)。あなたが持っていると仮定tt訓練例を。レイヤーiiからjj伝播するには、最初にSjt=Wji∗ZitSjt=Wji∗Zitそして、この操作(すなわち、行列の乗算)はO(j∗i∗t)O(j∗i∗t)時間の複雑さを持ちます。次に、アクティベーション関数を適用しますZjt=f(Sjt)Zjt=f(Sjt)また、これは要素単位の操作であるため、O(j∗t)O(j∗t)時間の複雑さを持ちます。したがって、合計で、O(j∗i∗t+j∗t)=O(j∗t∗(t+1))=O(j∗i∗t)O(j∗i∗t+j∗t)=O(j∗t∗(t+1))=O(j∗i∗t)同じロジックを使用して、j→kj→kに進むにはO(k∗j∗t)O(k∗j∗t)があり、k→lk→lにはO(l∗k∗t)O(l∗k∗t)ます。algorithm逆伝播アルゴリズムは次のように進みます。maaartinus答えは同じだと思います。n_i、ご指摘のようにレイヤー間の合計。Akhgary弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。