パーセプトロンは、入力のセットの重み付き線形結合を取り、結果が正か負かに応じて、1または0のいずれかを出力します。AIは、いわば重みによって達成され、これらがデータの分割を決定します。一方は正になり、もう一方は負になります。この分割は、グラフ上の線と考えることができます。たとえば、重みが線y = xを与える場合、入力x = 2、y = 4は正になり、入力x = -1、y=1は負になります。重みは、システムに正と負の入力のセットを提示し、トレーニングセットの出力が目的の出力と一致するまで重みを調整することによってトレーニングされます。
入力の数はピクセルの数によって与えられ、各ピクセルには独自の入力と関連する重みがあるため、重みは画像と同じサイズの配列です。
あなたの例では、予想されるノイズのある敵のターゲットの画像のセットが必要になります。これらに必要な出力は正であるため、すべての画像をパーセプトロンに提示し、出力を確認します。出力が1でない場合は、重みを調整します。次に、敵以外の画像を表示し、出力の0を確認します。そうでない場合は、重みを調整します。ポジティブ画像を表示し続け、1の出力をチェックし、ネガティブ画像は0をチェックし、これらが得られる出力になるまで重みを調整します。
最初、重みは小さな乱数に設定されます。実際の出力が、最初から目的の出力と一致しない場合は、次の式で各重みを調整します。
w(t + 1)= w(t)+ a(dy)x
したがって、新しい重みは、古い重みに必要な出力のアルファ倍から実際の結果を引いたものに入力を掛けたものになります(そのピクセルの場合)。
トレーニングが進むにつれて、アルファを変更できます。そもそもそれは大きいので、収束はすぐに起こります。時間が経つにつれて、収束を遅くしてより正確になるように数を減らすのが最善です。アルファ、学習率は0でなければなりません
したがって、Javaでは:
重みの配列を作成し、これらを小さな乱数に初期化します。
入力画像と対応する必要な出力のセットを作成します。
ランダムな画像を選択して、システムに提示します。-入力に重みを掛け、それらを合計して符号を見つけます。
出力を目的の出力と照合します。それらが同じである場合は、別の入力画像を選択してください。違いがある場合は、方程式で重みを調整してから、別の入力画像を選択します。
合計エラーが特定のしきい値を下回るまで、入力を表示し続けます。
システムがトレーニングされると、見えない画像がシステムに表示される可能性があります。敵のターゲットの場合、0ではないにしても1を出力します。
すべての詳細はオンラインのwikiページで見つけることができ、さらに多くの説明がありますが、うまくいけばそれが役立つことを願っています。