Я обучил простую последовательную модель для оценки функции стоимости для конкретной политики в обучающей программе подкрепления. Для данного состояния NN возвращает одномерное значение для фиксированной политики.
Я хочу использовать эту модель в качестве инициализации для функции действия значения, где на входе находится одно и то же состояние и возвращен N-мерный вектор для действий {a_1, ..., a_N}. Поскольку первая сеть - это мое первое предположение, я хочу, чтобы значение, которое она возвращает для N возможных действий (Q [s_t, a_1], Q [s_t, a_2]), было равно значению функции при фиксированной политике (Q [s_t], перед дальнейшим обучением), т.е. Q [s_t] = Q [s_t, a_1] = Q [s_t, a_2].
Это моя сеть для фиксированной политики:
model = Sequential()
model.add(InputLayer(input_shape = (3))) #0,0: hour; 0,1: congestion
model.add(Dense(50, input_shape = input_shape, activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(150, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
Я пытался изменить его с помощью
model.pop()
model.add(Dense(3,activation='sigmoid'))
model.build()
Но тогда функция все равно вернула одномерный вектор.
Я тоже пытался
new_model = Sequential()
new_model.add(InputLayer(input_shape = (3)))
new_model.add(model.layers[0])
new_model.add(model.layers[1])
new_model.add(model.layers[2])
new_model.add(Dense(3, activation='sigmoid'))
Теперь я получил возвращенный 3D-массив, но значения значительно отличались от значений, предсказанных другой моделью.
Что мне не хватает или есть способ сделать это лучше, например путем прямой инициализации новой модели с помощью прогнозов более старой модели? Спасибо за вашу помощь!