Як працює розмноження спини в сіамській нейронній мережі?


13

Я вивчав архітектуру сіамської нейронної мережі, запровадженої Яном Лекуном та його колегами в 1994 році для розпізнавання підписів ( "Перевірка підписів за допомогою нейронної мережі затримки в часі сіамської " .pdf , NIPS 1994)

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

Зображення з «Імовірнісної сіамської мережі для навчальних уявлень» Чена Лю (Університет Торонто, 2013).

У цій архітектурі алгоритм обчислює схожість косинуса між кінцевими уявленнями двох нейронних мереж. У статті зазначено: "Бажаний вихід є для невеликого кута між виходами двох підмереж (f1 і f2), коли пред'являються справжні підписи. , і великий кут, якщо один із підписів є підробкою ".

Я не можу реально зрозуміти, як вони могли використовувати бінарну функцію (косинусне схожість між двома векторами) в якості цілі для запуску розмноження.

Як обчислюється зворотне розповсюдження в сіамських нейронних мережах?


я не можу завантажити папір .... у вас є інше джерело або папка для скриньки?
Brethlosze

Відповіді:


11

Обидві мережі поділяють подібні архітектури, але вони обмежені тим, що мають ті ж ваги, як видання описано в розділі 4 [1].

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

Косинусна схожість двох векторів - це міра подібності, яка дає вам косинус кута між ними (тому його вихід не є двійковим). Якщо ви турбуєтеся про те, як ви можете виконати підтримку функції, яка виводить істинну або помилкову, подумайте про випадок бінарної класифікації.cos(A,B)=ABABA,B

Ви не повинні змінювати вихідний шар, він складається з тренованих нейронів з лінійними значеннями та його абстрагуванням більш високого рівня вашого введення. Вся мережа повинна навчатися разом. Обидва виходи та передаються через функцію яка виводить їхню косинусну подібність ( якщо вони схожі, і якщо вони не є). Враховуючи це, і що у нас є два набори вхідних кортежів , прикладом найпростішої можливої ​​функції втрат, проти якої ви могли б тренуватися, може бути:O1O2cos(O1,O2)10XForged,XGenuine

L=(xA,xB)XForgedcos(xA,xB)(xC,xD)XGenuinecos(xC,xD)

Після того, як ви тренуєте свою мережу, ви просто введете дві підписи, отримавши два виходи, їх у функцію та перевіряйте їх схожість.cos(O1,O2)

Нарешті, щоб зберегти ваги мережі однаковими, є кілька способів зробити це (і вони використовуються і в періодичних нейронних мережах); загальним підходом є середнє значення градієнтів двох мереж перед виконанням кроку оновлення Gradient Descent.

[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf


Я знаю, що мета - мінімізувати подібність косинусу, але я не можу зрозуміти, що мені слід вставити у вихідний шар моєї нейронної мережі. Коли я створюю нейронну мережу, я ставлю цілі в останній вихідний шар. Якщо вони значення, це добре. Але якщо цільова функція, де я можу знайти значення для заповнення? Спасибі
DavideChicco.it

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

1
Дякую. Я думаю, що я зрозумів свою проблему: це реалізація цієї нейронної мережевої архітектури в Torch7. Тут, перед навчанням і тестуванням, під час побудови нейронної мережі я повинен зазначити багато речей, включаючи вхідні значення набору даних та значення вихідного цільового рівня . Раніше я мав справу з контрольованими проблемами, які завжди мали фіксовані значення вихідного цільового рівня (наприклад, істинні / хибні мітки або значення в інтервалі [0, 1]). Але цього разу все інакше: вихідний шар - це функція залежно від двох значень, які будуть обчислені під час тренування. Це правильно?
DavideChicco.it

Саме в цей раз у вас лінійні значення у вихідному шарі не є бінарними (тому це просто вихід нейрона). Крім того, у вас немає прямих цільових значень виводу в цьому випадку, але у вас є функція втрат для оптимізації. Нарешті, вихідним шаром є вихід нейронів (кількість одиниць визначається архітектурою моделі та посилається на документ). Нейрони залежно від обраної функції активації (танг, сигмоїд тощо) мають лінійні, а не бінарні активації [-1,1] або [0,1] відповідно. n o u t p u tnoutputnoutput
Янніс Ассаель

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