Что означает слово logits в TensorFlow?

250

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

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)
Милад П.
источник

Ответы:

215

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


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

введите описание изображения здесь

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

В ОД это может быть

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

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

Сальвадор Дали
источник
127
Для Tensorflow: это название, которое, как считается, подразумевает, что этот Tensor - это величина, которая отображается в вероятности Softmax.
Thertweck
1
это так же, как то, что возводится в степень до softmax? то есть softmax(logit) = exp(logit)/Z(logit)тогда logit = h_NN(x)? так логит это же как "оценка"?
Чарли Паркер
4
Личное понимание, в домене TensorFlow, logits - это значения, которые будут использоваться в качестве входных данных для softmax. Я пришел к этому пониманию на основе этого учебника по тензорному потоку.
Diansheng
2
Я не уверен, отвечает ли это на вопрос. Может быть, поэтому он никогда не был принят. Я понимаю, что такое функция logit, но она также удивляет, почему Tensorflow называет эти аргументы логитами. Это также то же самое обозначение для некоторых параметров в функциях Tensorflow
dleal
1
Greate! Вы можете сделать простой пример? Это правильно? [1, 0.5, 0.5]через нормализацию становиться [0.5, 0.25, 0.25]а потом софт макс становится [0,]если один горячий [1, 0, 0]? или просто положить, [1, 0, 0]потому что на выходе должен быть вектор?
Тина Лю
92

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

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


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


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

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


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

Logits Layer

Последний слой в нашей нейронной сети - это уровень 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,
то лог-шансы этого класса равны L = logit(p).

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

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

AneesAhmed777
источник
80

Логит это функция , которая отображает вероятности [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

Тридип Рат
источник
10
так логит такой же как и "оценка"
Чарли Паркер
1
Я предлагаю добавить строку в вашем ответе, четко дифференцируя Logitфункцию (статистику) и logitsслой (тензор потока)
AneesAhmed777
62

Резюме

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

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

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

Путаница

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

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

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

Ссылка

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

Шиталь шах
источник
31

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

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


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

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

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

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

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

Diansheng
источник
12

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

logit = w*x + b,

х: вход, ш: вес, б: смещение. Вот и все.


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

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

Джонатан Ли
источник
8

( FOMO sapiens).

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

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

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

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

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

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

прости
источник
5

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

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

JakeJ
источник
1

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

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

Джаггер Ю
источник
4
Это в статистике / математике. Мы говорим здесь о машинном обучении, где logitимеет другое значение. Видишь это , это , это .
AneesAhmed777
1

логит-анализ

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

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

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

Vinay Jaju
источник
-3

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

Мирон Лескив
источник
Не обязательно, смотрите другие ответы.
квант