Тренировка по армированию Keras с softmax

В проекте, над которым я работаю, есть этап обучения с подкреплением с использованием REINFORCE. Используемая модель имеет последний слой активации softmax, и из-за этого отрицательная скорость обучения используется как замена отрицательным вознаграждениям. У меня есть некоторые сомнения по поводу этого процесса, и я не могу найти много литературы по использованию отрицательной скорости обучения.

Работает ли обучение по переподготовке с переключением скорости обучения с положительной на отрицательную? а если нет, что было бы лучше, избавиться от softmax или есть keras хороший вариант для этого?

Функция потерь:

def log_loss(y_true, y_pred):
    '''
    Keras 'loss' function for the REINFORCE algorithm, 
    where y_true is the action that was taken, and updates 
    with the negative gradient will make that action more likely. 
    We use the negative gradient because keras expects training data
    to minimize a loss function.
    '''
    return -y_true * K.log(K.clip(y_pred, K.epsilon(), 1.0 - K.epsilon()))

Переключение скорости обучения:

K.set_value(optimizer.lr, lr * (+1 if won else -1))
learner_net.train_on_batch(np.concatenate(st_tensor, axis=0),
                           np.concatenate(mv_tensor, axis=0))

Обновление, результаты тестирования

Я провел тест только с положительными образцами подкрепления, исключив все отрицательные примеры и, следовательно, отрицательную скорость обучения. Показатель успешности растет, он улучшается, и я могу с уверенностью предположить, что использование отрицательной скорости обучения неверно.
у кого-нибудь есть какие-либо мысли о том, как мы должны это реализовать?

Обновление, описание модели

Мы пытаемся воссоздать AlphaGo, как описано DeepMind, медленную политику сеть:

На первом этапе процесса обучения мы опираемся на предыдущую работу по прогнозированию действий экспертов в игре го с использованием контролируемого обучения13,21–24. Сеть политики SL pσ (a | s) чередуется между сверточными слоями с весами σ и нелинейностями выпрямителя. Последний слой softmax выводит распределение вероятностей по всем допустимым ходам a.


person MaMiFreak    schedule 12.07.2017    source источник
comment
Я не читал статью, которую вы связали. Какую функцию пытается приблизить ваша сеть? Государственно-ценностная функция? Функция ценности состояния-действия? Что-то другое? В любом случае, если функция может принимать отрицательные значения, использование softmax для вывода не подходит.   -  person Ryan Stout    schedule 15.07.2017
comment
Я предполагаю, что это часть проекта RocAlphaGo. Вы когда-нибудь заставляли работать отрицательную скорость обучения? Я пытаюсь использовать метод AlphaGo для других настольных игр и застрял на том же месте.   -  person Andrew Rose    schedule 04.09.2017
comment
Действительно, для проекта RocAlphaGo я провел несколько тестов, но ни один из них не помог. лучший результат, который мы получили, был когда мы тренировались только с положительными образцами подкрепления ... но это своего рода расточительство. Есть еще кое-что более срочное, но когда я обращу на это свое внимание и найду какое-то решение, я опубликую его здесь.   -  person MaMiFreak    schedule 05.09.2017


Ответы (1)


Не уверен, что это лучший способ, но, по крайней мере, я нашел способ, который работает.

для всех отрицательных обучающих выборок я повторно использую предсказание сети, устанавливаю действие, которое я хочу отучить, на ноль и корректирую все значения, чтобы снова суммировать до одного

Впоследствии я попробовал несколько способов отрегулировать их, но не провел достаточно тестов, чтобы убедиться, что работает лучше всего:

  • применить softmax (действие, которое необходимо отменить, получает ненулевое значение ..)
  • перераспределить старое значение действия по всем остальным действиям
  • установить все значения незаконных действий равными нулю и распределить общее удаленное значение
  • распределять стоимость пропорционально стоимости других ценностей

вероятно, есть несколько других способов сделать это, это может зависеть от варианта использования, что работает лучше всего, и может быть лучший способ сделать это, но, по крайней мере, этот работает.

person MaMiFreak    schedule 16.11.2017