Перестановка інваріантних нейронних мереж


14

Дано нейронну мережу f яка приймає за вхід n точок даних: x1,,xn . Ми кажемо, що f є перестановка інваріантним , якщо

f(x1...xn)=f(pi(x1...xn))

pi

Чи може хтось порекомендувати вихідну точку (статтю, приклад чи інший документ) для перестановки інваріантних нейронних мереж?


Цікаве запитання. Ви хочете ставитися до вхідних даних як до набору, а не до вектора. Припускаючи, що ваші входи є скалярними або порівняними іншим чином, чи розглядали ви сортування своїх входів для створення канонічного подання з перестановкою, інваріантного перестановки та подачі його до звичайної мережі?
mjul

@mjul Мої дані - це ряд ставок клієнтів (кожна ставка представлена ​​вектором деяких категоричних та безперервних змінних). Наприклад, я можу їх замовити хронологічно, але оскільки часовий проміжок між ставками для кожного клієнта дуже різний, це не має особливого сенсу. Це, ймовірно, може бути вирішене за допомогою деякої функції (фіксованого або засвоєного) часу, яка б зменшила коефіцієнти для кожної ставки. Але я думаю, що замовлення насправді не має значення в цьому випадку, тому я хотів спробувати спершу не упорядковані дані, що, очевидно, вимагає розглянути ставки для кожного клієнта симетрично.
Йозеф Ондрей

Що таке мережевий вихід? Якщо мережа перестановочна інваріантна, вихід буде однаковим для будь-якого порядку входів. Це те, чого ти хочеш?
BlueMoon93

@ BlueMoon93 Так, саме це я хочу. Вихід може бути будь-яким (число, вектор), доки це не залежить від порядку введення.
Йозеф Ондрей

чому б ви хотіли перетворювати інваріантну нейронну мережу?
kc sayz 'kc sayz'

Відповіді:


2

Наскільки мені відомо, ніхто не пробував цього, через спосіб структури мережі. Кожен вхід має набір ваг, підключених до більшої кількості входів. Якщо входи перемикаються, вихід також .

Однак ви можете побудувати мережу, яка наближається до такої поведінки. У своєму навчальному наборі використовуйте пакетне навчання та для кожного зразка тренінгу надайте всі можливі перестановки мережі, щоб вона навчилася перестановці перестановки. Це ніколи не буде абсолютно інваріантним, воно просто може бути близьким .

Ще один спосіб зробити це - повторити ваги для всіх даних. Наприклад, припустимо, що у вас є 3 входи (i0, i1, i2), а наступний прихований шар має 2 вузли (hl0, hl1) та функцію активації F. Якщо припустити повністю пов'язаний шар, у вас є 2 ваги w0 та w1. Вузли прихованого шару hl0 та hl1 задаються відповідно

  • hl0 = F (i0w0 + i1w0 + i2w0)

  • hl1 = F (i0w1 + i1w1 + i2w1)

Таким чином, ви отримуєте прихований шар, значення якого перестановки інваріантні від вхідних даних. Відтепер ви можете вивчати та будувати решту мережі так, як вважаєте за потрібне. Це підхід, отриманий із згорткових шарів.


Поза темою, це здається крутим проектом. Якщо ви хочете співпрацювати в якомусь дослідницькому проекті, зв’яжіться зі мною (перевірте мій профіль)


Перший запропонований підхід був би нездійсненним у моєму випадку через складність обчислень. Друга з іншого боку, здається, може бути занадто обмежуючою. Але це, безумовно, хороший старт. Що я придумав поки що - це підхід, подібний до того, який я знайшов у цій статті: arxiv.org/pdf/1612.04530.pdf . Спочатку я розглядаю всі пари (взагалі всі k-кортежі) входів x_i, x_j, i, j в 0 ... n і застосовую деяку нейронну мережу до всіх (однакова nn для кожної пари). Це дає мені n ** 2 виведення f (x_i, x_j), а потім я їх середній (або приймаю максимум) і застосовую інший nn над результатом.
Йозеф Ондрей

Це те, що я придумав дотепер: github.com/josefondrej/Symmetric-Layers
Йозеф Ондрей

5

Ось кілька з цих питань, які ви можете шукати:


3

Я реалізував тут перестановний шар за допомогою Keras: https://github.com/off99555/superkeras/blob/master/permutational_layer.py

Ви можете зателефонувати на PermutationalModule функцію для її використання.

Реалізовано після цього документу: https://arxiv.org/pdf/1612.04530.pdf

Ідея полягає в тому, щоб порівняти всі пари N ^ 2 пар з N входів, використовувати модель із загальними вагами, а потім використовувати функцію об'єднання N разів на N входів. Вихід, який ви можете використовувати знову об'єднати, але в папері, вони не згадують про інше об'єднання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.