LoginSignup
2
1

More than 3 years have passed since last update.

ニューラルネットの重みを実数値遺伝的アルゴリズムで最適化してみる ~その1:関数近似~

Last updated at Posted at 2019-07-20

はじめに

前回の記事では、実数値遺伝的アルゴリズム(以下、実数値GA)を用いて大域的最適解の探索を行いました。

ディープラーニングの重み最適化手法としては誤差逆伝搬法(BP法)が主流ですが、時代に逆行して?(※)ニューラルネットの重みを実数値GAで最適化してみます(以下、NNGA(たぶん正式名称ではない))。
今回のお題は、NNGAがちゃんと実装されているか確認する意味で関数近似です。

※そもそもBP法だと局所解にはまりやすいので、NNGAなどの色々なニューラルネット重み最適化手法が生まれたのですが、BP法も改良されてそこに落ち着いたみたいですね。

[2019/8/21追記] 正式名称は、Neuroevolutionらしいです。いつの間にか、こんなかっこいい名前が付いていた:clap:

関数近似

近似する関数は2次元のRosenBrock関数です。
RosenBrock関数の特徴。
- 単峰性関数
- 探索範囲:-2.048~2.048
- 大域的最適解 : =0 、(x[i] = 1)
- 数式 : ニューラルネットの重みを大きくしなくてもすむように、通常のRosenBrockを3500で割っています。

f(x_{1} \cdots x_{n-1})=\sum_{i=1}^{n}(100(x_{i+1}-x_{i}^2)^2+(x_{i}-1)^2) / 3500
  • 2次元のグラフ

NNGA_RosenBrock_L2-[10]-1_S50_g5000_UNDX_20190720_0105_3DCorrect.png

ニューラルネットの構成

3層のニューラルネットを用いました。
- 入力層 :2ニューロン
- 隠れ層 :10ニューロン (活性化関数:シグモイド関数)
- 出力層 :1ニューロン (活性化関数:なし)

ニューラルネット2.JPG

実数値GAの構成

  • 世代交代モデル:MGG
    • 世代交代数:2個体(エリート選択:1個体、ルーレット選択:1個体)
    • 致死個体(任意のパラメータが探索範囲を超えた個体) への対応:評価対象から外す
  • 交叉法:UNDX (α=0.5、β=0.35)
  • 学習パラメータ
    • 最大世代数:5000世代
    • 集団数:50個体
    • 生成子個体数: 100個体/世代
  • 各世代での入力サンプリング数:RosenBrock関数の探索範囲の中から各世代ランダムで50点選択
  • 損失関数(=GAの適合度):2乗和誤差。サンプリング数50個の和になります。
E = \frac{1}{2} \sum_{k=1}^{50} (y_k - t_k)^2

$y_k$:ニューラルネットワークの出力、$t_k$:訓練データ(サンプリングした点をRosenBrock関数の入力としたときの出力)です。

学習結果

0世代の近似グラフ 5000世代の近似グラフ 適合度遷移
NNGA_RosenBrock_L2-[10]-1_S50_g5000_UNDX_20190720_0105_sig_3D_0世代.png NNGA_RosenBrock_L2-[10]-1_S50_g5000_UNDX_20190720_0105_sig_3D.png NNGA_RosenBrock_L2-[10]-1_S50_g5000_UNDX_20190720_0105_sig.png

$x[0]=-2,x[1]=-2やx[0]=2,y[1]=-2$付近では正解から0.6程度ずれてしまっていますが、全体的な関数の形状は実際のRosenBrock関数に近い形になっているのではないでしょうか。

補足

隠れ層の活性化関数をシグモイド関数からReLU関数に変えた場合は、以下のようになります。
適合度はシグモイド関数より良好な結果ですが、平らでこれじゃない感が。。。
ReLU関数は$x>=0$だけで見れば、線形なので層が少ないと表現能力が低いかな?

0世代の近似グラフ 5000世代の近似グラフ 適合度遷移
NNGA_RosenBrock_L2-[10]-1_S50_g5000_UNDX_20190720_0102_ReLU_3D_0世代.png NNGA_RosenBrock_L2-[10]-1_S50_g5000_UNDX_20190720_0102_ReLU_3D.png NNGA_RosenBrock_L2-[10]-1_S50_g5000_UNDX_20190720_0102_ReLU.png

次回予告

モデルを強化学習にも適用できるのがNNGAのいいところ!ということで、倒立振子に挑戦してみたいと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1