私は数学者ではありません。私は数学のパズルを楽しんでいますが、自分の弱点を心から認めています。そうは言っても、私は常にニューラル ネットワークに興味があり、ゼロから実装するのに十分な理解を持っていますが、数学的な証明しか見つけることができない概念を理解する必要があるときに壁にぶつかります。式の代わりにコードを使用して実際的な理由を説明しているニューラル ネットワークのプログラマ向けガイドはどこにありますか?
5 に答える
別の代替案は、非数学、非プログラミングの説明です。本Blondie24: Playing at the Edge of AIには、ニューラル ネットワークの非常に優れた説明が含まれています。作者が開発したチェッカーAIの話です。プログラミング リファレンスがまったくないわけではありませんが、ソリューションのコードに触れなくても、アルゴリズムがどのように機能するかを説明するのに優れています。
残念ながら、すべての概念を提供する優れた単一の「プログラマー向けソース」があるかどうかはわかりません。Neural and Adaptive Systems: Fundamentals through Simulationsが好きでした。
ニューラル ネットワークの「プログラマーの理解」を得るための最良の方法は、コードを調べることではなく、問題と正しい結果を調べることです。したがって、数学を見たくない場合は、特定の問題を見ることをお勧めします。たとえば、非線形活性化関数が必要な理由の例として XOR 問題を考えてみましょう。変数の数と可能な値を調べて、ニューラル ネットワークが特定のサイズとトポロジである必要がある理由を理解してください。データをトレーニング/テスト体制に分割し、調査を行って、オーバーフィッティングが危険な理由を確認します。データを使用してコードを調べます。
また、あまりハングアップせずに、さらに読むことをお勧めします。フィードフォワード ネットワークの特定のプラクティスは、再帰的で建設的なニューラル ネットワークでの一般化を確認すると、より明確になります。ベイジアン ネットワーク、ファジー認知マップ、SOM、ボルツマン マシン、シミュレーテッド アニーリング、強化学習にはすべて直感があります。
これはあなたの質問に答える方向に進んでいますか?
私は個人的に使用しました:
C++ での実践的なニューラル ネットワークのレシピ
私の意見では、著者は C++ のより強力な機能を十分に活用していません。多くの場合、クラスを使用した従来の C のように読みます。この本も今では少し古くなっています。
ただし、ニューラル ネットワークで使用されるアルゴリズムとテクニックの説明が必要な場合は、インテリジェントな素人が理解できる方法で説明されているため、離れて自分でこれらのことを試すことができます。この本を試してみてください. ここではへそを見つめることはあまりありません。それが私が気に入ったことです。
ニューラル ネットワークをプログラミングするために必要なすべての主要事項 - エラー信号を取得するために実際の出力を目的の出力と比較する方法、およびこのエラー信号をバック プロパゲーション アルゴリズムと組み合わせて使用してネットワーク リンク接続を変更する方法について説明します。これを繰り返し行うことで、ニューラル ネットワークがタスクを徐々に「学習」します。
ほぼこのタイトルで記事を書きました。この記事では、データがニューラル ネットワークにどのように表現されるか、およびサポート ベクター マシンなどの他の機械学習方法について説明します。
http://www.heatonresearch.com/content/non-mathematical-introduction-using-neural-networks
Pascal または Delphi について少し理解する必要がありますが、ThinkQuest からのこの概要は、プログラミングの観点から非常に役立ちます。また、いくつかの難しさと、数学が少し威圧的に見える理由についても説明します。(私は数学者でもありません。)
私はしばらく前にこの種のことにかなり興味を持っていました (ほとんどの場合はまだです)。
少なくとも少しは役立つことを願っています。