Używam tej biblioteki do implementacji agenta uczenia się.
Wygenerowałem przypadki szkoleniowe, ale nie wiem na pewno, jakie są zestawy walidacyjne i testowe.
Nauczyciel mówi:
70% powinno stanowić przypadki pociągów, 10% przypadków testowych, a pozostałe 20% powinny stanowić przypadki walidacyjne.
edytować
Mam ten kod do treningu, ale nie mam pojęcia, kiedy przestać trenować.
def train(self, train, validation, N=0.3, M=0.1):
# N: learning rate
# M: momentum factor
accuracy = list()
while(True):
error = 0.0
for p in train:
input, target = p
self.update(input)
error = error + self.backPropagate(target, N, M)
print "validation"
total = 0
for p in validation:
input, target = p
output = self.update(input)
total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output
accuracy.append(total)
print min(accuracy)
print sum(accuracy[-5:])/5
#if i % 100 == 0:
print 'error %-14f' % error
if ? < ?:
break
edytować
Mogę uzyskać średni błąd 0,2 z danymi walidacyjnymi, po może 20 iteracjach treningowych, który powinien wynosić 80%?
średni błąd = suma bezwzględnej różnicy między celem walidacji a wynikiem, przy danych wejściowych / wielkości danych walidacyjnych.
1
avg error 0.520395
validation
0.246937882684
2
avg error 0.272367
validation
0.228832420879
3
avg error 0.249578
validation
0.216253590304
...
22
avg error 0.227753
validation
0.200239244714
23
avg error 0.227905
validation
0.199875013416
Odpowiedzi:
Podczas treningu wykorzystywane są zestawy uczące i walidacyjne.
Po zakończeniu treningu biegniesz w kierunku zestawu testów i sprawdzasz, czy dokładność jest wystarczająca.
Zestaw szkoleniowy : ten zestaw danych jest używany do korygowania wag w sieci neuronowej.
Zestaw walidacyjny : ten zestaw danych jest używany w celu zminimalizowania nadmiernego dopasowania. Nie dostosowujesz wag sieci z tym zestawem danych, po prostu sprawdzasz, czy jakikolwiek wzrost dokładności w stosunku do zestawu danych szkoleniowych faktycznie daje wzrost dokładności w stosunku do zestawu danych, który nie był wcześniej pokazywany w sieci, lub przynajmniej sieć nie została w nim przeszkolona (tj. zestaw danych walidacyjnych). Jeśli dokładność zbioru danych uczących wzrasta, ale dokładność zbioru danych walidacyjnych pozostaje taka sama lub spada, oznacza to, że sieć neuronowa jest nadmiernie dopasowana i należy przerwać uczenie.
Zestaw testowy : ten zestaw danych jest używany tylko do testowania ostatecznego rozwiązania w celu potwierdzenia rzeczywistej mocy predykcyjnej sieci.
źródło
validation set
nietest set
są używane do dostrojenia wag sieci neuronowej. Dlaczego nie możesz użyć tego samego zestawu danych, który nie jest używany do trenowania ciężarów, covalidation set
itest set
? Co można zyskać, rozdzielając je?Z sekcji ftp://ftp.sas.com/pub/neural/FAQ1.txt „ Jaka jest populacja, próbka, zbiór uczący, zestaw projektowy, walidacja ”
Powierzchnia błędu będzie inna dla różnych zestawów danych ze zbioru danych (uczenie wsadowe). Dlatego jeśli znajdziesz bardzo dobre lokalne minima dla danych zestawu testowego, może to nie być zbyt dobry punkt, a może to być bardzo zły punkt na powierzchni wygenerowany przez inny zestaw danych dla tego samego problemu. Dlatego trzeba obliczyć taki model, który nie tylko znajdzie dobrą konfigurację wagi dla zbioru uczącego, ale także powinien być w stanie przewidzieć nowe dane (których nie ma w zbiorze uczącym) z dobrym błędem. Innymi słowy, sieć powinna być w stanie uogólniać przykłady, aby poznawać dane, a nie po prostu zapamiętywać lub ładować zestaw szkoleniowy przez nadmierne dopasowanie danych szkoleniowych.
Zestaw danych walidacyjnych to zestaw danych dotyczących funkcji, której chcesz się nauczyć, a których nie używasz bezpośrednio do uczenia sieci. Trenujesz sieć za pomocą zestawu danych, który nazywasz zestawem danych szkoleniowych. Jeśli do trenowania sieci używasz algorytmu opartego na gradiencie, wówczas powierzchnia błędu i gradient w pewnym momencie będą całkowicie zależały od zestawu danych szkoleniowych, a zatem zestaw danych szkoleniowych jest bezpośrednio używany do korygowania wag. Aby upewnić się, że nie przepełniasz sieci, musisz wprowadzić zestaw danych walidacyjnych do sieci i sprawdzić, czy błąd mieści się w jakimś zakresie. Ponieważ zestaw walidacyjny nie jest używany bezpośrednio do korygowania wag sieci, a zatem dobry błąd dla walidacji, a także zestaw testowy wskazuje, że sieć dobrze przewiduje dla przykładów zestawu pociągów,
Wczesne zatrzymanie jest sposobem na przerwanie treningu. Dostępne są różne warianty, główny zarys jest taki, że monitorowane są zarówno błędy zestawu, jak i zestawu walidacyjnego, błąd pociągu maleje z każdą iteracją (wsteczna podpórka i bracia) i początkowo maleje błąd walidacji. Uczenie jest zatrzymywane w momencie, gdy błąd walidacji zaczyna wzrastać. Konfiguracja wagi w tym miejscu wskazuje na model, który dobrze przewiduje dane uczące, a także dane, które nie są widoczne w sieci . Ale ponieważ faktycznie dane walidacyjnewpływa na konfigurację ciężarków pośrednio, aby wybrać konfigurację ciężarków. W tym miejscu pojawia się zestaw testowy. Ten zestaw danych nigdy nie jest używany w procesie uczenia. Po wybraniu modelu na podstawie zestawu walidacyjnego dane zestawu testowego są stosowane do modelu sieci i wykrywany jest błąd dla tego zestawu. Ten błąd jest reprezentatywny dla błędu, którego możemy się spodziewać po zupełnie nowych danych dotyczących tego samego problemu.
EDYTOWAĆ:
Ponadto w przypadku, gdy nie masz wystarczających danych do zestawu walidacyjnego, możesz użyć walidacji krzyżowej, aby dostroić parametry, a także oszacować błąd testu.
źródło
Zestaw do walidacji krzyżowej jest używany do wyboru modelu, na przykład wybiera model wielomianowy z najmniejszą ilością błędów dla danego zestawu parametrów. Zestaw testowy jest następnie używany do zgłaszania błędu uogólnienia w wybranym modelu. Stąd: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets
źródło
Tworzymy zestaw walidacyjny do
Dlaczego użyto zestawu walidacyjnego :
źródło
Powiedzmy, że trenujesz model na zbiorze uczącym, a następnie mierzysz jego wydajność na zbiorze testowym. Myślisz, że wciąż jest miejsce na ulepszenia i próbujesz dostosować hiperparametry (jeśli model jest siecią neuronową - hiperparametry to liczba warstw lub węzłów w warstwach). Teraz uzyskasz nieco lepszą wydajność. Jednak gdy model zostanie poddany innym danym (nie w zestawie testowym i uczącym), możesz nie uzyskać tego samego poziomu dokładności. Dzieje się tak, ponieważ wprowadziłeś pewne odchylenie podczas dostosowywania hiperparametrów, aby uzyskać lepszą dokładność zestawu testowego. Zasadniczo dostosowałeś model i hiperparametry, aby stworzyć najlepszy model dla tego konkretnego zestawu treningowego.
Typowym rozwiązaniem jest dalsze dzielenie zestawu uczącego w celu utworzenia zestawu walidacyjnego . Teraz masz
Postępujesz jak poprzednio, ale tym razem używasz zestawu walidacyjnego do testowania wydajności i dostrajania hiperparametrów. Mówiąc dokładniej, trenujesz wiele modeli z różnymi hiperparametrami w zredukowanym zbiorze uczącym (tj. Pełnym zestawie uczącym minus zbiór walidacyjny) i wybierasz model, który działa najlepiej w zbiorze walidacyjnym.
Po wybraniu najlepszego modelu ze zbioru walidacyjnego trenujesz najlepszy model na pełnym zestawie uczącym (w tym zestawie walidacyjnym), co daje ostateczny model.
Na koniec oceniasz ten ostateczny model na zbiorze testowym, aby uzyskać oszacowanie błędu uogólnienia.
źródło
Zestaw danych szkoleniowych : próbka danych użytych do dopasowania modelu.
Zestaw danych walidacyjnych : próbka danych użyta do zapewnienia obiektywnej oceny dopasowania modelu do zbioru danych uczących podczas dostrajania hiperparametrów modelu. Ocena staje się bardziej stronnicza, gdy umiejętności w zakresie zbioru danych walidacyjnych są włączone do konfiguracji modelu.
Testowy zestaw danych : próbka danych użyta do zapewnienia obiektywnej oceny ostatecznego dopasowania modelu do zestawu danych uczących.
źródło
W prostych słowach zdefiniuj zbiór uczący, zbiór testowy, zbiór walidacyjny
Zestaw treningowy: służy do wyszukiwania najbliższych sąsiadów. Zbiór walidacyjny: służy do znalezienia innego k, które ma zastosowanie do zestawu pociągów. Zestaw testowy: służy do znajdowania maksymalnej dokładności i niewidocznych danych w przyszłości.
źródło