内容:
興味深い事実は、SVMは単なる別のタイプの非常に単純なスキーム(スコア= a * x + b * y + cを計算するスキームであり、a、b、cは重み関数、x、yはデータ入力ポイントです) ) より複雑な機能に簡単に拡張できます。 たとえば、バイナリ分類を実行する2層ニューラルネットワークを作成してみましょう。 今後は次のようになります。
上記の定義は、3つの隠れニューロン(n1、n2、n3)を持つ2層ニューラルネットワークであり、各隠れニューロンに対して整流線形要素(Rectified Linear UnitまたはReLU)の非線形性を使用します。 ご覧のとおり、いくつかのパラメーターがあります。つまり、分類器がより複雑になり、SVMなどの単純な線形決定ルールを使用するだけでなく、意思決定の境界を複雑にする可能性があります。 別の表現方法は、3つの隠されたニューロンのそれぞれが線形分類器であり、現時点ではそれらの上に追加の線形分類器を作成していることです。 では、さらに深く見ていきましょう:)。 それでは、この2層ニューラルネットワークをトレーニングしましょう。 コードは、上記のSVMコードの例と非常によく似ています。パッセージを前後に変更するだけです。
これが、ニューラルネットワークのトレーニング方法です。 当然、コードを慎重にブロックに分割する必要がありますが、すべてを明確かつ明確に説明できることを期待して、この例を具体的に示しました。 後で、これらのネットワークを使用するための最適な方法を検討し、コードをよりきちんとした、モジュール化された、より合理的な方法で構造化します。
それまでの間、2層ニューラルネットワークは実際にはそれほど難しくないという結論に達したと思います。フロントパスの式を記述し、結果として最後に値を解釈してから、この値を正または特定の例でこの値がどのようにあるべきかに応じて、負の方向。 エラーの逆伝播後にパラメーターを更新することにより、将来この特定の例を検討する際に、ネットワークが更新前に発行した値ではなく、必要な値を提供する可能性が高くなります。