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

ये 2pi के परिणाम हैं:

यहां छवि विवरण दर्ज करें

ये 3pi के परिणाम हैं:

यहां छवि विवरण दर्ज करें

जवाबों:


6

यदि मैं नोड्स को 5 तक बढ़ाता हूं तो मुझे निम्नलिखित परिणाम मिलते हैं b.layer(tanh=5)

इस सवाल के कई जवाब हैं, थो। शायद परतों की संख्या बढ़ाना या सक्रियण फ़ंक्शन को बदलना। आप हमेशा अलग सॉल्वरों का भी उपयोग कर सकते हैं। सबसे अच्छा नेटवर्क आर्किटेक्चर ढूँढना अपने आप में एक अनुकूलन समस्या है। कुछ लोगों ने उदाहरण के लिए आनुवंशिक एल्गोरिदम के साथ इसका पता लगाने की कोशिश की है:

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

यहां छवि विवरण दर्ज करें


2

डेटा-चालित (ब्लैक-बॉक्स) मॉडल में स्वाभाविक रूप से "ओवरफिटिंग" और "अंडरफिटिंग" समस्याएं होती हैं। यदि आप अपने मॉडल में बहुत अधिक स्वतंत्रता देते हैं, तो यह आपके "प्रशिक्षण" डेटा सेट में पूरी तरह से फिट होगा, जबकि यह "वैलिडेशन" डेटा सेट के साथ ठीक नहीं होगा।

तंत्रिका शुद्ध प्रकार के मॉडल के लिए भी। जितनी अधिक परतें आप देते हैं, उतना आसान मॉडल "ओवरफिटिंग" में परिणाम देता है।

"ओवरफिटिंग" से बचने के कई तरीके हैं।

आम तौर पर, आप "प्रशिक्षण सेट" और "सत्यापन सेट" के बीच "मॉडल त्रुटियों" को संतुलित कर सकते हैं, इस बिंदु पर परतों को रोकना जब प्रशिक्षण त्रुटि घटती रहती है, या इसके विपरीत, सत्यापन त्रुटि शुरू होती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.