Narzędzia sztucznej inteligencji Adam Czech rok III INF I st., gr. L6
Gabriel Kachel środa, godz. 14:40
laboratorium
Ćwiczenie 3: Rekurencyjna sieć Hopfielda jako pamięć skojarzeniowa rekonstrukcja
wzorców znakowych
Ćwiczenie wykonano w dniach: Sprawozdanie oddano dnia: ocena:
10.06.2014
28.05, 04.06.2014
1. Cel i zakres ćwiczenia.
Ćwiczenia ma na celu zastosowanie rekurencyjnej sieci Hopfielda do usuwania zakłóceń z map
bitowych, zawierających obraz liter E , F , G , H . Działanie sieci umożliwia rekonstrukcję
zniekształconego obrazu, poprzez skojarzenie go z oryginalnym wzorcem, pełniącym rolę tzw. Atraktora, czyli
punktu stabilnego sieci.
2. Wstęp teoretyczny
Jednym z najpopularniejszych typów sieci rekurencyjnych jest sieć Hopfielda. Podstawowe cechy tej
sieci:
- struktura jednowarstwowa, ze sprzężeniem zwrotnym,
- nieliniowa funkcja aktywacji neuronów,
- brak wejść zewnętrznych,
- do wejść neuronów podawane są sygnały wyjściowe wszystkich pozostałych neuronów, opóznione o jedną
chwilę czasową.
Rys. 1. Struktura sieci rekurencyjnej Hopfielda [1]
1
Parametry sieci Hopfielda:
macierz współczynników wagowych W o wymiarach N x N (N - liczba neuronów)
niekiedy uwzględnia się również N-elementowy wektor współczynników progowych b:
potencjał i-tego neuronu w k-tym kroku działania sieci:
funkcja aktywacji - najczęściej progowa , progowa symetryczna lub liniowa z nasyceniem :
Z siecią Hopfielda związana jest ponadto tzw. funkcja energetyczna, przyjmująca w kolejnym, k-tym kroku
działania sieci następującą wartość: [1]
gdzie y(k) jest wektorem wartości sygnałów wyjściowych sieci w k-tym kroku: [1]
2
3. Przygotowanie danych i utworzenie sieci Hopfielda
Na samym początku ćwiczenia zdefiniowaliśmy cztery macierze o wymiarach 6x8, reprezentujące
mapy bitowe naszych liter. Macierze wypełnialiśmy 1 dla zapalonego piksela lub -1 dla zgaszonego.
A=[-1,-1,-1,-1,-1,-1,
-1,1,1,1,1,-1,
-1,1,-1,-1,-1,-1,
-1,1,-1,-1,-1,-1,
-1,1,1,1,1,-1,
-1,1,-1,-1,-1,-1,
-1,1,-1,-1,-1,-1,
-1,1,1,1,1,-1]
B=[-1,-1,-1,-1,-1,-1,
-1,1,1,1,1,-1,
-1,1,-1,-1,-1,-1,
-1,1,-1,-1,-1,-1,
-1,1,1,1,1,-1,
-1,1,-1,-1,-1,-1,
-1,1,-1,-1,-1,-1,
-1,1,-1,-1,-1,-1]
C=[-1,-1,-1,-1,-1,-1,
-1,-1,1,1,1,1,
-1,1,-1,-1,-1,-1,
-1,1,-1,-1,-1,-1,
-1,1,-1,1,1,1,
-1,1,-1,-1,-1,1,
-1,1,-1,-1,-1,1,
-1,-1,1,1,1,1]
D=[-1,-1,-1,-1,-1,-1,
-1,1,-1,-1,1,-1,
-1,1,-1,-1,1,-1,
-1,1,-1,-1,1,-1,
-1,1,1,1,1,-1,
-1,1,-1,-1,1,-1,
-1,1,-1,-1,1,-1,
-1,1,-1,-1,1,-1]
Kolejnym krokiem była wizualizacja naszych liter, by to przeprowadzić użyliśmy funkcję subplot oraz hintonw,
by móc wyświetlić wszystkie litery w jednym oknie graficzny
figure(1)
subplot(2,2,1)
hintonw(A);
subplot(2,2,2)
hintonw(B);
subplot(2,2,3)
hintonw(C);
subplot(2,2,4)
hintonw(D);
3
Otrzymaliśmy następujące obrazy:
Rys. 2. Wizualizacja znaków wzorcowych.
Kolejnym etapem ćwiczenia było utworzenie macierzy atraktorów T. By to wykonać musieliśmy przekształcić
macierze wejściowe obrazów na macierz o rozmiarze 48x1, zrobiliśmy to za pomocą funkcji reshape. Nowo
powstała macierz T ma rozmiar 48x4, gdyż w kolejnych kolumnach znajdują się poszczególne atraktory.
A1=reshape(A,48,1);
B1=reshape(B,48,1);
C1=reshape(C,48,1);
D1=reshape(D,48,1);
T=[A1,B1,C1,D1]
Po sprawdzeniu poprawności macierzy T, wykorzystując funkcję newhop utworzyliśmy sieć Hopfielda, dla
której atraktorami są znaki wzorcowe:
net = newhop(T)
Kolejną czynnością było dopisanie do skryptu instrukcji, które wyświetlały rozmiary i zawartość macierzy
współczynników wagowych oraz wektora współczynników progowych:
disp('Rozmiar macierzy wag: ' )
disp(net.LW)
disp('Zawartość macierzy wag: ')
disp(net.LW{1})
disp('Rozmiar wektora wsp. progowych: ')
disp(net.b)
disp('Zawartość wektora wsp. progowych: ')
disp(net.b{1})
4
4. Badanie właściwości skojarzeniowych utworzonej sieci Hopfielda
By przetestować naszą sieć Hopfielda, sprawdziliśmy, czy sieć potrawi odtworzyć oryginalne obrazy
liter na podstawie ich zakłóconych obrazów. W tym celu utworzyliśmy macierz TZ.
A2=[-1,-1,-1,-1,-1,-1,
-1,-1,1,1,1,-1,
-1,-1,-1,1,-1,-1,
-1,1,1,1,-1,-1,
-1,1,1,1,1,-1,
-1,1,1,1,-1,-1,
-1,1,-1,-1,-1,-1,
-1,1,1,1,1,-1]
B2=[-1,-1,1,-1,-1,-1,
-1,1,-1,-1,1,-1,
-1,1,-1,-1,-1,-1,
-1,1,-1,1,-1,-1,
-1,1,1,1,1,-1,
-1,1,1,-1,-1,1,
-1,1,-1,-1,-1,-1,
-1,1,-1,-1,-1,-1]
C2=[-1,-1,-1,-1,-1,-1,
-1,-1,1,1,1,1,
-1,1,-1,-1,-1,-1,
-1,1,-1,1,-1,1,
-1,1,-1,1,1,1,
-1,1,1,-1,-1,1,
-1,1,-1,1,-1,1,
-1,-1,1,1,1,1]
D2=[-1,-1,1,-1,-1,-1,
-1,1,-1,-1,1,-1,
-1,1,-1,-1,1,-1,
-1,1,-1,-1,1,-1,
-1,1,1,1,1,-1,
-1,1,-1,1,1,-1,
-1,1,-1,-1,1,-1,
-1,1,-1,-1,1,-1]
figure(2)
subplot(2,2,1)
hintonw(A2);
subplot(2,2,2)
hintonw(B2);
subplot(2,2,3)
hintonw(C2);
subplot(2,2,4)
hintonw(D2);
A3=reshape(A2,48,1);
B3=reshape(B2,48,1);
C3=reshape(C2,48,1);
D3=reshape(D2,48,1);
5
TZ=[A3,B3,C3,D3]]
Następnie zasymulowaliśmy działanie sieci Hopfielda, podając jako warunki początkowe stany reprezentujące
zakłócone obrazy:
Y=sim(net,{4 5}, {}, {TZ})
Gdzie:
Net jest zmienną reprezentującą utworzono uprzednio sieć,
Pierwsza zmienna to LS, która reprezentuje liczbę różnych stanów początkowych, dla których chcemy
przeprowadzić symulację, w naszym przypadku jest to 4, gdyż mamy 4 literki
Druga zmienna to KS, czyli liczba kroków czasowych symulacji w naszym przypadku 5.
W wyniku funkcji sim otrzymujemy zmienną Y, która jest tablicą macierzy. W naszym przypadku składa się ona
z 5 macierzy, gdyż tyle kroków działania sieci symulujemy (KS=5). W kolejnym kroku wyświetliliśmy macierze
wchodzące w skład tablicy Y:
whos Y
disp(Y)
disp(Y{1})
disp(Y{2})
disp(Y{3})
disp(Y{4})
disp(Y{5})
Następnie przeprowadziliśmy wizualizację stanów sieci w kolejnych krokach jej działania.
figure(2)
for i=1:4
subplot(2,2,i)
hintonw(reshape(TZ(:,i),8,6))
end
pause
for j=1:5
for k=1:4
subplot(2,2,k)
Z=reshape(Y{j}(:,k),8,6)
hintonw(Z)
end
pause
end
6
Wizualizacja obrazów z kolejno, 1, 3 i wieloma zakłóceniami
Rys. 3. Wizualizacja znaków z jednym zakłóceniem.
Rys. 4. Wizualizacja znaków z trzema zakłóceniami.
Rys. 5. Wizualizacja znaków z wieloma zakłóceniami.
7
Rys. 6. Wizualizacja rekonstrukcji znaków z jednym zakłóceniem
Rys. 7. Wizualizacja rekonstrukcji znaków z trzema zakłóceniami
Rys. 8. Wizualizacja rekonstrukcji znaków z wieloma zakłóceniami krok 1
8
Rys. 9. . Wizualizacja rekonstrukcji znaków z wieloma zakłóceniami krok 2
Rys. 10. Wizualizacja rekonstrukcji znaków z wieloma zakłóceniami krok 3
Rys. 11. Wizualizacja rekonstrukcji znaków z wieloma zakłóceniami krok 4
9
Rys. 12. Wizualizacja rekonstrukcji znaków z wieloma zakłóceniami krok 5
6.Wnioski
W ćwiczeniu zapoznaliśmy się z rekurencyjną siecią Hopfielda i zastosowaliśmy sieć do usuwania
zakłóceń z map bitowych o wymiarach 8x6 pikseli, zawierających obrazy liter E, F, G i H.
Przygotowanie map bitowych oraz tworzenie sieci Hopfielda odbyło się bez większych trudności.
Następnym etapem naszej pracy było sprawdzenie możliwości skojarzeniowych naszej utworzonej wcześniej
sieci, aby tego dokonać wprowadziliśmy początkowo tylko jedno zakłócenie (Rys. 3.), sieć odpowiedziała
zgodnie z założeniem ćwiczenia czyli prawidłowo skojarzyła mapę bitową pomimo zakłócenia (Rys. 6.).
Następnie zwiększaliśmy ilość zakłóceń mapy bitowej do 3 (Rys. 4.), sieć nadal prawidłowo kojarzyła litery
(Rys.7.). Po wprowadzenia do wzorca mapy bitowej większej ilości błędów (Rys. 5.), postanowiliśmy
przedstawić proces kojarzenia liter przez sieć (Rys. 8, 9, 10, 11, 12.), jak widać sieć nadal poprawnie
odczytywała zakłócone litery i potrafiła je zrekonstruować.
Naszym zdaniem sieć Hopfielda, którą stworzyliśmy zgodnie z poleceniami ze skryptu, działa
poprawnie, a jej możliwości są naprawdę duże.
Wykaz literatury
1.Bartecki K.: Sztuczne sieci neuronowe w zastosowaniach. Zbiór ćwiczeń laboratoryjnych z wykorzystaniem
przybornika Neural Network Toolbox programu Matlab. Skrypt Politechniki Opolskiej nr 289, Opole 2010.
2.Bartecki K.: Sztuczne sieci neuronowe. Materiały do wykładów z sieci neuronowych.
10
Wyszukiwarka
Podobne podstrony:
Sprawozdanie Ćw 2Sprawozdanie ćw 10 (4)Sprawozdanie ćw 15 (2)Sprawozdanie ćw 13 (2)Sprawozdanie z ćw 11 Osłabienie promieniowania gamma przy przechodzeniu przez materięsprawozdanie ćw 1 1Karta sprawozdania cw 6Sprawozdanie ćw 16 (2)Sprawozdanie Ćw 4Sprawozdanie ćw 12 (4)Sprawozdanie ćw 14 (3)Sprawozdanie ćw 8 (2)Sprawozdanie z ćw 25Sprawozdanie z ćw 19Sprawozdanie ćw 8Sprawozdanie ćw 10 (1)Sprawozdanie ćw 10 (3)Karta sprawozdania cw 2SPRAWOZDANIE CW 5więcej podobnych podstron