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
)
Jawaban:
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)
)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
Log juga terkadang merujuk pada kebalikan elemen-bijaksana dari fungsi sigmoid.
sumber
softmax(logit) = exp(logit)/Z(logit)
kemudianlogit = h_NN(x)
? jadi logit sama dengan "skor"?[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?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 yanglogit
digunakan dalam konteks jaringan saraf berbeda. Statistiklogit
bahkan tidak masuk akal di sini.Saya tidak dapat menemukan definisi formal di mana pun, tetapi
logit
pada dasarnya berarti:Juga, dari tutorial di situs resmi tensorflow:
Jika Anda masih bingung, situasinya seperti ini:
dimana,
predicted_class_index_by_raw
danpredicted_class_index_by_prob
akan sama.Nama lain untuk
raw_predictions
dalam kode di atas adalahlogit
.Adapun alasannyalogit
... 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
logit
untukprobabilities
yang keluar darisoftmax
fungsi.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)
, menggunakansigmoid
fungsi.Tidak terlalu berguna untuk menghitung peluang log.
sumber
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 yaitu
tf.nn.sigmoid_cross_entropy_with_logits
sumber
Logit
fungsi (statistik) danlogits
layer (tensorflow)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 fungsinya
log(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_logits
akhiran 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 disparse_softmax_cross_entropy
mana mereka untungnya lupa untuk menambahkan_with_logits
akhiran 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.
sumber
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,
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
logits
layer dengan jelas.Artinya, meskipun kami menggunakan softmax sebagai fungsi aktivasi di lapisan terakhir dalam desain kami, untuk kemudahan perhitungan, kami mengambilnya
logits
secara terpisah. Ini karena lebih efisien untuk menghitungsoftmax
dancross-entropy
kehilangan bersama. Ingat itucross-entropy
adalah fungsi biaya, tidak digunakan dalam propagasi maju.sumber
Inilah jawaban singkat untuk pembaca masa depan.
Tensorflow
'slogit
didefinisikan sebagai output dari neuron tanpa menerapkan fungsi aktivasi:x: input, w: berat, b: bias. Itu dia.
Berikut ini tidak relevan dengan pertanyaan ini.
Untuk kuliah sejarah, baca jawaban lain. Angkat untuk
Tensorflow
konvensi penamaan yang "kreatif" membingungkan. DiPyTorch
, hanya ada satuCrossEntropyLoss
dan 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 dariTensorflow
kePyTorch
.sumber
( 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.
sumber
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.
sumber
Lihat di sini: https://en.wikipedia.org/wiki/Logit
sumber
logit
memiliki makna yang berbeda. Lihat ini , ini , ini .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
sumber
Logit sering merupakan nilai fungsi Z dari layer output di Tensorflow.
sumber