問題タブ [gradient-descent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 遺伝的アルゴリズム: 突然変異の場所を駆動する部分に名前を付ける
質問を設定するために、例から始めましょう。
1000 個の配列 (別名、行ベクトル) のセットがすべて同じ長さであるとします。それぞれに -1 から 1 までの乱数が入ります。次に、これらの行ベクトルを 500 個ランダムに取り出して合計します。合計から始めて、元の 1000 からの選択をリバース エンジニアリングしたいと考えています。
これを遺伝的アルゴリズムで解決することにしました。1000 ビット長のビット文字列のファミリを開始し、変異 (別名、ランダム ビットの反転) とクロスオーバーの手順を実行します。10 分の 1 秒後、75% 正解です。それからさらに 1 時間後、76% 正解です。基本的に、数十ビットが正しく設定されるのを永遠に待っています。私の乱数ジェネレーターは、ソリューションにマージできる方法でそれらを導入しない可能性があります。
このアルゴリズムは、最初は非常にうまく機能しますが、ソリューションをさらに改善することはできません。私は、私の遺伝的ファミリーが可能なすべてのビット位置の1つを持っていることを確認しようとしました. それは役に立ちませんでした。アイテムがプールから消える速さを判断することはできません。
アルゴリズムには追加のコンポーネントが必要なようです。フリップ ビット (別名、ミューテーション) の位置の選択を駆動する何かがあるに違いありません。この作品の専門用語は何ですか? 勾配?それはどこから来たのですか?
artificial-intelligence - ANN: 極小値を回避するために初期重みを正しく選択する方法は?
バックプロパゲーション トレーニングでは、誤差曲面を下る勾配降下中に、隠れ層に大量のニューロンを含むネットワークが局所的最小値でスタックする可能性があります。すべての場合に重みを乱数に再初期化すると、最終的にこの問題が回避されることを読みました。これは、「正しい」初期重み値のセットが常に存在することを意味します。(これは想定しても安全ですか?)
それらを見つけるアルゴリズムを見つけるか、作成する必要があります。
私はアルゴリズムをグーグルで調べてみましたが、自分で考案しようとしましたが、役に立ちませんでした。誰でも解決策を提案できますか? おそらく私が検索できるアルゴリズムの名前ですか?
注:これは通常のフィードフォワード3層ブリトーです:)
注: その目的で GA を使用する試みが行われたことは知っていますが、ネットワークが十分に大きくなると、反復ごとにネットワークを再トレーニングする必要があり、時間がかかります。
前もって感謝します。
python - Pythonとnumpyを使用した勾配降下
上記のコードからの私のシータは ですが、正しい matlab にある100.2 100.2
はずです。100.2 61.09
machine-learning - バックプロパゲーション、すべての出力は 1 になる傾向があります
MATLAB でこのバックプロパゲーションを実装していますが、トレーニングに問題があります。トレーニング フェーズの早い段階で、すべての出力が 1 になります。入力データ (バイナリ ターゲット ベクトルの生成に使用される目的のクラスを除く) を間隔 [0, 1] に正規化しました。私は、Artificial Intelligence: A Modern Approach、Norvig et al. での実装について言及してきました。
私のコードに対して疑似コードをチェックした(そしてしばらくの間アルゴリズムを研究した)が、エラーを見つけることができません。私は MATLAB をそれほど長く使用していないので、必要に応じてドキュメントを使用しようとしています。
また、隠れ層のさまざまな量のノードとさまざまな学習率も試しました ( ALPHA
)。
ターゲット データのエンコーディングは次のとおりです。ターゲットがたとえば として分類される場合2
、ターゲット ベクトルは[0,1,0]
、それが1
だっ[1, 0, 0]
たとします。1
また、(たとえばクラスの場合)など、ターゲットにさまざまな値を使用してみました[0.5, 0, 0]
。
体重の一部が を超え1
、正味の値が大きくなっていることに気付きました。
machine-learning - 線形回帰を解析的に解くことができるのになぜ勾配降下なのか
線形回帰空間で勾配降下を使用する利点は何ですか? 問題を解決できるように見えますが (コスト関数を最小にする theta0-n を見つけます)、なぜ勾配降下法を使用して同じことをしたいのでしょうか? ありがとう
matlab - 複素数値ニューラル ネットワーク (CVNN) エラー発散
私は現在、複素数値ニューラル ネットワーク (CVNN) に関する学部論文に取り組んでいます。私のトピックは、実数値分類問題のための単層複素数値ニューラル ネットワークに基づいています。与えられたデータセットを分類するために勾配降下学習規則を使用しています。下:
ここで使用したアルゴリズムは、Complex valued neuron (CVN) Modelというラベルの付いた次の PDF の946 ページにあります。メインのアルゴリズムは、そのトピックのセクション 3にあります。
しかし、収束する代わりに、私の誤差曲線は発散特性を示しています。これが私の誤差曲線の出力です。
私はMATLABでこの背後にあるコードをシミュレートしています。私の実装も以下に示します。
データセットのこの反対の特性の背後にある理由をまだ理解できませんでした。これに関するあらゆる種類の助けをいただければ幸いです。
machine-learning - 勾配降下最適化法が使用されている場合、新しいデータからどのように学習するのですか?
最終的に勾配降下法を使用する状況を考えてみましょう。トレーニング セットに適合し、正常に機能する仮説の作成に成功したと仮定します。しばらくすると、アルゴリズムは学習する必要のある新しいデータをどんどん受け取ります。
質問: 1) このアルゴリズムは引き続き管理されていると見なすことができますか?
2)もしそうなら、すべての ( new + old ) data を再度反復せずに新しいデータから学習する方法はありますか?