Подтвердить что ты не робот

В чем смысл слова logits в TensorFlow?

В следующей функции TensorFlow мы должны подавать активацию искусственных нейронов в конечном слое. Это я понимаю. Но я не понимаю, почему это называется логитами? Разве это не математическая функция?

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)
4b9b3361

Ответ 1

Логиты - это перегруженный термин, который может означать много разных вещей:


В Math Logit - это функция, которая отображает вероятности ([0, 1]) в R ((-inf, inf))

enter image description here

Вероятность 0,5 соответствует logit 0. Отрицательный logit соответствует вероятности менее 0,5, положительный до> 0,5.

В ML это может быть

вектор необработанных (ненормированных) предсказаний, которые генерирует модель классификации, которая обычно затем передается в функцию нормализации. Если модель решает проблему классификации с несколькими классами, логиты обычно становятся входом в функцию softmax. Затем функция softmax генерирует вектор (нормированных) вероятностей с одним значением для каждого возможного класса.

Логиты также иногда ссылаются на элемент-мудрый обратный сигмоидной функции.

Ответ 2

Logit - это функция, которая отображает вероятности [0, 1] в [-inf, +inf].

Softmax - это функция, которая отображает [-inf, +inf] в [0, 1] аналогично Sigmoid. Но Softmax также нормализует сумму значений (выходной вектор) равным 1.

Tensorflow "с logit" . Это означает, что вы применяете функцию softmax для ввода номеров для нормализации. Input_vector/logit не нормируется и может масштабироваться с [-inf, inf].

Эта нормализация используется для задач классификации многоклассов. И для задач многозначной классификации используется сигмоидальная нормализация, т.е. tf.nn.sigmoid_cross_entropy_with_logits

Ответ 3

Просто добавив это пояснение, чтобы каждый, кто прокручивает эту страницу, по крайней мере, понял ее правильно, поскольку было получено множество неправильных ответов.

Diansheng ответ и JakeJ ответ все правильно.
Новый ответ, опубликованный Shital Shah, является еще лучшим и более полным ответом.


Да, logit как математическая функция в статистике, , но logit, используемый в контексте нейронных сетей, отличается. Статистическая logit здесь даже не имеет никакого смысла.


Я нигде не мог найти формальное определение, но logit в основном означает:

Необработанные прогнозы, исходящие из последнего слоя нейронной сети.
1. Это тот самый тензор, к которому вы применяете функцию argmax, чтобы получить прогнозируемый класс.
2. Это тот самый тензор, который вы вводите в функцию softmax, чтобы получить вероятности для предсказанных классов.


Кроме того, из учебного пособия на официальном веб-сайте tenorflow:

Уровень Logits

Последний слой в нашей нейронной сети - это уровень logits, который будет возвращать необработанные значения для наших прогнозов. Мы создаем плотный слой с 10 нейронами (по одному на каждый целевой класс 0–9) с линейной активацией (по умолчанию):

logits = tf.layers.dense(inputs=dropout, units=10)

Если вы все еще в замешательстве, ситуация такова:

raw_predictions = neural_net(input_layer)
predicted_class_index_by_raw = argmax(raw_predictions)
probabilities = softmax(raw_predictions)
predicted_class_index_by_prob = argmax(probabilities)

где predicted_class_index_by_raw и predicted_class_index_by_prob будут равны.

Другое имя для raw_predictions в приведенном выше коде - logit.


Что касается почему logit... Понятия не имею. К сожалению.
[Изменение: см. этот ответ, чтобы узнать исторические мотивы этого термина.]


Общая

Хотя, если вы хотите, вы можете применить статистические logit к probabilities, которые выходят из функции softmax.

Если вероятность определенного класса составляет p,
Тогда log-odds этого класса - L = logit(p).

Кроме того, вероятность этого класса можно восстановить как p = sigmoid(L), используя функцию sigmoid.

Хотя это не очень полезно для расчета лог-шансов.

Ответ 4

Резюме

В контексте глубокого изучения слой logits означает слой, который подключается к softmax (или другой такой нормализации). Выходными данными softmax являются вероятности для задачи классификации, а его входом является слой logits. Уровень logits обычно выдает значения от -infinity до +infinity, а уровень softmax преобразует его в значения от 0 до 1.

Исторический контекст

Откуда этот термин? В 1930–40-х годах несколько человек пытались адаптировать линейную регрессию к проблеме прогнозирования вероятностей. Однако линейная регрессия производит выходные данные от -infinity до +infinity, в то время как для вероятностей наш желаемый выходной сигнал составляет от 0 до 1. Один из способов сделать это - каким-то образом отобразить вероятности от 0 до 1 до -infinity - +infinity, а затем использовать линейную регрессия как обычно. Одним из таких отображений является кумулятивное нормальное распределение, которое было использовано Честером Итнером Блиссом в 1934 году, и он назвал эту модель "пробит", сокращенно "единица вероятности". Однако эта функция является вычислительно дорогой, в то время как отсутствуют некоторые из желательных свойств для классификации нескольких классов. В 1944 году Джозеф Берксон использовал функцию log(p/(1-p)) для этого отображения и назвал ее logit, сокращенно от "логистическая единица". Отсюда и термин "логистическая регрессия".

Путаница

К сожалению, термин логитс используется в глубоком обучении. С чисто математической точки зрения логит - это функция, которая выполняет приведенное выше отображение. При глубоком изучении люди начали называть слой "слой логитов", который используется для функции логита. Затем люди начали называть выходные значения этого слоя "logit", создавая путаницу с logit функцией.

Код ТензорФлоу

К сожалению, код tf.nn.softmax_cross_entropy_with_logits таких имен, как tf.nn.softmax_cross_entropy_with_logits. Что здесь означает логитс? Это просто означает, что ввод функции должен быть выходом последнего слоя нейронов, как описано выше. Суффикс _with_logits является избыточным, запутанным и бессмысленным. Функции должны быть названы безотносительно к таким очень специфическим контекстам, потому что они являются просто математическими операциями, которые могут выполняться над значениями, полученными из многих других областей. На самом деле TensorFlow имеет еще одну похожую функцию sparse_softmax_cross_entropy где, к счастью, они забыли добавить суффикс _with_logits создает несогласованность и _with_logits к путанице. PyTorch, с другой стороны, просто называет свою функцию без таких суффиксов.

Ссылка

Слайды лекций Logit/Probit - один из лучших ресурсов для понимания logit. Я также обновил статью Википедии с некоторыми из вышеупомянутой информации.

Ответ 5

Личное понимание, в домене TensorFlow, logits - это значения, которые будут использоваться в качестве входных данных для softmax. Я пришел к этому пониманию на основе этого учебника по тензорному потоку.

https://www.tensorflow.org/tutorials/layers


Хотя верно, что logit является функцией в математике (особенно в статистике), я не думаю, что тот же "логит", на который вы смотрите. В книге "Глубокое изучение" Иана Гудфеллоу он упомянул: "

Функция σ −1 (x) называется логитом в статистике, но этот термин реже используется в машинном обучении. σ −1 (x) обозначает обратная функция логистической сигмоидальной функции.

В TensorFlow это часто рассматривается как имя последнего слоя. В главе 10 книги "Практическое машинное обучение с Scikit-learn и TensorFLow" Аурелиана Жерона я натолкнулся на этот абзац, в котором четко указан слой logits.

обратите внимание, что logits является выходом нейронной сети перед выходом через функцию активации softmax: по причинам оптимизации мы позже обработаем softmax.

То есть, хотя мы используем softmax в качестве функции активации на последнем уровне в нашем проекте, для простоты вычислений мы вынимаем logits отдельно. Это потому, что более эффективно рассчитывать потери softmax и cross-entropy вместе. Помните, что cross-entropy является функцией стоимости, не используемой в прямом распространении.

Ответ 6

Вот краткий ответ для будущих читателей. Tensorflow logit определяется как выход нейрона, не применяя функцию активации:

logit = w*x + b,

x: вход, w: вес, b: смещение. Это.


Следующий вопрос не имеет отношения к этому вопросу.

На исторические лекции читайте другие ответы. Шляпы на Tensorflow "творчески" смешивают соглашение об именах. В PyTorch имеется только один CrossEntropyLoss и он принимает CrossEntropyLoss выходы. Свертки, умножения матриц и активации - это операции на одном уровне. Дизайн гораздо более модульный и менее запутанный. Это одна из причин, почему я переключился с Tensorflow на PyTorch.

Ответ 7

Это, по сути, самая полная изученная модель, которую вы можете получить из сети, прежде чем ее раздавить, чтобы применить только к числу классов, которые нас интересуют. Посмотрите, как некоторые исследователи используют их для обучения мелкой нейронной сети на основе что глубокая сеть узнала: https://arxiv.org/pdf/1312.6184.pdf

Это похоже на то, как при детальном изучении предмета вы узнаете много второстепенных моментов, но затем, обучая ученика, вы попытаетесь сжать его в простейший случай. Если бы ученик теперь пытался преподавать, это было бы довольно сложно, но он мог бы описать его достаточно хорошо, чтобы использовать язык.

Ответ 8

Функция logit (/loʊdʒɪt/LOH-jit) является обратной сигмоидальной "логистической" функцией или логистическим преобразованием, используемым в математике, особенно в статистике. Когда переменная функции представляет вероятность p, функция logit дает логарифмические коэффициенты или логарифм коэффициентов p/(1 - p).

Смотрите здесь: https://en.wikipedia.org/wiki/Logit

Ответ 9

(СЧУ сапиенс).

Если вы проверите математическую функцию Logit, она преобразует реальное пространство из интервала [0,1] в бесконечность [-inf, inf].

Sigmoid и softmax сделают совершенно противоположную вещь. Они преобразуют реальное пространство [-inf, inf] в реальное пространство [0, 1].

Вот почему имеет смысл в машинном обучении, мы можем использовать logit перед функциями sigmoid и softmax (поскольку они совпадают).

И именно поэтому "мы можем назвать" все, что есть в машинном обучении, которое идет перед сигмовидной или softmax функцией logit.

Вот видео Дж. Хинтона, использующее этот термин.

PS. Я не рекомендую вам смотреть видео, чтобы проверить срок.

Ответ 10

Логиты часто являются значениями функции Z выходного слоя в Tensorflow.