Part II
Wpis ten jest kontynuacją poprzedniego wpisu na temat zajęć z Wstępu do Sieci Neuronowych
Następnie omawialiśmy algorytm wstecznej propagacji, jego uzasadnienie, spadek, czy też minimalizację gradientową,
Zobacz też: Backpropaggation algorithm
Uczenie bez nauczyciela. Wybór składowej głównej z zestawu cech regułę Hebba, oraz jej modyfikację w postaci reguły Oja (dodatkowo wspomniana była sieć instar i outstar Grossberga)
Później mówiliśmy o samooorganizującej topologicznej sieci Kohonena oraz modyfikacji algorytmu Kohonena, by mógł działać na wejściach symbolicznych.
Kolejnym tematem były algorytmy klasyfikujące (bez nauczyciela), czyli umozliwiające podział podanych przykładów, na pewne 'naturalne' kategorie. Algorytm ze stałą liczbą kategori - McQueena, oraz algorytmy ze zmienną liczbą kategorii - ART1, ART2 - również autorstwa Grossberga.Zobacz też: http://en.wikipedia.org/wiki/Adaptive_resonance_theory
Sieci rekurencyjne i dynamiki w sieciach rekurencyjnych, rekurencyjna sieć Hopfielda, pojemność sieci Hopfielda (czyli ilość przykładów, jakie sieć Hopfielda jest w stanie 'zapamiętać')(btw: pojemność sieci Hopfielda w przypadku użycia reguły Hebba wyraża się poprzez N/(2*ln(N), gdzie N to ilość neuronów, co w przypadku małych N (~40) można zaokrąglać bodajże poprzez 0.138*N. Dzięki użyciu metody Storkeya, można poprawić sam proces uczenia (przykłady do uczenia można wówczas podawać on-line) oraz zwiększyć pojemność sieci do N/(sqrt(2*ln(N))) tutaj jest papier Storkey'a)
Na koniec omawialiśmy maszyny Boltzmana i ich dynamikę, symulowane wyżarzanie dla sieci rekurencyjnych (w dwóch wersjach simulated tampering i simulated annealing), zasadę warunkowania Gibbsa. Jak się dzisiaj dowiedziałem, tematyka maszyn Boltzmana, była tematem wykładu habilitacyjnego dr Tomasza Schreibera, który miał miejsce dzisiaj wczoraj i o ile mi wiadomo zakończył się sukcesem. Serdecznie gratuluję!. (Na sam koniec dr Schreiber wspominał też o symulacji doskonałej Proppa-Wilsona).
Jeżeli chodzi o wsteczną propagację, to jak większość napisałem program, który symulował ramię robocika, który wyciąga ramię
w kierunku gdzie się klinkie (ustawiając odpowiednio kąty między pionem i ramieniem, oraz ramieniem i przedramieniem). Oczywiście, zarówno maksymalny zakres kątów jak i długości ramion konfigurowalne (chyba większość tak robiła). Na rysunku 1 i 2, kolorem pomarańczowym zaznaczony jest obszar, osiągalny przez ramie robocika, a ta czerwona kropka, to punkt, gdzie klikałem. Pomarańczowa kreska i czerwony łuk, to tylko pomocnicze.
Napisałem autoasocjator oparty o rekurenczyjną sieć hopfielda, używający wspomnianej przeze mnie wcześniej metody Storkeya. Na rysunek 3. widać trzy 'wyświetlacze'. Pierwszy pokazuje zaszumioną cyferkę i pozwala jednocześnie zmieniać bity w zaszumionym obrazku. Środkowy pokazuje, co chcemy osiągnąć, a prawy proces odszumiania. (W przypadku ręcznego zaszumiana środkowy wyświetlacz jest czyszczony, ze względu na to, że to nie jest złota kula i nie wie do czego się zmierza :>). Przygotowałem krótkie video z działania, wersja nieoglądalna znajduje się na na video google, lepsza wersja jest na veoh (u was też veoh ma takie problemy z załadowaniem się?)
Napisałem też program klasyfikujący pewne obiekty w oparciu o algorytm Kohonena, ale jest to temat na osobną notkę (choć szczerze wątpię, czy będe go opisywał)
Pozostali z grupy pisali ciekawe programy: rozplątywanie i dwupodział grafu (+3D :)), wyodrębnianie składowych głównych z serii zdjęć i na tej podstawie odtwarzanie 'popsutych' zdjęć, odszumianie obrazów (bez uczenia, w oparciu o maszyny Boltzmana i minimalizację pewnej funkcji energetycznej), optymalizację palety kolorów w plikach graficznych, działka laserowe etc.
Rysunek 1. Propagacja wsteczna - ramię robocika.
Rysunek 2. Propagacja wsteczna - ramię robocika.
Rysunek 3. Autoasocjator Hopfielda
Podsumowując: były to chyba najciekawsze zajęcia w ciągu prawie 4 lat studiów. Chyba po raz pierwszy uczestniczący w ćwiczeniach (no dobra, ciut przeginam ;)), chętnie pisali programy i pokazywali rezultaty.
Z tego miejsca pozdrawiam crona-b, artiego oraz Monikę :). Pozdrowienia wędrują również dla osób z 3go roku (w szczególności Tomasza S. oraz Piotra M.) :)