Недавно я нашел несколько статей о порождающих рекуррентных моделях.Все они имеют подключенные подсети, такие как предыдущий / кодер / декодер / и т. Д.известной ячейке LSTM для составления совокупности ячеек RNN нового типа.
Мне просто любопытно, происходит ли исчезновение / взрыв градиента или нет с этими новыми ячейками RNN.Неужели нет проблем с такой комбинацией?
Ссылки:
Кажется, что все они имеют похожую схему, как указано выше.
Модель рекуррентных скрытых переменных для последовательных данных
Обучение стохастических рекуррентных сетей
Z-Forcing: Обучение стохастических рекуррентных сетей
Псевдокод
Ниже приведен псевдокод для рекуррентной архитектуры:
def new_rnncell_call(x, htm1):
#prior_net/posterior_net/decoder_net is single layer or mlp each
q_prior = prior_net(htm1) # prior step
q = posterior_net([htm1, x]) # inference step
z = sample_from(q) # reparameterization trick
target_dist = decoder_net(z) # generation step
ht = innerLSTM([z, x], htm1) # recurrent step
return [q_prior, q, target_dist], ht
Что меня беспокоит, так это те голые веса за пределами известной ячейки LSTM (или GRU и т. Д.)во время обработки bptt без какой-либо логики стробирования для активаций в качестве весов внутри LSTM.Для меня это выглядит не так, как уложенные слои или дополнительные плотные слои только для выходных данных.
Разве у этого нет проблемы исчезновения / взрыва градиента?