A partir do comentário de Emre acima, a Seção 4.4 dos métodos teóricos de grupo em aprendizado de máquina de Risi Kondor tem informações detalhadas e provas sobre a criação de métodos de kernel que inerentemente possuem simetrias. Vou resumir isso de uma maneira esperançosamente intuitiva (eu sou um físico, não um matemático!).
A maioria dos algoritmos de ML tem uma multiplicação de matrizes como,
si=∑jWij xj=∑jWij (e⃗ j⋅x⃗ )
com x⃗ sendo a entrada eWijsendo os pesos que desejam comboio.
Método do Kernel
Digite o domínio dos métodos do kernel e deixe o algoritmo manipular a entrada via,
si=∑jWij k(ej, x)
onde agora se generalizar parax,ej∈X.
Considere-se um grupo G que actua em X através x→Tg(x) para o g∈G . Uma maneira simples de tornar nosso algoritmo invariável nesse grupo é criar um kernel,
kG(x,y)=1|G|∑g∈Gk(x,Tg(y))
comk(x,y)=k(Tg(x),Tg(y)).
Então,
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)
Para k(x,y)=x⋅y que funciona para todas as representações unitárias,
kG(x,Th(y))=[1|G|∑g∈GTg(x)]⋅y
Que oferece uma matriz de transformação que pode simetrizar a entrada no algoritmo.
Exemplo SO (2)
Na verdade, apenas o grupo que mapeia para π2 rotações para simplificar.
Vamos executar a regressão linear nos dados (x⃗ i,yi)∈R2×R onde esperamos uma simetria rotacional.
Nosso problema de otimização se torna,
minWjy~i∑i12(yi−y~i)2=∑jWjkG(ej,xi)+bi
O núcleo k(x,y)=∥x−y∥2 satisfaz k(x,y)=k(Tg(x),Tg(y)) . Você também pode usar k(x,y)=x⋅y e uma variedade de núcleos.
Assim,
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
jminWy~i∑i12(yi−y~i)2=W[x⃗ 2i1+x⃗ 2i2+1]+bi
Which yields the expected spherical symmetry!
Tic-Tac-Toe
Example code can be seen here. It shows how we can create a matrix that encodes the symmetry and use it. Note that this is really bad when I actually run it! Working with other kernels at the moment.