tf.losses.mean_squared_error с отрицательной целью

Я использую Q-обучение и хочу знать, могу ли я использовать функцию расчета потерь tf.losses.mean_squared_error, если у меня есть функция вознаграждения, которая может давать отрицательные вознаграждения.

Потому что, если у меня есть, например, в качестве вывода моей сети следующие значения Q: (0,1, 0,2, 1), и я вычисляю, что мои реальные значения Q должны быть (0,1, -5, 1), если я использую функцию mean_squared_error, потеря для второго значения Q станет положительной, я ошибаюсь? Из-за квадратной операции градиентный спуск не будет основан на правильной потере?


person Xeyes    schedule 23.05.2019    source источник


Ответы (2)


Да, это работает хорошо.

Вы должны коснуться функции стоимости mse.

mse = tf.reduce_mean(tf.square((x*w+b)-y))

Функция стоимости вычисляет квадрат разницы. Это означает, что всегда - значения становятся +.

И вы правы.
7-1 и 5+ -1 стоят столько же, сколько 36.

Чтобы лучше понять градиентный спуск, вам нужно знать, как минимизировать mse. На изображении ниже вы можете увидеть текущий mse на x*w+b.
В этот момент градиентный спуск получает наклон, чтобы определить направление изменения w.

введите здесь описание изображения

Наклон рассчитывается по производной.

введите здесь описание изображения

Вы можете увидеть приведенную ниже формулу после производной функции mse.

введите здесь описание изображения

Итак, вы можете видеть направление W, в котором W будет перемещена влево, если ((w*x-y)*x) > 0, и будет перемещена вправо, если нет.

person yaho cho    schedule 24.05.2019
comment
Да я вижу ! Спасибо за время, потраченное на этот хороший ответ! - person Xeyes; 24.05.2019

Да, вы можете безопасно использовать функцию потерь среднего квадрата ошибки (MSE), даже если функция вознаграждения может давать отрицательные значения.

Как вы заметили, функция MSE всегда будет положительной из-за квадратной операции. Однако это желательный эффект.

Подумайте, например, о простой линейной регрессии. Все значения функции потерь положительны, независимо от того, является ли ошибка положительной или отрицательной. Это уступает место выпуклой функции потерь с глобальным минимумом, где градиентный спуск работает идеально.

Следующая схема (из статьи Gradient Descent: All You Need to Know) иллюстрирует градиент процесс спуска, который может помочь лучше понять, что я имею в виду:

введите здесь описание изображения

person Pablo EM    schedule 24.05.2019
comment
Спасибо за ваш ответ! но одну вещь я до сих пор не понимаю, поэтому, если расчет потерь MSE фактически становится положительным, даже если разница между реальным и целевым значением отрицательна, при условии, что у меня есть реальное значение Q = 1 и целевое значение Q равно -5, как Градиент спускается правильно, минимизируя потери в правильном направлении? потому что квадратная разница между 1 и -5 такая же, как между 1 и 7, не так ли? может я что-то неправильно понимаю? - person Xeyes; 24.05.2019
comment
Добро пожаловать, вроде теперь все понятно, поэтому обновлять ответ не буду. - person Pablo EM; 24.05.2019