Яке значення слова logits у TensorFlow?


250

У наступній функції TensorFlow ми повинні подати активацію штучних нейронів у заключному шарі. Це я розумію. Але я не розумію, чому це називається logits? Це не математична функція?

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

Відповіді:


215

Logits - це перевантажений термін, який може означати багато різних речей:


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

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

Імовірність 0,5 відповідає logit 0. Негативний logit відповідає ймовірності менше 0,5, позитивні> 0,5.

У ML це може бути

вектор необроблених (ненормованих) прогнозів, що формує класифікаційна модель, яка зазвичай переходить до функції нормалізації. Якщо модель вирішує багатокласну задачу класифікації, логіти, як правило, стають входом до функції softmax. Потім функція softmax генерує вектор (нормалізованих) ймовірностей з одним значенням для кожного можливого класу.

Логіти також іноді відносяться до стихійної інверсії сигмоїдної функції.


127
Для Tensorflow: це ім'я, яке, як вважається, означає, що цей тензор - це величина, яку Softmax відображає на ймовірності.
thertweck

1
це так само, як і те, що стає експоненційним перед софтмакс? тобто softmax(logit) = exp(logit)/Z(logit)тоді logit = h_NN(x)? так що logit - це те саме, що і "оцінка"?
Чарлі Паркер

4
Особисте розуміння, у домені TensorFlow, logits - це значення, які слід використовувати як вхід до softmax. Я прийшов до цього розуміння, спираючись на цей тензорфловий підручник.
Діаньшенг

2
Я не впевнений, чи відповідає це питання. Можливо, тому його так і не прийняли. Я розумію, що таке функція logit, але це також спантеличує, чому Tensorflow називає ці аргументи logits. Це також те саме позначення для кількох параметрів у функціях Тенсдорфлоу
dleal

1
Чи можете ви зробити простий приклад? Чи це правильно? [1, 0.5, 0.5]через нормалізацію стають, [0.5, 0.25, 0.25]а потім м'які макс стають, [0,]якщо один гарячий [1, 0, 0]? або просто вивільнена [1, 0, 0]причина, що вихід повинен бути векторним?
Тіна Лю

91

Просто додавши це роз’яснення, щоб кожен, хто прокручує це багато, міг хоча б правильно, оскільки існує стільки невірних відповідей.

Відповідь Діяншенга та відповідь ДжейкДже правильно його відповіли .
Нова відповідь, яку опублікував Шітал Шах, - ще краща і повніша відповідь.


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


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

Сирі прогнози, що виходять з останнього шару нейронної мережі.
1. Це той самий тензор, на який ви застосовуєте argmaxфункцію для отримання прогнозованого класу.
2. Це той самий тензор, який ви подаєте у softmaxфункцію для отримання ймовірностей для передбачуваних класів.


Також з підручника на офіційному веб-сайті tensorflow:

Логітний шар

Останнім шаром нашої нейромережі є рівень 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функцію.

Хоча не дуже корисно для розрахунку коефіцієнтів журналу.


80

Логіт це функція , яка відображає ймовірності [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


10
так що логіт такий самий, як і "рахунок"
Чарлі Паркер

1
Я пропоную додати у відповідь рядок, чітко розмежуючи Logitфункцію (статистику) та logitsшар (tensorflow)
AneesAhmed777,

62

Підсумок

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

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

Звідки походить цей термін? У 30-40-х роках кілька людей намагалися адаптувати лінійну регресію до проблеми прогнозування ймовірностей. Однак лінійна регресія виробляє вихід від -інфінітії до + нескінченності, тоді як для ймовірностей бажаний вихід становить 0 до 1. Один із способів зробити це - якось відобразити ймовірності від 0 до 1 до-нескінченності до + нескінченності, а потім використовувати лінійну регресію як завжди. Одним із таких відображень є кумулятивний нормальний розподіл, який використовував Честер Іттнер Блісс у 1934 році, і він назвав цю модель "пробітом", скороченою для "одиниці ймовірності". Однак ця функція обчислювально дорога, але не вистачає деяких бажаних властивостей для класифікації на багато класів. У 1944 році Джозеф Берксон використав цю функціюlog(p/(1-p))щоб зробити це відображення і назвали його logit, скорочення "логістична одиниця". Від цього походить і термін логістична регресія.

Плутанина

На жаль, термін logits зловживається при глибокому навчанні. З чисто математичної точки зору логіт - це функція, яка виконує вище відображення. У процесі глибокого навчання люди почали називати шар "logits layer", який подається на функцію logit. Потім люди почали називати вихідні значення цього шару "logit", створюючи плутанину з функцією logit .

Код TensorFlow

На жаль, код TensorFlow додатково додає плутанини на зразок таких імен tf.nn.softmax_cross_entropy_with_logits. Що означає тут 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) в статистиці називається логітом, але цей термін рідше використовується в машинному навчанні. σ −1 (x) - обернена функція логістичної сигмоїдної функції.

У TensorFlow його часто бачать як назву останнього шару. У 10 главі книги « Ручне машинне навчання за допомогою Scikit-learn та TensorFLow» Аурелієна Герона я натрапив на цей параграф, де logitsчітко прописано шар.

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

Тобто, хоча ми використовуємо softmax як функцію активації в останньому шарі в нашому дизайні, для зручності обчислення ми виймаємо logitsокремо. Це пояснюється тим, що підрахувати softmaxі cross-entropyвтратити ефективніше разом. Пам’ятайте, що cross-entropyце вартісна функція, яка не використовується для подальшого поширення.


12

Ось стисла відповідь для майбутніх читачів. Tensorflows logitвизначається як вихід нейрона без застосування функції активації:

logit = w*x + b,

x: вхід, w: вага, b: зміщення. Це воно.


Дане питання не має значення для цього питання.

Для історичних лекцій читайте інші відповіді. Капелюхи вимикають Tensorflow"творчо" заплутану конвенцію про іменування. В PyTorch, є лише один, CrossEntropyLossі він приймає неактивовані виходи. Звороти, множення матриць і активації - це операції одного рівня. Дизайн набагато більш модульний і менш заплутаний. Це одна з причин, чому я перейшов Tensorflowна PyTorch.


8

( FOMO sapiens).

Якщо ви перевірите математичну функцію Logit, вона перетворює реальний простір від [0,1]інтервалу до нескінченності [-inf, inf].

Сигмоїд і софтмакс зроблять рівно протилежне. Вони перетворять [-inf, inf]реальний простір у [0, 1]реальний простір.

Ось чому в машинному навчанні ми можемо використовувати logit перед функцією sigmoid та softmax (оскільки вони відповідають).

І саме тому "ми можемо викликати" все, що стосується машинного навчання, що йде перед сигмоїдними або софтмакс функціями logit .

Ось відео Дж. Хінтона, що використовує цей термін.

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


5

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

Це схоже на те, як детально вивчаючи предмет, ви дізнаєтесь дуже багато другорядних балів, але тоді, навчаючи студента, ви спробуєте стиснути його до найпростішого випадку. Якби студент зараз намагався викладати, це було б досить складно, але він був би в змозі описати це досить добре, щоб використовувати мову.


1

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

Дивіться тут: https://en.wikipedia.org/wiki/Logit


4
Це в статистиці / математиці. Ми говоримо тут про машинне навчання, де logitмає інше значення. Дивіться це , це , це .
AneesAhmed777

1

logits

Вектор необроблених (ненормованих) прогнозів, що формує класифікаційна модель, яка зазвичай переходить до функції нормалізації. Якщо модель вирішує багатокласну задачу класифікації, логіти, як правило, стають входом до функції softmax. Потім функція softmax генерує вектор (нормалізованих) ймовірностей з одним значенням для кожного можливого класу.

Крім того, logits іноді посилаються на стихійну інверсію сигмоїдної функції. Для отримання додаткової інформації див. Tf.nn.sigmoid_cross_entropy_with_logits.

офіційна десяткорна документація


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.