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

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

Ответы (10)

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

logit = w*x + b,

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


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

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

Сводка

В контексте глубокого обучения слой logits означает уровень, который передается в softmax (или другую подобную нормализацию). Результатом softmax являются вероятности для задачи классификации, а на входе - слой логитов. Слой 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», создавая путаницу с logit функцией.

Код TensorFlow

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

Ссылка

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

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

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

logits

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

Кроме того, логиты иногда относятся к поэлементной инверсии сигмоидной функции. Для получения дополнительной информации см. Tf.nn.sigmoid_cross_entropy_with_logits.

официальная документация по тензорному потоку

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

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

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

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

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


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

enter image description here

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

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

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

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

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

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


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

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

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

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

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

(FOMOsapiens).

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

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

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

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

Здесь Дж. Хинтон видео с использованием этого термина.

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

Дяньшен ответ и Джейк Джей ответ правильно.
Новый ответ, отправленный Шиталом Шахом, является еще лучшим и более полным ответом.


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


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

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


Также из учебника на официальном веб-сайте tenorflow:

Уровень логитов

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

logits = tf.layers.dense (входы = выпадение, единицы = 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 к вероятностям, которые получаются из функции softmax.

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

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

Не очень полезно для вычисления логарифмических шансов.

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

См. Здесь: https://en.wikipedia.org/wiki/Logit

2022 WebDevInsider