У меня есть процедура, которая, учитывая вектор X, генерируя случайный вектор Y, даст действительный выходной результат (фактически всегда неотрицательный скаляр). Проблема в том, что это отображение функций из X x Y -> R + не известно. Поэтому мой подход заключается в том, чтобы сначала изучить эту неизвестную функцию, используя DNN. Затем максимизируйте выход, используя некоторую нелинейную оптимизацию (самое глубокое восхождение и т. Д.). Однако я не совсем понимаю, как это сделать. Не могли бы вы дать мне знать, что будет лучшим способом для этого? Спасибо!
Вот архитектура моей сети.
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_5 (InputLayer) (None, 2, 62) 0
__________________________________________________________________________________________________
lambda_15 (Lambda) (None, 60) 0 input_5[0][0]
__________________________________________________________________________________________________
lambda_16 (Lambda) (None, 60) 0 input_5[0][0]
__________________________________________________________________________________________________
dense_14 (Dense) (None, 60) 3660 lambda_15[0][0]
lambda_16[0][0]
__________________________________________________________________________________________________
concatenate_4 (Concatenate) (None, 120) 0 dense_14[0][0]
dense_14[1][0]
__________________________________________________________________________________________________
dropout_5 (Dropout) (None, 120) 0 concatenate_4[0][0]
__________________________________________________________________________________________________
lambda_13 (Lambda) (None, 2) 0 input_5[0][0]
__________________________________________________________________________________________________
lambda_14 (Lambda) (None, 2) 0 input_5[0][0]
__________________________________________________________________________________________________
dense_17 (Dense) (None, 60) 7260 dropout_5[0][0]
__________________________________________________________________________________________________
dense_15 (Dense) (None, 10) 30 lambda_13[0][0]
__________________________________________________________________________________________________
dense_16 (Dense) (None, 10) 30 lambda_14[0][0]
__________________________________________________________________________________________________
concatenate_5 (Concatenate) (None, 80) 0 dense_17[0][0]
dense_15[0][0]
dense_16[0][0]
__________________________________________________________________________________________________
dropout_7 (Dropout) (None, 80) 0 concatenate_5[0][0]
__________________________________________________________________________________________________
dense_18 (Dense) (None, 1) 81 dropout_7[0][0]
==================================================================================================
Total params: 11,061
Trainable params: 11,061
Non-trainable params: 0
По сути, входной вектор для каждого экземпляра представляет собой массив 2 x 62. Первые 2x60 фиксированы (X, как указано выше). Последние 2 столбца - это 2 случайных вектора Y1 и Y2. Таким образом, лямбда-слой в модели предназначен для извлечения этих отдельных компонентов. И теперь мне интересно, как найти Y1 и Y2, чтобы максимизировать выходной сигнал X для конкретного экземпляра.