Вводная статья об алгоритмах оптимизации (АО). Классификация. В статье предпринята попытка создать тестовый стенд (набор функций), который послужит в дальнейшем для сравнения АО между собой, и, даже, возможно, выявления самого универсального алгоритма из всех широко известных.
ブルートフォース・グリッドのノードが最適解に該当しないため、フル・ブルートフォース・サーチでは最適解が見つからない状況がある。
Maxim Dmitrievsky #:
1. Какой-нибудь конкретный критерий оценки кач-ва оптимизации есть?)
2. アルゴリズムがより多くの反復を必要とする場合、それは悪いことですか?
1.10,000アクセスという制限は「天井から」取ったものではありません。MetaTrader 5のオプティマイザーは、実用的な観点からこの数値を最適値として使用します。この数値は実用性の基準境界として使用されます。より多くの呼び出しを行うことはできますが、より強力なアルゴリズムを使用し、同じ結果をより速く達成できるのに、なぜ時間とリソースを無駄にするのでしょうか。この数値は閾値であり、異なるアルゴリズムを比較する際に使用される。
これは、考慮すべきアルゴリズムの品質を説明するもの である:
収束の正確さ
結果の再現性(ロバスト性)
スケーラビリティ(問題の次元が大きくなっても効率的に働き続ける能力)。
2.2.ランダムな点生成を使用する場合、FFの呼び出しが膨大になるのはまずいか?
3.全探索におけるFFへのアクセス回数が合理的な範囲内であれば、それを使うべきである。例えば200アクセスで済むのであれば、なぜAOが必要なのか?
ブルートフォース・グリッドのノードが最適解に該当しないため、フル・ブルートフォース・サーチでは最適解が見つからない状況がある。
その通りだ。そして、グリッドの縮小は、FFへの呼び出しの段階的増加につながる。ここからが、実生活における時間とリソースの制約下でのAOの実用的な適用領域の始まりである。
1. 。
1.1.質問するのは自由だが、完全なソースコードと正しい再現性のあるテストの立場から話す方が、常に建設的である。
2.90億人に、関数の表面は隠されている白紙にランダムに指を突っ込んでもらえば、2次元のメガシティで最適な結果を得ることができる(そのうちの1人は必ずグローバルに非常に近くなり、問題をうまく解いたのは自分だと言うだろう)。しかし、私たちは90億回の試行で最適解を見つけるのではなく、戦略を用いて1万回で最適解を見つける必要がある。
一連の独立したテスト(結果の安定性、再現性)の平均結果が高ければ高いほど、テストされた方法は特定のタイプの問題に対してランダムポークと比較して高い(ある問題に対してはランダムポークと大差ない方法もあれば、非常に効果的な方法もある)。
これは、異なるアルゴリズムをテストし比較するポイントであり、1つのテスト関数だけでなく、異なる特性を持つ3つの異なる関数をベンチマークとすることで、異なるタスクに対する異なるアルゴリズムの適用可能性、異なるタスクでの限界と能力を明確に見ることができる。これにより、最適化問題の解決に有意義な方法でアプローチすることができます。
今後は、記事の内容やコードに関する具体的な質問にお答えしたいと思います。
局所最適化の手法をグローバルな問題に適用し、グローバル最適化の手法と比較する。それが私の言っていることだ。
これらの方法をグローバル最適化に適応させる方法について話しているのです。最も単純な方法は、初期化の回数を増やすことです。
私の理解が正しければ、アダムなどは品質ではなくスピードのために磨かれる。
反復回数ではなく時間で制限した場合の評価を見るのは興味深い。
私の理解が正しければ、アダムなどはクオリティではなくスピードに磨きをかけている。
反復回数ではなく時間で制限した場合の評価を見るのは興味深い。
ADAMアルゴリズムファミリー(AdamW、RAdam、AdaBeliefなど)やSGD、SGRADなど(たくさんあります)は、古典的な勾配法に代わる現代的なアルゴリズムとして開発され、解析式の知識がなくても大きな次元の問題を解くことができるように設計されています。また、グーグル(2023年)の興味深いライオン法や、ごく最近のものもある。このトピックは、特にニューラルネットワークのトレーニングの文脈では、研究するのに非常に興味深く、いくつかの簡単な例(あるいは複雑な例)でターゲットサーフェスを構築し、実験(その内部を解析し、メソッドの特性を深く研究し、その能力を慎重に評価する - すべてが私たちの好きなように)を行うことが有用で有益であろう。
時間の制約があれば、何も縛られることはない。あるユーザーは1分間にターゲットに100万回アクセスするだろうし、別のユーザーは10億回アクセスするだろう。 このような状況でどうやってアルゴを比較できるだろうか?そのため、ヒット数に制限を設け、その制限内で効率を比較するのだ。
時間的な制約があれば、縛るものは何もない。あるユーザーは1分間にターゲットに100万回アクセスするが、別のユーザーは10億回アクセスする。 このような状況で、どうやって両者のアルゴを比較できるだろうか?そのため、ヒット数に制限を設け、その制限内で効率を比較するのだ。
筆者のPCにバインド。ANSの10000反復の時間を基準とする。
fxsaberのコードでの 結果:
追加指標としてのPSコードサイズ(アルゴリズムの実装がどれだけ複雑か)