0

背景: 私は Python で、有名なアヤメのデータ セットから 3 つのクラスのアヤメを識別するように特別に設計された、ミニバッチの確率的勾配降下法を使用する 3 層ニューラル ネットワークを作成しています。入力層には、データ内の各特徴に 1 つずつ、計 4 つのニューロンがあります。隠れ層には 3 つのニューロンがあり (ただし、コードでは隠れ層のニューロン数のバリエーションが許可されています)、出力層には 3 つのニューロン (種ごとに 1 つ) があります。すべてのニューロンはシグモイド活性化関数を使用します。

問題: 損失 (平均二乗誤差) は通常、時間の経過とともに減少しますが、精度 (通常は 55.55% または 33.33% 未満) は停滞しています。さまざまなエポック反復数と学習率を試してみましたが、何も機能しませんでした。興味深いことに、多くの場合、アルゴリズムの出力は入力値に関係なく固定されたままです。エポックの数が増えるにつれて損失が減少しているように見えるので、私は自分の数学にかなり確信を持っています。

問題を再現するには: Python コードを実行し、LEARNING_RESULTS.txt ファイルを確認します。(リポジトリ内の iris.txt ファイルが同じディレクトリにあることを確認してください)

質問: このニューラル ネットワークのパフォーマンスを改善するにはどうすればよいですか?

GitHub リポジトリへのリンク: https://github.com/kwonkyo/neural-networks

ありがとう!

更新: 問題は解決しました。ミニバッチ勾配行列の合計ではなく、定数値 (ミニバッチ行列の合計の数値合計) を重み行列とバイアス行列に追加していました。更新されたコードは github にプッシュされました。

4

0 に答える 0