質問: ### 問題 Javaでニューラルネットワークを実装しようとしております。 昔Pythonで実装しようとしましたが慣れていないこともあり挫折してしまったためメインで使っているJavaで実装しようとした次第です。 用途としては分類問題を学習させたいと思っており、勉強がてら作っている状態です(実用用途での予定は無し)。 順伝播の部分までは無事完成したのですが、途中でJavaの浮動小数点型には誤差が生じることを思い出しました。 順伝播の部分では手計算と同様の結果が出力されており問題はないものとみられます。 ただ逆伝播の部分では、0.0000......1単位の誤差なのですがこれはどのくらいの影響が出るのでしょうか? 最後の計算結果は多少変わっても最終的な分類に影響が出ないのであればこのまま浮動小数点で行こうと思っています。 ### ニューラルネットの構成 入力ユニット:可変(テスト時は3) 隠れ層のユニット:可変(テスト時2) 出力層のユニット:可変(テスト時2) 隠れ層の活性化関数:シグモイド関数 出力層の活性化関数:ソフトマックス関数 ### 試したこと 一時BigDecimalに置き換えようかとも思いましたが量が量ですので足踏みしております。 最終的な影響によっては置き換えるつもりです。
回答: そこまで影響しないが、特殊なケースでは問題になりうるという結論だったかと。 https://www.google.co.jp/amp/s/news.mynavi.jp/article/architecture-373:amp/