2つの入力ノード、2つの隠れノード、および出力を備えたニューラルネットワークは、バイアスがない場合にXOR問題を解決できると想定されていますか?それとも行き詰まる可能性がありますか?
4 に答える
バイアスをそのままにしておきます。入力の値は表示されません。
c
1対1のアナロジーの観点から、私はバイアスを直線方程式のオフセット値と考えるのが好きy = mx + c
です。これにより、ネットワークへの入力に影響されない独立した自由度がシステムに追加されます。
私が正しく覚えていれば、バイアスなしでXORを使用することはできません。
私はバイアスのないニューラルネットワークを構築しました。2x2x1アーキテクチャは280エポックでXORを解決します。これは初めてなので、どちらの方法もわかりませんでしたが、機能するので可能です。
よろしく、
はい、Relu(f(x)= max(0、x))のような活性化関数を使用すれば可能です。
このようなネットワークの重みの例は次のとおりです。
Layer1: [[-1, 1], [1, -1]]
Layer2: [[1], [1]]
最初の(非表示の)レイヤーの場合:
- 入力が[0,0]の場合、両方のノードで0がアクティブ化されます。ReLU(-1 * 0 + 1 * 0)= 0、ReLU(1 * 0 + -1 * 0)= 0
- 入力が[1,0]の場合、一方のノードは0 ReLU(-1 * 1 + 1 * 0)= 0のアクティブ化を持ち、もう一方のノードは1 ReLU(1 * 1 + -1 * 0)=1のアクティブ化を持ちます。
- 入力が[0,1]の場合、一方のノードは1 ReLu(-1 * 0 + 1 * 1)= 1をアクティブにし、もう一方のノードは0 ReLU(1 * 0 + -1 * 1)=0をアクティブにします。
- 入力が[1,1]の場合、両方のノードで0がアクティブ化されます。ReLU(-1 * 1 + 1 * 1 = 0)= 0、ReLU(1 * 1 + -1 * 1 = 0)= 0
2番目の(出力)レイヤーの場合:重みは[[1]、[1]]であるため(ReLUにより前のレイヤーからの負のアクティベーションはあり得ない)、レイヤーは単にレイヤー1のアクティベーションの合計として機能します。
- 入力が[0,0]の場合、前のレイヤーのアクティベーションの合計は0です。
- 入力が[1,0]の場合、前のレイヤーのアクティベーションの合計は1です。
- 入力が[0,1]の場合、前のレイヤーのアクティベーションの合計は1です。
- 入力が[1,1]の場合、前のレイヤーのアクティベーションの合計は0です。
この方法は上記の例では偶然に機能しますが、XOR問題のFalseの例ではゼロ(0)ラベルを使用するように制限されています。たとえば、Falseの例に1つ、Trueの例に2つを使用した場合、このアプローチは機能しなくなります。