G検定 勾配降下法の種類

株式会社リュディアです。G検定対策として勾配降下法についてまとめてみたいと思います。同時にイテレーション、エポック、バッチサイズという言葉についても説明します。

勾配降下法は最小化したい関数、つまり目的関数のある点での勾配を求め、勾配の値を元に最小値を探索する手法です。ある変数の値に対する目的関数の勾配を求めることは目的関数をある変数で偏微分した値を使って探索することになります。

最初にイテレーションとエポックについて説明します。エポック、またはエポック数は学習に全訓練データを何度使い切ったかを表します。イテレーション、イテレーション数重みを何度更新したかを表します。ではすべての訓練データ数を T として以下説明していきます。


バッチ勾配降下法重み更新のたびにすべての訓練データ T 個を用いて勾配を計算します。訓練データ数 T が多くなるにつれて計算量が増加するため計算量の問題が発生します。G 検定でよく聞かれるのは、重み更新のたびにすべての訓練データを用いる、つまりイテレーション1回につき全訓練データ T個を使うためエポックも 1 となりイテレーションとエポックが同じであるということです。こちらも頭に入れておいてください。

バッチ勾配降下法では計算量の問題が発生する、ということであれば計算量を減らす、つまりすべての訓練データを用いるのではなく一部のデータだけを用いてはどうか?と考えますよね。ここで用いる訓練データ数を B 個とします。この B をバッチサイズと呼びます。

B = 1 のとき確率的勾配降下法と呼ばれる方法になります。1つの訓練データは確率的に選ばれます。確率的勾配降下法は SDG (Stochastic Gradient Descent) とも呼びますのでこちらも覚えておいてください。ただ 1 つずつ選択して勾配降下法を実行するためなかなか収束しない、つまり不安定な状態が続くという問題点があります。イテレーション数が訓練データ数と同じ T回、各イテレーションですべての訓練データが理想的に 1度ずつ選択される場合にイテレーション T に対してエポックが 1 となります。

n > 1 となる任意の N 個の訓練データを用いる、つまりバッチサイズ N で勾配降下法を行う方法をミニバッチ勾配降下法と呼びます。このバッチサイズ N は2のべき乗である 32, 64, 128, 256, 512 がよく用いられます。N個の訓練データを用いて学習し重み更新という動作を繰り返します。現実的な方法として最もよく用いられる方法です。イテレーションが  T / N 回であり、T/N 回のイテレーションの後に理想的にすべての訓練データが使用された場合、イテレーション T/N に対してエポックが 1 となります。

今回は勾配降下法についてまとめました。イテレーション、エポック、バッチサイズという数を表す用語も絡めて説明しました。いずれもよく問われる内容ですのでしっかりと理解しておいてください。

では、ごきげんよう。

この記事が気に入ったらサポートをしてみませんか?