0

通常、ニューラル ネットワークは、膨大な量のデータと並列計算を使用する必要があるという特徴があります。関数型言語は、ニューラル ネットワークの構築により適したものになりますか?

4

1 に答える 1

3

あまり。関数型言語は通常、不変性に固執する場合 (または、より正確には、制御されていない副作用を回避する場合)、並列化を簡単にします。そうしないと、非関数型言語よりも並列化が容易ではありません。この場合、次の 2 つのオプションがあります。

  • 副作用を使用しますが、ローカライズされた方法であるため、並列スレッドは互いに関係がありません。たとえば、多くの NN を評価すると、それぞれが独自のスレッドで発生する可能性があります ( CPU コアの数は良い考えです)。

  • ローカライズされていない副作用については、同期またはそれを制御する他の方法に依存する必要があります。そのような例の 1 つは、アクターの計算モデルです (関数型言語のユーザーには非常に人気がありますが、Java でも利用できます。http://akka.io/を参照してください)。これにより、通常、アクター内に副作用を持たせることができますが、俳優には厳しいルールがあります。これにより、低レベルのスレッド処理のビジネスから解放されます。

考慮すべきもう 1 つのことは、中程度のパフォーマンスの NN 実装を持つことはそれほど難しくないということです。純粋に機能的なものを持つこともそれほど複雑ではありませんが、両方を同時に行うことは困難な作業になる可能性があります。したがって、関数型言語の経験がない限り、並列化された NN を非関数型言語で、または少なくとも非純粋な方法で記述する方が簡単だと思います。

于 2012-10-03T07:51:10.430 に答える