З коментаря Емре вище, в розділі 4.4 Групових теоретичних методів машинного навчання Різі Кондор є детальна інформація та докази створення методів ядра, які по суті мають симетрію. Я підсумую це, сподіваючись інтуїтивно зрозумілим чином (я фізик, а не математик!).
Більшість алгоритмів ML мають матричне множення на зразок,
сi=∑jWi j хj=∑jWi j (е⃗ j⋅х⃗ )
з
х⃗ будучи вхідним і
Wi j будучи вагами, які ми хочемо тренувати.
Метод ядра
Введіть сферу методів ядра і дозвольте алгоритму обробляти вхід через,
сi=∑jWi j k (еj, х )
де ми зараз узагальнюємо
х ,еj∈ X.
Розглянемо групу Г що діє на Х через х →Тг( х ) для г∈ G. Простий спосіб зробити наш алгоритм інваріантним під цією групою - це зробити ядро,
кГ( х , у)=1| Г |∑г∈ Gk ( x ,Тг( у) )
з
k ( x , y) = k (Тг( х ) ,Тг( у) ).
Тому,
кГ( х ,Тгод( у) )=1| Г |∑г∈ Gk ( x ,Тггод( у) )=1| Г |∑г∈ Gk ( x ,Тг( у) )=1| Г |∑г∈ Gk (Тг( х ) , у)
Для k ( x , y) = x ⋅ y яка працює для всіх унітарних представництв,
кГ( х ,Тгод( у) )= [1| Г |∑г∈ GТг( x ) ] ⋅ y
Яка пропонує матрицю перетворення, яка може симетризувати вхід в алгоритм.
SO (2) Приклад
Насправді просто група, на яку відображається карта π2 обертання для простоти.
Давайте проведемо лінійну регресію на даних (х⃗ i,уi) ∈R2× R де ми очікуємо обертальну симетрію.
Наша проблема оптимізації стає,
хвWjу~i∑i12(уi-у~i)2=∑jWjкГ(еj,хi) +бi
Ядро k ( x , y) = ∥ x - y∥2задовольняє . Ви також можете використовувати та різні ядра.k ( x , y) = k (Тг( х ) ,Тг( у) )k ( x , y) = x ⋅ y
Таким чином,
кГ(еj,хi)=14∑n = 14∥ R ( n π/ 2) е⃗ j-х⃗ i∥2=14∑n = 14( соз( n π/ 2)-х⃗ i 1)2+ ( гріх( n π/ 2)-х⃗ i 2)2=14[ 2х⃗ 2i 1+ 2х⃗ 2i 2+ ( 1 -х⃗ i 1)2+ ( 1 -х⃗ i 2)2+ ( 1 +х⃗ i 1)2+ ( 1 +х⃗ i 2)2]=х⃗ 2i 1+х⃗ 2i 2+ 1
Зауважте, що нам не потрібно сумувати понад оскільки це однаково для обох. Отже, наша проблема стає,
j
хвWу~i∑i12(уi-у~i)2= W[х⃗ 2i 1+х⃗ 2i 2+ 1 ] +бi
Що дає очікувану сферичну симетрію!
Хрестики-нулики
Приклад коду можна побачити тут . Він показує, як ми можемо створити матрицю, що кодує симетрію, і використовувати її. Зауважте, що це справді погано, коли я його фактично запускаю! Наразі робота з іншими ядрами.