Dengan menggunakan modul otak Gekko, bagaimana cara menentukan berapa banyak lapisan dan jenis lapisan apa yang akan digunakan untuk memecahkan masalah pembelajaran yang mendalam?

9

Saya belajar menggunakan modul otak Gekko untuk aplikasi pembelajaran yang mendalam.

Saya telah menyiapkan jaringan saraf untuk mempelajari fungsi numpy.cos () dan kemudian menghasilkan hasil yang serupa.

Saya mendapatkan kecocokan yang baik ketika batasan pada pelatihan saya adalah:

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

Tetapi model berantakan ketika saya mencoba untuk memperpanjang batas ke:

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

Apa yang perlu saya ubah di jaringan saraf saya untuk meningkatkan fleksibilitas model saya sehingga bekerja untuk batas lainnya?

Ini kode saya:

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()

Ini adalah hasil untuk 2pi:

masukkan deskripsi gambar di sini

Ini adalah hasil untuk 3pi:

masukkan deskripsi gambar di sini

Yusuf
sumber

Jawaban:

6

Saya mendapatkan hasil berikut jika saya meningkatkan node ke 5 b.layer(tanh=5)

Mungkin ada beberapa jawaban untuk pertanyaan ini, tho. Mungkin menambah jumlah layer atau mengubah fungsi aktivasi. Anda selalu dapat menggunakan pemecah yang berbeda juga. Menemukan arsitektur jaringan terbaik adalah masalah optimasi sendiri. Beberapa orang mencoba mengatasinya dengan algoritma genetika, misalnya:

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

masukkan deskripsi gambar di sini

reyPanda
sumber
2

Model data-driven (Black-box) memiliki masalah "Overfitting" dan "Underfitting". Jika Anda memberikan terlalu banyak derajat kebebasan dalam model Anda, itu akan sangat cocok dengan set data "Pelatihan" Anda, sementara itu tidak akan cocok dengan set data "Validasi".

Sama untuk jenis model Neural Net. Semakin banyak layer yang Anda berikan, semakin mudah model menghasilkan "Overfitting."

Ada beberapa cara untuk menghindari "Overfitting".

Secara umum, Anda dapat menyeimbangkan "kesalahan model" antara "Set latihan" dan "Set validasi," menghentikan peningkatan layer pada titik ketika Kesalahan Validasi mulai meningkat sementara kesalahan pelatihan terus menurun, atau sebaliknya.

Taman Junho
sumber