Из вышеприведенного комментария Эмре, раздел 4.4 теоретических методов группы в машинном обучении Риси Кондора содержит подробную информацию и доказательства создания методов ядра, которые по своей природе имеют симметрии. Я буду резюмировать это, надеюсь, интуитивно понятным способом (я физик, а не математик!).
Большинство алгоритмов ML имеют матричное умножение, например,
si=∑jWij xj=∑jWij (e⃗ j⋅x⃗ )
где x⃗ - вход, аWij- веса, которые мы хотим обучить.
Метод ядра
si=∑jWij k(ej, x)
x,ej∈X
GXx→Tg(x)g∈GkG(x,y)=1|G|∑g∈Gk(x,Tg(y))
k(x,y)=k(Tg(x),Tg(y))
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)
k(x,y)=x⋅y
kG(x,Th(y))=[1|G|∑g∈GTg(x)]⋅y
Который предлагает матрицу преобразования, которая может симметризовать входные данные в алгоритм.
Пример SO (2)
π2
(x⃗ i,yi)∈R2×R
minWjy~i∑i12(yi−y~i)2=∑jWjkG(ej,xi)+bi
Ядро удовлетворяет . Вы также можете использовать и множество ядер.k(x,y)=∥x−y∥2k(x,y)=k(Tg(x),Tg(y))k(x,y)=x⋅y
Таким образом,
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
Что дает ожидаемую сферическую симметрию!
Крестики-нолики
Пример кода можно посмотреть здесь . Он показывает, как мы можем создать матрицу, которая кодирует симметрию и использовать ее. Обратите внимание, что это действительно плохо, когда я запускаю его! Работа с другими ядрами на данный момент.