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

Podobne dokumenty