Моя нейронна мережа навіть не може вивчити евклідову відстань


9

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

Першими моїми експериментами було навчання мережі для впровадження фільтра FIR та дискретної трансформації Фур'є (тренування сигналів "до" та "після"), оскільки це обидві лінійні операції, які можуть бути реалізовані одним шаром без функції активації. Обидва працювали чудово.

Тоді я хотів побачити, чи можу я додати abs()та змусити його вивчити амплітудний спектр. Спочатку я подумав, скільки вузлів знадобиться в прихованому шарі, і зрозумів, що 3 ReLU достатньо для грубого наближення abs(x+jy) = sqrt(x² + y²), тому я перевірив цю операцію сам на одиноких складних числах (2 входи → 3 вузла ReLU прихований шар → 1 вихід). Іноді це працює:

3 РЕ, що реалізують евклідову відстань як перевернуту шестикутну піраміду

Але більшість випадків, коли я його пробую, він застряє в локальному мінімумі і не вдається знайти потрібну форму:

3 РЛУ, що утворюють долиноподібну мережу

втрата проти епох

Я спробував усі варіанти оптимізаторів та ReLU в Keras, але вони не мають великої різниці. Чи є щось інше, що я можу зробити, щоб такі прості мережі, як ця, надійно сходилися? Або я просто підходжу до цього з неправильним ставленням, і ви повинні просто викинути набагато більше вузлів, ніж потрібно при проблемі, і якщо половина з них помре, це не вважається великою справою?


1
Ваш сюжет показує, що, здається, є кілька різних експериментів, деякі з яких працюють, а деякі не. Що пояснює різниці?
Sycorax каже, що повернеться до Моніки

@Sycorax Це лише повторні випробування того ж самого. Іноді він знаходить шестикутну піраміду, але зазвичай це не так.
ендоліт

Чи спробували ви з двома прихованими шарами і таном як функцією активації?
Кетан

@KetanNo, чому? Я відправив простіший варіант тут: stats.stackexchange.com/q/379884/11633
ендоліти

ви можете подивитися на це. stats.stackexchange.com/q/375655/27556 . Але чи можете ви пояснити, чому ви думаєте, що вам потрібні лише 3 залишки? "природне" розкладання було б одним прихованим шаром, щоб зробити наближення квадрату з релюсом, а іншим - зробити квадратний корінь - в основному релюс роблять кусочно лінійні наближення.
seanv507

Відповіді:


6

Здається, висновок настійно говорить про те, що один або кілька ваших нейронів загинули (або, можливо, гіперплан ваг для двох ваших нейронів злився). Ви можете бачити, що за допомогою 3-х Relu, ви отримуєте 3 тіньових розколи в центрі, коли ви переходите до більш розумного рішення. Ви можете легко перевірити, чи це правда, перевіривши вихідні значення кожного нейрона, щоб побачити, чи він залишається мертвим для більшості ваших зразків. Крім того, ви можете побудувати всі ваги 2x3 = 6 нейронів, згруповані за їх відповідним нейроном, щоб побачити, чи руйнуються два нейрони до однієї пари ваг.

Я підозрюю, що одна з можливих причин цього - коли перекошений до однієї координати, наприклад, , і в цьому випадку ви намагаєтесь відтворити тотожність, як тоді . Тут справді мало що можна зробити, щоб виправити це. Один із варіантів - додати більше нейронів, як ви намагалися. Другий варіант - спробувати безперервну активацію, як сигмоїд, чи, можливо, щось без обмеженого типу, як експоненція. Ви також можете спробувати відмову (припустимо, 10% ймовірності). Ви можете використовувати звичайну реалізацію відмов у керах, що, сподіваємось, досить розумне, щоб ігнорувати ситуації, коли всі 3 ваших нейрона випадають.x+iyxyabs(x+iy)x


1
+1, майже напевно це. При використанні ReLU з такою невеликою кількістю ваг мертві нейрони майже завжди вступають у гру.
kbrose

1
Це правдоподібна здогадка у випадку ReLU. Але ОП пише, що вони спробували кілька різних варіантів ReLU - чи трапляються мертві нейрони у таких варіантах, як ELU чи Leaky Relu чи PReLU?
Sycorax каже, що повернеться до Моніки

3 shadowy splits in the center when you converge to the more reasonable solution.Так, саме це я мав на увазі грубе наближення; перевернута шестикутна піраміда. or perhaps something unbounded like an exponential Я спробував elu і selu, які не спрацювали краще. two neurons collapse to the same pair of weightsАх, я про це не думав; Я просто припускав, що вони мертві.
ендоліт

Я отримав доступ до виходу прихованого шару під час використання ReLU і підтвердив, що зазвичай один з нейронів мертвий. Рідше двоє перетинаються і роблять те саме. Мені цікаво, чи є спосіб змусити нейрони «відштовхуватися» один від одного, щоб вони не влаштувалися на зайві ролі.
ендоліт

1
@endolith Dropout явно розроблений навколо побудови незалежних нейронів. ELU ніколи не «гинуть», але вони мають зниклий градієнт зліва.
Sycorax каже, що повернеться до Моніки
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.