Rozwój ANN z narzędziami EC: przegląd



WSTĘP

Spośród wszystkich technik sztucznej inteligencji, sztuczne sieci neuronowe (ANN) okazały się bardzo potężnym narzędziem . Ta technika jest bardzo wszechstronna i dlatego została pomyślnie zastosowana w wielu różnych dyscyplinach (klasyfikacja, klasteryzacja, regresja, modelowanie itp.) (Rabu?al & Dorado, 2005). Jednak jednym z największych problemów przy korzystaniu z ANN jest duży wysiłek ręczny, który należy włożyć w ich rozwój. Wielkim mitem dotyczącym ANN jest to, że są łatwe w obsłudze, a ich rozwój odbywa się niemal automatycznie. Ten proces rozwoju można podzielić na dwie części: rozwój architektury oraz szkolenie i walidację. Ponieważ architektura sieci jest zależna od problemu, proces projektowania tej architektury był kiedyś wykonywany ręcznie, co oznaczało, że ekspert musiał testować różne architektury i szkolić je, aż znalazł taką, która osiągała najlepsze wyniki po procesie szkolenia. Ręczna natura opisanego procesu determinuje jego powolną wydajność, chociaż część szkoleniowa jest całkowicie zautomatyzowana ze względu na istnienie kilku algorytmów, które wykonują tę część. Wraz z tworzeniem narzędzi obliczeń ewolucyjnych (EC) naukowcy pracowali nad zastosowaniem tych technik do opracowywania algorytmów automatycznego tworzenia i trenowania sieci neuronowych, tak aby cały proces (lub przynajmniej jego duża część) mógł być automatycznie wykonywany przez komputery, a zatem w tym procesie trzeba było włożyć niewiele wysiłku ze strony człowieka.

TŁO

EC to zestaw narzędzi opartych na imitacji naturalnego zachowania istot żywych w celu rozwiązywania problemów optymalizacyjnych. Jednym z najbardziej typowych podzbiorów narzędzi w EC są algorytmy ewolucyjne (EA), które opierają się na naturalnej ewolucji i jej implementacji na komputerach. Wszystkie te narzędzia działają na tej samej podstawie: populacja rozwiązań danego konkretnego problemu jest tworzona losowo, a następnie stosuje się do niej proces ewolucyjny. Z tej początkowej losowej populacji ewolucja odbywa się za pomocą selekcji i kombinacji najlepszych osobników (chociaż najgorsze mają również małe prawdopodobieństwo zostania wybranymi), aby stworzyć nowe rozwiązania. Proces ten jest przeprowadzany za pomocą selekcji, krzyżowania i operatorów mutacji. Operatory te są zwykle używane w biologii w jej ewolucji w celu adaptacji i przetrwania. Po kilku pokoleniach istnieje nadzieja, że populacja zawiera dobre rozwiązanie problemu. Pierwszym EA, który się pojawił, były algorytmy genetyczne (GA) w 1975 r. Zgodnie z powyższym wyjaśnieniem działania, algorytmy genetyczne wykorzystują kodyfikację binarną (tj. każde rozwiązanie jest kodowane w ciągu bitów). Później, na początku lat 90. pojawiła się nowa technika, zwana programowaniem genetycznym (GP). Opiera się ona na ewolucji drzew, tj. każdy osobnik jest kodowany jako drzewo, a nie ciąg binarny. Pozwala to na jej zastosowanie w szerszym zestawie środowisk. Chociaż algorytmy genetyczne i algorytmy genetyczne są dwiema najczęściej używanymi technikami w algorytmach ewolucyjnych, więcej narzędzi można zaklasyfikować jako część tego świata, takie jak programowanie ewolucyjne lub strategie ewolucyjne, wszystkie z tą samą podstawą: ewolucja populacji zgodnie z naturalnymi zasadami ewolucji.

ROZWÓJ SIECI ANN Z NARZĘDZIAMI EC

Rozwój sieci neuronowych to temat, który był szeroko omawiany za pomocą bardzo różnych technik. Świat algorytmów ewolucyjnych nie jest wyjątkiem, a dowodem na to jest ogromna liczba prac, które zostały opublikowane na temat różnych technik w tej dziedzinie. Techniki te podążają za ogólną strategią algorytmu ewolucyjnego: początkowa populacja składająca się z różnych genotypów, z których każdy kodyfikuje różne parametry (zwykle wagę połączeń i/lub architekturę sieci i/lub reguły uczenia się) i jest tworzona losowo. Ta populacja jest oceniana w celu określenia sprawności każdego osobnika. Następnie populacja ta jest wielokrotnie ewoluowana za pomocą różnych operatorów genetycznych (replikacja, crossover, mutacja itp.), aż do spełnienia określonego kryterium zakończenia (na przykład, uzyskano wystarczająco dobrego osobnika lub osiągnięto z góry określoną maksymalną liczbę pokoleń). Zasadniczo proces generowania ANN za pomocą algorytmów ewolucyjnych dzieli się na trzy główne grupy: ewolucję wag, architektur i reguł uczenia się.

Ewolucja wag

Ewolucja wag zaczyna się od sieci o ustalonej topologii. W tym przypadku problemem jest ustalenie, za pomocą treningu, wartości wag połączeń sieciowych. Jest to ogólnie postrzegane jako problem minimalizacji błędu sieci, przyjmowanego na przykład jako wynik średniego błędu kwadratowego sieci między pożądanymi wynikami a wynikami osiągniętymi przez sieć. Większość algorytmów szkoleniowych, takich jak algorytm propagacji wstecznej (BP) , opiera się na minimalizacji gradientu. Ma to kilka wad , najważniejszą jest to, że dość często algorytm utknie w lokalnym minimum funkcji błędu i nie jest w stanie znaleźć minimum globalnego, zwłaszcza jeśli funkcja błędu jest multimodalna i/lub nieróżniczkowalna. Jednym ze sposobów przezwyciężenia tych problemów jest przeprowadzenie treningu za pomocą algorytmu ewolucyjnego , tj. sformułowanie procesu treningu jako ewolucji wag w środowisku zdefiniowanym przez architekturę sieci i zadanie do wykonania (problem do rozwiązania). W takich przypadkach wagi mogą być reprezentowane w materiale genetycznym osobników jako ciąg wartości binarnych lub ciąg liczb rzeczywistych. Tradycyjne algorytmy genetyczne (Holland, 1975) wykorzystują metodę kodyfikacji genotypowej w postaci ciągów binarnych. W ten sposób powstało wiele prac, które kodyfikują wartości wag za pomocą konkatenacji wartości binarnych, które je reprezentują. Dużą zaletą tych przybliżeń jest ich ogólność i to, że są bardzo proste w zastosowaniu, tj. bardzo łatwo i szybko można zastosować operatory jednorodnego krzyżowania i mutacji na ciągu binarnym. Wadą stosowania tego typu kodyfikacji jest problem permutacji. Problem ten został podniesiony po rozważeniu, że kolejność, w jakiej wagi są pobierane w ciągu, powoduje, że równoważne sieci mogą odpowiadać całkowicie różnym osobom. To sprawia, że operator krzyżowania staje się bardzo nieefektywny. Logicznie rzecz biorąc, kodyfikacja wartości wag pojawiła się również w formie konkatenacji liczb rzeczywistych, z których każda jest powiązana z określoną wagą . Za pomocą operatorów genetycznych zaprojektowanych do pracy z tym typem kodyfikacji i biorąc pod uwagę, że istniejące operatory dla ciągu bitów nie mogą być tutaj użyte, kilka badań wykazało, że ten typ kodyfikacji daje lepsze wyniki oraz większą wydajność i skalowalność niż algorytm BP.

Ewolucja architektur

Ewolucja architektur obejmuje generowanie struktury topologicznej, tj. topologii i łączności neuronów oraz funkcji przejścia każdego neuronu sieci. Architektura sieci ma ogromne znaczenie dla pomyślnego zastosowania sieci neuronowych, ponieważ ma bardzo znaczący wpływ na zdolność procesową sieci. W ten sposób, z jednej strony, sieć z niewielką liczbą połączeń i liniową funkcją przejścia może nie być w stanie rozwiązać problemu, który inna sieć mająca inne cechy (odrębną liczbę neuronów, połączeń lub typów funkcji) byłaby w stanie rozwiązać. Z drugiej strony, sieć mająca dużą liczbę nieliniowych połączeń i węzłów może być nadmiernie dopasowana i nauczyć się szumu, który jest obecny w treningu jako jego nieodłącznej części, bez możliwości rozróżnienia ich, a ostatecznie nie mieć dobrej zdolności generalizacji. Dlatego projektowanie sieci jest kluczowe, a zadanie to jest klasycznie wykonywane przez ekspertów-ludzi, wykorzystując własne doświadczenie, w oparciu o "próby i błędy", eksperymentując z różnymi zestawami architektur. Ewolucja architektur stała się możliwa dzięki pojawieniu się algorytmów konstruktywnych i destrukcyjnych. Ogólnie rzecz biorąc, algorytm konstruktywny zaczyna od minimalnej sieci (z niewielką liczbą warstw, neuronów i połączeń) i sukcesywnie dodaje nowe warstwy, węzły i połączenia, jeśli są potrzebne, podczas treningu. Algorytm destrukcyjny wykonuje odwrotną operację, tj. zaczyna od maksymalnej sieci i eliminuje niepotrzebne węzły i połączenia podczas treningu. Jednak metody oparte na algorytmach Hill Climbing są dość podatne na upadek do lokalnego minimum. Aby opracować architektury ANN za pomocą algorytmu ewolucyjnego, konieczne jest podjęcie decyzji, jak skodyfikować sieć wewnątrz genotypu, aby mogła być używana przez operatorów genetycznych. W tym celu powstały różne rodzaje kodyfikacji sieciowych. W pierwszej metodzie kodyfikacji, kodyfikacji bezpośredniej, istnieje jednoznaczna korespondencja między genami a reprezentacją fenotypową . Najbardziej typowa metoda kodyfikacji składa się z macierzy C=(cij) o rozmiarze NxN, która reprezentuje architekturę N węzłów, gdzie cij wskazuje obecność lub brak połączenia między węzłami i i j. Możliwe jest użycie cij=1 do wskazania połączenia i cij=0 do wskazania braku połączenia. W rzeczywistości cij może przyjmować wartości rzeczywiste zamiast wartości boolowskich, aby reprezentować wartość wagi połączenia między neuronem "i" i "j", w ten sposób architektura i połączenia mogą być rozwijane jednocześnie. Ograniczenia, które są wymagane w architekturach, można łatwo włączyć do tego schematu reprezentacyjnego. Na przykład sieć feedforward miałaby współczynniki niezerowe tylko w prawym górnym trójkącie macierzy. Tego typu kodyfikacja jest na ogół bardzo prosta i łatwa do wdrożenia. Mają jednak wiele wad, takich jak skalowalność, niemożność kodyfikacji powtarzających się struktur lub permutacja (tj. różne sieci, które są funkcjonalnie równoważne, mogą odpowiadać różnym genotypom). Jako kontrpropozycja dla tego typu bezpośredniej metody kodyfikacji istnieją również pośrednie typy kodyfikacji. W celu skrócenia długości genotypów, tylko niektóre cechy architektury są kodowane w chromosomie. W ramach tego typu kodyfikacji istnieją różne typy reprezentacji. Po pierwsze, należy wspomnieć o reprezentacjach parametrycznych. Sieć może być reprezentowana przez zestaw parametrów, takich jak liczba ukrytych warstw, liczba połączeń między dwiema warstwami itd. Istnieje kilka sposobów kodyfikacji tych parametrów wewnątrz chromosomu. Chociaż reprezentacje parametryczne mogą zmniejszyć długość chromosomu, algorytm ewolucyjny dokonuje wyszukiwania w ograniczonej przestrzeni w obrębie możliwej przestrzeni przeszukiwalnej, która reprezentuje wszystkie możliwe architektury. Inny typ kodyfikacji niebezpośredniej opiera się na systemie reprezentacyjnym o kształcie reguł gramatycznych . W tym systemie sieć jest reprezentowana przez zestaw reguł o kształcie reguł produkcyjnych, które zbudują macierz reprezentującą sieć. Inne typy kodyfikacji, bardziej inspirowane światem biologii, to te znane jako "metody wzrostu". W ich przypadku genotyp nie kodyfikuje już sieci, ale zamiast tego zawiera zestaw instrukcji. Dekodowanie genotypu polega na wykonaniu tych instrukcji, co spowoduje konstrukcję fenotypu. Te instrukcje zazwyczaj obejmują migracje neuronowe, duplikację lub transformację neuronalną oraz różnicowanie neuronalne. Wreszcie, w ramach pośrednich metod kodyfikacji, istnieją inne metody, które są bardzo różne od tych już opisanych. Andersen opisuje technikę, w której każdy osobnik populacji reprezentuje ukryty węzeł zamiast architektury. Każda ukryta warstwa jest konstruowana automatycznie za pomocą procesu ewolucyjnego, który wykorzystuje algorytm genetyczny. Ta metoda ma ograniczenie, że można konstruować tylko sieci typu feed-forward, a także istnieje tendencja do pojawiania się różnych węzłów o podobnej funkcjonalności, co wprowadza pewną redundancję do sieci, którą należy wyeliminować. Jedną z ważnych cech jest to, że ogólnie rzecz biorąc, te metody rozwijają tylko architektury, które są najczęstsze, lub architektury i wagi razem. Zakłada się, że funkcja przejścia każdego węzła architektury została wcześniej określona przez eksperta i jest taka sama dla wszystkich węzłów sieci (przynajmniej dla wszystkich węzłów tej samej warstwy), chociaż wykazano, że funkcja przejścia ma duże znaczenie dla zachowania sieci. Opracowano niewiele metod, które powodują ewolucję funkcji przejścia, a zatem miały one niewielkie reperkusje w świecie sieci neuronowych z EC.

Ewolucja reguły uczenia się

Innym interesującym przybliżeniem rozwoju sieci neuronowych za pomocą EC jest ewolucja reguły uczenia się. Pomysł ten pojawia się, ponieważ algorytm szkoleniowy działa inaczej, gdy jest stosowany do sieci o różnych architekturach. W rzeczywistości, biorąc pod uwagę, że a priori, ekspert zwykle ma bardzo niewielką wiedzę na temat sieci, lepiej jest opracować automatyczny system dostosowujący regułę uczenia się do architektury i problemu, który ma zostać rozwiązany. Istnieje kilka przybliżeń ewolucji reguły uczenia się , chociaż większość z nich opiera się tylko na tym, jak uczenie się może modyfikować lub kierować ewolucją oraz na relacji między architekturą a wagami połączeń. Właściwie istnieje niewiele prac, które skupiają się na ewolucji reguły uczenia się samej w sobie. Jedno z najczęstszych podejść opiera się na ustawieniu parametrów algorytmu BP: tempa uczenia się i pędu. Niektórzy autorzy proponują metody, w których proces ewolucyjny jest używany do znalezienia tych parametrów, pozostawiając stałą architekturę (Kim, Jung, Kim i Park, 1996). Inni autorzy z kolei proponują skodyfikowanie tych parametrów algorytmu BP wraz z architekturą sieci wewnątrz osobników populacji .

PRZYSZŁE TRENDY

Ewolucja sieci neuronowych jest tematem badań od kilku dekad. Tworzenie nowych technik EC i ogólnie nowych technik AI oraz ewolucja i ulepszanie istniejących umożliwiają rozwój nowych metod automatycznego tworzenia sieci neuronowych. Chociaż istnieją metody, które (mniej lub bardziej) automatycznie tworzą sieci neuronowe, zwykle nie są one zbyt wydajne, ponieważ ewolucja architektur, wag i reguł uczenia się jednocześnie prowadzi do posiadania bardzo dużej przestrzeni wyszukiwania, więc ta cecha zdecydowanie musi zostać ulepszona.

WNIOSEK

Świat EC dostarczył zestaw narzędzi, które można zastosować do problemów optymalizacji. W tym przypadku problemem jest znalezienie optymalnej architektury i/lub zestawu wartości wag i/lub reguły uczenia się. Dlatego rozwój sieci neuronowych został przekształcony w problem optymalizacji. Jak pokazują opisane techniki, wykorzystanie technik EC umożliwiło rozwój sieci neuronowych bez ingerencji człowieka lub przynajmniej zminimalizowało udział eksperta w tym zadaniu. Jak wyjaśniono, techniki te mają pewne problemy. Jednym z nich jest już wyjaśniony problem permutacji. Innym problemem jest utrata wydajności: im bardziej skomplikowana jest struktura do rozwinięcia (wagi, reguły uczenia się, architektura), tym mniej wydajny będzie system, ponieważ przestrzeń wyszukiwania staje się znacznie większa. Jeśli system musi rozwijać kilka rzeczy na raz (na przykład architekturę i wagi, aby rozwój ANN był całkowicie zautomatyzowany), ta utrata wydajności wzrasta. Jednak te systemy nadal działają szybciej niż cały ręczny proces projektowania i trenowania ANN kilka razy.


Powrót


[ 157 ]