Архитектура рекуррентной нейронной сети f
что наблюдает входной вектор x
и имеет состояние h
является
f :: h -> x -> h
Как вы уже заметили, если это имеет какой-то побочный эффект или выход вы можете моделировать его как
f :: h -> x -> m h
и запустить его с foldM f
. Другое типичное, что нужно сделать, это обучить выходной слой, который производит выходной сигнал o
из h
, либо отдельной сети g :: h -> o
или
f :: h -> x -> (h, o)
, которое эквивалентно f :: x -> State h o
; если это имеет побочный эффект, это f :: x -> StateT m h o
.
Обучение сети составляет изучение функции f
и в некоторых случаях изучение типа h
. Рекуррентная сеть использует ту же функцию f
на всех временных шагах. Это работа по обучению узнать, которая из прошлого должна помнить в h
. Вам не нужны «некоторые валовые структуры данных, пытающиеся запомнить вещи из предыдущих сетей», сеть учится использовать h
для запоминания соответствующих вещей с предыдущих шагов времени.
Для осуществления и обучения f
может использоваться любой сетевой или контролируемый механизм обучения.
Если вы используете свертку вместо повторяющейся нейронной сети, вам нужно будет запомнить окно времени, в которое действует свертка. Легкий способ сделать это - представить все окно в качестве входного вектора x'
. в любом случае вы явно сохраняете историю при реализации сети f
. Свернутая сеть не обязательно видит состояние, перенесенное с предыдущих шагов времени, это может быть функция f :: x' -> o
.
Я думаю, что вы пытаетесь идти глубже, так как вы представляете как изображения и надписи (которые я предполагаю, являются примерами для подконтрольного обучения). Если вы хотите обучить f
из известного набора примеров, вам не нужно моделировать , обучаясь из серии опытов.
Если вы хотите модель обучения из серии опытов вы будете иметь состояние t
машинного обучения f
и функция t -> typeOf(f)
. Тип машинного обучения f
будет зависеть от того, как машина подключена к реальному миру. Если реальный мир не повторит опыт надежно, машина захочет вспомнить предыдущие события (особенно те, которые f
выполняются плохо), чтобы он мог представить эти события до f
для дополнительного обучения. Механизм, обернутый вокруг учебного предмета f
, должен дать f
кошмары. Возможно, он захочет вспомнить несколько опытов f
делает все возможное, чтобы не потерять существующую производительность, и в этом случае f
получает удовольствие от приятных снов.
Ни в коем случае это не проблема f
, чтобы помнить предыдущий опыт.
Вы хотите пойти глубже? Если обучающая машина должна научиться обучать вещи, например, f
, она будет обучена семьям таких проблем, как проблема f
. Параметры тренажера будут разделены между проблемами, и машина узнает, что нужно запомнить. Как некоторый уровень, машина, вероятно, будет контролировать себя, а машины такого типа, которые изучают плохие параметры и застревают, будут отсеяны какой-то более крупной системой отбора, которая разрушает некомпетентные машины.
Я не понимаю, почему вы пишете 'newY = stepLayer y (currentResponse newX) (currentReponse newZ)', но ваша диаграмма говорит 'newY = stepLayer y (hOldResponse x) (hOldResponse z)'? – freestyle