Рекуррентные нейронные сети/структура LSTM: c_t+1 = i_t * k_t + c_t * f_t

Источник на LSTM по адресу: https://medium.com/@jon.froiland/recurrent-neural-networks-part-6-d585c7af8923

output_t = activation(dot(state_t, Uo) + dot(input_t, Wo) + dot(C_t, Vo) + bo)
i_t = activation(dot(state_t, Ui) + dot(input_t, Wi) + bi)
f_t = activation(dot(state_t, Uf) + dot(input_t, Wf) + bf)
k_t = activation(dot(state_t, Uk) + dot(input_t, Wk) + bk)

Вы получаете новое состояние переноса (следующий c_t), комбинируя i_t, f_t и

c_t+1 = i_t * k_t + c_t * f_t

Я понимаю необходимость f_t и i_t ИЛИ k_t, однако я интуитивно не понимаю, почему необходимы и i_t, и k_t. Каждый из них содержит одни и те же входные данные (state_t и input_t). Это для целей реализации, чтобы помочь выровнять c_t * f_t с точки зрения размерности матрицы? Любые мысли по этому поводу приветствуются!

Оптимизация производительности модели: Руководство по настройке гиперпараметров в Python с Keras
Оптимизация производительности модели: Руководство по настройке гиперпараметров в Python с Keras
Настройка гиперпараметров - это процесс выбора наилучшего набора гиперпараметров для модели машинного обучения с целью оптимизации ее...
Определение пород собак с помощью конволюционных нейронных сетей (CNN)
Определение пород собак с помощью конволюционных нейронных сетей (CNN)
В рамках финального проекта Udacity Data Scietist Nanodegree я разработал алгоритм с использованием конволюционных нейронных сетей (CNN) для...
2
0
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В классическом LSTM у этих двух функций активации разные. i_t называется входными воротами с сигмовидной функцией активации, k_t также называется «значениями-кандидатами» с тангенциальной функцией активацииi. Я также прочитал термины «ввод», «ввод» и «входная модуляция» (например, Гал и Гахрамани). Чтобы процитировать замечательный Сообщение блога Кристофера Ола о LSTM,

The next step [after the forget gate layer] is to decide what new information we’re going to store in the cell state. This has two parts. First, a sigmoid layer called the “input gate layer” decides which values we’ll update. Next, a tanh layer creates a vector of new candidate values, C~t, that could be added to the state. In the next step, we’ll combine these two to create an update to the state.

Слой входных ворот, на который он ссылается, — это ваш i_t, значения-кандидаты — k_t. В принципе,

the sigmoid layer tells us which (or what proportion of) values to update and the tanh layer tells us how to update the state.

(цитируя Янна Кринау в обсуждении сообщения в блоге). Обязательно ознакомьтесь с этим постом, я нашел его очень полезным для понимания LSTM!

Большое спасибо! Я ценю объяснение.

aksg87 10.04.2019 20:46

Другие вопросы по теме