Leabra

Leabra oznacza lokalny, oparty na błędach i asocjacyjny, biologicznie realistyczny algorytm . Jest to model uczenia się , który jest równowagą między nauczaniem hebbowskim i opartym na błędach z innymi cechami wywodzącymi się z sieci . Model ten służy do matematycznego przewidywania wyników na podstawie danych wejściowych i wcześniejszych wpływów uczenia się. Ten model jest pod silnym wpływem i przyczynia się do projektów i modeli sieci neuronowych. Ten algorytm jest domyślnym algorytmem w emergentnym (następca PDP++) podczas tworzenia nowego projektu i jest szeroko stosowany w różnych symulacjach.

Uczenie Hebbowskie jest przeprowadzane przy użyciu algorytmu warunkowej analizy głównych składowych (CPCA) ze współczynnikiem korygującym dla rzadkich oczekiwanych poziomów aktywności.

Uczenie oparte na błędach jest wykonywane przy użyciu GeneRec , który jest uogólnieniem algorytmu recyrkulacji i jest zbliżony do powtarzającej się propagacji wstecznej Almeidy – Pinedy . Używana jest symetryczna wersja GeneRec z punktem środkowym, która jest odpowiednikiem kontrastywnego uczenia Hebbiana (CHL). Patrz O'Reilly (1996; Neural Computation) po więcej szczegółów.

Funkcja aktywacji jest przybliżeniem punktu-neuronu z zarówno dyskretnymi skokami , jak i ciągłym wyjściem kodu szybkości.

Inhibicję na poziomie warstwy lub grupy jednostek można obliczyć bezpośrednio za pomocą funkcji k-zwycięzców-bierze-wszystko (KWTA), tworząc rzadkie rozproszone reprezentacje.

Wejście netto jest obliczane jako średnia, a nie suma, dla połączeń, na podstawie znormalizowanych, przekształconych sigmoidalnie wartości wagi, które podlegają skalowaniu na poziomie grupy połączeń w celu zmiany względnych udziałów. Automatyczne skalowanie jest wykonywane w celu skompensowania różnic w oczekiwanym poziomie aktywności w różnych projekcjach.

Dokumentację dotyczącą tego algorytmu można znaleźć w książce „Computational Explorations in Cognitive Neuroscience: Understanding the Mind by Simulating the Brain” wydanej przez MIT Press. oraz w Emergent Documentation

Przegląd algorytmu Leabra

Pseudokod dla Leabry jest podany tutaj, pokazując dokładnie, jak elementy algorytmu opisane bardziej szczegółowo w kolejnych sekcjach pasują do siebie.

 Iteruj po ujemnych i dodatnich fazach rozliczania dla każdego zdarzenia. o Na początku rozliczania, dla wszystkich jednostek: - Zainicjuj wszystkie zmienne stanu (aktywacja, v_m, itp.).  - Zastosuj wzorce zewnętrzne (wejście zaciskowe w minusie, wejście i wyjście w plusie).  - Oblicz warunki skalowania wejścia netto (stałe, obliczane tutaj, aby sieć mogła być dynamicznie zmieniana).  - Optymalizacja: jednokrotne obliczenie danych wejściowych netto ze wszystkich statycznych aktywacji (np. mocno zaciśnięte zewnętrzne dane wejściowe).  o Podczas każdego cyklu rozliczania, dla wszystkich jednostek niezamocowanych: - Oblicz pobudzające wejście sieciowe (g_e(t), aka eta_j lub net) -- optymalizacja oparta na nadawcy poprzez ignorowanie nieaktywnych.  - Oblicz   kWTA  hamowanie dla każdej warstwy na podstawie g_i^Q: * Podziel jednostki na dwie grupy na podstawie g_i^Q: górne k i pozostałe k+1 -> n. * Jeśli podstawowa, znajdź k i k+1-ty najwyższy Jeśli oparta na średniej, oblicz średnią z 1 -> k & k+1 -> n.  * Ustaw przewodnictwo hamujące g_i na podstawie g^Q_k i g^Q_k+1 - Oblicz punktową aktywację neuronów, łącząc wejście pobudzające i hamujące y^+_j).  Po obu fazach zaktualizuj wagi (na podstawie liniowych aktualnych wartości wagowych) dla wszystkich połączeń: o Oblicz   zmiany masy  spowodowane błędami za pomocą  CHL  z miękkim ograniczeniem wagi o Oblicz  zmiany wagi  Hebba za pomocą   CPCA  z aktywacji w fazie dodatniej o Oblicz zmianę wagi netto jako ważoną sumę sterowanych błędami i Hebba o Zwiększ wagi zgodnie ze zmianą masy netto. 

Implementacje

Emergent to oryginalna implementacja Leabry; jego najnowsza implementacja jest napisana w Go . Został napisany głównie przez dr O'Reilly'ego , ale ostatnio zatrudniono profesjonalnych inżynierów oprogramowania, aby ulepszyć istniejący kod. Jest to najszybsza implementacja, odpowiednia do budowy dużych sieci. Chociaż emergent ma graficzny interfejs użytkownika, jest bardzo złożony i ma stromą krzywą uczenia się.

Jeśli chcesz szczegółowo zrozumieć algorytm, łatwiej będzie odczytać niezoptymalizowany kod. W tym celu sprawdź wersję MATLAB . Dostępna jest również wersja R , którą można łatwo zainstalować za pomocą install.packages("leabRa") w R i zawiera krótkie wprowadzenie do sposobu korzystania z pakietu. Wersje MATLAB i R nie nadają się do budowy bardzo dużych sieci, ale można je szybko zainstalować i (przy pewnym doświadczeniu programistycznym) są łatwe w użyciu. Ponadto można je łatwo dostosować.

Specjalne algorytmy

Linki zewnętrzne