Algorytmy sztucznej inteligencji Dynamiczne sieci neuronowe 1 Zapis macierzowy sieci neuronowych Poniżej omówione zostaną części składowe sieci neuronowych i metoda ich zapisu za pomocą macierzy. Obliczenia w takiej formie będą zaimplementowane na sterownik PLC. 1.1 Pojedynczy neuron Na rysunku 1 przedstawiono zasadę działania jednego neuronu z sieci. w przypadku jednego wejścia obliczeń dokonuje się na liczbach, jednak w drugim przypadku trzeba pomnożyć wartość każdego wejścia przez odpowiednią wagę. n = w 1,1 p 1 + w 1,2 p 2 + + w 1,R p R + b Jak łatwo zauważyć, większa część tego wzoru to wynik mnożenia dwóch wektorów (a precyzyjniej macierzy o jednym wierszu i macierzy o jednej kolumnie). To działanie jest oznaczone przez pogrubione litery W i p we wzorze. Rys. 1. Pojedynczy neuron z jednym wejściem i z R wejściami 1 Dla wektora o trzech wejściach obliczenia wyglądałyby następująco: Wp + b = [ ] p 1 w 1,1 w 1,2 w 1,3 p 2 + b p 3 Oznaczenie f() oznacza funkcję przejścia (ang. transfer function) neuronu. w sieciach dynamicznych najlepsze efekty w warstwie wejściowej daje funkcja tansig, opisana wzorem poniżej. f(n) = 2 1 + e 2n 1 W warstwie wyjściowej natomiast formalnie zapisuje się stosowanie funkcji purelin, co w praktyce sprowadza się do pozostawienia wartości takiej, jaka jest (ew. przeskalowanie). 1.2 Warstwa neuronów Większość sieci korzysta z wielu neuronów ułożonych w warstwy. Warstwa neuronów w formie pełnej i skróconej jest przedstawiona na rysunku 3. Jak widać, tym razem wyjścia również zostały zapisane jako wektor składający się z S liczb. Każdy z neuronów posiada również osobny 1 Wszystkie obrazy z [1] lub [2] 1
Rys. 2. Pojedynczy neuron z R wejściami zapis skrócony Rys. 3. Warstwa neuronów z R wejściami i S neuronami bias. Funkcja przejścia musi zostać zastosowana do każdego z wyjść osobno. Wagi neuronów są zapisane w macierzy W, która ma R kolumn i S wierszy, czyli każdy wiersz odpowiada za inny neuron w warstwie, a każda kolumna za inne wejście. Dla warstwy składającej się z 4 neuronów i posiadającej 3 wejścia obliczenia będą wyglądały następująco: Wp + b = 1.3 Sieci wielowarstwowe w 1,1 w 1,2 w 1,3 w 2,1 w 2,2 w 2,3 w 3,1 w 3,2 w 3,3 w 4,1 w 4,2 w 4,3 p 1 p 2 p 3 + Często jedna warstwa neuronu jest niewystarczająca, tworzy się wtedy sieci wielowarstwowe. Na rysunku 4 pokazano, że kolejne warstwy sieci łączy się ze sobą jak gdyby szeregowo wyjścia poprzedniej warstwy stają wejściami następnej. b 1 b 2 b 3 b 4 2
Rys. 4. Sieć trójwarstwowa 2 Dynamiczne sieci neuronowe Wyjście sieci statycznych zależało wyłącznie od aktualnego stanu wejścia do sieci. Stan wyjść sieci dynamicznej zależy także od poprzednich stanów wejść, wyjść lub stanów wewnątrz sieci. Sieci takie dzielą się na działające w przód (ang. feedforward) lub rekurencyjne (ze sprzężeniem zwrotnym). 2.1 Generacja poprzednich chwil czasowych Poprzednie chwile czasowe muszą zostać zapisane do wektora i podane na wejście sieci. Na schematach sieci (np. rysunek 5) taka operacja jest oznaczana symbolem TDL (ang. Tapped Delay Line). Neurony w warstwie wejściowej muszą mieć tyle wejść, ile opóźnionych chwil czasowych się zapamiętuje. Ich dokładna ilość zależy od złożoności zadania, jakie ma wykonywać sieć. 2.2 Sieci neuronowe jako modele obiektów Jednym z zastosowań dynamicznych sieci neuronowych jest modelowanie obiektów automatyki. Zostanie do tego wykorzystana sieć NARX (ang. Nonlinear AutoRegressive network with exogenous inputs), której schemat przedstawia rysunek 5. Celem pracy sieci jest jak najlepsze przybliżenie następującej funkcji: y t = F (y t 1, y t 2, y t 3,..., u t, u t 1, u t 2, u t 3,...) Modele stworzone za pomocą sieci neuronowych tego typu mogą być silnie nieliniowe, ponadto nie trzeba znać modelu tych nieliniowości. Jedynym wymaganiem są odpowiednio dobrane przebiegi wejść i wyjść do uczenia sieci. Uczenie sieci odbywa się offline, za pomocą wcześniej zebranych danych, lub online z zastosowaniem algorytmów adaptacyjnych. Sieć z rysunku 5 jest rekurencyjna, ponieważ wartości z wyjścia ŷ(t) są podawane poprzez sprzężenie zwrotne na wejście x(t). Rysunek 5 odnosi się do sytuacji ogólnej. W przypadku tworzenia modelu obiektu, który ma jedno wyjście, wartość S 2 = 1 jeden neuron w warstwie wyjściowej. Oznaczenia z rysunku poniżej. W nawiasach podano uproszczone oznaczenia stosowane w tej instrukcji. TDL generacja opóźnień czasowych; ten element powoduje, że warstwa pierwsza ma tyle wejść, ile jest opóźnień w sieci IW 1,1 macierz wag warstwy wejściowej (IW x ) b 1 wektor wag bias dla warstwy wejściowej (b 1 ) LW 1,3 macierz wag warstwy od sprzężenia zwrotnego (IW y ) f 1 funkcja przejścia warstwy wejściowej, w tym przypadku tansig 3
Rys. 5. Schemat sieci NARX LW 2,1 wektor wag warstwy wyjściowej (LW) b 2 waga bias warstwy wyjściowej (b 2 ) f 2 funkcja przejścia warstwy wyjściowej, w tym przypadku purelin Sieci NARX mogą również mieć większą ilość warstw, zależy to od złożoności wykonywanego zadania. Sieć NARX może mieć dwa rodzaje połączeń. Na rysunku 5 przedtawiono typ Rys. 6. Równoległa i szeregowo-równoległa architektura sieci NARX równoległy(ang. paralell). Sieć ma jedno wejście x(t), będące wymuszeniem i jedno wyjście ŷ(t), czyli odpowiedź sieci. Taka struktura jest używana w normalnej pracy sieci. Do uczenia wykorzystuje się drugą architekturę szeregowo-równoległą (rys. 6 po prawej stronie). Nie ma tu sprzężenia zwrotnego od wyjścia, zamiast niego podaje się rzeczywiste wyjście z obietku y(t). Taką strukturę wykorzystuje się podczas uczenia sieci. 3 Implementacja Neuronowy model obiektu najlepiej wpisać do sterownika jako blok funkcyjny FB, ponieważ zmienne Static są idealne do przechowywania poprzednich chwil czasowych i stałych wartości wag. 4
3.1 Interfejs W tabeli 1 wymienione są zmienne, które powinny pojawić się w interfejsie bloku funkcyjnego. R jest jest ilością opóźnień w sieci NARX, zaś S ilością neuronów w warstwie wejściowej. Tablica 1. Zmienne interfejsu bloku FB Zmienna Inputs Wejście obiektu Outputs Wyjście obiektu Static Poprzednie chwile czasowe z wejścia Poprzednie chwile czasowe z wyjścia Macierz wag IW x Macierz wag IW y Wektor wag b 1 Wektor wag LW Waga b 2 Zakresy skalowania wejść i wyjść Wymiar Liczba Liczba Wektor R-elementowy Wektor R-elementowy Macierz R S Macierz R S Wektor S-elementowy Wektor S-elementowy Liczba 4 liczby Przy deklaracji Array [a..b, c..d] of Real w sterowniku w zasadzie nie ma znaczenia ktory zakres będzie wierszem, a który kolumną. Należy jednak wziąć to pod uwagę przy wpisywaniu kodu obliczeń macierzowych. 3.2 Kod programu Po utworzeniu interfejsu można przystąpić do utworzenia kodu programu. Model obiektu w każdym wywołaniu wykonuje następujące kroki: 1. Skalowanie wejścia z ustalonego zakresu do zakresu (-1, 1). 2. Generacja R poprzednich chwil czasowych z wejścia sieci u(t). 3. Generacja R poprzednich chwil czasowych z wyjścia sieci a 2 (t). Jest to również realizacja sprzężenia zwrotnego. 4. Operacje matematyczne warstwy 1. n 1 = IW x u + IW y a 2 + b 1 a 1 = 2 1 + e 2n 1 u wektor z poprzednimi chwilami czasowymi z u(t), a 2 wektor z poprzednimi chwilami czasowymi z a 2 (t) 5. Operacje matematyczne warstwy 2. a 2 = LW a 1 + b 2 6. Skalowanie wyjścia z zakresu (-1, 1) do zakresu ustalonego. 5
4 Wywołanie modelu obiektu Model obiektu zapisany za pomocą sieci neuronowej musi być wywołany z określonym czasem próbkowania. Do realizacji takiego zadania zostanie wykorzystane przerwanie cykliczne. Należy dodać nowy blok Cyclic Interrupt z parametrem Scan Time równym 50ms. Następnie wywołać FB z modelem obiektu w tym bloku. Jako wejście i wyjście należy wpisać dwie zmienne globalne (Tagi) typu Real. 5 Testowanie modelu Aby sprawdzić, czy model obiektu reaguje w sposób prawidłowy, należy podać odpowiedni sygnał testowy. Może to być np. sygnał skokowy. Generowanie skoku można zrealizować za pomocą istniejących na stanowisku przycisków. Wartość skoku może być dodatkowo ustalana za pomocą potencjometru. Sygnał testowy i odpowiedź obiektu powinny być wyświetlone na panelu operatorskim KTP600 Basic PN. Na panelu należy też wyświetlić czas wykonania kodu z modelem obiektu. Literatura [1] Beale M. H. & Hagan, M. T. & Demuth, H. B., Neural Network Toolbox User s Guide, dostęp poprzez pomoc programu MATLAB [2] Hagan, M. & Demuth, H. Neural networks for control American Control Conference, 1999. Proceedings of the 1999, 1999, 3, 1642-1656 vol.3 1 W razie pytań lub zauważonych błędów proszę o kontakt: fkaszuba@agh.edu.pl, mgr inż. Filip Kaszuba. 6