Apa arti dari kata logit di TensorFlow?

250

Dalam fungsi TensorFlow berikut, kita harus memberi makan aktivasi neuron buatan di lapisan akhir. Itu saya mengerti. Tapi saya tidak mengerti mengapa ini disebut log? Bukankah itu fungsi matematika?

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

Jawaban:

215

Log adalah istilah kelebihan beban yang bisa berarti banyak hal berbeda:


Dalam Matematika , Logit adalah fungsi yang memetakan probabilitas ( [0, 1]) ke R ( (-inf, inf))

masukkan deskripsi gambar di sini

Probabilitas 0,5 sesuai dengan logit 0. Logit negatif sesuai dengan probabilitas kurang dari 0,5, positif hingga> 0,5.

Dalam ML , itu bisa saja

vektor prediksi mentah (tidak dinormalisasi) yang dihasilkan oleh model klasifikasi, yang biasanya kemudian diteruskan ke fungsi normalisasi. Jika model ini memecahkan masalah klasifikasi multi-kelas, log biasanya menjadi input ke fungsi softmax. Fungsi softmax kemudian menghasilkan vektor probabilitas (dinormalisasi) dengan satu nilai untuk setiap kelas yang mungkin.

Log juga terkadang merujuk pada kebalikan elemen-bijaksana dari fungsi sigmoid.

Salvador Dali
sumber
127
Untuk Tensorflow: Ini adalah nama yang diperkirakan menyiratkan bahwa Tensor ini adalah kuantitas yang dipetakan ke probabilitas oleh Softmax.
thertweck
1
Apakah ini sama saja dengan hal yang menjadi eksponensial sebelum softmax? yaitu softmax(logit) = exp(logit)/Z(logit)kemudian logit = h_NN(x)? jadi logit sama dengan "skor"?
Charlie Parker
4
Pemahaman pribadi, dalam domain TensorFlow, log adalah nilai yang akan digunakan sebagai input ke softmax. Saya sampai pada pemahaman ini berdasarkan tutorial tensorflow ini.
Diansheng
2
Saya tidak yakin apakah ini menjawab pertanyaan. Mungkin itu sebabnya tidak pernah diterima. Saya mengerti apa fungsi logit, tetapi juga bingung mengapa Tensorflow menyebut log argumen ini. Ini juga merupakan penunjukan yang sama untuk beberapa parameter dalam fungsi
Tensorflow
1
Greate! Bisakah Anda membuat contoh sederhana? Apakah ini benar? [1, 0.5, 0.5]melalui normalisasi menjadi [0.5, 0.25, 0.25]dan kemudian soft max menjadi [0,]jika ada yang panas [1, 0, 0]? atau hanya put out [1, 0, 0]menyebabkan output harus berupa vektor?
Tina Liu
91

Hanya menambahkan klarifikasi ini sehingga siapa pun yang menggulir ke bawah sebanyak ini setidaknya dapat memperbaikinya, karena ada begitu banyak jawaban yang salah yang dipilih.

Diansheng ini jawaban dan JakeJ ini jawaban dengan benar.
Jawaban baru yang diposting oleh Shital Shah adalah jawaban yang lebih baik dan lebih lengkap.


Ya, logit sebagai fungsi matematika dalam statistik, tetapi yang logitdigunakan dalam konteks jaringan saraf berbeda. Statistik logitbahkan tidak masuk akal di sini.


Saya tidak dapat menemukan definisi formal di mana pun, tetapi logitpada dasarnya berarti:

Prediksi mentah yang keluar dari lapisan terakhir dari jaringan saraf.
1. Ini adalah tensor di mana Anda menerapkan argmaxfungsi untuk mendapatkan kelas prediksi.
2. Ini adalah tensor yang Anda masukkan ke dalam softmaxfungsi untuk mendapatkan probabilitas untuk kelas prediksi.


Juga, dari tutorial di situs resmi tensorflow:

Lapisan Logit

Lapisan terakhir dalam jaringan saraf kita adalah lapisan logit, yang akan mengembalikan nilai mentah untuk prediksi kita. Kami membuat lapisan padat dengan 10 neuron (satu untuk setiap kelas target 0-9), dengan aktivasi linear (default):

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

Jika Anda masih bingung, situasinya seperti ini:

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)

dimana, predicted_class_index_by_rawdan predicted_class_index_by_probakan sama.

Nama lain untuk raw_predictionsdalam kode di atas adalahlogit .


Adapun alasannya logit ... Saya tidak tahu. Maaf.
[Sunting: Lihat jawaban ini untuk motivasi historis di balik istilah tersebut.]


Hal sepele

Meskipun, jika Anda ingin, Anda dapat menerapkan statistik logituntuk probabilitiesyang keluar dari softmaxfungsi.

Jika probabilitas kelas tertentu adalah p,
maka odds log kelas itu adalah L = logit(p).

Juga, probabilitas kelas itu dapat dipulihkan sebagai p = sigmoid(L), menggunakan sigmoidfungsi.

Tidak terlalu berguna untuk menghitung peluang log.

AneesAhmed777
sumber
80

Logit adalah fungsi yang memetakan probabilitas [0, 1]untuk [-inf, +inf].

Softmax adalah fungsi yang memetakan [-inf, +inf]ke [0, 1]yang sama seperti Sigmoid. Tetapi Softmax juga menormalkan jumlah nilai (vektor keluaran) menjadi 1.

Tensorflow "with logit" : Ini berarti Anda menerapkan fungsi softmax untuk mencatat angka untuk menormalkannya. Input_vector / logit tidak dinormalisasi dan dapat menskala dari [-inf, inf].

Normalisasi ini digunakan untuk masalah klasifikasi multikelas. Dan untuk masalah klasifikasi multilabel digunakan normalisasi sigmoid yaitutf.nn.sigmoid_cross_entropy_with_logits

Trideep Rath
sumber
10
jadi logit sama dengan "skor"
Charlie Parker
1
Saya sarankan menambahkan baris dalam jawaban Anda secara eksplisit membedakan Logitfungsi (statistik) dan logitslayer (tensorflow)
AneesAhmed777
62

Ringkasan

Dalam konteks pembelajaran mendalam, layer logit berarti layer yang dimasukkan ke dalam softmax (atau normalisasi semacam itu). Output dari softmax adalah probabilitas untuk tugas klasifikasi dan inputnya adalah layer logit. Lapisan logit biasanya menghasilkan nilai dari-infinity ke + infinity dan lapisan softmax mengubahnya menjadi nilai dari 0 hingga 1.

Konteks Sejarah

Dari mana asal istilah ini? Pada 1930-an dan 40-an, beberapa orang mencoba untuk mengadaptasi regresi linier dengan masalah prediksi probabilitas. Namun regresi linier menghasilkan output dari-infinity hingga + infinity sedangkan untuk probabilitas, output yang diinginkan adalah 0 hingga 1. Salah satu cara untuk melakukannya adalah dengan memetakan probabilitas 0 hingga 1 hingga-infinity hingga + infinity dan kemudian menggunakan regresi linier seperti biasa. Salah satu pemetaan tersebut adalah distribusi normal kumulatif yang digunakan oleh Chester Ittner Bliss pada tahun 1934 dan ia menyebut model "probit" ini, kependekan dari "unit probabilitas". Namun fungsi ini mahal secara komputasi sementara kekurangan beberapa sifat yang diinginkan untuk klasifikasi multi-kelas. Pada 1944 Joseph Berkson menggunakan fungsinyalog(p/(1-p))untuk melakukan pemetaan ini dan menyebutnya logit, kependekan dari "unit logistik". Regresi logistik jangka berasal dari ini juga.

Kebingungan

Sayangnya istilah log disalahgunakan dalam pembelajaran mendalam. Dari perspektif matematika murni logit adalah fungsi yang melakukan pemetaan di atas. Dalam pembelajaran yang mendalam, orang-orang mulai memanggil lapisan "lapisan logit" yang mengumpan ke fungsi logit. Kemudian orang-orang mulai memanggil nilai - nilai keluaran dari lapisan ini "logit" menciptakan kebingungan dengan fungsi logit .

Kode TensorFlow

Sayangnya kode TensorFlow semakin menambah kebingungan dengan nama-nama seperti tf.nn.softmax_cross_entropy_with_logits. Apa arti log di sini? Ini hanya berarti input dari fungsi yang seharusnya menjadi output dari lapisan neuron terakhir seperti yang dijelaskan di atas. The _with_logitsakhiran berlebihan, membingungkan dan sia-sia . Fungsi harus dinamai tanpa memperhatikan konteks yang sangat spesifik karena mereka hanya operasi matematika yang dapat dilakukan pada nilai-nilai yang berasal dari banyak domain lain. Bahkan TensorFlow memiliki fungsi lain yang serupa di sparse_softmax_cross_entropymana mereka untungnya lupa untuk menambahkan _with_logitsakhiran menciptakan inkonsistensi dan menambah kebingungan. PyTorch di sisi lain hanya menyebutkan fungsinya tanpa akhiran semacam ini.

Referensi

The kuliah slide Logit / Probit adalah salah satu sumber daya terbaik untuk memahami logit. Saya juga memperbarui artikel Wikipedia dengan beberapa informasi di atas.

Shital Shah
sumber
31

Pemahaman pribadi, dalam domain TensorFlow, log adalah nilai yang akan digunakan sebagai input ke softmax. Saya sampai pada pemahaman ini berdasarkan tutorial tensorflow ini.

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


Meskipun memang benar bahwa logit adalah fungsi dalam matematika (terutama dalam statistik), saya tidak berpikir itu sama dengan 'logit' yang Anda lihat. Dalam buku Deep Learning oleh Ian Goodfellow, dia menyebutkan,

Fungsi σ −1 (x) disebut logit dalam statistik, tetapi istilah ini lebih jarang digunakan dalam pembelajaran mesin. σ −1 (x) adalah fungsi kebalikan dari fungsi sigmoid logistik.

Dalam TensorFlow, ini sering dilihat sebagai nama lapisan terakhir. Dalam Bab 10 buku Praktek Mesin Pembelajaran dengan Scikit-learn dan TensorFLow oleh Aurélien Géron, saya menemukan paragraf ini, yang menyatakan logitslayer dengan jelas.

perhatikan bahwa logitsini adalah output dari jaringan saraf sebelum melalui fungsi aktivasi softmax: untuk alasan optimasi, kami akan menangani perhitungan softmax nanti.

Artinya, meskipun kami menggunakan softmax sebagai fungsi aktivasi di lapisan terakhir dalam desain kami, untuk kemudahan perhitungan, kami mengambilnya logitssecara terpisah. Ini karena lebih efisien untuk menghitung softmaxdan cross-entropykehilangan bersama. Ingat itu cross-entropyadalah fungsi biaya, tidak digunakan dalam propagasi maju.

Diansheng
sumber
12

Inilah jawaban singkat untuk pembaca masa depan. Tensorflow's logitdidefinisikan sebagai output dari neuron tanpa menerapkan fungsi aktivasi:

logit = w*x + b,

x: input, w: berat, b: bias. Itu dia.


Berikut ini tidak relevan dengan pertanyaan ini.

Untuk kuliah sejarah, baca jawaban lain. Angkat untuk Tensorflowkonvensi penamaan yang "kreatif" membingungkan. Di PyTorch, hanya ada satu CrossEntropyLossdan menerima output yang tidak diaktifkan. Konvolusi, perkalian matriks dan aktivasi adalah operasi level yang sama. Desainnya jauh lebih modular dan tidak membingungkan. Ini adalah salah satu alasan mengapa saya beralih dari Tensorflowke PyTorch.

Jonathan Lee
sumber
8

( FOMO sapiens).

Jika Anda memeriksa fungsi Logit matematika, itu mengkonversi ruang nyata dari [0,1]interval ke tak terhingga [-inf, inf].

Sigmoid dan softmax akan melakukan hal sebaliknya. Mereka akan mengubah [-inf, inf]ruang [0, 1]nyata menjadi ruang nyata.

Inilah sebabnya, dalam pembelajaran mesin kita dapat menggunakan logit sebelum fungsi sigmoid dan softmax (karena cocok).

Dan inilah mengapa "kita dapat memanggil" segala sesuatu dalam pembelajaran mesin yang berjalan di depan fungsi sigmoid atau softmax logit .

Ini adalah video J. Hinton menggunakan istilah ini.

PS. Saya tidak merekomendasikan untuk menonton video hanya untuk memeriksa istilah tersebut.

prosti
sumber
5

Mereka pada dasarnya adalah model terpelajar yang dapat Anda dapatkan dari jaringan, sebelum diperas untuk diterapkan hanya pada jumlah kelas yang kami minati. Lihat bagaimana beberapa peneliti menggunakannya untuk melatih jaring saraf dangkal berdasarkan pada seberapa dalam jaringan telah belajar: https://arxiv.org/pdf/1312.6184.pdf

Ini seperti bagaimana ketika mempelajari suatu subjek secara mendetail, Anda akan belajar banyak hal-hal kecil, tetapi kemudian ketika mengajar seorang siswa, Anda akan mencoba mengompresnya ke kasus yang paling sederhana. Jika siswa sekarang mencoba untuk mengajar, itu akan sangat sulit, tetapi akan dapat menggambarkannya dengan cukup baik untuk menggunakan bahasa tersebut.

JakeJ
sumber
1

Fungsi logit (/ ˈloʊdʒɪt / LOH-jit) adalah kebalikan dari fungsi "logistik" sigmoidal atau transformasi logistik yang digunakan dalam matematika, terutama dalam statistik. Ketika variabel fungsi mewakili probabilitas p, fungsi logit memberikan peluang-log, atau logaritma peluang p / (1 - p).

Lihat di sini: https://en.wikipedia.org/wiki/Logit

Jagger Yu
sumber
4
Itu dalam statistik / matematika. Kami berbicara pembelajaran mesin di sini, di mana logitmemiliki makna yang berbeda. Lihat ini , ini , ini .
AneesAhmed777
1

log

Vektor prediksi mentah (tidak dinormalisasi) yang dihasilkan oleh model klasifikasi, yang biasanya kemudian diteruskan ke fungsi normalisasi. Jika model ini memecahkan masalah klasifikasi multi-kelas, log biasanya menjadi input ke fungsi softmax. Fungsi softmax kemudian menghasilkan vektor probabilitas (dinormalisasi) dengan satu nilai untuk setiap kelas yang mungkin.

Selain itu, log terkadang merujuk pada kebalikan elemen-bijaksana dari fungsi sigmoid. Untuk informasi lebih lanjut, lihat tf.nn.sigmoid_cross_entropy_with_logits.

dokumentasi tensorflow resmi

Vinay Jaju
sumber
-3

Logit sering merupakan nilai fungsi Z dari layer output di Tensorflow.

Myron Leskiv
sumber
Belum tentu, lihat jawaban yang lain.
quant