Loss function sangat penting untuk algoritma machine learning. Mereka mengukur jarak antara output model dan nilai target (kebenaran). Dalam post ini, kami menampilkan berbagai implementasi loss function di TensorFlow.
Untuk mengoptimalkan algoritma machine learning kita, kita perlu mengevaluasi hasilnya. Mengevaluasi hasil di TensorFlow tergantung pada menentukan loss function. Loss function memberi tahu TensorFlow seberapa baik atau buruk prediksi dibandingkan dengan hasil yang diinginkan. Dalam banyak kasus, kita akan memiliki serangkaian data dan target untuk melatih algoritma kita. Loss function membandingkan target dengan prediksi dan memberikan jarak numerik antara keduanya. Untuk post ini, kita akan membahas loss function utama yang dapat kita terapkan di TensorFlow. Untuk melihat bagaimana loss function yang berbeda beroperasi, kita akan membahasnya pada post kali ini. Kita pertama-tama akan memulai sebuah grafik komputasi dan load matplotlib, library ploting python, sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Pertama kita akan berbicara tentang loss function untuk regresi, yaitu memprediksi variabel dependen kontinu. Untuk memulai, kita akan membuat urutan prediksi dan target sebagai tensor. Kita akan membuat 500 x-value antara -1 dan 1. Gunakan kode berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. L2_norm loss juga dikenal sebagai Euclidean loss function, Itu hanya kuadrat jarak ke target. Di sini kita akan menghitung loss function seolah-olah targetnya nol. Sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TensorFlow memiliki bentuk bawaan dari L2_norm, yang disebut nn.l2_loss (). Fungsi ini sebenarnya setengah dari L2_norm di atas. . Dengan kata lain, itu sama seperti sebelumnya tetapi dibagi 2.
2. L1_norm loss juga dikenal sebagai loss function absolut. Daripada mengkuadratkan perbedaan(selisih), kita mengambil nilai absolut. L1_norm lebih baik untuk outlier daripada L2_norm karena tidak terlalu curam untuk nilai yang lebih besar. Satu hal yang harus diperhatikan adalah bahwa L1_norm tidak smooth pada target dan ini dapat mengakibatkan algoritma tidak konvergen dengan baik. sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3. Pseudo-Huber loss adalah pendekatan continuous and smooth untuk Huber loss function. Loss function ini mencoba mengambil yang terbaik dari L1 dan L2_norm dengan menjadi cembung di dekat target dan kurang curam untuk nilai ekstrim. Bentuknya tergantung pada parameter ekstra, delta, yang menentukan seberapa curamnya. Kami akan merencanakan dua bentuk, delta1 = 0,25 dan delta2 = 5 untuk menunjukkan perbedaannya, sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4. Klasifikasi Loss function digunakan untuk mengevaluasi loss ketika memprediksi hasil kategoris.
5. Kita perlu mendefinisikan kembali prediksi (x_vals) dan target. Kita akan menyimpan hasilnya dan memplotnya di bagian selanjutnya. Gunakan yang berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6. Hinge loss kebanyakan digunakan untuk mendukung mesin vektor, tetapi dapat digunakan dalam jaringan saraf juga. Ini dimaksudkan untuk menghitung loss diantara dua kelas target, 1 dan -1. Dalam kode berikut, kami menggunakan nilai target 1, sehingga semakin dekat prediksi kami semakin mendekati 1, semakin rendah nilai loss:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7. Cross-entropy loss untuk kasus biner kadang-kadang juga disebut sebagai loss function logistik. Ini terjadi ketika kita memprediksi dua kelas 0 atau 1. Kita ingin mengukur jarak dari kelas yang sebenarnya (0 atau 1) ke nilai prediksi, yang biasanya merupakan bilangan real antara 0 dan 1. Untuk mengukur jarak ini, kita dapat menggunakan formula cross entropy dari teori informasi, sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8. Sigmoid_cross_entropy_loss sangat mirip dengan loss function sebelumnya, kecuali kita mengubah x-value dengan fungsi sigmoid sebelum kita menempatkannya pada Cross-entropy loss, sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9. Weighted cross entropy loss adalah versi berbobot dari Sigmoid_cross_entropy_loss. Kami memberikan bobot pada target positif. Sebagai contoh, kita akan menimbang target positif sebesar 0,5, sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10. Softmax cross-entropy loss beroperasi pada output yang tidak normal. Fungsi ini digunakan untuk mengukur loss ketika hanya ada satu kategori target, bukan beberapa. Karena ini, fungsi mengubah output menjadi distribusi probabilitas melalui fungsi softmax dan kemudian menghitung loss function dari distribusi probabilitas yang sebenarnya, sebagai berikut:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11. Sparse softmax cross-entropy loss sama seperti sebelumnya, kecuali sebagai target adalah distribusi probabilitas, ini adalah indeks kategori mana yang benar. Sebagai berikut :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Disini sekarang bagaimana menggunakan matplotlib untuk membuat plot regresi loss function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Kemudian disini bagaimana menggunakan matplotlib untuk membuat plot variasi klasifikasi loss function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Yang tersisa dari semua klasifikasi loss function harus dilakukan dengan jenis cross-entropy loss. Cross-entropy sigmoid Loss function digunakan pada unscaled logits dan lebih disukai daripada komputasi sigmoid, dan kemudian cross entropy, karena TensorFlow memiliki cara yang lebih baik untuk menangani kasus-kasus numerical edge. Hal yang sama berlaku untuk softmax cross entropy dan sparse softmax cross entropy.
Sebagian besar klasifikasi loss function yang dijelaskan di sini adalah untuk dua prediksi kelas. Ini dapat diperluas ke beberapa kelas melalui penjumlahan istilah cross entropy atas setiap prediksi / target.
Sangat membantu 👍
ReplyDeletewah makasih mbak hani
ReplyDelete