New Page 1

Implementacja sieci neuronowych w technologii VLSI.

Ogólnie sieci neuronowe VLSI dzielimy na trzy obszerne kategorie: cyfrowe, analogowe i hybrydowe. Wewnątrz tych kategorii włączane są różne sieci i architektury VLSI. Poniższa tabela przedstawia wykaz kilku układów sieci neuronowych.

Implementacje cyfrowe

W chwili obecnej istnieje wiele rozwiązań scalonych realizujących sieci neuronowe, działające w różnych trybach: jako jednostki samodzielne bądź koprocesory współpracujące z komputerami. W trybie pracy jako koprocesor karta realizująca sieć neuronową wykonuje zadanie zlecone jej przez komputer, a następnie przesyła wynik z powrotem do komputera. W przypadku pracy samodzielnej sieć neuronowa może być zaimplementowana jako specjalizowany komputer, zbudowany z elementów cyfrowych standardowych bądź specjalizowanych.

   Sieci neuronowe są realizowane również w postaci scalonych kostek, z których można składać elementy większych sieci neuronowych.

   Podstawowe parametry na podstawie których można porównać i ocenić poszczególne rozwiązania to:

   liczba neuronów zawartej w jednej kostce scalonej podlegająca jednoczesnemu uczeniu.

liczba wejść czyli połączeń neuronu z sygnałami zewnętrznymi uczestniczącymi w procesie uczenia.

szybkość uczenia mierzona w jednostkach zwanych MCUPS (ang. Million Connections Updates Per Second),

szybkość w fazie odtwarzania mierzona w jednostkach MCPS (ang. Million Connections Per Second),

sposób realizacji scalonej: analogowy, cyfrowy, kodowany impulsowo,

dokładność (liczba bitów) użyta przy kodowaniu wag i określaniu wartości funkcji aktywacji sygnału wyjściowego neuronu,

sposób uczenia sieci (wbudowany w strukturę kości, bądź realizowany zewnętrznie),

liczba tranzystorów i powierzchnia zajmowana przez układ,

technologia wykonania,   

pobór mocy przy jednej operacji i mocy całkowitej zużywanej przez kostkę.

Przegląd komercyjnych układów scalonych.

  Koprocesory neuronowe

HNC ANZA Plus - współpracujący z mikrokomputerem IBM PC. Zawierał szereg mikroprocesorów MC68020 z numerycznym koprocesorem MC68881 oraz 4 MB DRAM pamięci głównej. Realizował wiele algorytmów uczących, w tym algorytm propagacji wstecznej, uczenie sieci Hopfielda, BAM, kontrpropagacji itp. Wbudowana pamięć umożliwiała 1.5 miliona połączeń i zapamiętanie stanu miliona neuronów, szybkość działania systemu to 1.5 MCUPS i 1.5 MOPS.

Koprocesor NI1000 - opracowany przez firmę Intel w 1993, realizuje działania matematyczne dotyczące sieci o radialnych funkcjach bazowych i umożliwia pełną realizację sieci tego typu włącznie z precesem uczenia i fazy odtworzeniowej. Przetwarza w ciągu sekundy 40000 wzorców o wymiarze 256, wykonując 16.5 mld operacji. Algorytm uczący jest wbudowany w strukturę układu. Zawiera 3.5 mln tranzystorów. Główne zastosowania to: przetwarzanie obrazów (rozpoznawanie kodów pocztowych), przetwarzanie dokumentów biurowych, kontrola jakości procesów przemysłowych, wykrywanie uszkodzeń kart kredytowych.

Koprocesor COKOS - przeznaczony do współpracy z mikrokomputerem IBM PC do działań związanych z procesem samoorganizacji sieci Kohena. Składa się z 8 równoległych jednostek przetwarzających zwanych MAB. Każda jednostka MAB zawiera układ odejmujący, mnożnik i sumator połączone kaskadowo przesyłające wynik swojego działania do pamięci RAM.

Ogólny schemat połączeń koprocesora COKOS.

Implementacje analogowe

Rozwązania sprzętowe analogowych sieci neuronowych wykorzystują fizyczne własciwości do działania sieci a przez to uzyskują wysoką szybkość i gęstość.

INTEL 80170NW ETANN - pierwszy komercyjny ukłąd analogowy zawierający 64 neurony i 10280 wag. Ten układ zawiera wewnętrzne sprzęzenie zwrotne i dzieli wagi do dwóch 64x80 banków, uwzględnia wielorakie konfiguracje włączając 3 warstwy po 64 neurony i 2 warstwy z 128 wejściami oraz 64 neuronami.

Przykłądowe zastosowanie sieci analogowej.

Czujnik obrazu N128 z analogowym neuronowym przetwarzaniem wstępnym.

Wstępne przetwarzanie obrazu z wykorzystaniem prostych algorytmów np. wygładzania, filtrowania, obliczanie pozycji oraz orientacji danego przedmiotu na scenie, z wykorzystaniem prostych podstawowych operatorów wymaga tylko określonej spójności i typową równoległość. Dlatego sieci neuronowe pomagają zrealizować te algorytmy. Generalnie analogowa implementacja CMOS dla początkowej obróbki obrazu jest dużo bardziej korzystna niż cyfrowa. Czujnik ten ma powierzchnię czynną 128x128 punktów. Każdy punkt zawiera 1 diodę oraz ukłąd neuronowy. Neuronowa sieć przetwarzająca zbudowana jest w oparciu o prostą architekturę neuronów  McCulloch-Pits.

Przykład połączeń neuronowych McCullocha-Pittsa

Każdy punkt jest bezpośrednio połączony ze swoimi  czterema sąsiadami. Sygnały i wagi przyjmują wartości znormalizowane z zakresu -1..1 oraz 0..1. Wejście neuronu jest dołączone do wyjścia diody. Wszystkie podstawowe funkcje są realizowane przez układ DPC (ang. differential pair circuit)

Implementacja neuronu używająca układu DPC.

Każda komórka pojedynczego neuronu zawiera 3 linearne i 1 sigmoidalny układ DPC. Każdy neuron ma 4 różne wejścia i wyjścia od i do następnego sąsiada.

Odczytywanie zdjęć przy pomocy tego układu może odbywać się przy pomocy kilku technik i różnych parametrów układu N128, np. linearyzacji, dyfuzji, binaryzacji oraz segmentacji.

Układ  N128 dowodzi, że wykorzystanie prostych analogowych bloków jest bardzo korzystne w implementacji pewnych algorytmów wykorzystywanych podczas obróbki obrazów w przetwarzaniu równoległym.

Układy hybrydowe

Układy hybrydowe stanowią  połączenia zalet dwóch technik: analogowej oraz cyfrowej. Najczęściej zbudowane są w ten sposób, że zewnętrze wejścia/wyjścia są cyfrowe aby ułatwić połączenie z systemem cyfrowym, natomiast obróbka wewnętrzna odbywa się w pewnej części lub w całości w sposób analogowy. Przykładem takiej realizacji jest Bellcore CLNN-32. Posiada on 5-bitowe wagi ustawiane cyfrowo, natomiast wszystkie wewnętrzne procesy sieci przebiegają w sposób analogowy.

Wykorzystanie impulsowych wag jest inną metodą emulacji sieci na sprzęcie. Taką koncepcje przedstawia układ Neural Semiconductor współpracujący z SU3232 jednostką synaps oraz jednostką neuronów NU32.

Akceleratory sieci neuronowych dla PC i neurokomputery.

Bardzo duże sieci neuronowe (np. składające się z 1000 neuronów) mogą być realizowane w praktyce wyłącznie przy użyciu specjalnych sprzętowych implementacji. Z dużymi specjalnymi maszynami przetwarzającymi równolegle, charakteryzującymi się bardzo dobrymi parametrami konkurować mogą dostępne na rynku pewne rozwiązania alternatywne. Są nimi w praktyce dużo tańsze układy zbudowane w oparciu o koprocesory, akceleratory lub standartowe karty dla PC. Na rynku spotyka się również bardziej złożone sprzętowe implementacje w postaci tzw. neurokomputerów. Ich złożoność polega na wykorzystaniu nie jednej lecz wielu kart. Takie rozwiązania są dość drogie ale mimo wszystko i tak tańsze niż duże maszyny przetwarzające równolegle. 

Przykładowe karty w postaci akceleratorów do PC oraz neurokomputery.

Przedstawione w tabeli przykładowe karty w postaci akceleratorów dla PC oraz neurokomputerów są dostępne w chwili obecnej na rynku. Kilka z nich wykorzystuje szybkie procesory działające w technologii RISC (np.  Intel i860) lub też procesory sygnałowe DSP jako koprocesory w celu przyspieszenia procesów zachodzących w sieciach neuronowych.

Procesory o strukturze pierścieniowej RAP (ang. Ring Array Processor)

Ogólna struktura rozwiązania RAP.

Dane zewnętrzne dostarczane sieci, sygnały wyjściowe poszczególnych warstw neuronów, jak również błędy dopasowania przetwarzane przez algorytm propagacji wstecznej,  są przesyłane za pośrednictwem magistrali w układzie pierścieniowym w jednym kierunku. Każda dana zawiera swój adres, po którym jest rozpoznawana przez odpowiedni procesor a następnie zapamiętywana

Schemat jednego procesora wchodzącego w skład sieci RAP.

Neurokomputer SNAP.

Neurokomputer SNAP należy do rozwiązań specjalistycznych wykorzystujących układy scalone zaprojektowane określonym celu.

Struktura neurokomputera SNAP może zawierać maksymalnie 4 płyty główne, zawierające po 4 kostki na których znajdują się po 4 procesory sygnałowe (PE), każdy współpracujący z pamięcią (M) o pojemności 64MB.

Struktura neurokomputera SNAP.