Новость
Резервуарные вычисления: нейросеть, которую почти не обучают
В резервуарных вычислениях большинство весов задаются случайно и не меняются, а обучается только выходной слой. Такой подход помогает обойти проблему затухания и взрыва градиентов, характерную для RNN и LSTM.
В машинном обучении обычно предполагается, что для работы нейросети нужно обучать все веса через обратное распространение ошибки и градиентный спуск. В резервуарных вычислениях логика другая: подавляющее большинство весов генерируются случайно и остаются неизменными, а обучается только выходной слой. Подход связан с обработкой последовательных данных — временных рядов, речи и текста. В таких задачах важна память о предыдущих состояниях, но именно она усложняет обучение рекуррентных сетей. RNN обучают через BPTT — обратное распространение ошибки по времени. При таком обучении градиент проходит через одни и те же веса много раз, из-за чего может экспоненциально затухать или, наоборот, взрываться. Поэтому RNN плохо удерживают информацию о далеких событиях. LSTM частично решает эту проблему с помощью гейтов, которые регулируют поток информации. Однако LSTM остается более тяжелой и медленной моделью и лишь смягчает проблему, а не устраняет ее полностью.
-
Резервуарные вычисления: нейросеть, которую почти не обучают
Habr AI
Нейросеть, которую почти не учат или что такое резервуарные вычисления В машинном обучении есть негласный договор. Если хочешь чтобы сеть работала - обучи все веса. Итеративно, через обратное распространение ошибки, тысячи шагов градиентного спуска. А вот к резервуарным вычислениям этот договор применяется с обратной логикой. Подавляющее большинство весов генерируются случайно и никогда не меняются. Обучается только один выходной слой. И это, как ни странно, работает. Начнем, впрочем, говорить про проблему - иначе непонятно, зачем вообще идти на такой компромисс. Рекуррентные нейросети придуманы для последовательных данных - временных рядов, речи, текста. В отличие от обычных сетей, у них есть интересное состояние. Выход на шаге t зависит не только от входа на шаге t, но и от всего что было до. Это делает их мощными - и одновременно очень неудобными в обучении. Обучают РНС через BPTT - метод обратного распространения ошибки по времени. Собственно, алгоритм раскрывает сеть во времени. Берет все T шагов, строит граф вычислений и считает градиент через него. На каждом шаге градиент проходит через матрицу весов W. Если W перемножать саму на себя T раз подряд - при собственных значениях меньше 1 произведение стремится к нулю экспоненциально. При больше 1 - к бесконечности. Первое называется затуханием градиента, второе - взрывом градиента. И это, кстати, нюанс. RNN плохо запоминает то, что было давно. Градиент от событий на шаге t=1 до шага t=100 затухает настолько, что сеть его просто не видит. LSTM частично решает это через систему гейтов, которые контролируют поток информации. Но LSTM тяжелее, медленнее, и проблему не убирает - немного смягчает. Читать далее #резервуарные_вычисления #рекуррентные_нейронные_сети #rnn #машинное_обучение #временные_ряды | @habr_ai