Вопрос или проблема
В нейронной сети есть 4 двери: входная, выходная, забывающая и дверь, выход которого выполняет поэлементное умножение с выходом входной двери, который добавляется к состоянию ячейки (я не знаю названия этой двери, но это та, что на изображении ниже с выходом C_tilde
).
Почему добавление двери C_tilde
необходимо в модели? Для того чтобы входная дверь могла вычитать из состояния ячейки, мы могли бы изменить функцию активации, которая дает i_t
, с sigmoid
на tanh
и убрать дверь C_tilde
.
Я считаю, что входная дверь уже имеет матрицу весов W_i
, которая умножается на вход входной двери, таким образом, она уже выполняет фильтрацию. Однако, когда C_tilde
умножается на i_t
, это кажется еще одним ненужным фильтром.
Моя предложенная входная дверь тогда будет i_t = tanh(W_i * [h_t-1, x_t] + b_i)
и i_t
будет напрямую добавляться к C_t
(C_t = f_t * C_t + i_t
вместо C_t = f_t * C_t + i_t * C_tilde_t
).
Вот моя гипотеза: $i_t$ может добавить объяснимость модели, так как значение функции сигмоиды может дать представление о том, насколько важное слово для изменения состояния ячейки $C$. Это связано с тем, что $i_t$ находится в диапазоне от 0 до 1. Использование одной матрицы $W$ как для фильтрации, так и для преобразования признаков $[h_{t-1},x_t]$ не только увеличивает нагрузку на матрицу (ей нужно выполнять две задачи одновременно), но и больше не имеет фактора объяснимости.
Пример: 2 вектора могут требовать одного и того же преобразования $W*v$, но если не использовать отдельные функции сигмоиды, чтобы дать каждому значение важности, их вклад в состояние ячейки останется одинаковым.
Выход сигмоиды умножается на выход tanh, дверь умножается на фильтр. С помощью только tanh сигнал мог бы быть обнулен только для tanh(0), с дверью сигмоид, сигнал может быть обнулен для всех видов больших отрицательных значений, которые проходят в сигмоид. Матрица весов в сигмоиде необходима для правильной калибровки двери в зависимости от значений h и x.
Ответ или решение
Вопрос о том, зачем необходимо применять фильтр к выходу входных ворот в рекуррентных нейронных сетях (RNN), особенно в контексте LSTM (долгосрочной краткосрочной памяти), имеет важное значение для понимания работы этих моделей.
Структура LSTM
В LSTM присутствуют четыре основных гейта: входной (input), выходной (output), забывающий (forget) и механизм, который, как вы упомянули, в своем выходе производит элемент-wise умножение с выходом входного гейта, что в итоге добавляется к состоянии ячейки. Обычно этот механизм называет "гейтом состояния" или обозначается как ( C_{\tilde{t}} ).
Зачем нужен фильтр?
-
Фильтрация информации: Входной гейт ( i_t ), который определяется через сигмоидную функцию, позволяет модели фильтровать входные данные. Сигмоидная функция преобразует входы так, что значения находятся в диапазоне от 0 до 1. Это значит, что некоторые элементы входного сигнала могут быть "заблокированы" (вычисляются как 0), в то время как другие могут быть полностью пропущены (вычисляются как 1). Таким образом, это предоставляет возможности для управления тем, какую информацию следует добавить к состоянию ячейки.
-
Производительность и плавность: Применение двух различных функций активации (сигмоида для гейта и гиперболического тангенса для состояния) оптимизирует производительность системы. Информация, поступающая на ячейку, может быть более точно адаптирована и сбалансирована, таким образом улучшая обучение и позволяя модели быстрее сходиться.
-
Объясняемость: Ваше утверждение о том, что сигмоид может добавить объясняемость модели, является важным аспектом. Значения выходного сигмоида ( i_t ) дают нам понимание, насколько значимый каждый элемент для обновления состояния ячейки. Это значит, что мы можем не просто предсказать выходные данные, но и понять, какое значение имели силы входящих данных.
-
Избежать дублирования работы: Если сделать так, как вы предложили, и использовать только одну функцию для фильтрации и преобразования, это создаёт нагрузку на веса, так как они должны выполнять две разные задачи. В LSTM отдельные веса отвечают за различные аспекты, что позволяет избежать проблем с переобучением и улучшает обобщающую способность модели.
-
Адаптивность: К тому же, использование гейта состояния ( C_{\tilde{t}} ) позволяет адаптировать, насколько значимой будет разность между предыдущей и новой информацией. Это дает возможность модели более гибко реагировать на изменения в данных, которые поступают в процессе обучения.
Заключение
Включение ( C_{\tilde{t}} ) и создание фильтрации через сигмоидный гейт считывает важную информацию и контролирует, какая из входных данных является взглядом на актуальные данные в процессе работы сети. Это открывает дополнительную степень свободы и энергоэффективности при работе модели, более точно и безопасно адаптируя информацию.
Таким образом, фильтрация выходных данных входного гейта перед добавлением к состоянию ячейки не является избыточной; она дает модели необходимую гибкость и инструмент для работы с данными, что в итоге приводит к лучшему качеству обучения и интерпретируемости результатов.