2016-06-14 30 views
6

Jestem zainteresowany poznawaniem sieci neuronowych, a jako przykład próbowałem z następującym zbiorem danych, który został wyprowadzony eksperymentalnie.Jak sprawdzić dane wyjściowe podane przez Probabilistyczną sieć neuronową w programie MATLAB?

Używam następującego wektora wejściowego dla mojej sieci neuronowej;

X = [1 1; 1 2; 1 3; 1 4; 4 1; 4 2; 4 3; 4 4; 7 1;7 2; 7 3; 7 4]'; 
Tc = [1 1 2 3 1 1 2 2 1 1 2 2]; 

Chcę podzielić dane wejściowe na trzy klasy, opisane przez wektor wejściowy Tc. Następnie konwertuję wskaźniki klasy docelowej Tc na wektory T, a wartość rozprzestrzeniania, której używam, wynosi 1.

Korzystając z funkcji newpnn w programie MATLAB, otrzymuję granice decyzji dla trzech klas.

Mam wątpliwości dotyczące sprawdzania poprawności, jeśli granica decyzji jest odpowiednia. Sprawdzam dane wyjściowe za pomocą pojedynczych danych. X =[2;3.55] należy do klasy 2. Jest on przedstawiony przez czarną kropkę na wydruku wyjściowym. Niebieski to klasa 1. Żółty to klasa należąca do klasy 2. Czerwony to klasa 3.

Jak pokazano na wykresie, przewidywanie sieci neuronowej zostało uznane za klasę 2, która pokrywa się z rzeczywistą klasą zbiór.

Czy to oznacza, że ​​moja sieć neuronowa jest poprawna i sprawdzona?

P.S. Mam podstawową wiedzę na temat sieci neuronowych. Rozumiem także koncepcję posiadania większej liczby przykładów szkoleniowych i zestawów walidacyjnych. Oczekuję odpowiedzi dotyczącej dostępnych informacji, ponieważ nie mogę uzyskać więcej danych eksperymentalnie.

enter image description here

+1

Cóż, dzięki podanym informacjom odpowiedź brzmi: "Tak, twój numer NN jest zatwierdzony, wykonałeś dobrą robotę". Pamiętaj jednak, że twoje treningi i testy wydają się być dokładnie takie same (widząc 2 najlepsze strony), więc oczywiście będziesz miał poprawną odpowiedź. Spróbuj sprawdzić swój numer NN wartościami, których nie użyto w szkoleniu. –

+0

@AnderBiguri dzięki za odpowiedź. Jednak, zaraz po zamieszczeniu tego pytania, poczułem się dość głupio, zadając to pytanie. Wiem, że dane treningowe są znacznie mniejsze dla jakiegokolwiek ostatecznego treningu.Użyłem interpolacji sześciennej, aby uzyskać więcej punktów danych (120). Trzymałem 100 za szkolenie sieci i 20 za testowanie. Teraz prognozy okazały się całkiem spore. Procent dokładności wynosi około 98%. Wydaje mi się, że to pytanie zostało teraz rozwiązane, ale ponieważ zadeklarowałem nagrodę za to pytanie, nie mogę usunąć tego pytania. Jeszcze raz dziękuję za odpowiedź. – rcty

Odpowiedz

1

Hmm, myślę, że nie rozumie dobrze była walidacja jest w perspektywie sieci neuronowych. Ty nie możesz sprawdzić sieci tylko za pomocą jednej próbki. Postaram się więc nauczyć cię tego, co wiem o sprawdzaniu poprawności sieci neuronowych. Jest to długi proces statystyczny, który obejmuje refleksję na temat "danych z rzeczywistego świata", "oczekiwanego zachowania", ... Nie można potwierdzić czegoś za pomocą danych 10-20 i jednego punktu weryfikacji.

Generalnie, gdy uczysz sieć neuronowa powinna mieć 3 zestawy:

  • Pierwszy szkolenie ustawić jest wejście algorytmu, który jest używany do ustawić ciężary różnych sieci. To tylko rodzaj obowiązkowych danych używanych do uruchomienia algorytmu.
  • Drugi zestaw, walidacja ustawić służy do wyboru algorytmuwłaściwej dla danego problemu oraz zmniejszenie przeuczenia. Porównuje wydajność różnych i wybiera najlepsze (przeładowany nie będzie miał w ogóle dobrej wydajności).
  • Zestaw testowy : to ostatnia faza. Po wybraniu algorytmu i jego parametru, używasz zestawu nowych danych (pobranych z realnego świata) i sprawdzasz, czy wykonuje on to, co ma być , aby wykonać (to jest jak test koherencji).

(źródło: https://stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validation-set)

Na przykład budujemy algorytm używany w celu sprawdzenia, czy dana osoba „ma jakąś szansę stać się bogatym”. Oto, w jaki sposób utworzyć i zweryfikować swoją sieć neuronową.

  1. Po pierwsze, pytamy 10 000 osób, jeśli są bogate lub nie, i sprawdzamy niektóre parametry (wiek, lokalizacja, ...). Tworzy "oryginalny zestaw danych".
  2. Podzieliliśmy tę listę 10 000 osób na 3 zestawy (6000 2000 i 2000): zestaw szkoleniowy, zestaw walidacyjny i zestaw testowy (uwaga: proporcja może się zmieniać w zależności od procedury walidacji).
  3. Stosujemy zestaw do nauki (6000 pierwszych danych) i stosujemy go w naszych różnych sieciach neuronowych, aby je uczyć (nazwijmy je A, B, C i D).
  4. Przyjmujemy zestaw do sprawdzania poprawności (2000 kolejnych danych) aby sprawdzić wydajność czterech sieci. Oto, jak uniknąć nadmiernego dopasowania. Załóżmy, że sieć A wcale nie jest siecią, to tylko rejestrator. Zapisuje różne dane i ich klasy, ale nie jest w stanie niczego przewidzieć. Ten "fałszywy algorytm" dałby 100% wynik, jeśli wykonamy test sprawdzający z pierwszą 6000 osobą, ale całkowicie zawiedzie ten test. Po tym teście możesz wybrać "najlepszy algorytm". Wybierzmy C.
  5. Teraz uruchamiamy C z resztą danych (zestaw testów lub nowe dane, jeśli możemy, zawsze jest lepiej). Jeśli widzimy, że C ma bardzo dziwne i nieprzewidywalne zachowanie (może być spowodowane jakimś ludzkim błędem, takim jak tworzenie zestawów, które nie są naprawdę niezależne lub nadal poprawne, na przykład jeśli dane pochodzą z 1996 roku), wybieramy inny algorytm lub staramy się sprawdzić, jaki jest problem z danymi lub algorytmem.

W ten sposób można uzyskać niezawodną sieć neuronową (nie zapominaj, że dwa główne problemy to nie sprawdzanie końcowego wyniku i przeuczenia).

Ponieważ przeuczenie jest kluczowym pojęciem. Spróbuję trochę to zdefiniować i dać przykład. Przeadowywanie tworzy algorytm, który jest w stanie zbudować bardzo bliskie przybliżenia, ale które nie są w stanie przewidzieć niczego (co nazywam "algorytmem fałszywym").

Porównajmy na przykład interpolator liniowy i wielomian (1000000 stopnia, bardzo wysoki stopień) jeden. Nasz algorytm wielomianowy prawdopodobnie będzie dobrze pasował do danych (ekstremalne przeuczenie pasuje dokładnie do wszystkich naszych danych). Ale nie będzie w stanie niczego przewidzieć.

Dla poniższego przykładu, jeśli mamy w naszym zestawie walidacyjnym (wyodrębnionym z danych rzeczywistych) punkt w (2, -2) i (-1,2), możemy założyć, że nasza interpolacja wielomianowa była wyraźnie nadprogramowana ponieważ sugeruje wartości takie jak (-1,10) i (2,20). Linia linearna powinna być bliżej.

enter image description here

Mam nadzieję, że to pomoże. (zauważ, że nie jestem ekspertem w tej dziedzinie, ale starałem się przedstawić czytelną i prostą odpowiedź, więc jeśli coś jest fałszywe, nie krępuj się komentować :))