Машинное обучение: как упорядочить вывод и заставить их отклоняться от 0? - PullRequest
0 голосов
/ 31 мая 2018

Я тренирую глубокую модель CNN в Tensorflow и пытаюсь максимизировать корреляцию Пирсона между true labels и predictions.Например, для истинных меток y_true = [1.0, 2.0, 3.0, 4.0] я бы хотел предсказать что-то вроде y_pred = [0.9, 1.8, 3.0, 4.1], потому что это дает высокую корреляцию Пирсона.

Однако все мои прогнозы очень близки к 0, что-то вроде y_pred = [0.0001,0.0002, 0.0003, 0.0004].Хотя в этом случае корреляция Пирсона высока, модель численно нестабильна при расчете потерь Пирсона (например, была выброшена ошибка NaN).

Следовательно, мне интересно, что я могу сделать, чтобы выходной сигнал был большезначение, так что это не близко к 0?Может быть, какой-то регуляризатор на выходе может увеличить его?

1 Ответ

0 голосов
/ 31 мая 2018

Возможно, вы можете попытаться смоделировать вашу проблему как регрессивную.Определите как свою потерю как

(true_labels - predictions)^2

Поскольку вы будете явно минимизировать квадратную разницу между метками и прогнозами, они также будут сильно коррелированы.Вы можете сохранить исходную потерю для корреляции Пирсона и добавить ее в качестве регуляризатора, чтобы прогнозы были также близки к истинным меткам.Что-то вроде:

pearson_Loss + lambda * (true_labels - predictions)^2

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

...