Використовуючи модуль мозку Gekko, як визначити, скільки шарів і який тип шару використовувати для вирішення проблеми глибокого навчання?


9

Я навчаюсь використовувати мозковий модуль Gekko для додатків глибокого навчання.

Я створив нейронну мережу, щоб дізнатися функцію 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()

Це результати до 2пі:

введіть тут опис зображення

Це результати в 3pi:

введіть тут опис зображення

Відповіді:


6

Я отримую такий результат, якщо збільшую вузли до 5 b.layer(tanh=5)

На це питання, ймовірно, є багато відповідей, тхо. Можливо збільшення кількості шарів або зміна функції активації. Ви також завжди можете використовувати різні вирішувачі. Пошук найкращої мережевої архітектури є проблемою оптимізації. Деякі люди намагалися зрозуміти це за допомогою генетичних алгоритмів, наприклад:

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

введіть тут опис зображення


2

Моделі, керовані даними (Black-box), по суті, мають проблеми "Overfitting" та "Underfitting". Якщо ви надаєте занадто багато ступенів свободи у вашій моделі, вона ідеально впишеться у ваш набір даних "Навчання", хоча це не так добре підійде до набору даних "Валідація".

Те саме для моделей типу Neural Net. Чим більше шарів ви надаєте, тим легше модель приводить до "Overfitting".

Існує кілька способів уникнути "Переоснащення".

Як правило, ви можете врівноважувати "помилки моделі" між "Набором тренувань" та "Набором валідації", припиняючи збільшувати шари в точці, коли Помилка перевірки починає зростати, а помилка тренувань постійно зменшується, або навпаки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.