0

私は初心者で、学校の目的で C# に Backpropagation を実装しようとしています (したがって、今のところ tensorflow はありません。手動で学習する必要があります)。入力層に 64 個のノード、出力層に 64 個のノードがあります。後で MLP について説明するため、Autoencoder 構造のようなものです。

デルタ出力を次のように計算しています。

delta_out = (y_out) * (1 - y_out) * (desired - y_out)

プログラムを XOR 入出力シナリオでテストしたところ、このシナリオでは正しく推測されますが、入出力の 64 ノードすべてを配置すると、正しい予測 (0% 精度など) が得られません。

また、すべての delta_out abs(delta_out) を合計しようとしています。XOR シナリオでは、トレーニングが進むにつれて delta_out の絶対合計がゼロに近づいています。しかし、64 の入力と出力のテストを選択すると、すべての delta_out の絶対合計は非常に小さい数値から始まり、そこにとどまります。

適切に機能する XOR (問題なく機能する OR テストと AND テストも試しました) については、入力用に 2 ノード、非表示用に 4 ノード、出力用に 1 ノードの次の構造を使用しました。

64 の入力と出力について、8 ノードから 128 ノードまで、さまざまな数のノードを非表示層にテストしました。非表示レイヤーに 64 個以上のノードを使用すると、最初からすべての delta_out の絶対合計が 0 に近くなり、変化が遅すぎます。

また、さまざまな学習率 (非表示層と出力層の異なる学習率) もテストしました。0.1 から 0.75 までテストしましたが、達成すべき 64 の入力/出力には役立たないようです。また、エポック数を 100k から 500k に変更しましたが、何も役に立たないようです。

バックプロパゲーションの概念をよく理解していないのでしょうか。

4

0 に答える 0