Normalizacja zmiennych w sieci Kohonena

0

Cześć, mam pytanie dot. istoty normalizacji w sieci Kohonena. Dla przypomnienia chodzi o takie przekształcenie wektora wejściowego, by suma kwadratów zmiennych wejściowych wynosiła 1 => czyli każdą zmienną wejściową trzeba podzielić przez pierwiastek z sumy kwadratów wszystkich zmiennych wejściowych (nie mylić z normalizacją występującą w sieciach typu MLP).

Chciałem się zapytać jaki jest cel tej normalizacji i czy ona przypadkiem nie "psuje" nam zmiennych?

Weźmy np. taki przykład: mamy 3 zmienne reprezentujące kolory: RGB -> pierwsza zmienna reprezentuje kolor czerwony, druga zielony a trzecia niebieski. Każda zmienna może przyjmować wartości od 0 do 255.
Bez normalizacji każda kombinacja będzie reprezentowała oddzielnych kolor a co za tym idzie pewną pozycję w przestrzeni 3D. Innymi słowy zmienne: R = 100, G = 100, B = 100 będzie całkowicie w innym miejscu w przestrzeni niż zmienne (wektor) R = 200, G = 200, B = 200.
Natomiast stosując normalizację wyjdzie nam, że obie zmienne będą reprezentowały tą samą pozycję w przestrzeni i obie będą wynosić R = 0,57735, G = 0,57735, B = 0,57735
A co za tym idzie centrum dla obu zmiennych będzie w tym samym miejscu. Tak więc neuron zwycięski dla koloru białego będzie również zwyciężcą dla koloru czarnego - chociaż z drugiej strony ciężko znormalizować zmienne, gdy R = 0, G = 0, B = 0, bo pierwiastek sumy ich kwadratów wynosi 0 więc próba normalizacji sprowadza się do działania 0/0 => ZONG ;/

Bardzo proszę o wyjaśnienie sensu normalizacji w sieci typu SOM (Kohonena) i przedstawionego wyżej opisanego problemu - za co z góry dziękuję!

0

Normalizacja kolorów to nieco inne zagadnienie, niż normalizacja poszczególnych zmiennych. W przypadku jednakowych wartości składowych RGB, otrzymujemy jeden z 255 dostępnych odcieni szarości. Zamiast postrzegać to jako pozycję w przestrzeni, popatrz na to jak na zwykły kolor. Zamiana wartości typu byte na float jest czymś zupełnie normalnym. Z zapisu zmiennoprzecinkowego wartości składowych kolorów korzysta wiele bibliotek graficznych - w tym OpenGL. Traktowanie tego w postaci zwykłego wektora w rozumieniu algebraicznym nie ma raczej sensu. Zamiast tego sugeruję podzielenie każdej ze składowych przez 255 - rezultat będzie miał wówczas sens, tyle że wektor nie będzie zawsze jednostkowy. Nie wiem czy jednostkowość wektora jest tu konkretnym wymogiem, ale jeśli tak, to wszystko się posypie. Aby zapewnić jednostkowość wektora, możesz ewentualnie wprowadzić czwartą składową, która będzie ten wektor RGB balansować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1