月光の脳モジュールを使用して、深層学習の問題を解決するために使用するレイヤーの数と種類を決定するにはどうすればよいですか?


9

私は深層学習アプリケーションに月光の脳モジュールを使用することを学んでいます。

私はニューラルネットワークを設定して、numpy.cos()関数を学習し、同様の結果を生成しています。

私のトレーニングの限界が以下の場合、私はうまく適合しています:

x = np.linspace(0,2*np.pi,100)

しかし、境界を次のように拡張しようとすると、モデルがばらばらになります。

x = np.linspace(0,3*np.pi,100)

他の境界で機能するようにモデルの柔軟性を高めるには、ニューラルネットワークで何を変更する必要がありますか?

これは私のコードです:

from gekko import brain
import numpy as np
import matplotlib.pyplot as plt

#Set up neural network 
b = brain.Brain()
b.input_layer(1)
b.layer(linear=2)
b.layer(tanh=2)
b.layer(linear=2)
b.output_layer(1)

#Train neural network
x = np.linspace(0,2*np.pi,100)
y = np.cos(x)
b.learn(x,y)

#Calculate using trained nueral network
xp = np.linspace(-2*np.pi,4*np.pi,100)
yp = b.think(xp)

#Plot results
plt.figure()
plt.plot(x,y,'bo')
plt.plot(xp,yp[0],'r-')
plt.show()

これらは2piに対する結果です。

ここに画像の説明を入力してください

これらは3piに対する結果です。

ここに画像の説明を入力してください

回答:


6

ノードを5に増やすと、次の結果が得られます b.layer(tanh=5)

おそらく、この質問には複数の答えがあるでしょう。レイヤーの数を増やすか、アクティベーション機能を変更する可能性があります。また、常に異なるソルバーを使用することもできます。最適なネットワークアーキテクチャを見つけることは、それ自体の最適化問題です。一部の人々は、例えば、遺伝的アルゴリズムでそれを理解しようとしました:

https://arxiv.org/pdf/1808.03818.pdf

ここに画像の説明を入力してください


2

データ駆動型(ブラックボックス)モデルには、本質的に「オーバーフィット」および「アンダーフィット」の問題があります。モデルに自由度を与えすぎると、「トレーニング」データセットに完全に適合しますが、「検証」データセットには適合しません。

ニューラルネットタイプのモデルについても同様です。与えるレイヤーが多いほど、モデルは「オーバーフィッティング」を簡単に実行できます。

「過剰適合」を回避する方法はいくつかあります。

一般に、「トレーニングセット」と「検証セット」の間で「モデルエラー」のバランスをとることができ、トレーニングエラーが減少し続けている間に検証エラーが増加し始めた時点でレイヤーの増加を停止します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.