Z powyższego komentarza Emre, sekcja 4.4 grupowych metod teoretycznych w uczeniu maszynowym autorstwa Risi Kondor zawiera szczegółowe informacje i dowody na temat tworzenia metod jądra, które z natury mają symetrię. Podsumuję to w miejmy nadzieję intuicyjny sposób (jestem fizykiem, a nie matematykiem!).
Większość algorytmów ML ma mnożenie macierzy, takie jak,
si=∑jWij xj=∑jWij (e⃗ j⋅x⃗ )
z x⃗ będąc wkładem i Wij jako ciężary, które chcemy trenować.
Metoda jądra
Wejdź do dziedziny metod jądra i pozwól algorytmowi przetwarzać dane wejściowe za pośrednictwem,
si=∑jWij k(ej, x)
gdzie teraz uogólniamy x,ej∈X.
Rozważ grupę G to działa na X przez x→Tg(x) dla g∈G. Prostym sposobem na uczynienie naszego algorytmu niezmiennym w tej grupie jest utworzenie jądra,
kG(x,y)=1|G|∑g∈Gk(x,Tg(y))
z k(x,y)=k(Tg(x),Tg(y)).
Więc,
kG(x,Th(y))=1|G|∑g∈Gk(x,Tgh(y))=1|G|∑g∈Gk(x,Tg(y))=1|G|∑g∈Gk(Tg(x),y)
Dla k(x,y)=x⋅y który działa dla wszystkich reprezentacji jednolitych,
kG(x,Th(y))=[1|G|∑g∈GTg(x)]⋅y
Który oferuje macierz transformacji, która może symetrycznie wprowadzać dane do algorytmu.
SO (2) Przykład
Właściwie tylko grupa, na którą mapuje się π2 rotacje dla uproszczenia.
Uruchommy regresję liniową danych (x⃗ i,yi)∈R2×R gdzie oczekujemy symetrii obrotowej.
Nasz problem optymalizacji staje się
minWjy~i∑i12(yi−y~i)2=∑jWjkG(ej,xi)+bi
Jądro spełnia . Możesz także użyć i różnych jąder.k(x,y)=∥x−y∥2k(x,y)=k(Tg(x),Tg(y))k(x,y)=x⋅y
Tak więc
kG(ej,xi)=14∑n=14∥R(nπ/2) e⃗ j−x⃗ i∥2=14∑n=14(cos(nπ/2)−x⃗ i1)2+(sin(nπ/2)−x⃗ i2)2=14[2x⃗ 2i1+2x⃗ 2i2+(1−x⃗ i1)2+(1−x⃗ i2)2+(1+x⃗ i1)2+(1+x⃗ i2)2]=x⃗ 2i1+x⃗ 2i2+1
Zauważ, że nie musimy sumować przez ponieważ jest to to samo dla obu. Tak więc naszym problemem staje się:
jminWy~i∑i12(yi−y~i)2=W[x⃗ 2i1+x⃗ 2i2+1]+bi
Co daje oczekiwaną sferyczną symetrię!
Kółko i krzyżyk
Przykładowy kod można zobaczyć tutaj . Pokazuje, jak możemy stworzyć macierz, która koduje symetrię i z niej korzystać. Zauważ, że to naprawdę źle, kiedy faktycznie go uruchamiam! Praca z innymi jądrami w tej chwili.