私は長い間ニューラルネットワークに興味がありましたが、視聴者の観点からのみ-従来のプログラミングと比較して、それらが提供する新しい機会を追いました。 しかし、彼は決して理論や実践に登りませんでした。 そして、突然(AlphaZeroについてのセンセーショナルなニュースの後)、ニューラルネットワークを作りたかったのです。 このトピックに関するいくつかのレッスンをYouTubeで視聴した後、理論を少し理解し、実践しました。 最終的には、ニューラルネットワークよりも優れた成果を上げました。 その結果、ニューラルネットワークの設計者と視覚的支援が得られました(つまり、ニューラルネットワーク内で何が起こっているかを見ることができます)。 これは次のようなものです。
そしてもう少し。 このコンストラクターを使用すると、最大30ニューロンまでの各層に最大8つの隠れ層(および入力層と出力層、合計10層(通常は4層で十分です))の直接分散ネットワーク(フィードフォワードニューラルネットワーク)を作成できます(制限はコメントにリクエストがある場合、これらすべてが同時に画面に表示されるという事実は、制限と視覚化なしでバージョンをリリースします)。 すべてのニューロンの活性化関数は、ロジスティック関数に基づくシグモイドです。 与えられた例に従って、勾配降下による誤差の逆伝播の方法により、結果のネットワークを訓練することも可能です。 そして、最も重要なのは、個々のケースの各ニューロン(それが渡す値、そのバイアス(補正、バイアス)-負のバイアスを持つニューロンは白、正のバイアスを持つ-明るい緑)、ニューロンの重みに依存する接続を見ることができることです赤-プラス、青-マイナスでマークされ、厚さも異なります-重量係数が大きいほど厚くなります。 また、マウスをニューロンの上に置くと、どの信号がニューロンに到達し、どの特定のオフセットがあるかを確認できます。 これは、特定のネットワークがどのように機能するかを理解したり、直接配信ネットワークがどのように機能するかを学生に示すのに役立ちます。 しかし最も重要なことは、ネットワークをファイルに保存し、世界中の人と共有できることです。
次に、プログラムを使用する手順、作成したネットワークをプロジェクトに埋め込む手順、およびキットに含まれるいくつかのネットワークの分析があります。
コンストラクターの使用方法
開始するには、 こちらからアーカイブをダウンロードしてください 。
ドライブ
D:\
ルートに解凍し
D:\
NeuroNet.exe
実行
NeuroNet.exe
ネットワークを「ダウンロード」してみて、それを見て、「トレーニング」をクリックして、その精度を確認し、左(右)(左右)に矢印を突いて、入力(ニューロンの左列)と出力(右)データの異なるオプションを確認し、 [停止]をクリックして、入力データの入力を試みます(0から1までの任意の値が許可されます。ネットワークを作成し、入力データと出力データを正規化するときにこれを考慮してください)。
次に、ネットワークの構築方法。 まず、ネットワークアーキテクチャ(各レイヤーのニューロンの数をコンマで区切る)を設定し、「ビルド」をクリックします(または、別のネットワークが既に画面に表示されている場合は最初に「分解」し、ビルドします)、「トレーニングサンプル」、「すべて削除»画面の指示に従ってトレーニングの例を入力します。 また、出入りする小さな正方形の画像(最大5x5ピクセル)を指定することもでき、そこから正規化されたピクセルの輝度値が決定されます(色を考慮せず)。それぞれ「in」と「out」をクリックする必要があります。 「例の追加」をクリックして、必要な回数だけ手順を繰り返します。 「完了」、「トレーニング」、および精度の満足度(通常98%)をクリックし、「停止」、ディスクアイコン(保存)をクリックして、ネットワークに名前を付けて、自分でニューラルネットワークを作成したことを嬉しく思います。 さらに、「もっと正確/より速く」スライダーで学習速度を設定できます。また、必要に応じて、50番目のステップではなく、10番目または300番目ごとに視覚化できます。
作成したネットワークをプロジェクトに統合
自分のプロジェクトでニューラルネットワークを使用するために、次のパラメーターで実行する必要がある別の
doNet.exe
アプリケーションを作成しました。「
D:\NeuroNet\doNet.exe < > < >
」、アプリケーションの動作が完了するまで待ちます。
D:\NeuroNet\temp.txt
からの出力の読み取り
D:\NeuroNet\temp.txt
たとえば、アプリケーション4-5.exeは、4-5ネットワークを使用して作成されました(このネットワークおよび以下の他のネットワークについて)。 このアプリケーションは、doNet.exeを正しく実行する方法を詳しく説明しています
含まれるネットワークの分析
古典から始めましょう-「XOR(Half Adder)」。 特に、このタスク(モジュロ2加算)は、1969年にニューラルネットワーク(つまり、単一層パーセプトロン)の制限の例として引用されました。 一般に、2つの入力があり(それぞれ0または1のいずれかの値を使用)、入力の値が異なる場合は1、同じ場合は0を答えることがタスクです。
以下は「数量単位」です。 3つの入力(それぞれ0または1)。 送信されたユニット数を計算する必要があります。 分類タスクとして実装-各回答オプションに4つの出力(0、1、2、3単位)。 最大値がどの出力にあるのか、答えはそれに対応しています。
「乗算」-2つの入力(0〜1の実数)、それらの積の出力。
「4-5」-4x4画像のピクセルの正規化された輝度値が入力に送られ、出力では5x4画像のピクセルの正規化された輝度値があります。
ネットワークは、大きな画像の品質を25%上げる方法を考えましたが、写真用の興味深いフィルターが出てきました。
UPD: NeuroNet2.exeアプリケーションがアーカイブに追加されました(同じコンストラクター、ただし視覚化なし(2倍速く動作するため)、レイヤー内のニューロン数の制限(30ではなく1024まで)、およびトレーニングセットで入出力を適用することもできます) 32x32までの正方形の画像)。 トレーニングスケジュールも追加されました。 今、彼らは彼らの理論を知らない人をニューラルネットワークを使用することができます(そして彼らのプロジェクトに埋め込みます(サーバー上でさえ))! 半自動モードでは(手動で値を入力して結果を画面に表示することを学習した後)、プログラミングの知識がなくても使用できます!
それだけです、私はコメントを待っています。
PSエラーが発生した場合、管理者からcomdlg32ファイルをregsvr32に登録してみてください。これもアーカイブ内にあります。