乾物|非常に詳細なニューラルネットワークエントリの説明

Python.NN(1)ニューラルネットワークの概要

1

マルチタスク分類にパーセプトロンを使用する

Pythonでパーセプトロンを導入したとき・SVM(1)・パーセプトロン乾物| SVM(1)・最も包括的なパーセプトロンの要約では、次の式を使用し乾物|非常に詳細なニューラルネットワークエントリの説明ました。サンプルのy要件は正または負のみになります1。 。

もちろん、これは2つの分類タスクでは問題ありませんが、複数の分類タスクではいくつかの問題があります。

さまざまな方法を使用して、バイナリ分類モデルに複数分類タスクを実行させることができますが、これらの方法は一般的に面倒です。

モデルを複数の分類タスクに自然に適応させるために、通常、サンプルのyをワンホットベクトルとして取得します。

乾物|非常に詳細なニューラルネットワークエントリの説明
この時点で、私たちのパーセプトロンは次のようになります(n次元の特徴を持つN個のサンプルのK分類タスクを例として取り上げます。簡潔にするために、オフセットbは省略されています):(
乾物|非常に詳細なニューラルネットワークエントリの説明
純粋なマウスの描画を参照してください。とても醜い描きました|
このとき、モデルの表現が変わり乾物|非常に詳細なニューラルネットワークエントリの説明ます。元の出力は数値ですが、変換後の出力はK次元のベクトルであることに注意してください。

このため、以前に定義した損失関数(乾物|非常に詳細なニューラルネットワークエントリの説明)を単純に使用することはできませんが、新しい損失関数を定義する必要があります。

私たちの目標はモデル出力ベクトル乾物|非常に詳細なニューラルネットワークエントリの説明と実際の(乾物|非常に詳細なニューラルネットワークエントリの説明)ラベルベクトルを「より近く、より良く」することであり、「距離」は「距離」の自然な尺度であるため、損失関数を定義するユークリッド距離は比較です自然。

具体的には、損失関数を次のように定義できます。乾物|非常に詳細なニューラルネットワークエントリの説明

損失の後、派生物を見つけることができます。次に書いた式は明白に見えますが、マトリックスの導出作業を行っているため、その背後にある実際のロジックは実際にはそれほど明白ではないことに注意してください。

興味のあるオーディエンスマスターは、この記事Matrix Derivationを見ることができます。これが直接の結果です。詳細は、記事の最後に添付されます。
乾物|非常に詳細なニューラルネットワークエントリの説明

これを使用して、対応する勾配降下トレーニングアルゴリズムを記述できます。
乾物|非常に詳細なニューラルネットワークエントリの説明

モデルのパフォーマンスは次のとおりです。

乾物|非常に詳細なニューラルネットワークエントリの説明

現時点では、正解率は約50%です。

モデル出力の対角線上に基本的にカテゴリがないことがわかります(そしてこのカテゴリが最も多いです)。これは、パーセプトロンをマルチカテゴリモデルに拡張しても線形モデルの性質が変わらないためです。分類効果は依然として線形であるため、対角線の境界に適合できません

2

パーセプトロンからニューラルネットワークへ

では、どのようにしてパーセプトロンを非線形モデルにすることができるのでしょうか。特に:

  • 既存のパーセプトロンには2つのレイヤー(入力レイヤーと出力レイヤー)しかありません。さらにレイヤーを追加できますか?
  • 直感的に言えば、カーネルメソッドは特定の条件を満たすカーネル関数を使用してサンプル空間を高次元空間にマッピングします。条件を緩和して一般的なより良い関数を使用すると、効果がありますか?
    これら2つのアイデアに基づいて、上記のパーセプトロンモデルの構造を次の構造にすることができます。

乾物|非常に詳細なニューラルネットワークエントリの説明

それらの中で、私たちは通常(合計N個のサンプルを想定):

  • 乾物|非常に詳細なニューラルネットワークエントリの説明「アクティベーション機能」と呼ばれます
  • と呼び乾物|非常に詳細なニューラルネットワークエントリの説明、それ乾物|非常に詳細なニューラルネットワークエントリの説明は重み行列です
  • 中央に追加されたレイヤーを「非表示レイヤー」と呼びます。簡潔にするために、後で説明するときに、非表示レイヤーの1つのレイヤーのみが追加されると考えます。複数のレイヤーの場合については、次の記事で説明します。
  • 図の各円を「ニューロン」と呼びます。例として上の写真を見てください:
  • 入力層にはn個のニューロンがあります
  • 隠れ層にはm個のニューロンがあります
  • 出力層にはK個のニューロンがあります。
    次に、アクティベーション関数は実際には上記の一般的で優れた関数です。記事の最後に、一般的に使用されるアクティベーション関数の関連する紹介を添付します。ここでは、アクティベーション関数が以前にSVMで使用したものであると一時的に想定します。私が見たReLU、つまり、私は信じています乾物|非常に詳細なニューラルネットワークエントリの説明

この構造は非常に強力に見えますが、導関数を見つけるのは非常に困難です(損失関数は引き続き使用されます(結果のみが示され、詳細は記事の最後に添付されています)。

乾物|非常に詳細なニューラルネットワークエントリの説明

その中で、「*」は乗算の要素ごとの操作(またはもう少し専門的な用語ではハダマール積)を表し、ReLU 'はReLU関数の派生物を表します。乾物|非常に詳細なニューラルネットワークエントリの説明ReLUの場合があるので乾物|非常に詳細なニューラルネットワークエントリの説明、その導出も非常に簡単です。
乾物|非常に詳細なニューラルネットワークエントリの説明

これらの2つの導出式を使用すると、対応する勾配降下アルゴリズムを比較的簡単に実装できます。
乾物|非常に詳細なニューラルネットワークエントリの説明

モデルのパフォーマンスは次のとおりです。
乾物|非常に詳細なニューラルネットワークエントリの説明
乾物|非常に詳細なニューラルネットワークエントリの説明

まだ比較的悪いですが(正解率は約70%)、すでに見た目はあります

3

Softmax + CrossEntropyを使用する

少し大きいトレーニングレートはモデルを直接爆発させるため、上記のモデルのトレーニングレートのデフォルト値をに調整したことがオーディエンスマスターによって発見された可能性があります。

これは、最後のレイヤーを変更せず、単純かつ大まかに使用したためです乾物|非常に詳細なニューラルネットワークエントリの説明これにより、最終モデルの出力が空を突破する可能性が高くなりますが、これはもちろん私たちが見たいものではありません

ラベルが乾物|非常に詳細なニューラルネットワークエントリの説明ベクトルであることを考えると、別の観点からは、実際には確率分布ベクトルです。では、モデルの出力を確率ベクトルに変換できますか?

実際、よく知られているSoftmaxはまさにこの仕事をします。具体的には、現在ベクトルがある場合乾物|非常に詳細なニューラルネットワークエントリの説明、次のようになります。
乾物|非常に詳細なニューラルネットワークエントリの説明

これが確率ベクトルであることを理解することは難しくなく、直感的な観点からは非常に合理的です。

Softmaxの実際のアプリケーションでは、数値の安定性を向上させるためのちょっとしたトリックがあります。詳細は記事の最後に添付されるので、一時的に押します。

したがって、Softmaxを適用した後、モデルの出力は確率ベクトルになります。

現時点では、ユークリッド距離を損失関数として使用できることは事実ですが、一般的には、損失関数としてクロスエントロピーを使用することをお勧めします。

具体的には、2つのランダム変数乾物|非常に詳細なニューラルネットワークエントリの説明(真の値)と乾物|非常に詳細なニューラルネットワークエントリの説明(予測値)のクロスエントロピーは次のとおりです。
乾物|非常に詳細なニューラルネットワークエントリの説明

クロスエントロピーには、次の2つのプロパティがあります。

  • 真の値が0()の場合、クロスエントロピーは実際乾物|非常に詳細なニューラルネットワークエントリの説明には、予測値が0乾物|非常に詳細なニューラルネットワークエントリの説明近いほど、クロスエントロピーは0近くなります。逆に、予測値が1になると、クロスエントロピーは無限大になります。
  • 真の値が1()の場合、実際のクロスエントロピーに対して、予測値が1に近い場合、クロスエントロピーは0に近くなりますが、予測値がゼロに近づくと、クロスエントロピーは無限大
    になり、クロスエントロピーを取得します。損失関数は合理的です。クロスエントロピーが実際に適用される場合、数値の安定性を向上させるための小さなトリックもあります。ログ0を回避するために、ログに小さな値を入れてください。

乾物|非常に詳細なニューラルネットワークエントリの説明

これら2つのことを追加した後、派生物を探します。

導出プロセスはより複雑ですが、驚くべきことに、最終結果は前の結果とほぼ同じであり、違いは倍数のみです(導出プロセスについては記事の最後を参照してください)。

乾物|非常に詳細なニューラルネットワークエントリの説明

したがって、対応する実装はほとんど同じです。

乾物|非常に詳細なニューラルネットワークエントリの説明
乾物|非常に詳細なニューラルネットワークエントリの説明

モデルのパフォーマンスは次のとおりです。
乾物|非常に詳細なニューラルネットワークエントリの説明
乾物|非常に詳細なニューラルネットワークエントリの説明

それでも完全ではありませんが、Softmax + CrossEntropyを使用しないモデルと比較して2つの利点があります。

  • トレーニングレートは大きく調整できます(vs)。これは、モデルが爆発しにくいことを意味します(一体何なのか)
  • モデルのトレーニングはより安定しています。つまり、各トレーニングの結果は類似しています。
  • 前のモデルとは対照的に、私が与えたモデルのパフォーマンスは実際には慎重に選択されました;一般的に、そのパフォーマンスは実際にはこれに似ています(これは良い結果が無数のsbによって引き起こされる可能性が高いことを示しています結果は山積みになりました......):
    乾物|非常に詳細なニューラルネットワークエントリの説明

4

関連する数学的理論

1)一般的なアクティベーション機能

A、S状結腸:

乾物|非常に詳細なニューラルネットワークエントリの説明

乾物|非常に詳細なニューラルネットワークエントリの説明

B、魚:

乾物|非常に詳細なニューラルネットワークエントリの説明

乾物|非常に詳細なニューラルネットワークエントリの説明

C、逆:

乾物|非常に詳細なニューラルネットワークエントリの説明
乾物|非常に詳細なニューラルネットワークエントリの説明

D、ELU:
乾物|非常に詳細なニューラルネットワークエントリの説明
乾物|非常に詳細なニューラルネットワークエントリの説明

E、Softplus:
乾物|非常に詳細なニューラルネットワークエントリの説明
乾物|非常に詳細なニューラルネットワークエントリの説明

そして最近、SELUと呼ばれるアクティベーション機能が公開されました。この論文は102ページあります...興味のある視聴者は[1706.02515]自己正規化ニューラルネットワークを参照できます。

2)神経回路網における導関数の計算

簡潔に書くために、マトリックス導出の手法を使用して計算を実行しますが、複雑すぎるように見える場合は、この記事を参照して、定義により要素ごとに導出を探すことをお勧めします(実際、私はしばしば回避できません... …)

単純なものから複雑なものまで、最初にマルチクラスパーセプトロンの導出プロセスを見てみましょう。複数分類のパーセプトロンは次のように書くことができると前に述べました。ここで(N個のサンプルがあると仮定):
乾物|非常に詳細なニューラルネットワークエントリの説明

多くの人乾物|非常に詳細なニューラルネットワークエントリの説明が時間を見つけようとしますが、それは間違っているとは言えませんが、マトリックスルールガイドのベクトルが必要になりますが、問題が複雑になる可能性があります。

実際、マルチクラスパーセプトロンの本質は、ランダムベクトルの乾物|非常に詳細なニューラルネットワークエントリの説明特定のサンプル乾物|非常に詳細なニューラルネットワークエントリの説明予測する乾物|非常に詳細なニューラルネットワークエントリの説明ことですが、それは複数のサンプルの後に生成されたサンプルマトリックスにすぎません。したがって、マルチクラスパーセプトロンの本質は実際には乾物|非常に詳細なニューラルネットワークエントリの説明次のとおりです。

乾物|非常に詳細なニューラルネットワークエントリの説明

したがって、導出プロセスは、行列のスカラー導出に還元されます。

乾物|非常に詳細なニューラルネットワークエントリの説明

これから見ることができます乾物|非常に詳細なニューラルネットワークエントリの説明この特殊なケースを見つけた後、それをサンプルマトリックスのケースにどのように拡張する必要がありますか?

厳密な数学的記述はより面倒ですが(行列のベクトル化[「直線化」とも呼ばれます]などが必要)、次のように直感的に理解できます。

  • サンプルが1から複数に変化する場合、重み行列の導関数は1から複数の合計
    である必要があるため、合計プロセスを完了するために必要なのは行列乗算のみです。直感的に次のように書くことができることに注意してください。

乾物|非常に詳細なニューラルネットワークエントリの説明
乾物|非常に詳細なニューラルネットワークエントリの説明

その後
乾物|非常に詳細なニューラルネットワークエントリの説明

と同様

乾物|非常に詳細なニューラルネットワークエントリの説明

3)ソフトマックス+クロスエントロピー

乾物|非常に詳細なニューラルネットワークエントリの説明
乾物|非常に詳細なニューラルネットワークエントリの説明

あれは
乾物|非常に詳細なニューラルネットワークエントリの説明

あれは
乾物|非常に詳細なニューラルネットワークエントリの説明

この記事では、主にパーセプトロンを複数分類タスクに適用する方法と、直感的なアイデアを通じてより強力なモデル(ニューラルネットワーク)を取得する方法について説明します。パーセプトロンのレベルを深め、アクティベーション機能を適用します。

さらに、モデルをより安定させるためにSoftmax + CrossEntropyを適用する方法についても説明しました。

ただし、ここでの説明の範囲は、単一の隠れ層とReLUアクティベーション機能に限定されています。次の記事では、より一般的な状況を紹介し、ニューラルネットワークの能力を視覚化する方法を使用します。

推奨読書:

データを正規化する必要があるのはなぜですか?
ロジスティック関数とsoftmax関数の
ビデオ説明|すべてのニューラルネットワークパラメーターをすべて0に初期化できないのはなぜですか

全是通俗易懂的硬货!只需置顶~欢迎关注交流~

乾物|非常に詳細なニューラルネットワークエントリの説明

おすすめ

転載: blog.51cto.com/15009309/2553647