3Dデモを使用してさまざまな最適化アルゴリズムを理解します。これはC++プログラマーにとって朗報です。

3Dデモを使用してさまざまな最適化アルゴリズムを理解します。これはC++プログラマーにとって朗報です。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。

機械学習には、 SGDAdamAdaGradAdaDeltaなど、多くの最適化アルゴリズムがあります。それらの反復式だけでも、人々に頭痛の種を与えるのに十分です。

幸いなことに、これらの最適化ツールは TensorFlow、Keras、PyTorch に統合されていますが、ステップごとの反復でどのように最小値に「スライド」するかを本当にご存知ですか?

現在、機械学習最適化アルゴリズムのデモがあり、パラメータ調整が画像からのアルゴリズム結果に与える影響や、それぞれの長所と短所を直感的に感じることができます。

小さくなりました!開発者はデモを提供しているだけでなく、プログラマー向けの C++ データベースもパッケージ化しています。まずは試してみましょう。

デモを試す

試用方法は非常に簡単で、ソフトウェアをインストールする必要もありません。ensmallen の Web サイトにアクセスし、[デモ] タブを選択するだけで、一連の最適化アルゴリズムの 3D 概略図が表示されます。

デフォルトのページでは、一般的な Adam アルゴリズムが使用されています。パラメータが赤いルートをたどり、最終的に損失関数の最高点に下がることがわかります。

左側にはパラメータの初期値の場所(図の赤い点)があり、マウスで自由にドラッグできます。

中央と右のグラフはどちらも損失関数の「等高線」です。中央では異なる高さが異なる色でマークされ、損失関数の勾配フィールドが右側に直接示され、矢印は勾配の方向を示し、長さは勾配のサイズを示します。等高線が密になればなるほど、勾配が大きくなることがわかります。

上記の損失関数のグラフが明確で直感的ではないと思われる場合は、高解像度の 3D グラフもあります。

反復回数が増えるにつれて、損失関数の値は減少し続けます。

Adam アルゴリズムで調整できるハイパーパラメータは、ステップ サイズ反復回数許容誤差β1β2ファジー係数 ϵバッチ サイズです。

スライダーをドラッグしてハイパーパラメータを調整すると、「赤い線」の形状と終点がそれに応じて変化します。ステップ サイズを調整して、このパラメーターが結果にどのような影響を与えるかを確認しましょう。

ステップ サイズを大きくすると学習曲線の振動が大きくなり、ステップ サイズが小さすぎると損失関数の収束が遅くなります。

ステップサイズはそれぞれ0.3、0.03、0.003です

上記は最も単純なケースです。デモ インターフェースでは、他にも奇妙な損失関数が提供されています。

ほぼすべての一般的な最適化アルゴリズム:

これらの最適化アルゴリズムには、さまざまな形状の損失関数においてそれぞれ長所と短所があります。

損失関数の「輪郭」が楕円の場合、Adam は非常に速く収束し、わずか 100 回の反復で収束しますが、AdaGrad では収束までに 300 回近くの反復が必要です。

しかし、アダムには絶対的な優位性はありません。複数の鞍点と極小値を持つグラフでは、Adam は初期段階では急速に減少しますが、最終段階ではより激しく振動し、収束速度は AdaGrad よりも遅くなります。

上記の「遊び方」はデモのほんの一部です。もっと試してみたい方は、記事末尾のリンクをご覧ください。

C++プログラマーにとって朗報

ensmallen は単なる楽しいデモだと思わないでください。実際には効率的な C++ 最適化ライブラリです。 C++ を使用して AI をプログラミングするプログラマーにとっては、任意の関数に対して数学的最適化を実行できるため、C++ 機械学習ツールの不足という問題点が解決されます。

基本的な最適化アルゴリズムをパッケージ化するだけでなく、ensmallen では、ユーザーがシンプルな API を使用して新しいオプティマイザーを簡単に追加することもできます。新しいオプティマイザーを実装するには、メソッドと新しい目的関数のみが必要であり、通常は 1 つまたは 2 つの C++ 関数で実行できます。

ensmallen をインストールするには、次の要件を満たす必要があります。

  • C++11をサポートするコンパイラ
  • C++ 線形代数および科学計算ライブラリArmadillo
  • 数学ライブラリOpenBLASまたはIntel MKLまたはLAPACK

ensmallen 内のすべては ens 名前空間内にあるため、コード内に using ディレクティブを配置すると便利な場合がよくあります。

  1. 使用して 名前空間ens;

Adam を例にとると、コードは次のようになります。

  1. ローゼンブロック関数 f;
  2. arma::mat 座標 = f.GetInitialPoint();
  3. Adam オプティマイザー (0.001, 32, 0.9, 0.999, 1e-8, 100000, 1e-5, true );
  4. optimizer.Optimize(f, 座標);

このうち、Adam オプティマイザーのパラメータの順序は、ステップ サイズ、バッチ サイズ、β 1 、β 2 、ϵ、最大反復回数、許容誤差、各関数にランダムにアクセスするかどうかです。

その他の最適化アルゴリズムについては、Web サイトにアクセスして詳細なドキュメントを参照できます。

***すべてのリソースを添付します:

縮小圧縮パッケージのダウンロードアドレス:

https://ensmallen.org/files/ensmallen-1.14.2.tar.gz

デモアドレス:

https://vis.ensmallen.org/

<<:  自動化ロボットのHMI設計の詳細な説明

>>:  人工知能の知られざる歴史: 目に見えない女性プログラマーたち

ブログ    

推薦する

黄氏の最新インタビュー:チップ不足はなかなか解消されず、次のトランスフォーマーはすでに登場している

Nvidia の GPU が世界を席巻しています。テクノロジー企業は、Nvidia のスーパーコンピ...

機械学習におけるデータの不均衡の問題を解決するにはどうすればよいでしょうか?

[[194310]]機械学習のタスクでは、データの不均衡という問題に頻繁に遭遇します。データの不均...

8年が経ちました。Googleが中国に戻るという噂は本当でしょうか?

[51CTO.com オリジナル記事] Google の中国復帰について新たな声が上がっている。最...

LangChain と Redis が協力して何かを実現しています!財務文書分析の精度を向上させるツールを作成する

著者 | タニスタ編纂者:Xing Xuan制作:51CTO テクノロジースタック(WeChat I...

基本的なアルゴリズムの学習ルートとランダムな考え

勉強計画(いつも顔を叩かれるような気分です)煙台での仕事を辞めて北京に来ました。アルゴリズムが苦手だ...

GPT をゼロから構築するための 60 行のコード!最も完全な実践ガイドはここにあります

GPT をゼロから構築するには 60 行のコードが必要ですか?最近、開発者が Numpy コードを使...

Ant GroupとCVPR22 Workshopが共同でビジュアルインテリジェンスコンテストを開催し、1,300以上のチームが参加した。

6月19日、第17回IEEEコンピュータ協会バイオメトリクスワークショップ(CVPR22)とAnt...

OpenAIの主任科学者はスーパーAIを制御する方法を見つける計画を立てている

12月15日、OpenAIは設立当初から、たとえ人工知能が開発者よりも賢くなっても、全人類に利益をも...

イラストレーターが10年後の情景を描く、ロボットが人間に取って代わり、38%の人が解雇に直面

科学技術の発展にはいつも驚かされます。携帯電話がいつからこんなにスマートになったのか、コンピューター...

知識共有: 管理距離と最大ホップ数の違いに関するルーティングアルゴリズムの分析

管理距離は、ルーティング プロトコルの優先度を表す人工的に指定された数値です。数値が小さいほど、ルー...

...

IBMとNASAが協力して地理空間AIモデルをオープンソース化し、気候科学の発展を目指す

8月4日、海外メディアFagen Wasanni Technologiesによると、IBMは最近、N...

1行のコードで大規模モデルのパフォーマンスが10%向上、開発者は無料でランチを楽しめる

大規模なモデルを微調整するための「無料ランチ」ができました。たった 1 行のコードで、パフォーマンス...

サイバー攻撃が自動運転車に勝てない理由

マルウェア、ランサムウェア、ウイルス、サービス拒否攻撃など、これらの脅威は回復が困難なため、企業を窮...

...