Тому я намагаюся навчити себе нейронних мереж (для регресійних застосувань, а не для класифікації зображень котів).
Першими моїми експериментами було навчання мережі для впровадження фільтра FIR та дискретної трансформації Фур'є (тренування сигналів "до" та "після"), оскільки це обидві лінійні операції, які можуть бути реалізовані одним шаром без функції активації. Обидва працювали чудово.
Тоді я хотів побачити, чи можу я додати abs()
та змусити його вивчити амплітудний спектр. Спочатку я подумав, скільки вузлів знадобиться в прихованому шарі, і зрозумів, що 3 ReLU достатньо для грубого наближення abs(x+jy) = sqrt(x² + y²)
, тому я перевірив цю операцію сам на одиноких складних числах (2 входи → 3 вузла ReLU прихований шар → 1 вихід). Іноді це працює:
Але більшість випадків, коли я його пробую, він застряє в локальному мінімумі і не вдається знайти потрібну форму:
Я спробував усі варіанти оптимізаторів та ReLU в Keras, але вони не мають великої різниці. Чи є щось інше, що я можу зробити, щоб такі прості мережі, як ця, надійно сходилися? Або я просто підходжу до цього з неправильним ставленням, і ви повинні просто викинути набагато більше вузлів, ніж потрібно при проблемі, і якщо половина з них помре, це не вважається великою справою?