Rozdz10 Generalizacja Zespoly

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 27

10.

Zagadnienia generalizacji i zespoły sieci


Praktyczne wykorzystanie dowolnych rozwiązań maszynowych do efektywnego rozwiązania
rzeczywistych zadań wymaga zapoznania się z wieloma problemami tworzenia i doboru
optymalnych struktur modeli, gwarantujących najwyższą jakość rozwiązania. Szczególnie istotne
są aspekty dotyczące zdolności generalizacyjnych sieci, gdyż na nich opiera się możliwość ich
wykorzystania w praktyce przy użyciu danych nie uczestniczących w procesie uczenia. W
rozdziale tym omówione zostaną problemy związane ze zdolnością generalizacji sieci oraz
sposoby projektowania struktur, gwarantujące osiągnięcie optymalnych zdolności
generalizacyjnych przez sieć neuronową.

10.1 Pojęcie generalizacji


Pod pojęciem generalizacji rozumieć będziemy umiejętność generowania właściwej odpowiedzi
sieci na określone pobudzenie nie biorące udziału w procesie uczenia [86]. Zauważmy, że
jakkolwiek dobór wag w procesie uczenia odbywa się na zbiorze uczącym, główne działanie sieci
to tryb odtwarzania (testowanie, walidacja), w którym po zamrożeniu wartości adaptowanych
parametrów, podaje się na wejście sieci jedynie sygnały wejściowe x nie wchodzące w skład
zbioru uczącego (choć generowane według tego samego mechanizmu właściwego dla
analizowanego procesu), dla których w danej chwili nieznane są jeszcze rzeczywiste (prawdziwe)
odpowiedzi, jak to miało miejsce w trybie uczenia. Zatem, celem uczenia sieci jest taka
adaptacja wag, aby na podstawie próbek uczących (oczywiście reprezentatywnych dla
modelowanego procesu) nauczyć się cech głównych tego procesu, a nie tylko dopasowania się do
próbek uczących.
Zatem głównym celem uczenia jest taka adaptacja parametrów struktury sieciowej, aby na
podstawie zbioru próbek uczących charakterystycznych dla danego procesu sieć była w stanie
właściwie odwzorować cechy charakterystyczne danego procesu (mechanizmu generowania
danych), a nie dostosować się jedynie do wartości zadanych próbek uczących. Sieć wytrenowana
na określonym zbiorze wzorców uczących przenosi więc swoją wiedzę na zbiory tzw. testujące
(walidacyjne), które nie uczestniczyły w uczeniu. Aby uzyskać dobrą generalizację, proces
uczenia musi spełniać pewne podstawowe warunki [55]
• Dane uczące powinny być reprezentatywne dla modelowanego procesu i odzwierciedlać
jego główne cechy statystyczne. Sieć powinna dopasować swoje wagi w taki sposób, aby

210
móc dobrze odtwarzać te cechy a nie dopasowywać się do indywidualnych wartości
zadanych.
• Aby to uzyskać liczba danych uczących powinna być zatem znacznie większa od liczby
dobieranych parametrów (wag) sieci, aby zapewnić właściwe statystyczne spojrzenie na
analizowany problem.
• Struktura sieci powinna być z kolei jak najuboższa, o możliwie najmniejszej liczbie wag,
umożliwiającej jednak uzyskanie akceptowalnie małego poziomu błędu na danych
uczących. Poprawia to proporcję liczby danych uczących do liczby adaptowanych
parametrów sieci.
• Proces uczenia powinien być prowadzony przy zastosowaniu efektywnego algorytmu
uczącego i nie powinien ciągnąć się w nieskończoność, ale zakończony w momencie
uzyskania minimum błędu na zbiorze sprawdzającym (różnym od uczącego).
Teoria generalizacji została stworzona głównie dla sieci neuronowych, ale odnosi się również do
innych rozwiązań maszynowych (np. drzew decyzyjnych czy sieci Bayesa). Bazuje bezpośrednio
na zależnościach statystycznych charakteryzujących dane uczące. Błąd średni E odtworzenia
danych na zbiorze danych (x, d) dla którego znane są wartości zadane (wektor d) może być
zinterpretowany jako wartość oczekiwana różnicy między wartością aktualną funkcji yi(x) dla
poszczególnych wyjść sieci a odpowiadającą im wartością zadaną di. Może być on rozdzielony
na część odpowiadającą obciążeniu Bi (ang. bias) oraz wariancji Vi (ang. variance) przy czym
Ei2 = Bi2 + Vi 2 .
Duża wartość obciążenia wynika ze zbyt dużych uproszczeń (za małej liczby
adaptowanych parametrów lub zbyt krótkiego czasu uczenia nie gwarantującego akceptowalnej
wartości błędu uczenia) uniemożliwiających odtworzenie właściwych cech modelu. Mówimy
wówczas o niedouczeniu modelu. Przypadek przeciwny, to przeuczenie. Jest to stan, w którym
dane uczące są idealnie odwzorowane, ale nadmierna liczba parametrów modelu (równa liczbie
stopni swobody) powoduje dopasowanie do nieistotnych elementów danych uczących (na
przykład szumu). W efekcie wytrenowany model model generuje duże błędy dla danych
testujących w uczeniu, niezawierających takich elementów szumowych. Przeuczenie może się
objawiać generowaniem silnie zaszumionych sygnałów wyjściowych lub silnym rozchwianiem
wyników odbiegającym od wartości pożądanych. Dobry model to taki w którym proces uczenia
prowadzi do sytuacji, gdy jest w stanie w sposób akceptowalny odtwarzać dane uczące, ale

211
równocześnie uchwyci bardziej generalne trendy i wzorce istniejące w danych wejściowych
użytych a procesie uczenia.
Obciążenie Bi wyraża niezdolność sieci (zbyt mało rozbudowana struktura) do dokładnej
aproksymacji funkcji zadanej di(x) i może być uważane za średni błąd aproksymacji na zbiorze
uczącym. Składnik Vi jest wariancją funkcji aproksymującej mierzoną na zbiorze danych (xi, di).
Wyraża sobą nieadekwatność informacji zawartej w zbiorze danych uczących w stosunku do
rzeczywistej funkcji di i może być uważana za błąd estymacji. W praktyce za miarę obciążenia
uważa się błąd na danych uczących, a za wariancję błąd na danych walidacyjnych.
Na rys. 10.1 zilustrowano graficznie jak interpretować pojęcia obciążenia (bias) i
wariancji (variance) na przykładzie rozkładu danych wynikowych.

Rys. 10.1 Graficzna interpretacja obciążenia i wariancji na przykładzie rozkładu wyników


działania sieci

Przy określonej wartości błędu średniokwadratowego małe obciążenie będzie okupione


zwiększoną wariancją, gdyż oba człony są względem siebie w opozycji. Starając się o obniżenie
jednej wartości, podwyższamy drugą, stąd w procesie tworzenia modelu należy dbać o
kompromis (w literaturze nosi to nazwę bias-variance trade-off). Przykłady modelu
niedouczonego, przeuczonego i właściwego ukształtowanego modelu przedstawia rys. 10.2.

212
Rys. 10.2 Ilustracja działania modelu niedouczonego, właściwie nauczonego oraz przeuczonego
na przykładzie modelowanej funkcji. W modelu niedouczonym obserwuje się duży „bias”
(różnice między wartościami zadanymi i wynikiem modelu). W modelu przeuczonym dominuje
duża wariancja (zmienność wyniku w stosunku do wartości zadanej). Model poprawnie nauczony
posiada pewną wartość niezerową „bias”, ale niewielką wariancję.

10.2 Miara VCdim i jej związek z generalizacją


Problem budowy optymalnej sieci polega na wyselekcjonowaniu struktury tej sieci i doboru jej
parametrów w taki sposób, aby aproksymować wartości zadane d(xk) dla k=1, 2,…,p z
akceptowalnym błędem, i "optymalnością" definiowaną w sensie statystycznym. W teorii
optymalnego uczenia kluczową rolę odgrywa pojęcie miary Vapnika-Chervonenkisa (VCdim),
zdefiniowane dla sieci realizującej funkcję klasyfikatora [86].
Miara VCdim została zdefiniowana jako liczebność n największego zbioru danych
wzorców, dla których system może zrealizować wszystkie możliwe 2n dychotomii tego zbioru
(podział zbioru na dwie części za pomocą linii prostej). VCdim jest miarą pojemności lub
zdolności sieci do realizacji funkcji klasyfikacyjnej wzorców. Miara VCdim odgrywa istotną rolę
przy określaniu minimalnej liczby danych uczących p, gdyż dla uzyskania dobrej generalizacji
powinien być spełniony warunek p>>VCdim.
Zostało dowiedzione, że dla sieci jednowarstwowej o jednym wyjściu i N wejściach miara
VCdim jest równa N+1, czyli równa liczbie połączeń wagowych z uwzględnieniem polaryzacji.
Dla sieci o dowolnej liczbie warstw ukrytych i skokowej funkcji aktywacji miara VCdim jest
proporcjonalna do nwlg(nw), gdzie nw jest całkowitą liczbą wag sieci [30,86]. Zastosowanie
sigmoidalnej funkcji aktywacji w sieci zwiększa tę miarę co najmniej do wartości
proporcjonalnej do nw2 i co najwyżej do sumy nw2 + nn2 , gdzie nw jest liczbą neuronów w sieci. Dla

213
porównania, w sieci liniowej o liczbie wag nw miara VCdim jest proporcjonalna do liczby wag.
Jak z powyższego widać niezależnie od zastosowanej funkcji aktywacji neuronów w sieci MLP
miara VCdim jest zawsze skończona i proporcjonalna (nieliniowo) do liczby wag.
Jeżeli przez Pu oznaczymy względny błąd klasyfikacji dla danych uczących a przez Pt -
prawdopodobieństwo wystąpienia błędnej klasyfikacji w przyszłym użytkowaniu sieci na danych
nie uczestniczących w uczeniu (testowanie) to istotnym problemem jest oszacowanie
spodziewanego błędu na tych danych, zwłaszcza jego górnej granicy. Zostało udowodnione, że
prawdopodobieństwo wystąpienia błędu testowania większego o wartość ε od błędu uczenia dla
sieci MLP jest określone wzorem [30]

 
h
 2ep  − 2 p
Pr sup Pt (w) − Pu (w)      e (10.1)
w  h 

w którym Pr oznacza prawdopodobieństwo zdarzenia zawartego w nawiasach klamrowych {}, Pt


i Pu – prawdopodobieństwo popełnienia błędu klasyfikacyjnego przez sieć o wagach określonych
wektorem wagowym w na danych odpowiednio testujących i uczących, p - liczbę danych
uczących, e - podstawę logarytmu naturalnego a h - aktualne oszacowanie miary VCdim. Funkcja
2
wykładnicza e − p wskazuje, że wraz ze wzrostem liczby danych uczących
prawdopodobieństwo wystąpienia błędu klasyfikacji ma niższą wartość ograniczenia górnego.
Przy skończonej wartości h i liczbie wzorców uczących dążącej do nieskończoności
prawdopodobieństwo popełnienia tego błędu dąży do zera. Jeśli przez α oznaczymy
prawdopodobieństwo wystąpienia zdarzenia  = Pr (sup Pt (w) − Pu (w)   ) wtedy z

prawdopodobieństwem (1-α) można stwierdzić, że Pt  Pu +  . Na podstawie tych zależności


otrzymuje się
h

 =
 2ep 
 exp − p (
2
) (10.2)
 h 
Wprowadźmy następujące oznaczenie  0 ( p, h,  ) [30]

h   2p   1
 0 ( p , h,  ) = lg   + 1 − lg ( ) (10.3)
p   h   p

Wartość  0 ( p, h,  ) określa przedział ufności odpowiadający prawdopodobieństwu  przy p

danych uczących i aktualnej mierze VCdim=h. Oszacowanie błędu testowania Pt w postaci Pu + 


odpowiada najgorszemu przypadkowi. Przy małej wymaganej w praktyce wartości Pt

214
oszacowanie powyższe można znacznie uściślić. W takim przypadku z prawdopodobieństwem
(1-α) można stwierdzić, że [30]

Pt  Pu +  1 ( p, h,  , Pu ) (10.4)

gdzie
 Pu 
1 ( p, h,  , Pu ) = 2 2 ( p, h,  )1 + 1 +  (10.5)
0
  ( p, h,  ) 
2

W tym przypadku przedział ufności zależy również od błędu uczenia Pu. Przy bardzo małej
(pomijalnej) wartości błędu uczenia wartość  1 można wyrazić prostszą zależnością niezależną
od Pu [30]
1 ( p, h,  ) = 4 2 ( p, h,  )
0
(10.6)

w której przedział ufności  0 określony jest zależnością (10.3) i jest funkcją jedynie parametrów

p, h, α. W świetle teorii generalizacji można stwierdzić, że z prawdopodobieństwem (1-α) przy


liczbie danych uczących p>>h (h – aktualna wartość miary VCdim) błąd generalizacji będzie
mniejszy niż górna wartość gwarantowana Pg określona wzorem Pg = Pu + 1 ( p, h, , Pu ) , w

którym wartość  1 jest w ogólności zdefiniowana zależnością (10.5), lub przy bardzo małej
wartości błędu uczenia Pu i określona wzorem (10.6).
Na rys. 10.3 przedstawiono typowe zależności błędu uczenia, gwarantowanego
ograniczenia górnego błędu generalizacji oraz przedziału ufności w funkcji miary VCdim.

Rys. 10.3 Zależności błędu uczenia, górnego ograniczenia błędu generalizacji (gwarantowanego maksymalnego
błędu testowania) i przedziału ufności w funkcji miary VCdim dla sieci MLP.

215
Dla wartości h mniejszej niż wartość optymalna hopt pojemność sieci jest zbyt mała dla
prawidłowego odwzorowania szczegółów danych uczących i stąd górne ograniczenie błędu
generalizacji jest na wysokim poziomie. Dla h>hopt jest ona z kolei zbyt duża i dlatego błąd
generalizacji również rośnie. Osiągnięcie punktu optymalnego (minimum błędu generalizacji)
wymaga zwykle trenowania wielu sieci i wybrania tej, która zapewnia otrzymanie minimum
gwarantowanego błędu.
Z wartością miary VCdim oraz zadanym poziomem ufności ε odpowiadającym
prawdopodobieństwu α związana jest reguła doboru liczby wzorców uczących wystarczających
do uzyskania żądanej dokładności. Zgodnie z pracą [30] liczba próbek uczących powinna
spełniać warunek

p
A
h lg(1/  ) + lg(1/  ) (10.7)

gdzie A jest bliżej nieokreśloną stałą. Z zależności powyższej widać, że liczba próbek uczących
powinna być wielokrotnością miary VCdim (określonej w tym wzorze symbolem h) i powinna
wzrastać wraz ze zmniejszaniem się przedziału ufności. Według opinii Vapnika w klasycznym
uczeniu sieci neuronowych typu MLP dobrą generalizację obserwuje się, jeśli liczba danych
uczących jest co najmniej 10 razy większa niż miara VCdim. Z drugiej strony należy zaznaczyć,
że w wielu przypadkach można uzyskać dobre zdolności generalizacji sieci przy dalece
niewystarczającej liczbie danych uczących, zwłaszcza dla procesów mało złożonych. Świadczy
to o skomplikowanym mechanizmie generalizacji i naszej niewystarczającej wiedzy teoretycznej
w tym zakresie. Stąd wyprowadzone wcześniej oszacowania należy traktować jako ogólną
wskazówkę postępowania przy budowie struktury sieci, zmuszającą do maksymalnej redukcji jej
stopnia złożoności, przy zapewnieniu akceptowalnego poziomu błędu uczenia.

10.3 Metody poprawy zdolności generalizacji sieci


Rozważania teoretyczne przedstawione w poprzednim punkcie pokazały ścisły związek zdolności
generalizacyjnych sieci z liczbą wag wyrażoną poprzez miarę VCdim. Dla uzyskania dobrej
generalizacji sieci należy minimalizować liczbę wag do pewnej granicy określonej wymaganiami
dotyczącymi błędu uczenia. Należy zauważyć, że zbyt mała liczba wag nie pozwala uzyskać
dobrego dopasowania do danych uczących i w efekcie wpływa również na złe działanie sieci na
danych testujących nie uczestniczących w procesie uczenia (sieć niedouczona). Z kolei przy zbyt

216
dużej (nadmiarowej) liczbie wag uczenie jest perfekcyjne, ale sieć traci zdolności generalizacji,
gdyż w procesie uczenia sieć dopasowała się nie tylko do głównych cech procesu, ale również do
szumu zawartego w próbkach uczących, ale nieobecnych w próbkach testujących (sieć
przetrenowana). Przykłady działania dwuwarstwowej sieci MLP o dobrej i złej generalizacji na
przykładzie aproksymacji czterech funkcji (sinusoidalna, prostokątna, trójkątna i sinc)
zilustrowane są na rys. 10.4.

Rys. 10.4 Ilustracja zdolności generalizacji sieci MLP przy różnej liczbie neuronów ukrytych: rysunek górny
odpowiada zbyt małej liczbie neuronów ukrytych (sieć niedouczona), rysunek środkowy – liczbie właściwej (sieć
właściwie nauczona), rysunek dolny – zbyt dużej liczbie (sieć przeuczona).

217
Dane uczące zadane w postaci linii przerywanych reprezentują 4 sygnały: sinusoidalny,
prostokątny, trójkątny oraz sinc(t). Wyniki dopasowania sieci na danych testujących (wartości
funkcji określone punktach czasowych różnych od tych branych w uczeniu) przedstawione są w
postaci linii ciągłych. Dobre dopasowanie obserwuje się jedynie na rysunku środkowym, gdzie
użyto właściwej liczby neuronów ukrytych (tutaj 80). Wynik prezentowany na rysunku górnym
ilustruje efekt zbyt małej (tutaj 4) liczby wag (sieć nie jest w stanie dopasować swojej
odpowiedzi do wszystkich sygnałów zadanych). Z kolei przypadek przedstawiony na rysunku
dolnym pokazuje efekt nadmiarowej liczby neuronów ukrytych. Pomimo perfekcyjnego
dopasowania się do danych uczących wyniki testowania pokazują dalece nieadekwatne
dopasowanie do wartości pożądanych, co również oznacza utratę zdolności generalizacji sieci.
W praktyce minimalizację struktury sieci przeprowadza się empirycznie. W pierwszym
etapie projektowania powtarza się wielokrotnie proces uczenia na różnych strukturach i wybiera
tę, która przy zadowalającym poziomie błędu uczenia pozwala uzyskać najmniejszy błąd
odtwarzania danych nie uczestniczących w uczeniu. W następnych etapach projektowania sieci
optymalnej poprawę generalizacji można uzyskać przez obcinanie wag najmniej znaczących,
czyli wag o najmniejszej wartości bezwzględnej bądź wag o najmniejszym wpływie na wartość
funkcji błędu, (niekoniecznie najmniejszych).
Redukcję wag i neuronów osiągnąć można różnymi metodami, z których najbardziej
skuteczne opierają się na wykorzystaniu metod wrażliwościowych pierwszego lub drugiego
rzędu (np. OBD, OBS) bądź też zastosowaniu w uczeniu metod funkcji kary, karzących za
nadmierną liczbę połączeń wagowych [55]. Ostatni kierunek działania polega na dodaniu do
konwencjonalnej definicji funkcji celu składników proporcjonalnych do liczby i wartości wag
sieci. W procesie optymalizacji procesowi minimalizacji podlegają wówczas równolegle wartości
wag sieci. Po zakończeniu procesu uczenia wagi o najmniejszej wartości bezwzględnej niewiele
wpływają na działanie sieci i mogą być obcięte; w ten sposób złożoność sieci również ulega
redukcji.
Techniką która umożliwia polepszenie zdolności generalizacyjnych sieci jest również
wtrącanie szumu do próbek uczących [55], upodobniające warunki uczenia do warunków
przyszłego użytkowania. Istotą tego podejścia jest założenie, że podobne sygnały wejściowe
powinny generować podobne odpowiedzi (zasada ciągłości), nawet wtedy, gdy nie wchodziły w
skład wektorów uczących. Zbiór uczący wzbogaca się o dane, będące "zaszumioną" wersją

218
sygnałów oryginalnych (przy tych samych wartościach zadanych) i trenuje sieć na rozszerzonym
zbiorze danych. Zostało udowodnione, że taki sposób uczenia odpowiada w efekcie
minimalizacji funkcji celu zmodyfikowanej o czynnik modelujący wrażliwość względną sieci,
odpowiadającą zmianom wartości odpowiedzi neuronów wyjściowych spowodowanych
zmianami wartości zmiennych wejściowych (zmiana upodobniająca warunki uczenia do
warunków testowania). Problemem może być dobór właściwego poziomu szumu względem
wartości rzeczywistych.
Innym problemem jest wpływ sposobu i czasu uczenia na zdolności generalizacyjne sieci.
Jak zostało zaobserwowane w wielu eksperymentach numerycznych, wraz z upływem czasu błąd
uczenia maleje i błąd testowania również (przy ustalonej liczbie próbek uczących p oraz wartości
miary VCdim). Taka sytuacja trwa zwykle do pewnego momentu uczenia, poczynając od którego
błąd testowania pozostaje stały bądź zaczyna rosnąć, pomimo, że błąd uczenia nadal nieznacznie
maleje.

Rys. 10.5 Typowe zależności błędu uczenia i testowania od czasu uczenia sieci.

Typowy przebieg obu błędów przedstawiono na rys. 10.5, na którym błąd uczenia zaznaczony
jest linią ciągłą, a błąd generalizacji (testowania) linią przerywaną. Z wykresu na rysunku wynika
jednoznacznie, że zbyt długie uczenie może doprowadzić do tak zwanego ,,przeuczenia" sieci, a
więc do zbyt drobiazgowego dopasowania wag do nieistotnych szczegółów danych uczących.
Taka sytuacja ma miejsce w przypadku sieci o nadmiarowej w stosunku do potrzeb liczbie wag i
jest tym bardziej widoczna, im większa nadmiarowość wag występuje w sieci. Wagi nadmiarowe
dopasowują się do wszelkich nieregularności danych uczących, traktując je jako cechę główną.

219
W procesie testowania sieci na danych testujących, w którym brakuje tych nieregularności,
powstają w efekcie dodatkowe błędy odtwarzania.
W celu uniknięcia przeuczenia często wydziela się ze zbioru uczącego część danych
weryfikujących (zbiór V na rys. 10.6), które służą w procesie uczenia okresowemu sprawdzaniu
aktualnie nabytych zdolności generalizacyjnych. Uczenie przerywa się, gdy błąd generalizacji na
tym zbiorze osiągnie wartość minimalną (zaczyna wzrastać). Zalecane proporcje danych
uczących do weryfikujących to 4:1.

Rys. 10.6 Ilustracja podziału danych spełniających regułę R na zbiór uczący L, weryfikujący V i zbiór testujący
zdolność generalizacji G.

Z uwagi na błąd generalizacji ważny jest stosunek liczby próbek uczących do liczby wag sieci.
Mała liczba próbek uczących przy ustalonej liczbie wag oznacza dobre dopasowanie sieci do
próbek uczących, ale złą generalizację, gdyż w procesie uczenia nastąpił nadmiar parametrów
dobieranych (wag) w stosunku do liczby wartości zadanych i dopasowywanych do nich
aktualnych sygnałów wyjściowych sieci. Parametry te są zbyt precyzyjnie, a przy tym wobec
nadmiarowości wag w sposób niekontrolowany poza punktami dopasowania, dobrane do
konkretnych danych, a nie do zadania, które miało być reprezentowane przez te dane uczące
(nauczenie się mechanizmu generowania danych w modelowanym procesie). Zadanie
aproksymacji zostało niejako sprowadzone do zadania bliższego interpolacji. W efekcie,
wszelkiego rodzaju nieregularności danych uczących spowodowane przez przypadkowe zmiany i
szumy pomiarowe mogą być odtworzone jako cecha podstawowa procesu. Funkcja,
odwzorowana w zadanych punktach uczących jest dobrze odtwarzana tylko dla nich. Minimalne
nawet odejście od tych wartości powoduje znaczny wzrost błędu, co przejawia się jako błąd
generalizacji.

220
W zastosowaniach praktycznych istotny jest obiektywny sposób oceny działania sieci.
Wśród danych pomiarowych procesu są próbki bardziej lub mniej odstające od wartości
typowych. Użycie tylko wartości typowych w uczeniu i pozostawienie pozostałych do testowania
zdolności generalizacji spowoduje słabą generalizację i złą ocenę rozwiązania. Z kolei
pozostawienie „łatwych” próbek do testowania daje zbyt optymistyczną ocenę naszego
rozwiązania. Najlepszym wyjściem jest użycie wszystkich próbek danych również w testowaniu.
Taka techniką jest metoda k-krotnej walidacji krzyżowej (ang. k-fold cross validation)
służąca do obiektywnej oceny jakości działania sieci neuronowej [55]. Technika ta polega na
podziale dostępnego zbioru danych na k podzbiorów, z których (k-1) podzbiorów jest aktualnie
używanych do uczenia a pozostały podzbiór do testowania. Uczenie sieci przeprowadza się
wielokrotnie stosując wszystkie możliwe kombinacje podzbiorów do tworzenia zbioru uczącego i
pozostawiając zawsze jeden (różny) podzbiór do testowania. Ocena jakości działania sieci
wynika z uśrednionych (po wszystkich próbach) wynikach uczenia i testowania.
Szczególną postacią tej formy jest technika ,,leave one out" w której każdy podzbiór jest
jednoelementowy. Przy p parach danych oznacza to uczenie sieci na (p-1) wzorcach i testowanie
ograniczone do jednego wzorca. Uczenie przeprowadza się p razy zamieniając za każdym razem
jedną testującą. Jakość rozwiązania ocenia się na podstawie uśrednionych wyników wszystkich
prób. Jest to technika polecana w przypadku małej liczby dostępnych danych.
Stosowaną powszechnie techniką jest wielokrotne powtórzenie prób uczenia i testowania
sieci na dwu rozdzielnych podzbiorach. Jeden (zwykle zawierający około 70% danych używany
jest do uczenia i drugi (pozostałe 30% danych) wyłącznie do testowania. Próby przeprowadza się
wiele razy (100 do 1000 razy) na losowo podzielonych zbiorach. Wyniki testowania uśrednia się
i przyjmuje jako wartość obiektywną.

10.4 Problem generalizacji w sieciach głębokich.


Interesującą sprawą jest zdolność generalizacji sieci głębokich, które zawierają miliony wag, a
pomimo tego mają dobre zdolności generalizacji. Wśród pre-trenowanych modeli dostępnych dla
użytkowników w Internecie można zauważyć, że wszystkie one zawierają miliony wag, co
teoretycznie, przy zastosowaniu pojęć wziętych bezpośrednio z teorii generalizacji sieci płytkich,
można utożsamić z trudnym do rozwiązania problemem generalizacji. Przykładowo w tabeli 9.1
w rozdziale poprzednim zestawiono podstawowe parametry modeli sieci głębokich dostępnych

221
aktualnie (stan na 2021 rok). Liczba parametrów w każdej sieci jest powyżej miliona, a
największa sieć zawiera aż 144 miliony parametrów (VGG19). Liczba połączeń wagowych
wynika z zastosowanej struktury sieci i głębokości połączeń warstwowych.
Dobra zdolność generalizacji takich sieci jest możliwa do uzyskania dzięki wielu
elementom, z których do najważniejszych należy lokalność połączeń wagowych w warstwach
głębokich i dzielenie się (sharing) wartościami wag filtrów [22]. W efekcie problem dopasowania
danych wielowymiarowych f(x1, x2, …, xN) jest rozwiązany w sposób hierarchiczny jako
kompozycja funkcji o mniejszych wymiarach, na przykład f(x1, x2, …, x8)=h3(h21(h11(x1, x2),
h12(x3, x4)), h22(h13(x5, x6), h14(x7, x8))). W efekcie dopasowanie funkcji mniej wymiarowej jest
łatwiejsze i prowadzi do lepszych wyników dopasowania (i generalizacji).
Ważną cechą sieci głębokich jest współdzielenie połączeń. Neuron analizujący obraz w
różnych jego rejonach stosuje te same wagi dla każdego rejonu, co oczywiście redukuje
efektywną liczbę różnych (pod względem wartości) połączeń wagowych w stosunku do
rozwiązania klasycznego (płytkiego).
Innym elementem poprawiającym zdolności generalizacyjne sieci głębokich jest
zastosowanie w uczeniu małych podzbiorów tzw. „mini batch” generowanych losowo w każdej
iteracji. W efekcie sieci widzi wiele różnych konfiguracji danych uczących „symulujących” nowe
zbiory danych. Występuje więc efekt wirtualnego powiększenia efektywnego zbioru uczącego.
W przypadku podsieci FC w pełni połączonej (ostatnie warstwy klasyfikacyjne sieci), w
której każdy sygnał poprzedniej warstwy jest połączony z każdym neuronem warstwy następnej
(połączenia globalne) redukcja realnych połączeń jest możliwa przez zastosowanie techniki
dropout. Jest to technika regularyzacji polegająca na losowym usunięciu części połączeń
wagowych (usunięcie połączenia jest równoważne ustawieniu wagi na wartość równą 0).
Redukuje to realną liczbę połączeń w każdym cyklu uczącym i zmusza sieć do równomiernego
uczenia wszystkich połączeń wagowych. Ponieważ w każdym cyklu następuje losowy dobór
połączeń, w efekcie przy ogromnej liczbie cykli wszystkie połączenia są aktywne i mają wpływ
na działanie sieci.
Niezależnie od tego typu technik dla uzyskania dobrej generalizacji sieci głębokie CNN
wymagają użycia wielu milionów danych. W przypadku rozwiązań CNN stosowane są w uczeniu
dowolne zbiory obrazów zaczerpnięte z Internetu. Biorąc pod uwagę specyfikę warstw ukrytych,
służących do generacji cech diagnostycznych, nie wpływa to istotnie na działanie sieci. Warstwy

222
w pełni połączone w praktycznym zastosowaniu do konkretnego problemu podlegają uczeniu na
właściwych zbiorach danych (technika transfer learning). Na tym etapie uczenia sieci pre-
trenowanej ważne jest dostarczenie odpowiedniej liczby danych uczących spełniających warunki
dobrej generalizacji.
W przypadku autoenkodera zdolność jego generalizacji polepsza się przez wymuszenie
struktury oszczędnej, w której wiele połączeń wagowych jest praktycznie zerowa. Uzyskuje się
to poprzez tak zwaną operację regularyzacji. Przeprowadza się ją w procesie uczenia poprzez
włączenie do funkcji kosztu czynników kary. Jednym z nich jest kara za nadmiernie
rozbudowaną strukturę. Dodatkowo dla dalszego zmniejszenia wpływu niewielkich zmian
danych wejściowych x na wynik działania układu wprowadza się regularyzację uwzględniającą
karę za zbyt duże wartości pochodnych sygnałów warstwy ukrytej względem elementów wektora
wejściowego x. Taki rodzaj regularyzacji zmusza algorytm uczący do wytworzenia sygnałów
wyjściowych sieci, które zmieniają się niewiele przy niewielkich zmianach wartości sygnałów
wejściowych.
Inny rodzaj regularyzacji autoenkodera uwzględnia zgodność średniej statystycznej
aktywacji neuronów w aktualnym stanie uczenia z jej wartością pożądaną. Dzięki zastosowaniu
tego typu regularyzacji poszczególne neurony ukryte „specjalizują” się w wytwarzaniu dużego
sygnału jedynie dla małej liczby danych uczących (lokalizacja aktywności) co oznacza w
ogólności lepsze, bo wyspecjalizowane działanie sieci.

10.5 Zespoły sieci do polepszenia zdolności generalizacji


10.5.1 Struktura zespołu i metody integracji
Niezależnie od zastosowanego rozwiązania sieciowego i rodzaju problemu podlegającego
rozwiązaniu zwiększenie efektywności działania sieci (zdolności generalizacji) uzyskać można
poprzez zastosowanie wielu sieci neuronowych na raz, tzw. zespół sieci [43,55]. Technika ta
może być zastosowana w każdym trybie działania sieci, w tym w trybie regresji i w trybie
klasyfikacji. Dotyczy zarówno rozwiązań klasycznych sieci jak i głębokich. Istotą metody jest
zastosowanie wielu jednostek sieciowych rozwiązujących na raz ten sam problem. Końcowy
wynik może być ustalony na wiele sposobów: głosowanie w przypadku klasyfikacji bądź różnego
rodzaju uśrednianie w przypadku aproksymacji. Przykładową strukturę zespołu klasyfikatorów
przedstawiono na rys. 10.7.

223
Rys. 10.7 Przykładowa struktura zespołu klasyfikatorów. Pierwszy wskaźnik wagi wki odnosi się do k-tego
klasyfikatora, drugi do i-tej klasy [58].

Najbardziej oczywisty i najprostszy wybór werdyktu końcowego zespołu klasyfikacyjnego to


zastosowanie głosowania większościowego (ang. majority voting). Każdy wzorzec
charakteryzowany przez odpowiedni zestaw cech podawany jest na wszystkie klasyfikatory i
podlega niezależnemu przetwarzaniu, będąc przypisany do odpowiedniej klasy. Następnie
zliczana jest liczba zaliczenia tego wektora do każdej klasy. Zwycięża klasa, która uzyska
największą liczbę wskazań. Jedną z odmian tego trybu jest przyjęcie założenia, że zwycięzca
musi uzyskać minimum 50% plus jeden głos. W przeciwnym przypadku przyjmuje się brak
rozstrzygnięcia.
Jeśli założyć identyczne prawdopodobieństwo P prawidłowego wskazania klasy przez
wszystkie niezależnie działające klasyfikatory i założyć ich nieparzystą liczbę M to zostało
udowodnione, że w głosowaniu większościowym statystyczna dokładność zespołu może być
wyrażona wzorem [43]
M
M  m
Acc =   P (1 − P)
m =[ M /2]+1 
M −m
(10.8)
m 

224
W tabeli 10.1 przedstawiono wartości dokładności wskazań zespołu przy założeniu różnych
wartości prawdopodobieństwa P (identycznego dla każdego klasyfikatora) dla liczby
klasyfikatorów tworzących zespół, równej odpowiednio 3, 5, 7 oraz 9.

Tabela 10.1 Wartości dokładności Acc wskazania klasy przez zespół M niezależnych, jednakowej
jakości klasyfikatorów
M=3 M=5 M=7 M=9
p=0.6 0.648 0.683 0.710 0.733
p=0.7 0.784 0.837 0.874 0.901
p=0.8 0.896 0.942 0.967 0.980
p=0.9 0.972 0.991 0.997 0.999

Zostało udowodnione teoretycznie, że jeśli wartość P>0.5 to przy liczbie członków


zespołu dążącej do nieskończoności dokładność wskazania klasy przez zespół dąży do 100%.
Jeśli natomiast P<0.5 to zwiększanie liczby członków zespołu zmniejsza dokładność. Przy
M →  dokładność zespołu maleje do zera. Dla P=0.5 zastosowanie zespołu nie zmienia
dokładności rozpoznania klasy.
W praktyce rzadko można uzyskać identyczną dokładność wszystkich klasyfikatorów.
Eksperymenty numeryczne pokazały, że w takim przypadku głosowanie większościowe nie
zawsze gwarantuje uzyskanie wyniku zespołu lepszego niż najlepszy wynik indywidualny. W
przypadku nierównej jakości poszczególnych klasyfikatorów można stosować głosowanie
większościowe ważone. W tym rozwiązaniu siła głosu klasyfikatora indywidualnego zależy od
jego dokładności rozpoznania poszczególnych klas, zmierzonej dla danych uczących (zakłada
się, że dane uczące są reprezentatywne dla rozwiązywanego problemu klasyfikacji). Przy M
klasyfikatorach tworzących zespół określa się wielkość yi(x) proporcjonalną do
prawdopodobieństwa przynależności wektora x do i-tej klasy według wzoru [58]
M
yi (x) =  wki zki (x) (10.9)
k =1

w którym wki jest wagą z jaką k-ty klasyfikator jest uwzględniany przy rozpoznaniu i-tej klasy,
natomiast zki jest sygnałem wyjściowym k-tego klasyfikatora odpowiedzialnym za rozpoznanie i-

225
tej klasy. Sygnał ten przyjmuje wartość 1 przy rozpoznaniu przez klasyfikator danej klasy bądź
zero w przeciwnym przypadku.
Wartości wag wki mogą być wyznaczane w różny sposób, uwzględniający jakość
poszczególnych członków zespołu. Do typowych rozwiązań należy
kim
wki = M
(10.10a)

j =1
m
ki

gdzie kim oznacza wskaźnik jakości (np. dokładność, czułość, precyzja) k-tego klasyfikatora przy

rozpoznaniu i-tej klasy, m – wykładnik różnicujący wpływ poszczególnych jednostek zespołu na


wynik działania zespołu (np. m= 1, 2, 3). Inny wzór wykorzystuje w integracji zespołu funkcję
logarytmiczną [43]
  
wki = lg  ki  (10.10b)
 1 − ki 
Integracja zespołu klasyfikatorów (lub regresorów) jest również możliwa przy
zastosowaniu dodatkowej sieci neuronowej, na wejścia której podawane są sygnały decyzyjne
wszystkich członków zespołu. Sieć integrująca trenowana jest na danych (X, d), gdzie macierz
wejściowa X jest utworzona z decyzji poszczególnych klasyfikatorów a wektor d reprezentuje
przynależność klasową (bądź wartość zadaną w problemie regresji) poszczególnych obserwacji.
Zupełnie innym podejściem do integracji zespołu jest zastosowanie naiwnej reguły
Bayesa. Oznaczmy przez P(Dj) prawdopodobieństwo, że j-ty klasyfikator przypisuje wektor
wejściowy x do odpowiedniej klasy i załóżmy niezależność działania klasyfikatorów.
Prawdopodobieństwo wskazania i-tej klasy przez zespół klasyfikatorów przy oznaczeniu
aktualnych klas di jest wówczas równe
M
P(di ) P( Dk di )
P(di ) P(D di )
P(di D) = = k =1
(10.11)
P(D) P(D)
gdzie P ( Dk | d i ) oznacza prawdopodobieństwo wskazania klasy k-tej dla rekordu należącego do

klasy i-tej. Mianownik powyższej zależności jest wspólny dla wszystkich klas, stąd
prawdopodobieństwo wskazania i-tej klasy przez zespół przy wystąpieniu na wejściu zespołu
wektora wejściowego x jest proporcjonalne do wyrażenia z licznika powyższej zależności.
Oznaczmy ten współczynnik proporcjonalności przez μi(x). Wówczas

226
M
i (x)  P(di ) P( Dk di ) (10.12)
k =1

Prawdopodobieństwa warunkowe występujące w tym wyrażeniu określa się na podstawie


macierzy R rozkładu empirycznego klas. Dla każdego klasyfikatora buduje się taką macierz na
podstawie jego wyników klasyfikacji dla danych uczących. Przy M klasach jest to macierz M×M.
Niech Nk oznacza całkowitą liczbę obserwacji (wektorów x zbioru uczącego) należących do klasy
k. Wówczas prawdopodobieństwo P( Dk di ) może być estymowane w postaci [58]
M
 1 
P( Dk | di ) =   RkDi  (10.13)
k =1  N i 
gdzie RkDi oznacza element macierzy R odpowiadający k-temu wierszowi i Di-tej kolumnie na

którą wskazał i-ty klasyfikator. Przyjmijmy równe prawdopodobieństwo wystąpienia i-tej klasy
wśród całej populacji n danych w postaci ułamka
Ni
P(di ) = (10.14)
n
Wówczas współczynnik proporcjonalności dla wyznaczenia prawdopodobieństwo wskazania k-
tej klasy przez zespół może być estymowany w postaci [58]
M
1
i ( x) 
NiM −1
R
k =1
kDi (10.15)

Powyższą procedurę zastosowania metody naiwnej Bayes’a do integracji zespołu klasyfikatorów


zilustrujemy na przykładzie hipotetycznego zespołu zawierającego dwa klasyfikatory do
rozpoznania 3 klas. Liczba obserwacji uczących jest równa n=30 (każda klasa reprezentowana
przez 10 obserwacji). Przyjmijmy, że macierze rozkładu klas dla obu klasyfikatorów są dane w
postaci
6 2 2 2 4 4
R (1) =  2 5 3  , R (2) =  2 5 3 
 
 1 3 6   4 0 6 

Każdy wiersz macierzy odpowiada danym należącym do jednej klasy. Kolumna j-ta macierzy
wskazuje, ile przypadków zostało przez dany klasyfikator rozpoznanych jako klasa j-ta. Elementy
diagonalne odpowiadają danym rozpoznanym właściwie. Element Rij pokazuje ile razy
obserwacja należąca do klasy i-tej została rozpoznana jako klasa j-ta. Dane z obu macierzy
wskazują, że N1=10, N2=10, N3=10.

227
Załóżmy, że testowany wektor x został przypisany przez klasyfikator pierwszy do klasy
drugiej, D1(x)=d2, a klasyfikator drugi D2(x)=d1 wskazał klasę pierwszą jako zwycięzcę.
Rozpoznanie ostateczne klasy przez zespół klasyfikatorów będzie zależało od wartości μi dla i=1,
2, 3
1
1 (x)   2  2 = 0.4
10
1
 2 ( x)   5  2 = 1
10
1
3 (x)   3  4 = 1.2
10
Największą wartość osiągnął współczynnik μ3, stąd decyzją zespołu będzie wskazanie klasy
trzeciej jako zwycięskiej dla tej obserwacji x. Zauważmy, że zwyciężyła klasa, która nie uzyskała
żadnego wskazania klasyfikatorów. To rozwiązanie integracji różni się znacząco od poprzedniej
metody, w której zwycięzca był wyłaniany jedynie spośród klas, na którą wskazał co najmniej
jeden klasyfikator.

10.5.2 Warunki właściwego działania zespołu


Uwzględnienie w zespole wielu rozwiązań na raz i ich integracja w jeden końcowy wynik
według przyjętej procedury ma sens tylko wtedy, gdy poszczególne rozwiązania są niezależne od
siebie a ich wskaźniki jakości są do siebie zbliżone. Łączenie ich ze sobą stwarza wówczas
szansę skompensowania pewnych błędów i poprawy dokładności klasyfikatora bądź regresora.
Należy jednak podkreślić, że poszczególne rozwiązania nie mogą znacząco różnić się co do
jakości, gdyż to najsłabsze może pogorszyć działanie całego zespołu.
Niezależność działania pojedynczych rozwiązań można uzyskać na wiele sposobów.
Jednym z nich jest zastosowanie rozwiązań poszczególnych jednostek bazujących na innej
zasadzie działania. Na przykład zastosowanie klasyfikatora MLP, RBF, SVM czy drzew
decyzyjnych daje dobrą przesłankę niezależności, gdyż każdy z nich opiera swój werdykt na
innej zasadzie: MLP jest aproksymatorem globalnym, RBF lokalnym, SVM stosuje odmienne
podejście do uczenia, natomiast drzewo decyzyjne opiera swoje działania na zupełnie innych
zasadach. W ramach każdego rozwiązania można również stosować struktury układu
zróżnicowane pod względem złożoności (np. liczby neuronów ukrytych, czy liczby drzew
decyzyjnych w zespole). W przypadku sieci głębokich dobrą praktyką jest zastosowanie różnych

228
struktur sieci tworzących zespół, na przykład połączenie w jednym zespole struktury Alexnet,
shufflenet, mobilenet, inception, itp. Zespół może również powstać na bazie jednego rodzaju
sieci, np. AlexNet, przy zróżnicowanej strukturze i trenowanej na różnycm zbiorze danych
uczących. Interesującym rozwiązaniem jest także fuzja losowa członków zespołu [79].
Innym rozwiązaniem problemu niezależności jest zastosowanie w uczeniu każdego
członka zespołu różniących się zbiorów uczących. Takie podejście powoduje, że parametry
poszczególnych układów dobrane w procesie uczenia będą inne, a więc ich działanie w trybie
odtworzeniowym również odmienne. Problemem może być ograniczony zasób danych
przeznaczonych do uczenia. Można go złagodzić przez zastosowanie procedury losowania
danych, w której każdy układ stosuje określony procent całego zbioru danych zmieniany
każdorazowo w procesie uczenia (np. procedura zwana bagging).
Innym rozwiązaniem jest stosowanie zróżnicowanego sposobu generacji cech
diagnostycznych stanowiących informację wejściową dla każdego indywidualnego członka
zespołu. Cechy te generowane są na podstawie tych samych oryginalnych danych pomiarowych.
W takiej sytuacji każde z indywidualnych rozwiązań systemu ma dostęp do pełnej informacji
pomiarowej, ale inaczej przetworzonej [56].
Jak przykład pokażemy zespół klasyfikatorów głębokich zbudowanych na bazie jednej
sieci AlexNet, ale o różnej architekturze (różna liczba neuronów w warstwie FC, różna wartość
współczynnika dropout) i trenowanej na zróżnicowanych danych uczących. Integracja zespołu
następuje poprzez głosowanie większościowe. Przykład takiego programu dla zespołu
zbudowanego z 5 sieci AlexNet przedstawiony jest poniżej.
MATLAB
% Program klasyfikacji do rozpoznania 68 klas obrazów twarzy
wyn=[]; wynVal=[];
Pred_y=[]; Pred_yVal=[];

% Pozyskiwanie obrazów
folder_z_obrazami = '[sciezka do folderu z obrazami]\ALEX_obrazy_all';
images = imageDatastore( folder_z_obrazami,...
'IncludeSubfolders',true,...
'ReadFcn', @customreader, ...
'LabelSource','foldernames');

[uczImages,testImages] = splitEachLabel(images,0.8,'randomized');
for i=1:5
i
[trainingImages,validationImages] = ...
splitEachLabel(uczImages,0.75+0.22*rand(1),'randomized');
numTrainImages = numel(trainingImages.Labels);

net = alexnet;
% layersTransfer = net.Layers(1:end-3);
layersTransfer = net.Layers(1:end-6);

229
inputSize = net.Layers(1).InputSize;

imageAugmenter = imageDataAugmenter( ...


'RandRotation',[-20,20], ...
'RandXTranslation',[-3 3], ...
'RandYTranslation',[-3 3]);
augimdsTrain = augmentedImageDatastore(inputSize(1:2),trainingImages,...
'DataAugmentation',imageAugmenter);
augimdsTest = augmentedImageDatastore(inputSize(1:2),testImages);
layer = 'fc7';

featuresTrain = activations(net, augimdsTrain, layer, 'OutputAs','rows');


featuresTest = activations(net, augimdsTest, layer, 'OutputAs','rows');

numClasses = numel(categories(trainingImages.Labels));
layers = [
layersTransfer
fullyConnectedLayer(500+35*i, ... % randomizacja osobników zbioru
'WeightLearnRateFactor',20,...
'BiasLearnRateFactor',20)
reluLayer()
dropoutLayer( 0.3+0.23*rand(1) ) % randomizacja osobników zbioru
fullyConnectedLayer(numClasses, ...
'WeightLearnRateFactor',20,...
'BiasLearnRateFactor',20)
softmaxLayer
classificationLayer];

miniBatchSize = 10;
numIterationsPerEpoch = floor(numel(trainingImages.Labels)/miniBatchSize);
options = trainingOptions('sgdm',...
'MiniBatchSize',miniBatchSize,...
'MaxEpochs',10,...
'ExecutionEnvironment','gpu',...
'InitialLearnRate',1.3e-4,...
'Verbose',false,...
'ValidationPatience',10,...% było 10
'Plots','training-progress',...
'ValidationData',validationImages,...
'ValidationFrequency',numIterationsPerEpoch);
netTransfer = trainNetwork(augimdsTrain,layers,options);
predictedLabels = classify(netTransfer,testImages);
testLabels = testImages.Labels;
accuracy = (mean(predictedLabels == testLabels))*100;

xu=double(featuresTrain); maxu=max(abs(xu)); xu=xu./maxu;


xt=double(featuresTest); xt=xt./maxu;
ducz=double(trainingImages.Labels);
dtest=double(testLabels);

% zbieramy kolejne wyniki klasyfikacji do późniejszego głosowania


Pred_y = [Pred_y double(predictedLabels)];
wyn= [wyn accuracy]
end
nclass=numClasses

% Integracja zespołu
dy=[dtest Pred_y]
nclass=numClasses
clear dz
[lw,lk]=size(dy);
for i=1:lw
for j=1:nclass
d=0;
for k=2:lk
if (j==double(dy(i,k)))
d=d+1;
else
end

230
end

dz(i,j)=d;
% klasa=dy(:,1)
end
end
dz;
[q,cl_max]=max(dz');
zgod_class=length(find(double(dy(:,1))==cl_max'));

% Wyniki zespołu
dokl_zesp=zgod_class/lw*100
sen
prec
F1_zesp=2*prec.*sen./(prec+sen)

% Macierz rozkładu klas


[C,order] = confusionmat(double(testLabels),double(cl_max));
Confusion=C

% Wyniki niezintegrowanych członków zespołu


for i=1:nclass,
sen(i)=C(i,i)/sum(C(i,:));
end

for i=1:nclass,
prec(i)=C(i,i)/sum(C(:,i));
end
wyn
median_zesp=median(wyn)
max_zesp=max(wyn)
mean_zesp=mean(wyn)
odch_zesp=std(wyn)

function data = customreader(filename)


I = imread(filename);
[a,b,c] = size(I);
if c==1,
I = grs2rgb(I);
end
data=imresize(I,[227 227]);
end

W wyniku działania programu na zbiorze 1360 obrazów reprezentujących 68 klas uzyskano


dokładność zespołu zintegrowanego równą 94.58%, przy średniej 5 niezintegrowanych członków
równej 88.96%, medianie 88.61% i dokładności najlepszego członka równej 89.71%. Zysk
wynikający z działania zespołu jest istotny (dokładność 94.58% zespołu w stosunku do wyniku
najlepszego jej członka równego 89.71%). Należy podkreślić, że ze względu na losowość doboru
parametrów poszczególnych członków zespołu i losowego doboru danych uczących i testujących
wyniki powyższe mogą ulec zmianie.

10.6 Techniki tworzenia silnych rozwiązań na bazie słabych predyktorów


Interesującą techniką poprawy zdolności generalizacyjnych w uczeniu maszynowym jest
tworzenie silnych predyktorów (klasyfikatorów bądź układów regresyjnych o podwyższonej

231
dokładności) poprzez zastosowanie zespołów zbudowanych na bazie słabych (mało dokładnych)
rozwiązań predyktorów, na przykład lasu drzew decyzyjnych, nieoptymalnie dobranych struktur
sieci neuronowych RBF lub MLP, itp. Klasyczne techniki tworzenia zespołu poprzez
zastosowanie wielu równoległych rozwiązań indywidualnych predyktorów tego samego typu, ale
trenowanych na losowo wybranych danych uczących (technika bagging), stosowane na przykład
w lesie losowym drzew decyzyjnych nie zawsze prowadzą do optymalnego wyniku pod
względem generalizacji. Pojawiło się wiele ulepszonych rozwiązań tego typu zespołów. Do
najbardziej znanych należą systemy wzmacniana (tzw. boosting), które wpływają na działanie
zespołu już na etapie ich tworzenia, ingerując silnie w algorytm uczący. W tym punkcie
przedstawione zostaną dwie techniki tworzenia takiego zespołu słabych predyktorów:
wzmacnianie adaptacyjne (tzw. adaptive boosting) zwane w skrócie AdaBoost, oraz
wzmacnianie gradientowe, zwane w skrócie gradient boosting.

10.6.1 AdaBoost

W technice AdaBoost [5,77] każdy nowo dodawany członek zespołu (np. nowe drzewo
decyzyjne) jest trenowany na losowo wybranym zestawie danych uczących, przy czym każda
próbka ucząca podlegająca losowaniu ma przypisaną wagę, której wartość jest uzależniona od
aktualnego statystycznego błędu dla danej obserwacji przez aktualny stan zespołu. Na starcie
wszystkie obserwacje uczące mają identyczne wartości przypisanych wag, stąd
prawdopodobieństwo ich wylosowania do zbioru uczącego danego członka zespołu jest
identyczne. W wyniku ewaluacji danych przez aktualnie wytrenowany zespół następuje
zwiększenie wagi dla obserwacji trudnych w testowaniu oraz zmniejszenie wagi dla danych,
które dobrze wypadły na etapie ewaluacji. W efekcie obserwacje o większej wartości wagi mają
zwiększone prawdopodobieństwo wylosowania do zbioru uczącego dla następnego członka
zespołu (np. dodawanego drzewa decyzyjnego).
Nowy członek zespołu w procesie uczenia specjalizuje się więc w rozpoznaniu
przypadków trudniejszych. Każdy następny dodawany członek zespołu poddawany jest
trenowaniu na zbiorze uczącym zawierającym coraz trudniejsze przypadki danych, źle
rozpoznawane przez istniejących członków zespołu. Wynik działania tak powstałego zespołu jest
sumą wagową wskazań poszczególnych członków, przy czym waga jest związana z wartością
wagi przypisaną poszczególnym obserwacjom, dobraną wcześniej w procesie dodawania nowych

232
członków zespołu. Jest to zasadnicza różnica w stosunku do klasycznej metody zwykłego
głosowania większościowego, stosowanego w technice bagging.
Załóżmy, że zdefiniowany jest zbiór par danych uczących klasyfikatora (xi, di) dla i=1, 2,
…, p, gdzie xi jest wektorem wejściowym a di oznacza klasę kodowaną na przykład w postaci
binarnej (1, -1). Załóżmy, że zespół składa się z M słabych klasyfikatorów generujących wynik yi
przynależności klasowej 1 lub -1 dla każdego wektora wejściowego xi. W wyniku
przeprowadzenia (m-1) cykli tworzenia nowego członka powstanie zespół, którego werdykt przy
pobudzeniu wektorem xi będzie sumą wagową wskazań wszystkich członków
Fm−1 (xi ) = 1 y1 (xi ) +  2 y2 (xi ) + +  m −1 ym −1 (xi ) (10.16)

Po dodaniu m-tego predyktora słabego wynik działania zespołu można przedstawić w postaci
Fm (xi ) = Fm −1 (xi ) +  m ym (xi ) (10.17)

Zadanie polega na doborze takiej wartości wagi  m przy wyniku ym ( x i ) sklasyfikowania wektora

xi przez m-ty klasyfikator, aby polepszyć działanie całego zespołu. Funkcję błędu (ang. loss
function) definiuje się zwykle w postaci wykładniczej dla wszystkich wektorów xi biorących
udział w procesie uczenia
p p
E = e − di Fm ( xi )
=  e− di Fm−1 ( xi )e− dim ym ( xi ) (10.18)
i =1 i =1

Wprowadźmy uproszczone oznaczenia wagowe w powyższym wzorze


• w pierwszym cyklu tworzenia zespołu wi(1) = 1

• w m-tym (m>1) cyklu wi( m) = e−di Fm−1 ( xi )


Wówczas wyrażenie na funkcję błędu przyjmie postać [5]
p
E =  wi( m) e− dim ym ( xi ) (10.19)
i =1

Rozdzielając to wyrażenie na dwa składniki:


• jeden prawidłowo sklasyfikowany dla którego diym(xi)=1
• drugi sklasyfikowany z błędem, dla którego diym(xi)=-1
otrzymuje się wyrażenie na funkcję błędu w postaci

( )
p
E= 
di = y ( xi )
wi( m)e−m + 
di  y ( xi )
wi( m)em =  wi( m)e−m +
i =1

di  y ( xi )
wi( m) em − e−m (10.20)

233
Analiza powyższego wzoru wskazuje, że wartość błędu E zależy jedynie od czynnika


y ( xi )  di
wi( m ) em , gdzie wi( m) = e−di Fm−1 ( xi ) . Minimalizacja błędu wymaga, aby pochodna funkcji błędu

względem αm była równa zeru, co oznacza


 
d   wi( m ) e − m +  wi( m ) e m 
=  i i  =0
dE y ( x )=d y ( xi )  di
(10.21)
d m d m

Rozwiązanie powyższej zależności określa optymalną wartość αm w postaci [5]


 (m) 
  wi 
1
 m = ln  i i 
y ( x )=d
(10.22)
2  (m) 
  wi 
 y ( xi ) di 
Oznaczmy względny błąd m-tego klasyfikatora jako  m , przy czym

 ( m) 
  wi 
 m =  ip i 
y ( x )d
(10.23)
 (m) 
  wi 
 i =1 
Wzór na wartość wagi αm przyjmie wówczas ostateczną postać [5,77]

1  1− m 
 m = ln   (10.24)
2  m 
Wartość ta będzie użyta w m-tym kroku przy dodaniu następnego klasyfikatora do zespołu.
Wynik klasyfikacji tak rozszerzonego zespołu dla wektora wejściowego xi określa wówczas wzór
Fm (xi ) = 1 y1 (xi ) +  2 y2 (xi ) + ... +  m ym (xi ) (10.25)

gdzie yi (i=1, 2, …, m) oznacza wskazanie klasy przez kolejnych członków zespołu, a


współczynnik αm wagę z jaką to wskazanie jest brane pod uwagę.

10.6.2 Gradient boosting


Technika zwana gradient boosting stosuje inne rozwiązanie problemu tworzenia i trenowania
zespołu słabych predyktorów [5]. W odróżnieniu od metody AdaBoost stosującej wagi
przypisane obserwacjom w zależności od skali trudności w ich rozpoznaniu, technika gradient
boosting koncentruje się na gradiencie funkcji strat E(di,yi) przy czym funkcja strat może być

234
rozumiana tradycyjnie jako różnica między wartościami aktualnymi i pożądanymi albo
koncentrować się jedynie na określeniu jakości modelu, definiowanej dowolnie przez
użytkownika. Kolejni członkowie zespołu są dodawani wybierając kierunek ujemnego gradientu
funkcji strat, nie zmieniając przy tym parametrów dotychczasowych członków zespołu.
Podobnie jak w metodzie AdaBoost zdefiniowany jest zbiór par danych uczących
klasyfikatora (xi, di) dla i=1, 2, …, p, gdzie xi jest wektorem wejściowym a di oznacza klasę
kodowaną na przykład w postaci binarnej (1, -1). Załóżmy, że zespół składa się z M słabych
klasyfikatorów generujących wyniki yi przynależności klasowej 1 lub -1 dla każdego wektora
wejściowego xi. Celem jest stworzenie zespołu, którego działanie na zbiorze uczącym
minimalizuje wartość średnią błędu. Wynik działania zespołu M predyktorów przy pobudzeniu
wektorem x będzie składał się z sumy wagowej wskazań poszczególnych jego członków
M
F (x) = i yi (x) + co nst (10.26)
i =1

Dodanie m-tego członka zespołu powinno zmienić wynik w kierunku minimalizacji wartości
funkcji strat. Działanie zespołu złożonego teraz z m członków można zapisać w postaci
 p 
Fm (x) = Fm −1 (x) + arg min   E ( di , Fm −1 (xi ) ) + ym (xi )  (10.27)
ym  i =1 

Rozwiązanie zastosowane w metodzie gradient boosting wykorzystuje metodę optymalizacyjną


największego spadku, przy czym równanie (10.27) zastępuje się liniową aproksymacją
uwzględniającą jedynie czynnik gradientowy (metoda największego spadku)
p
Fm (x) = Fm−1 (x) −   Fm−1 E ( di , Fm−1 (xi ) ) (10.28)
i =1

gdzie η jest wielkością kroku w kierunku malejącej wartości gradientu funkcji strat
Fm−1 E ( di , Fm−1 (xi ) ) . Wartość η może podlegać optymalizacji (η=ηopt) w taki sposób, aby uzyskać
minimum funkcji strat E w każdym cyklu dodawania członka zespołu.
p
opt = arg min  E di , Fm−1 (xi ) −F E ( di , Fm−1 (xi ) ) (10.29)
 i =1
m−1

Po dodaniu m-tego członka wynik działania zespołu przy pobudzeniu wektorem x określa
zmodyfikowany model
Fm (x) = Fm−1 (x) +  ym (x) (10.30)

235
Technika gradient boosting jest najczęściej stosowana przy użyciu drzew decyzyjnych jako
słabych predyktorów [5]. Badania tego algorytmu pokazały, że najlepsze rezultaty uzyskuje się
przy zastosowaniu liczby poziomów decyzyjnych od 4 do 8. W praktyce stosuje się dodatkowo
różne metody regularyzacji.
Jednym z nich jest ograniczenie liczby drzew biorących udział w zespole. Wprawdzie
zwiększenie ich liczby redukuje zwykle błąd uczenia, ale może prowadzić do „przeuczenia”
pogarszając zdolność generalizacji (działanie modelu na danych nie uczestniczących w procesie
uczenia). Zwykle obserwuje się zwiększoną efektywność działania zespołu jedynie do
określonego poziomu populacji. Po uzyskaniu etapu stagnacji należy zaprzestać dodawania
nowych członków.
Inna metoda regularyzacji wprowadza zmniejszenie wartości kroku η w procesie
adaptacyjnym, zastępując wzór (10.30) określający działanie zespołu jego zmodyfikowaną wersją
Fm (x) = Fm −1 (x) + ym (x) (10.31)

w której współczynnik ν jest ułamkiem. Typowa wartość to ν=0.1. Tym nie mniej należy zwrócić
uwagę, że oznacza to zmniejszenie realnej wartości kroku uczenia, wydłużające cały proces
adaptacji systemu.
Jeszcze innym podejściem jest zastosowanie w uczeniu kolejnych członków zespołu
zredukowanej liczby obserwacji losowo wybieranych ze zbioru uczącego (tzw. dropout ratio).
Przyspiesza to proces uczenia nie pogarszając zdolności generalizacyjnych (typowa regularyzacja
typu niejawnego).
Jako czynnik regularyzacji stosuje się również wprowadzenie minimalnej liczby
obserwacji dopuszczalnej w węzłach decyzyjnych zanim podział zbioru będzie możliwy. Stosuje
się również karanie za zbyt dużą liczbę węzłów decyzyjnych oraz liści w drzewach. Istotnym
parametrem działającym jako regularyzacja jest ograniczenie czasu uczenia poprzez obserwację
postępu w kolejnych cyklach dodawania członków zespołu. Proces podlega zakończeniu, jeśli
dodanie kolejnych członków nie poprawia działania zespołu powyżej założonego progu
względnego. Zastosowanie wielu metod regularyzacyjnych na raz polepsza zdolności
generalizacji zespołu pozwalając przy użyciu słabych predyktorów uzyskać bardzo dobre wyniki
klasyfikacji całego zespołu.

236

You might also like