多層パーセプトロンアルゴリズム(学習記録)
1. なぜ多層パーセプトロンアルゴリズムを導入するのですか?
パーセプトロンのトレーニング時に使用される疑似コードは次のとおりです。
initialize w=0 and b=0
repeat
if [yi<w,xi>+b] <=0 then
w = w+yixi and b = b+yi
end if
untill all classified correct
分類が正しければ、yi <w,xi>+b が正の値であることを意味します。そうでない場合は、分類が間違っていることを意味し、逆方向に伝播し続ける必要があります。したがって、パーセプトロンを訓練するときの損失関数は loss=Max(0,-y<w,x>) と定義でき、半径 r, y(wx+b)>=rou 以内の場合、次のように分類できます。 2つのカテゴリー。
ただし、線形モデルは間違いを犯すことが多いため、たとえば線形モデルを使用して xor データを実現する場合、それを適切に処理する方法がないため、多層パーセプトロン アルゴリズムを使用してモデルをトレーニングします。
2. Li Mu の多層パーセプトロンのアルゴリズム実装を見て、いくつかの機能に気づきました。
1 つ目は、 loss = nn.CrossEntropyLoss(reduction='none') ここでの corssentropyLoss は、クロス エントロピー損失を表します。では、クロスエントロピーとは何でしょうか?
1.1 情報量
(本セクションの内容は「深層学習フラワーブック」と「パターン認識と機械学習」を参照しています)
情報量の基本的な考え方は、ありそうもない出来事が起こり、私たちは非常に起こりそうな出来事が起こったよりも多くの情報を受け取るということです。
例で理解するために、次の 2 つのメッセージを受信したとします。
A: 今朝太陽が昇りました
B: 今朝日食があります
メッセージ A は非常に有益なので送信する必要はないと考えますが、メッセージ B は非常に有益です。この例を使用して、情報量の基本的な考え方を洗練させてみましょう: ① 発生する可能性が非常に高いイベントには情報を少なくし、極端な場合には、必ず発生することが保証されているイベントには情報を持たない; ② 発生する可能性が低いイベントには情報を含めない発生した場合は情報量が少なくなり、情報量が多くなります。イベントに含まれる情報の量は、その発生確率に反比例する必要があります。
それが離散確率変数であり、その値セットが次のとおりであり、イベントを定義する情報の量が次のようになると仮定します。
このうちlogは自然対数を表し、底はeです(底が2の対数を使用しているデータもあります)。式では、変数の値の確率です。この確率値は 0 ~ 1 の間に収まります。P が 0 ~ 1 のときの上記関数の値を描画します。イメージは次のとおりです。確率値が 0 に近づくと情報量は正の無限大になる傾向があり、確率値が 1 に近づくと情報量は 0 になる傾向があります。この関数は情報量の基本的な考え方を満たしており、情報量を説明するために使用されます。
1.2 エントロピー
(このセクションは「パターン認識と機械学習」を参照します)
上で示した情報量の式は、確率変数が特定の値をとる場合の情報量しか扱えませんが、シャノンのエントロピー(以下、エントロピー)を用いて、確率分布全体の平均的な情報量を記述することができます。具体的な方法は、上記の確率分布に関する情報量関数の期待値を求めることであり、その期待値(エントロピー)は次のようになります。
いくつかの例を計算して、エントロピーをより深く理解しましょう。
1.3 相対エントロピー (KL 発散)
(このセクションは「パターン認識と機械学習」を参照します)
確率変数の実確率分布が であると仮定し、実際の問題を扱うときのモデル化には近似分布を使用します。実数の代わりに is を使用しているため、値を指定するときにさまざまな分布の影響を打ち消すためにいくつかの追加情報が必要です。必要な追加情報の平均量は、相対エントロピー、または KL ダイバージェンス (カルバック・ライブラーダイバージェンス) を使用して計算できます。これは、2 つの分布間の差を測定するために使用できます。
KL ダイバージェンスの 2 つの特性を以下に紹介します。
① KL ダイバージェンスは対称量ではなく、
② KL 発散の値は、等号が ****1.4 クロスエントロピー**** を保持する場合に限り、常に 0 になります。
1.4 相互エントロピー
最後に、主役のクロス エントロピーがここにあります。実際、クロス エントロピーは、先ほど紹介した KL 発散と密接に関係しています。上記の KL 発散の式を変更してみましょう。
クロスエントロピーは次と等しくなります。
つまり、KL 発散公式の右半分 (負号付き) です。
注意深い友人は、これを確率変数の実際の分布とみなした場合、KL 発散の左半分は実際には固定値であり、KL 発散のサイズ変化は実際には右半分のクロス エントロピーによって決定されることを発見したかもしれません。右半分には近似分布が含まれているため、これをネットワークまたはモデルのリアルタイム出力とみなすことができ、KL 発散またはクロスエントロピーを実際のラベルとネットワーク予測結果の差とみなすことができます。ニューラルネットワークは学習により近似分布を真の分布に近づけることを目的としています。理論的には、KL ダイバージェンスの最適化は、クロスエントロピーの最適化と同じ効果があるはずです。したがって、深層学習において KL 発散ではなくクロスエントロピーの最適化を選択した理由は、計算を減らすためではないかと思いますが、結局のところ、クロスエントロピーは KL 発散より 1 つ少ない項目です。
ここのクロスエントロピーでは、著者に非常に感謝しています。元のリンクは http://t.csdn.cn/XPP3S の下にあります。
次に、実践的な深層学習 - 多層パーセプトロン: updater = torch.optim.SGD( params , lr=lr) は何に使用されますか?
ここのパラメータには [w1, b1, w2, b2] が含まれており、これらのパラメータはランダムな勾配で継続的に更新される必要があり、torch.optimはさまざまな最適化アルゴリズムを実装するライブラリです。torch.optimを使用するには、オプティマイザー オブジェクトを構築する必要があります。このオブジェクトは現在のパラメータの状態を保持し、計算された勾配に基づいてパラメータの更新を実行します。より使いやすくなりました。