2014-12-18 6 views
2

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

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

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

Благодаря уважением

+0

вам может потребоваться описать вашу проблему немного больше, если вам по-прежнему нужна помощь. – user1269942

+0

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

ответ

0

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

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

Say кормлю тестовый случай через и получить ...

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

+3

Привет, спасибо за это объяснение. Я это понимаю. То, что я пытаюсь сделать, - это когда вы распространяете ошибку, такая функция потерь будет подчеркивать, что 0.x на 1 и ox на 2 одинаково плохи, когда фактическая метка равна 3. Но моя метка является порядковым номером 0.x в 2 намного лучше, чем 0.x на 1, потому что он ближе к 3. Надеюсь, вы получите мою точку – Run2

+0

, возможно, вы могли бы превратить ее в проблему регрессии? предсказывать одно число 1-5 и минимизировать квадрат-ошибку, станет вашей целью обучения. – user1269942

+0

Да - вот что я в итоге сделал. Но, возвращаясь к моему первоначальному вопросу - если вы читаете эту статью, они использовали другой подход. Я хотел это понять. – Run2

 Смежные вопросы

  • Нет связанных вопросов^_^