Skip to content
piemka01 edited this page Jan 3, 2022 · 5 revisions

Polecenie

Ćw 5. (8 pkt), data oddania: do 03.01.2022 - Sztuczne sieci neuronowe

Zaimplementować sztuczną sieć neuronową z warstwą ukrytą.

Implementacja powinna być elastyczna na tyle, żeby można było zdefiniować liczbę neuronów wejściowych, ukrytych i wyjściowych.

Wykorzystać sigmoidalną funkcję aktywacji i do trenowania użyć wstecznej propagacji błędu z użyciem metody stochastycznego najszybszego spadku.

Sieć nauczyć rozpoznawać jakość wina jak w ćwiczeniu 4. i porównać wyniki z otrzymanymi poprzednio.

Na wykresie pokazać jak zmieniał się błąd uczonej sieci w kolejnych epokach.

Poeksperymentować ze współczynnikiem uczenia oraz liczbą epok.

Eksperymenty

Eksperymenty przeprowadziliśmy dla zbioru win czerwonych znajdującego się w pliku winequality-red.csv, dla win białych znajdującego się w pliku winequality-white.csv jak i zbioru danych iris z biblioteki sklearn.

Jakość modelu sprawdziliśmy podziałem na zbiór treningowy i testowy w proporcjach odpowiednio 60/40.

Eksperymenty przeprowadzaliśmy osobno na zbiorze wina czerwonego oraz białego. Dla wina czerwonego najbardziej optymalna okazała się sieć o 5 neuronach w warstwie ukrytej, zaś dla wina białego o 6 neuronach. Obie sieci miały 1 neuron w warstwie wyjściowej.

Sieć uczyliśmy na przestrzeni 1000 epok ze współczynnikiem uczenia równym 0.7

Dla win białych uzyskaliśmy skuteczność na poziomie ~43% i średni błąd na poziomie 0.513, co oznacza że średnio sieć myliła się o 0.5 klasy.

Dla danych win czerwonych uzyskaliśmy skuteczność na poziomie ~31% i średni błąd na poziomie ~1.068

Wykres błędu w kolejnych epokach został przedstawiony poniżej.

wykres błedu

Wynik był dla nas pewnym zaskoczeniem, dlatego by sprawdzić poprawność implementacji sieci przeprowadziliśmy również test dla danych iris. W tym przypadku uzyskaliśmy skuteczność na poziomie ~83% i średni błąd na poziomie ~0.068

Wykres błędu w kolejnych epokach został przedstawiony poniżej.

wykres błedu

Wnioski

Sieć neuronowa działa całkiem dobrze, ale tylko w przypadku zbioru iris. W porównaniu do poprzedniego ćwiczenia (nr. 4) wyniki są niejednoznaczne. Ostatnio uzyskane wyniki to około 20% poprawnych predykcji dla win białych i około 35% dla win czerwonych. Co oznacza że sieć neuronowa sprawdza się znacznie lepiej w przypadku badania win białych, ale trochę gorzej w przypadku badania win czerwonych w porównaniu do klasyfikatora Bayesa. Ponieważ wyniki dla zbioru danych iris były zadowalające, podejrzewamy, że jest to spowodowane gorszym dopasowaniem danych do tego rodzaju algorytmu.

Prawdopodobnie działanie sieci mogło by poprawić zastosowanie innych funkcji aktywacji (np.ReLU) lub zastosowanie sieci wielowarstwowej.

Warto zaznaczyć że skuteczność perceptronu jest wyższa niż losowa (~14% dla win i ~33% dla iris).

Clone this wiki locally