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設計の詳細な説明

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

推薦する

...

日本の芥川賞受賞者が認める:小説の5%はChatGPTによって書かれた

1月22日、日本で最も権威のある文学賞である芥川賞を受賞した作家が、受賞作である小説「東京同情塔」の...

人工知能はクリーンエネルギーへの移行で数兆ドルの節約に貢献できる可能性がある

U+のレポートによると、風力発電所などの他のクリーンエネルギー源と組み合わせて人工知能を使用すると...

画像分類を40ナノ秒で完了、ニューラルネットワークを内蔵した画像センサーがNatureに掲載

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

AIとIoTの統合が加速

人工知能 (AI) とモノのインターネット (IoT) の技術トレンドが融合し始めており、業界ではこ...

...

人間の介入によってモデルのパフォーマンスをどのように向上できるでしょうか?この記事を読んでみてください

金融業界など、一部の業界は誤検知に非常に敏感です。クレジットカード詐欺を検出する際に、検出システムが...

...

GPT や Llama などの大規模モデルには「反転の呪い」があります。このバグを軽減するにはどうすればよいでしょうか?

中国人民大学の研究者らは、Llamaなどの因果言語モデルが遭遇する「反転の呪い」は、次のトークン予測...

MapReduceアルゴリズムをわかりやすく説明する方法

Hackbright でメンターをしているときに、技術的な背景が限られている学生に MapReduc...

...

これはボストンダイナミクスのロボットエンジニアの一日です

[[401177]]ボストン・ダイナミクスは誰もが知っていますが、同社の従業員の仕事や生活について知...

IoT、AI、デジタルツインをどのように統合するのか?

デジタル ツインは、物理世界とデジタル世界をつなぐため、常に興味深いものです。将来的には、すべてのも...

人工知能の時代においても、人間同士の交流は依然として重要である

実際、AI はほとんどの人間同士のやり取りに取って代わっています。デジタルアシスタントや AI ベー...