Решил поведать про новую и захватывающую тему в области машинного обучения — https://en.wikipedia.org/wiki/Reservoir_computing
На самом деле не особо новая — развивается с середины 2000х — но настолько прикольная, что удержаться невозможно.
В общих чертах, идея такая. Возьмём для примера старый добрый многослойный перцептрон — что он делает? По сути, он производит какое-то неведомое нелинейное преобразование. Сначала с повышением размерности, потом с сохранением, а в конце сужающее — из какого-то многомерного латентного пространства в низкую размерность, которую мы уже интерпретируем как решение задачи. Стандартная схема.
Но перцептрон — это не круто, очень старая и скучная архитектура, лучше взять что-то поинтереснее, хотя бы рекуррентные нейронные сети. Так у нас возникает система с обратными связями. Её можно описать разностной схемой, а в пределе получатся дифуры. Дифуры — это круто и уважаемо. Есть даже ещё более маркетинговое название — динамические системы, звучит гордо.
А теперь подумаем, так ли нам важно, что там происходит в недрах нашей нейронки? Этого всё равно никто не понимает! Но зачем-то же мы производим это преобразование в многомерное пространство, почему-то же это работает? Ну, в задачах классификации мы предполагаем, что нелинейное отображение в многомерное пространство "растаскивает" точки подальше друг от друга, и так становится "виднее" и понятнее, кто к какому классу принадлежит. Т.е. главное — чтобы после преобразования соседние точки оказались разнесены далеко друг от друга.
Но это же самое известное свойство хаотических систем! Которые описываются дифурами. Всё сходится! Нужно всего лишь взять любую хаотическую динамическую систему — можно реальную физическую! — преобразовать наши данные в начальное состояние этой системы, дать ей поработать какое-то время, считать итоговое состояние, а потом натренировать перцептрон правильно его интерпретировать. Поздравляю, мы только что переизобрели Reservoir Computing. 💪
Между делом мы пересекли другую линию исследований, которая началась чуть раньше и развивалась параллельно: https://en.wikipedia.org/wiki/Extreme_learning_machine
По факту, это использование случайно инициализированных стандартных feed-forward NNs, где обучается только последний слой. Промежуточные слои производят неведомое нелинейное преобразование, но нас это устраивает, потому что главное — научиться правильно интерпретировать результаты.
Но я предлагаю заглянуть в прошлое намного дальше и проследить истинные истоки этих идей. Поскольку практиковать их начали ещё в древнем Риме! А что, стая птиц — это сложная динамическая система с обратными связями, в чём-то даже хаотическая. Не хуже других естественных динамических систем. Главное же — научиться правильно интерпретировать конечное состояние... 😏
На самом деле не особо новая — развивается с середины 2000х — но настолько прикольная, что удержаться невозможно.
В общих чертах, идея такая. Возьмём для примера старый добрый многослойный перцептрон — что он делает? По сути, он производит какое-то неведомое нелинейное преобразование. Сначала с повышением размерности, потом с сохранением, а в конце сужающее — из какого-то многомерного латентного пространства в низкую размерность, которую мы уже интерпретируем как решение задачи. Стандартная схема.
Но перцептрон — это не круто, очень старая и скучная архитектура, лучше взять что-то поинтереснее, хотя бы рекуррентные нейронные сети. Так у нас возникает система с обратными связями. Её можно описать разностной схемой, а в пределе получатся дифуры. Дифуры — это круто и уважаемо. Есть даже ещё более маркетинговое название — динамические системы, звучит гордо.
А теперь подумаем, так ли нам важно, что там происходит в недрах нашей нейронки? Этого всё равно никто не понимает! Но зачем-то же мы производим это преобразование в многомерное пространство, почему-то же это работает? Ну, в задачах классификации мы предполагаем, что нелинейное отображение в многомерное пространство "растаскивает" точки подальше друг от друга, и так становится "виднее" и понятнее, кто к какому классу принадлежит. Т.е. главное — чтобы после преобразования соседние точки оказались разнесены далеко друг от друга.
Но это же самое известное свойство хаотических систем! Которые описываются дифурами. Всё сходится! Нужно всего лишь взять любую хаотическую динамическую систему — можно реальную физическую! — преобразовать наши данные в начальное состояние этой системы, дать ей поработать какое-то время, считать итоговое состояние, а потом натренировать перцептрон правильно его интерпретировать. Поздравляю, мы только что переизобрели Reservoir Computing. 💪
Между делом мы пересекли другую линию исследований, которая началась чуть раньше и развивалась параллельно: https://en.wikipedia.org/wiki/Extreme_learning_machine
По факту, это использование случайно инициализированных стандартных feed-forward NNs, где обучается только последний слой. Промежуточные слои производят неведомое нелинейное преобразование, но нас это устраивает, потому что главное — научиться правильно интерпретировать результаты.
Но я предлагаю заглянуть в прошлое намного дальше и проследить истинные истоки этих идей. Поскольку практиковать их начали ещё в древнем Риме! А что, стая птиц — это сложная динамическая система с обратными связями, в чём-то даже хаотическая. Не хуже других естественных динамических систем. Главное же — научиться правильно интерпретировать конечное состояние... 😏