Professional Documents
Culture Documents
Inteligencja
Tworzenie sieci
Steffen Nissen
neuronowych ─ to proste
P
rzez lata filmy science-fiction, takie jak
Na CD: Ja, Robot pochodzące z hollywoodzkich
wytwórni przedstawiały sztuczną inteligen-
Na płycie CD zamie-
cję (SI) jako wieszcza zagłady. Nic bardziej mylne-
ściliśmy omawianą
bibliotekę oraz listingi go. Podczas gdy Hollywood karmi nas opowieścia-
użyte w tym artykule. mi o naszym nieuchronnym odejściu w niepamięć,
ludzie zupełnie niezainteresowani wyniszczeniem
naszego gatunku pracowali nad SI po to, by uczy-
nić nasze życie łatwiejszym, bardziej produktyw-
nym, dłuższym. Po prostu lepszym.
Roboty w filmie Ja, Robot dysponują centralnym
układem decyzyjnym zbudowanym z sieci sztucz- Rysunek 1. SSN z czterema neuronami
nych neuronów; ta sieć neuronowa (SSN) została wejściowymi, warstwą ukrytą i czterema neuronami
stworzona w celu wymodelowania prawdziwej sieci wyjściowymi.
neuronowej znajdującej się w ludzkim mózgu. Fast
Artificial Neural Network (FANN) jest biblioteką im- funkcja XOR jest już z założenia funkcją z dwoma
plementującą SSN, którą można wykorzystać w C, zmiennymi na wejściu (o możliwych wartościach 0 i 1)
C++, PHP, Pythonie, Delphi a nawet w środowisku i jedną na wyjściu, a przykłady zdefiniowane są jako
Mathematica. Mimo iż nie zagwarantuje ona hollywo- cztery różne kombinacje wejściowe. Oczywiście bar-
odzkiej magii, to jednak stanowi potężne narzędzie dziej skomplikowane problemy mogą być trudniejsze
dla twórców oprogramowania. SSN mogą być uży- do zdefiniowania jako funkcje. Zmiennymi wejściowy-
te w zaskakująco wielu dziedzinach. Tworzenie bar- mi, w przypadku problemu wyszukiwania nowotwo-
dziej realistycznych gier komputerowych, rozpozna- ru na zdjęciu rentgenowskim, mogą być wartości pik-
wanie obiektów na obrazach czy pomaganie makle- seli na danym obrazie, ale mogą też to być inne infor-
rowi w przewidywaniu trendów na nieustannie ulega- macje uzyskane ze zdjęcia. Na wyjściu może się wte-
jącej zmianom giełdzie papierów wartościowych. po- dy pojawić wartość binarna lub zmiennoprzecinkowa,
bieżne, bardzo selektywne wyliczenie nie odda po- określająca prawdopodobieństwo wystąpienia nowo-
tencjału, jaki drzemie w sieciach neuronowych. tworu na zdjęciu. W przypadku znormalizowanego
rozkładu prawdopodobieństwa wartość zmiennoprze-
Aproksymacja funkcji cinkowa przyjmowałaby wartości od 0 do 1 włącznie.
Zasada działania SSN opiera się na aproksymowa-
niu pewnej funkcji. Innymi słowy uczą się zadanej Ludzki mózg
funkcji poprzez obserwowanie przykładów jej działa- Aproksymator funkcyjny taki jak SSN może być po-
nia. Najprostszym przykładem może być SSN uczą- strzegany jako czarna skrzynka. Właściwie mniej
ca się funkcji XOR; jednak w ten sam sposób mogła- więcej tyle użytkownik biblioteki FANN musi wie-
by ona uczyć się rozpoznawania języka na podsta- dzieć o działaniu aproksymatorów. Jednak, aby
wie tekstu bądź sprawdzania, czy na zdjęciu rentge- zrozumieć jak działają SSN, potrzebna jest podsta-
nowskim znajduje się obraz nowotworu. wowa wiedza o działaniu ludzkiego mózgu.
Jeśli SSN ma być zdolna do rozwiązywania jakie- Mózg ludzki jest bardzo skomplikowanym syste-
goś problemu, zagadnienie musi być zdefiniowane ja- mem zdolnym do rozwiązywania wielu nierzadko zło-
ko pewna funkcja ze zbiorem zmiennych wejściowych żonych problemów. Składa się z wielu różnych ele-
i wyjściowych, poparta przykładowymi zestawami da- mentów, lecz jedną z najistotniejszych jego części jest
nych wejściowych i wyjściowych. Problem taki jak neuron. Mózg zawiera ich około 1011, a liczba połą-
czeń między poszczególnymi neuronami sięga oko-
ło 1015, tworząc tym samym ogromną sieć neurono-
Steffen Nissen jest informatykiem z Danii. Autor biblio-
wą. Neurony wysyłają do siebie impulsy poprzez połą-
teki FANN, którą nadal rozbudowuje, podczas gdy inni
zajmują się utrzymywaniem jej powiązań z innymi języ-
czenia, co stanowi podstawową funkcję tego narządu.
kami. Opracował raport techniczny obejmujący proces Sieć neuronowa otrzymuje też impulsy od pięciu zmy-
powstawania biblioteki FANN zatytułowany Implemen- słów i narządów wewnętrznych; wysyła także impulsy
tation of a Fast Artificial Neural Network Library (fann). do mięśni odpowiedzialnych za ruch czy mowę.
Kontakt z autorem: lukesky@diku.dk Pojedynczy neuron może być postrzegany jako
maszyna dysponująca wejściem i wyjściem, czeka-
Rysunek 2. Wykres słupkowy przedstawiający uśrednionych częstotliwości występowania liter w językach francuskim,
angielskim i polskim
tość 0 ma w SSN tę nieszczęsną własność, że bez względu odcieni szarości itp. Inne problemy mogą zostać uprosz-
na wagi wyjście zawsze jest równe 0. FANN oczywiście po- czone na drodze wstępnej obróbki danych innymi meto-
siada mechanizmy zapobiegające sytuacji, w której stałoby dami, mającymi na celu usunięcie zbędnych informacji.
się to dużym problemem. Jednak okazuje się, że zastoso- Uproszczeń można dokonywać również poprzez rozbija-
wanie tej sztuczki skraca czas uczenia. Funkcja fann _ set _ nie złożonych problemów na wiele, łatwiejszych do roz-
activation _ function _ output może być również użyta do wiązania zadań. W systemie klasyfikacji języków jedna
zmiany funkcji aktywacji na FANN _ LINEAR , która jest nieogra- SSN mogłaby zostać użyta do rozdzielania języków na
niczona i może zostać użyta do tworzenia SSN mogących europejskie i azjatyckie, a dwie następne do rozpozna-
przyjmować dowolne wartości na wyjściu. wania konkretnych języków z tych obszarów.
Podczas uczenia SSN zwykle trudno oszacować, ile
epok jest koniecznych dla prawidłowego funkcjonowa- O ile proces uczenia SSN zwykle zabiera wiele czasu
nia sieci neuronowej. Jeśli użyjemy zbyt mało epok, SSN ─ i z tym trzeba się pogodzić ─ o tyle czas potrzebny do
nie będzie w stanie zaklasyfikować danych treningowych. przeprowadzenia właściwej analizy powinien być jak naj-
Z drugiej strony, jeśli użyjemy zbyt wielu epok, SSN stanie krótszy, zwłaszcza w systemach korzystających z bardzo
się zbyt wyspecjalizowana w rozpoznawaniu danych wzor- złożonych sieci neuronowych bądź wykonujących anali-
cowych i nie będzie prawidłowo klasyfikować tych, których zy setki razy na sekundę. Istnieje wiele działań zmierzają-
wcześniej nie widziała. Z tego powodu zwykle dobrze jest cych do usprawnienia FANN tak, by działała jeszcze szyb-
mieć dwa zestawy danych treningowych: jeden stosowa- ciej niż do tej pory. Jedną z takich metod jest wybranie li-
ny podczas faktycznego procesu uczenia i jeden stosowa- niowej funkcji skokowej jako funkcji aktywacji, która szyb-
ny w celu zweryfikowania jakości SSN poprzez sprawdze- ciej się wykonuje, ale jest również mniej dokładna. Do-
nia jej na danych, które nie zostały użyte podczas treningu. brym pomysłem jest również zredukowanie liczby ukrytych
W tym celu może zostać użyta funkcja fann _ test _ data ra- neuronów na tyle, na ile to możliwe, bo to również zmniej-
zem z innymi funkcjami służącymi do obsługi i manipulacji szy czas wykonania. Kolejną metodą, choć efektywna jedy-
danych treningowych. nie na systemach wbudowanych nieposiadających jednostki
Wyrażenie konkretnego problemu poprzez funkcję, któ- liczb zmiennoprzecinkowych, jest uruchomienie FANN tak,
rej SSN mogłaby nauczyć się z łatwością, czasami może aby używała jedynie liczb całkowitych. Biblioteka FANN ma
okazać się kłopotliwe. Warto zatem kierować się ogólnymi kilka funkcji pomocniczych, które pozwalają na korzystanie
wskazówkami: z jej z użyciem jedynie liczb całkowitych. W systemach nie-
posiadających układów odpowiedzialnych z operacje zmien-
• Używaj co najmniej jednego neuronu wejścia/wyjścia na noprzecinkowe można w ten sposób poprawić wydajność
każdą jednostkę informacyjną. W wypadku systemu kla- nawet o więcej niż 5000%!
syfikacji języków oznacza to, że mamy jeden neuron wej-
ściowy na każdą literę i jeden wyjściowy na każdy język. Opowieść ze świata Open Source
• Podczas określania potrzebnej liczby neuronów wejścio- Kiedy po raz pierwszy w listopadzie 2003 roku udostępni-
wych wykorzystaj całą wiedzę na temat danego zada- łem bibliotekę FANN w wersji 1.0, nie bardzo wiedziałem, cze-
nia, którą posiadasz jako programista. Jeśli na przykład go się spodziewać. Jednak byłem zdania, że każdy powinien
wiesz, że długość słowa jest istotna w systemie klasy- mieć możliwość używania stworzonej przeze mnie biblioteki.
fikacji języków, to powinieneś utworzyć dodatkowy neu- Ku memu zdziwieniu ludzie zaczęli ją ściągać i używać. Mie-
ron wejściowy przyjmujący długość wyrazu (ten sam siące mijały, a FANN była używana przez coraz większą licz-
cel mógłby zostać osiągnięty poprzez dodanie neuro- bę użytkowników.
nu przyjmującego częstotliwość występowania spacji). Z początku dostępna była jedynie pod Linuksem. Obecnie
Tudzież, jeśli wiesz, że niektóre litery są używane tyl- dostępna jest dla większości kompilatorów i systemów opera-
ko w niektórych językach, to niezłym pomysłem może cyjnych (niewyłączając MSVC++ i Borland C++).
okazać się dodanie dodatkowego neurony wejściowego, Zestaw dodatkowych funkcji biblioteki również został zna-
na który podamy 1 jeśli taka litera jest obecna w tekście cząco rozszerzony, a wielu użytkowników zaczęło pracować
lub 0 w przeciwnym przypadku. W ten sposób nawet jed- nad jej dalszym rozwojem. W niedługim czasie biblioteka mia-
na polska litera w całym tekście może pomóc w popraw- ła powiązania z PHP, Pythonem, Delphi i Mathematicą oraz
nym zaklasyfikowaniu tekstu. Niektóre języki zawierają została włączona do linuksowej dystrybucji Debian.
więcej samogłosek niż inne, dlatego też określenie czę- Moja praca z FANN i jej użytkownikami zabiera trochę mo-
stotliwości występowania samogłosek jako jeszcze jed- jego wolnego czasu, jednak jest to praca, której chętnie się
nego neuronu wejściowego może okazać się pomocne. poświęcam. FANN daje mi możliwość oddania czegoś z po-
• Uprość zadanie. Jeśli na przykład chcesz użyć SSN do wrotem środowisku Open Source. Dzięki temu mogę jedno-
wykrycia pewnych cech jakiegoś obrazu, to może do- cześnie pomagać ludziom i robić coś, co lubię.
brym pomysłem byłoby uproszczenie tegoż obrazu tak, Nie mogę powiedzieć, że tworzenie oprogramowania
aby zadanie stało się łatwiejsze do rozwiązania. Obraz Open Source jest czymś, czym powinien zająć się każdy twór-
w swojej pierwotnej formie często zawiera zdecydowa- ca oprogramowania. Powiem jednak, że mi dało to ogrom-
nie za dużo informacji i SSN nie będzie łatwo uzyskać ną satysfakcję. Jeśli myślisz, że to może być coś dla ciebie,
z niego istotnych informacji. Uproszczenie obrazu mo- to znajdź jakiś projekt, przy którym miałbyś ochotę popraco-
że zostać osiągnięte przez zastosowanie filtrów do wy- wać, i zrób to. Albo jeszcze lepiej – stwórz swój własny projekt
gładzania, wykrywania konturów, wykrywania krawędzi, Open Source.