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

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

ブログ    

推薦する

...

2020年に注目すべき8つのAIトレンド

自動化、ハードウェア、モデル開発などの新たな開発が、2020 年の AI を形作るでしょう。 O&#...

研究AI面接に合格するには? RedditユーザーがGoogleの面接体験を語る

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

...

...

ソフトウェア開発における人工知能: 自動化と最適化

最先端技術である人工知能(AI)は、さまざまな分野で大きな可能性を見せています。ソフトウェア開発の分...

シリコンバレーの天才たちの没落: 才能から始まり、利益に転落し、「賢さ」のせいで失敗した

若い才能、輝かしい経歴、上司からの評価、順調なキャリア、明るい未来...これらは、2016 年初頭に...

AIが従業員のオンボーディングを自動化する5つの方法

ますます激化する労働市場で人材獲得競争に勝つための新たな可能性を模索するビジネスリーダーや人事マネー...

年収100万ドルでもまだ足りない。AI人材はどれくらい高価なのか?

シリコンバレーで最も隠し切れない秘密の一つは、人工知能の専門家が実際に給料やボーナスでどれくらい稼い...

COVID-19ヘルスケア市場はこれまでと異なる

[[355787]]画像ソース: https://pixabay.com/images/id-537...

2023 年のネットワーク パーティション: AI と自動化が状況をどのように変えるか

ネットワーク セグメンテーションは、企業の攻撃対象領域を減らし、横方向の移動を防ぐ基本的な予防的セキ...

AIビジュアルクロスワードパズルが大ヒット!モンローは180度回転して一瞬でアインシュタインになる。Nvidiaの上級AI科学者:最近最もクールな拡散モデル

AIが描いたマリリン・モンローが180°回転してアインシュタインに? !これは、最近ソーシャル メデ...

李嘉誠は率直に言った。「人工知能の時代には、これらのいくつかの業界だけが大きな成功を達成するのに役立ちます。」

李嘉誠氏はこう語った。「人工知能の時代には、世界がどう変化しても、経済サイクルがどう変動しても、常に...

サービスロボットは大きな将来性があり、すぐに何千もの家庭に導入されるだろう

親が子どもの世話をしたり、子どもと遊んだり勉強したり、看護師や介護士の仕事を手伝ったりするロボットに...

毎日のアルゴリズム: 有効な三角形の数

[[429712]]この記事はWeChatの公開アカウント「3分でフロントエンドを学ぶ」から転載した...