(パイソン で グラディエント こうか アニメーション を さくせい する)

「パイソンでグラデーション効果のアニメーションを作成する」

複雑な表面上の点の軌跡をプロットする方法

写真:Todd DiemerによるUnsplashからのもの

この記事では、ブログ記事でのポイントを説明するために、勾配降下法のアニメーションを作成した方法についてお話します。それを行うことで、Pythonのスキル向上とアニメーションプロットの作成という新たなスキルを獲得することができました。

Pythonで作成された勾配降下法のアニメーション。画像:著者によるもの。

私は、私がたどったプロセスのステップを詳しく説明します。

少しの背景

数日前、私は勾配降下法についてのブログ記事を公開しました。勾配降下法は、人工ニューラルネットワークのトレーニングに使用される最適化アルゴリズムとして知られています。

異なる初期化ポイントを選択することで、勾配降下法の最適化が異なる結果を生むことを示すアニメーション図を含めたかったのです。

その時、数年前に素晴らしいアニメーションを作成したAlec Radford氏がRedditのコメントで共有した、AdagradAdadeltaRMSpropなどの高度な勾配降下法アルゴリズムの違いを示すアニメーションを見つけました。

MatlabをPythonで置き換えるように努力していたので、私は自分自身で似たアニメーションをコーディングしてみることにしました。最初は「バニラ」の勾配降下法アルゴリズムを使用します。

さあ、ステップバイステップで進んでみましょう。

最適化に使用される表面のプロット

最初に、必要なライブラリをインポートし、表現したい数学関数を定義します。

私は鞍点表面を使用したかったので、次の方程式を定義しました:

また、表面をプロットするための点のグリッドも作成します。np.mgridがこれに最適です。複素数の81jは、開始と停止値の間に作成する点の数を示しています(81点)。

import numpy as npfrom mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as plt# 表面を計算する関数を作成するdef f(theta):  x = theta[0]  y = theta[1]  return x**2 - y**2# 表面をプロットするための点のグリッドを作成するx, y = np.mgrid[-1:1:81j, -1:1:81j]

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more