Instytut Informatyki PŁ
Transkrypt
Instytut Informatyki PŁ
Instytut Informatyki Politechnika Łódzka Metody sztucznej inteligencji w ekonomii – laboratorium Zad. 2. Sieci wielowarstwowe Celem zadania jest aproksymacja funkcji zadanej tabelą x1 x2 y 0 0 0 0 2 4 1 1 2 3 0 9 2 1 5 2 2 8 3 2 13 (odpowiada to funkcji y = x12 + x22) W MATLAB-ie tworzymy m-plik zawierający: Wektor uczący: P=[0 0 1 3 2 2 3; 0 2 1 0 1 2 2]; Wektor celu: T=[0 4 2 9 5 8 13]; Budujemy strukturę sieci: - sieć dwuwarstwową - dwa wejścia - zmienna liczba neuronów w warstwie ukrytej (początkowo 4), funkcja aktywacji tansigmoidalna (tansig) - jedno wyjście - sieć uczymy metodą propagacji wstecznej z momentem (traingdm). Współczynnik momentu nadaje bezwładność współczynnikowi uczenia, co umożliwia szybsze uczenie bez oscylacji. net=newff(minmax(P),[4 1],{'tansig','purelin'},'traingdm'); Ustawiamy parametry uczenia sieci: odświeżanie, współczynnik uczenia (krok na kierunku minimalizacji), wspołczynnik momentu, maksymalną liczbę epok (iteracji) oraz dopuszczalny błąd średniokwadratowy: - odświeżanie net.trainParam.show=20; - współczynnik uczenia net.trainParam.lr=0.005; - współczynnik momentum net.trainParam.mc=0.95; - maksymalna liczba epok net.trainParam.epochs=1000; - błąd średniokwadratowy net.trainParam.goal=0.001; Uczymy sieć. Naukę należy kontynuować do momentu, w którym błąd uczenia przestaje spadać. W przeciwnym wypadku może dojść do sytuacji, że sieć zacznie uczyć się "na pamięć". Jej zdolności do uogólniania (dawania poprawnej odpowiedzi dla danych nie biorących udziału w procesie uczenia) będą wtedy znacznie słabsze. [net,tr]=train(net,P,T); Tak wytrenowaną sieć należy sprawdzić. W tym celu na jej wejście podajemy wektor uczący P spodziewając się, że na wyjściu otrzymamy wektor zbliżony do wektora celu T. Jeśli tak jest, sieć nauczyła się dobrze. A=sim(net,P) Szkielet skryptu znajduje się w pliku WIEL.M Zadania 1. Przeprowadzić naukę sieci dla różnych, startowych wartości wag (każdorazowe uruchomienie procesu nauki ustawia wagi początkowe w sposób losowy), powtórzyć ten proces dla różnych ilości neuronów ukrytych. Zapisać najlepszą sieć do pliku (save (nazwa_pliku,’net’)). Zaobserwować jak na szybkość nauki wpływa wartość momentum. 2. Zmienić algorytm nauki na metodę Levenberga-Marqurdta (trainlm) i powtórzyć proces nauki, tak jak w zadaniu 1. 3. Przygotować dodatkowy zbiór testowy i sprawdzić działanie najlepszych sieci. 4. Przedstawiony poniżej 40-elementowy zbiór danych, reprezentujący pewną funkcję, podzielić na zbiór uczący i testowy. Dobrać najlepszą strukturę sieci, która aproksymuje tę funkcję, sprawdzić jakość nauki sieci korzystając ze zbioru testowego (Dane dostępne są również w postaci pliku tekstowego na stronie WWW) x1 x2 x3 y 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 2 3 3 3 0 0 0 1 1 2 3 1 2 3 2 0 1 2 0 1 2 1 3 -2 -3 -1 -2 -3 -2 0 -1 -2 1 0 -1 2 0 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 0 0 1 1 1 2 2 2 3 0 2 3 1 2 1 2 0 1 3 0 1 3 0 5 3 2 6 5 3 2 8 7 5 12 11 9 16 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 2 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 1 1 2 2 2 3 3 3 1 0 1 2 0 1 1 2 3 1 2 3 . Sprawozdanie Powinno zawierać opis przeprowadzonych badań, uzyskane wyniki, porównanie wykorzystanych sposobów nauki oraz skrypt do zadania 4. 15 9 8 7 15 14 20 19 18 26 25 24