5. Przyszłość mikroelektroniki

5.13. Nietradycyjne metody przetwarzania informacji

Zupełnie odmienną odpowiedzią na problemy złożoności, szybkości, poboru mocy itd. może być także zastosowanie niekonwencjonalnych metod przetwarzania informacji. Dwie z nich omówione są niżej.

Pierwsza z ich to sztuczne sieci neuronowe. Komputery były kiedyś nazywane w Polsce mózgami elektronowymi, jednak ich zasada działania ma niewiele wspólnego z działaniem sieci nerwowych, czyli biologicznych systemów przetwarzania informacji. Współczesne komputery, niezależnie od szczegółów ich architektury, wywodzą się w swej koncepcji od maszyny Turinga i komputera von Neumanna. Są to proste i bardzo eleganckie modele teoretyczne. Jednak ich podstawą jest zasada przetwarzania szeregowego. Każde zadanie jest podzielone na elementarne kroki wykonywane kolejno w czasie. Nie zmienia tej zasadniczej koncepcji istnienie mikroprocesorów wykonujących równocześnie więcej niż jedną instrukcję, komputerów wieloprocesorowych i  superkomputerów złożonych z tysięcy procesorów pracujących równocześnie. Systemy biologiczne działają inaczej. Pojedyncze neurony, będące biologicznymi „bramkami logicznymi”, działają bardzo wolno (ich „częstotliwość graniczna” jest na poziomie 10 Hz, dzięki czemu nie dostrzegamy nieciągłości ruchu obserwując film wyświetlany z częstotliwością 24 klatek na sekundę). Siłą systemów biologicznych jest masowe przetwarzanie równoległe. Ich „schemat logiczny” to olbrzymia liczba neuronów połączonych w trójwymiarową sieć, w której neurony wzajemnie komunikują się ze sobą. Chociaż wciąż bardzo daleko do pełnego zrozumienia, w jaki sposób taka sieć wykonuje błyskawicznie i bezbłędnie takie funkcje, jak rozpoznawanie obrazów czy rozumienie mowy, nie mówiąc już o bardziej złożonych funkcjach intelektualnych, to jednak działanie pojedynczych neuronów i ich prostych połączeń jest dość dobrze poznane. Można więc pokusić się o zbudowanie elektronicznych odpowiedników neuronów w nadziei, że połączenie w sieć dostatecznie wielkiej ich liczby da nam prawdziwy „mózg elektronowy”, tj.  układ do przetwarzania informacji działający tak, jak systemy biologiczne. Taką sztuczną sieć neuronową można by nauczyć sprawnego wykonywania różnych funkcji, z którymi doskonale sobie radzą biologiczne sieci neuronowe, a które wciąż stanowią problem dla istniejących obecnie komputerów i ich oprogramowania. Inną zaletą takich sieci jest ich odporność na uszkodzenia. Brak lub nieprawidłowe działanie pojedynczych neuronów nie ma większego wpływu na działanie sieci jako całości. Elektronicznym modelem pojedynczego neuronu jest układ pokazany na rysunku 5-14.

Rysunek 5‑14. Elektroniczny model neuronu

Sygnały z wejść są sumowane z wagami, a następnie suma jest podawana na wyjście przez układ nieliniowy o charakterystyce progowej. Wyjście łączy się z wejściami wielu innych neuronów. Funkcja realizowana przez taką sieć zależy od wartości współczynników wagowych, z jakimi podawane są na układ sumujący sygnały z poszczególnych wejść. Sieć można „nauczyć” wykonywania określonej funkcji zmieniając odpowiednio wartości tych współczynników. Dlatego sztuczna sieć neuronowa musi mieć, oprócz samych neuronów, także układy umożliwiające zmienianie i zapamiętywanie współczynników wagowych.

Układ taki, jak na rysunku 5-14, można zbudować jako układ analogowy (wtedy sygnałami są wartości napięć lub prądów na wejściach i wyjściach). Można również zbudować układ cyfrowy realizujący opisaną funkcję. Na wejściach są wówczas liczby reprezentowane binarnie. Układ analogowy jest prostszy, ale działa mniej dokładnie (co zresztą na ogół nie ma w sztucznych sieciach neuronowych większego znaczenia). Problemem w układach analogowych jest realizacja pamięci wag (ponieważ nie jest znany prosty sposób realizacji pamięci sygnałów analogowych). Istnieje wiele układów realizujących ideę sztucznych sieci neuronowych zarówno w wersji analogowej, jak i cyfrowej. Komputerowe symulacje działania sztucznych sieci neuronowych pokazują, że sieci takie są w stanie naśladować działanie sieci biologicznych – pod warunkiem osiągnięcia odpowiedniej złożoności (liczby neuronów). Sztuczne sieci neuronowe są dobrym przykładem poszukiwań nowych sposobów przetwarzania informacji, inspirowanych obserwacjami działania żywych organizmów. Rozwój metod sztucznej inteligencji prowadzi między innymi do budowy wspomnianych wyżej specjalizowanych procesorów realizujących wielopoziomowe sieci umożliwiające realizację algorytmów znanych jako „deep learning”.

Innym przykładem nietradycyjnych metod przetwarzania informacji są układy realizujące operacje logiki rozmytej. Układy logiki rozmytej (ang. „fuzzy logic”) okazały się bardzo przydatne w wielu praktycznych zastosowaniach. Służą one do budowy układów sterowania złożonymi obiektami, a także do rozwiązywania problemów diagnostyki, klasyfikacji itp. Pozwalają skutecznie poradzić sobie z problemami, dla których nie jest znany dobry opis matematyczny lub też opis ten jest tak skomplikowany, że nie daje się w praktyce wykorzystać.

Zasada działania układów logiki rozmytej wywodzi się z obserwacji, że człowiek jest w stanie praktycznie sterować obiektami lub procesami o dużej złożoności nie rozwiązując żadnych równań matematycznych, lecz kierując się jedynie zbiorem prostych reguł opartych na doświadczeniu i praktycznym treningu. Ta obserwacja legła u podstaw formalizmu matematycznego zwanego teorią zbiorów rozmytych (ang. „fuzzy sets”). Zbiór rozmyty jest uogólnieniem pojęcia zbioru w rozumieniu klasycznej teorii mnogości. W klasycznej teorii mnogości element E należy do zbioru Z lub nie, nie ma innej możliwości. W teorii zbiorów rozmytych element E charakteryzuje się stopniem przynależności do zbioru, który jest wyrażony liczbą z przedziału [0,1]. Takie uogólnienie pojęcia zbioru pozwoliło wprowadzić reprezentację danych przybliżonych i ich nieostrą klasyfikację, z jaką najczęściej mamy do czynienia w życiu. Można to zilustrować przykładem podziału temperatury w pomieszczeniu na trzy zbiory: temperatur niskich, średnich i wysokich. Elementami tych zbiorów są wartości temperatury wyrażone na przykład w stopniach Celsjusza. Gdyby te trzy zbiory temperatur były zbiorami w tradycyjnym rozumieniu, trzeba by zdefiniować ostre granice, na przykład zakładając, że temperatury niskie to wszystkie temperatury niższe od +18 oC, wysokie to wszystkie wyższe od +25 oC, a pozostałe należą do zbioru temperatur średnich. Wtedy temperatura +18 oC jest średnia, podobnie jak +25 oC,  temperatura +17,99 oC jest niska, a +25,01oC – wysoka.

Rysunek 5‑15. Ilustracja pojęcia zbioru rozmytego na przykładzie podziału temperatur na trzy zbiory rozmyte: temperatur niskich, średnich i wysokich. Temperatura 24 oC należy do zbioru temperatur średnich w stopniu 0,75 i do zbioru temperatur wysokich w stopniu 0,25

W przypadku zbiorów rozmytych możemy zdefiniować stopień przynależności temperatur do zbiorów przy użyciu funkcji przynależności, na przykład takich, jak na rysunku 5-15. Funkcja przynależności przypisuje każdemu elementowi zbioru wartość stopnia przynależności do tego zbioru.
Przy funkcjach przynależności zdefiniowanych tak, jak na rysunku 5-15, można powiedzieć, że temperatura +18 oC należy ze stopniem przynależności 0,5 do zbioru temperatur średnich, i ze stopniem przynależności 0,5 do zbioru temperatur niskich. Im niższa temperatura, tym niższy jej stopień przynależności do zbioru temperatur średnich, a wyższy – do zbioru temperatur niskich. Taka rozmyta klasyfikacja bardziej odpowiada naszej intuicji mówiącej, że nie ma jakiejś naturalnej ostrej granicy między temperaturami niskimi, a średnimi. Podobnie dla temperatur średnich i wysokich.

Dla zbiorów rozmytych definiuje się operacje logiczne NOT, AND i OR poprzez zdefiniowanie odpowiednich działań na funkcjach przynależności:

B = NOT A jeśli µB = 1 - µA

C = A AND B jeśli µC = min(µA, µB)

C = A OR B jeśli µC = max(µA, µB)

gdzie A, B, C są to zbiory rozmyte, zaś µA, µB i µC są to funkcje przynależności do tych zbiorów.

Przypuśćmy, że chcemy opisać pewien algorytm klasyfikacji lub sterowania w terminologii zbiorów rozmytych. Niech będzie to na przykład algorytm sterowania grzejnikiem w pomieszczeniu.  Należy zdefiniować zbiory rozmyte dla temperatury wewnątrz i na zewnątrz pomieszczenia (są to zmienne wejściowe) oraz dla ustawienia pokrętła regulatora (jest to zmienna wyjściowa). Następnie należy określić reguły wnioskowania.  Reguły takie mają postać, która może być zilustrowana przykładem następujących dwóch reguł: 

JEŻELI temperatura wewnętrzna NALEŻY DO ZBIORU temperatur „niskich” I temperatura zewnętrzna NALEŻY DO ZBIORU temperatur „upał” TO ustawienie pokrętła NALEŻY DO ZBIORU „brak grzania”.

JEŻELI temperatura wewnętrzna NALEŻY DO ZBIORU temperatur „niskich” I temperatura zewnętrzna NALEŻY DO ZBIORU temperatur „mróz” TO ustawienie pokrętła NALEŻY DO ZBIORU „maksymalne grzanie”.

W tego rodzaju regułach słowa NALEŻY DO ZBIORU oznaczają określenie stopnia przynależności, a słowo I oznacza funkcję AND. W regułach wnioskowania może wystąpić także słowo LUB, czyli funkcja OR. Dla konkretnych wartości zmiennych wejściowych przy danych regułach wnioskowania określony jest kształt funkcji przynależności do zbiorów rozmytych dla zmiennej wyjściowej. Pozwala to na określenie konkretnej wartości tej zmiennej - w naszym przykładzie właściwego ustawienia pokrętła regulatora grzejnika. Ten przykład jest trywialny, lecz w ten sam sposób definiuje się algorytmy sterowania dla bardzo złożonych obiektów lub procesów. Reguły te definiuje w języku naturalnym człowiek – ekspert, który potrafi sterować danym obiektem. Zdefiniowanie zbiorów rozmytych dla zmiennych wejściowych i wyjściowych oraz reguł wnioskowania wystarcza, by zbudować układ realizujący algorytm sterowania. Taki układ ma strukturę pokazaną na rysunku 5-16.

Rysunek 5‑16. Struktura układu sterowania rozmytego. W bloku rozmywania aktualnym wartościom zmiennych wejściowych przypisywane są stopnie przynależności do zbiorów rozmytych. Blok wnioskowania wykonuje na wartościach stopni przynależności operacje wynikające z reguł wnioskowania. Blok wyostrzania konstruuje kształt wyjściowych funkcji przynależności i na tej podstawie określa wartości zmiennych wyjściowych

Zauważmy, że operacje logiczne na zbiorach rozmytych są równoważne prostym operacjom arytmetycznym na wartościach stopni przynależności, które mogą przybierać dowolne wartości z przedziału [0,1]. Operacje wykonywane w blokach układu sterowania rozmytego są operacjami o charakterze analogowym i mogą być realizowane przez odpowiednio zaprojektowane układy analogowe. Zmienne wejściowe, wyjściowe oraz wartości stopni przynależności są wówczas reprezentowane przez zmieniające się w sposób ciągły wartości napięć (lub prądów). Można również budować układy cyfrowe. Zmienne wejściowe, wyjściowe oraz wartości stopni przynależności są wówczas reprezentowane przez liczby wyrażone w postaci binarnej. Pominiemy tu szczegóły realizacji zarówno układów w wersji analogowej, jak i cyfrowej.

Metody logiki rozmytej wykazały mimo swej prostoty zdumiewającą skuteczność w wielu trudnych zadaniach technicznych. Układy sterowania oparte na tych metodach są obecnie produkowane jako uniwersalne, programowalne układy analogowe lub (częściej) cyfrowe, oraz jako układy specjalizowane realizujące jeden konkretny algorytm. Mimo iż logika rozmyta jest w pewnym sensie uogólnieniem tradycyjnej logiki dwuwartościowej, a blok wnioskowania jest odpowiednikiem tradycyjnego kombinacyjnego układu cyfrowego,  układy realizujące  algorytmy logiki rozmytej nie zastąpią tradycyjnych układów cyfrowych.  Stanowią jednak bardzo cenne ich uzupełnienie.