многофакторная регрессия caffe CNN: выходы с очень разными диапазонами значений - PullRequest
0 голосов
/ 08 мая 2018

Я использую Caffe CNN для регрессии (см. Рисунок ниже).

enter image description here

Значения, которые я хочу предсказать, имеют очень разные диапазоны, например y1 = [0,1: 0,2], y2 = [1: 5], .. yn = [0:15].

Q1 : если я попытаюсь предсказать, что они такие, как они, это испортит обучение? и если да, то почему? (Я уже провел этот эксперимент, и результаты в порядке, но не хорошо)

Q2 : можно ли установить y's = [0: 1], выполнив сумму (ys) = 1?

Q3 : могу ли я использовать другую функцию потерь, например, Softmax или Logistic, или Euclidean мой единственный вариант?

1 Ответ

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

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

Если я правильно понимаю ваши настройки, у вас есть функция потерь для каждого выхода y_i. Каждая потеря - это потеря регрессии, заставляющая y_i в определенном диапазоне.

1. Поскольку ваши выходные данные "тянут" в разные диапазоны, это может привести к тому, что матрица весов последнего слоя будет иметь очень разные шкалы для разных рядов. Если вы используете регуляризатор (например, L2 ), это может «запутать» процесс обучения, пытаясь сделать вес примерно изотропным.
Чтобы преодолеть это, вы можете ослабить регуляризацию веса последнего слоя (используя параметр decay_mult). Кроме того, вы можете добавить слой "Scale", чтобы узнать только масштабный коэффициент (и, возможно, также смещение) для каждого выхода.

2. Я не понимаю, чего вы пытаетесь достичь этим. Вы пытаетесь связать результаты? Вы можете получить ограниченные выходы, применяя активацию "Sigmoid" или "Tanh" к каждому выходу, заставляя каждый диапазон [0..1] или [-1..1]. (Вы можете добавить "Scale" слой после активации).

3. Вы можете использовать логистическую регрессию для каждого из выходов или исследовать плавные потери L1 (которые должны быть более устойчивыми, особенно если цели не находятся в диапазоне [-1..1]).

...