MSE или средняя квадратическая ошибка - это просто ожидаемое значение квадрата разности между прогнозируемой и наземной метками истинности, представленное как
\text{MSE}(\hat{\theta}) = E\left[(\hat{\theta} - \theta)^2\right]
, где тета - это метки наземной истины, а тэта ^ шляпа - это предсказанные метки
Я не уверен, чтоВы имеете в виду точно, как теоретический вопрос или часть кода
Как реализация Python
def mean_squared_error(A, B):
return np.square(np.subtract(A,B)).mean()
yt = [[1,0,0],[0,0,1]]
yp = [[0.9, 0.2,0.2], [0.2,0.8,0.3]]
mse = mean_squared_error(yt, yp)
print(mse)
Это даст значение 0.21
Если вы используете одну из структур DL, такую как TensorFlow , то они уже предоставляют функцию , которая вычисляет потери mse между тензорами
tf.losses.mean_squared_error
где
tf.losses.mean_squared_error(
labels,
predictions,
weights=1.0,
scope=None,
loss_collection=tf.GraphKeys.LOSSES,
reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)
Аргументы:
метки: Выходной тензор истинного значения заземления, те же размерыкак «предсказания».
предсказания: Прогнозируемые результаты.
веса: Необязательный Tensor, чей ранг равен либо 0, либо такой же ранг, что и метки, и должен быть транслируем для меток (т. е. все измерения должны быть либо 1, либо совпадать с соответствующим измерением потерь).
scope: Область действия операций, выполняемых при расчете потерь.
loss_collection: коллекция, к которой будет добавлена потеря.
уменьшение: Тип сокращения, применяемого к убытку.
Возвраты:
Поправка с взвешенными потерями Тензор.Если сокращение НЕТ, оно имеет ту же форму, что и метки;в противном случае это скаляр.