Функция потерь для порядковой цели в SoftMax поверх логистической регрессии

Я использую Pylearn2 ИЛИ Caffe для создания глубокой сети. Моя цель заказана номинальная. Я пытаюсь найти правильную функцию потерь, но не могу найти ее в Pylearn2 или Caffe.

Я прочитал статью «Функции потерь для уровней предпочтений: регрессия с дискретными упорядоченными метками». Я понимаю общую идею, но я не уверен, что понимаю, какими будут пороговые значения, если моим последним слоем будет SoftMax поверх логистической регрессии (вывод вероятностей).

Может ли кто-нибудь помочь мне, указав на любую реализацию такой функции потерь?

С уважением


person Run2    schedule 18.12.2014    source источник
comment
вам может понадобиться немного больше описать вашу проблему, если вам все еще нужна помощь.   -  person user1269942    schedule 20.01.2015
comment
Моя метка порядковая, скажем, 1,2,3,4,5. Итак, у меня 5 классов. Моя модель представляет собой мультикласс, использующий SoftMax поверх LogisticRegression, который выдает 1,2,3,4,5. Теперь, если фактическая метка для экземпляра обучения равна 3, а мой прогнозируемый результат равен 1, то это хуже, чем прогнозируемый результат 2. Такие потери можно смоделировать, если моя модель представляет собой регрессию с использованием среднеквадратичной ошибки в качестве функции потерь. Но в SoftMax потери такие же. Это означает, что может быть одинаково хуже получить 2 против 3 по сравнению с 1 против 3 (с использованием отрицательной логарифмической вероятности). Итак, как я могу изменить отрицательную логарифмическую вероятность, чтобы она соответствовала порядковому целевому значению?   -  person Run2    schedule 21.01.2015


Ответы (1)


И для pylearn2, и для caffe ваши метки должны быть 0-4 вместо 1-5... так они работают. Выходной слой будет состоять из 5 единиц, каждая из которых по сути является логистической единицей... и softmax можно рассматривать как адаптер, нормализующий окончательные выходные данные. Но «softmax» обычно используется в качестве типа вывода. При обучении значение любой отдельной единицы редко когда-либо точно равно 0,0 или 1,0 ... это всегда распределение по вашим единицам, на котором можно рассчитать логарифмическую потерю. Эта потеря используется для сравнения с «идеальным» случаем, а ошибка обратно поддерживается для обновления весов вашей сети. Обратите внимание, что необработанный вывод из PL2 или Caffe не является конкретной цифрой 0, 1, 2, 3 или 5 ... это 5 чисел, каждое из которых связано с вероятностью каждого из 5 классов. При классификации просто выбирают класс с наивысшим значением в качестве «победителя».

Я попытаюсь привести пример... скажем, у меня проблема с 3-м классом, я тренирую сеть с помощью softmax из 3-х блоков. первая единица представляет первый класс, вторая - второй и третья - третий.

Скажем, я загружаю тестовый пример и получаю...

0,25, 0,5, 0,25 ... 0,5 является самым высоким, поэтому классификатор скажет «2». это вывод softmax... он гарантирует, что сумма единиц вывода равна единице.

person user1269942    schedule 24.01.2015
comment
Привет, спасибо за это объяснение. Я это понимаю. Я пытаюсь подчеркнуть, что при обратном распространении ошибки такая функция потерь будет подчеркивать, что 0.x на 1 и o.x на 2 одинаково плохо, когда фактическая метка равна 3. Но моя метка порядковая 0.x в 2 намного лучше, чем 0.x на 1, потому что он ближе к 3. Надеюсь, вы поняли мою точку зрения. - person Run2; 25.01.2015
comment
возможно, вы могли бы превратить это в проблему регрессии? предсказать одно число 1-5, и минимизация квадрата ошибки станет вашей целью обучения. - person user1269942; 26.01.2015
comment
да - это то, что я в итоге сделал. Но возвращаясь к моему первоначальному вопросу — если вы читали эту статью — они использовали другой подход. Я хотел это понять. - person Run2; 26.01.2015