Як зробити свою нейронну мережу кращою при прогнозуванні синусоїд?


21

Ось подивіться: Породжена синусоїда Ви можете точно бачити, де закінчуються дані тренувань. Дані про навчання проходять від до .11

Я використовував Keras і щільну мережу 1-100-100-2 з активацією tanh. Я обчислюю результат з двох значень, p і q як p / q. Таким чином я можу отримати будь-який розмір числа, використовуючи лише менше 1 значення.

Зверніть увагу, що я все ще новачок у цій галузі, тому будьте легкі для мене.


1
Для уточнення, ваші дані тренінгу приблизно від -1,5 до +1,5, тож мережа дізналася це точно? Отже, ваше питання полягає в екстраполяції результату на невидимі числа за межами даних про навчання?
Ніл Слейтер

11
Ви можете спробувати Фур'є перетворити все і працювати в частотній області.
Нік Алгер

4
Для майбутніх рецензентів: я не знаю, чому це позначено для закриття. Мені це здається абсолютно зрозумілим: мова йде про стратегії моделювання періодичних даних з нейронних мереж.
Sycorax повідомляє про відновлення Моніки

1
Я думаю, що це питання розумне для новачків у галузі машинного навчання, яке ми повинні розмістити тут. Я б не закривав це
Аксакал

1
Я не знаю, чи це допоможе, але з коробки ванільний NN зможе засвоїти лише функції полінома. На практиці це нормально, оскільки ви можете зробити поліном довільно близьким за фіксований інтервал. Але це означає, що ви ніколи не можете навчитися синусоїді, яка поширюється на минулі кінці інтервалу. Хитрість, на яку вказували інші відповіді нижче, - перетворити проблему на ту, яку можна вирішити таким чином. Саме це робить запропонована трансформація Фур'є, і в цьому випадку навчання синусоїди - це просто навчання постійним.
Ukko

Відповіді:


19

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

Однак, оскільки дані мають періодичну якість, проблема може бути піддана моделюванню з LSTM. LSTM - це різні клітини нейронної мережі, які працюють на послідовностях і мають "пам'ять" про те, що вони "бачили" раніше. Автореферат цієї книги передбачає, що підхід LSTM є кваліфікованим успіхом у періодичних проблемах.

У цьому випадку дані тренінгу будуть послідовністю кортежів , а завдання зробити точні прогнози для нових входів на деякий і індексує деяку зростаючу послідовність. Довжина кожної послідовності введення, ширина інтервалу, який вони охоплюють, та їх інтервал, залежать від вас. Інтуїтивно, я б очікував, що звичайна сітка, що охоплює 1 період, буде гарним місцем для початку, коли навчальні послідовності охоплюють широкий діапазон значень, а не обмежуються деяким інтервалом.(хi,гріх(хi))хi+1хi+ннi

(Хіменес-Гуарнерос, Магдіель і Гомес-Гіл, Пілар і Фонсека-Дельгадо, Рігоберто і Рамірес-Кортес, Мануель і Аларкон-Акіно, Вісенте, "Довгострокове прогнозування функцій синуса за допомогою нейронної мережі LSTM", в Nature- Натхненний дизайн гібридних інтелектуальних систем )


2
Яка послідовність моделюється тут? Які кроки часу? Це виглядає як простий додаток для кривих для мене.
Девід Дж. Гарріс

@ DavidJ.Harris Я оновив свою відповідь.
Sycorax повідомляє про відновлення Моніки

1/(2π)

Так, наприклад, вони роблять прогнози на ринку?
Маркус Аппель

3
Ні, це не так, як ви робите прогнози на ринку. Принаймні не так, як ви це робите, щоб заробити гроші.
Аксакал

13

Якщо ви хочете зробити це вивчити такі прості періодичні функції, як ця, то ви можете вивчити використання Гауссових процесів. Лікарі загальної практики дозволяють застосовувати знання домену в тій чи іншій мірі, вказуючи відповідну функцію коваріації; у цьому прикладі, оскільки ви знаєте, що дані періодичні, ви можете вибрати ядро ​​з періодичністю, тоді модель буде екстраполювати цю структуру. Ви можете бачити приклад на малюнку; тут я намагаюся вписати дані про висоту відливу, тому знаю, що вона має періодичну структуру. Оскільки я використовую періодичну структуру, модель правильно екстраполює цю періодичність (більш-менш). OFC, якщо ви намагаєтеся дізнатися про нейронні мережі, це насправді не актуально, але це може бути трохи приємніше підходу, ніж функції ручної інженерії. Між іншим, нейронні мережі та gp's тісно пов'язані між собою в теорії,введіть тут опис зображення

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

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



11

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

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

Поза вашими даними про навчання, ви сподіваєтесь на екстраполяцію. Але не існує простого способу цього досягти. Нейронна мережа ніколи не вивчає функцію аналітично, лише приблизно за допомогою статистики - це справедливо для майже всіх контрольованих методів навчання ML. Більш просунуті алгоритми можуть довільно наблизитися до обраної функції, надаючи достатньо прикладів (та вільних параметрів у моделі), але все одно це робитимуть лише у діапазоні наданих навчальних даних.

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

гріхгріх(х),гріх(2х+π/4)гріх


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

@Aksakal: Так, це правда. Однак я не хотів заявляти, що "всі алгоритми ML ніколи не вивчають функції аналітично." бо хто - то без сумніву , буде придумати контрприклад деякі байєсовські аналітичних навчається або генетичне програмування і т.д. і т.п. Я буду намагатися , щоб змінити його , щоб зробити його більш загальним
Ніл Слейтер

9

У деяких випадках запропонований @Neil Slater підхід до перетворення ваших функцій періодичною функцією буде добре працювати і може бути найкращим рішенням. Складність тут полягає в тому, що вам може знадобитися вибрати період / довжину хвилі вручну (див. Це питання ).

Якщо ви хочете, щоб періодичність була вбудована більш глибоко в мережу, найпростішим способом було б використовувати sin / cos як функцію активації в одному або декількох шарах. У цьому документі розглядаються потенційні труднощі та стратегії поводження з функціями періодичної активації.

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


9

Ви прийняли неправильний підхід, з цим підходом нічого не можна зробити, щоб виправити проблему.

Існує кілька різних способів вирішення проблеми. Я запропоную найочевидніший за допомогою інженерії функцій. Замість того, щоб підключити час як лінійну характеристику, поставте його як залишок модуля T = 1. Наприклад, t = 0,2, 1,2 і 2,2 стануть ознакою t1 = 0,1 і т. Д. Поки T більше, ніж період хвилі, це вийде. Підключіть цю річ до своєї мережі та подивіться, як вона працює.

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

Крім того, я сподіваюся, ви зрозуміли, що це найжорстокіший приклад інженерної функції. Це просто дати вам уявлення про те, що ви могли з цим зробити.

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