Максимизируйте выход нейронной сети, настраивая подмножество входных векторов - PullRequest
0 голосов
/ 22 октября 2019

У меня есть процедура, которая, учитывая вектор 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 для конкретного экземпляра.

...