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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
11. Sparse softmax cross-entropy loss sama seperti sebelumnya, kecuali sebagai target adalah distribusi probabilitas, ini adalah indeks kategori mana yang benar. Sebagai berikut :
Disini sekarang bagaimana menggunakan matplotlib untuk membuat plot regresi loss function
Kemudian disini bagaimana menggunakan matplotlib untuk membuat plot variasi klasifikasi loss function
Loss Function | Use | Benefit | Disadvantages |
---|---|---|---|
L2 | Regresi | Lebih stabil | Kurang kuat |
L1 | Regresi | lebih kuat | Kurang stabil |
Psuedo-Huber | Regresi | lebih kuat dan stabil | One more parameter |
Hinge | Klasifikasi | Menciptakan margin maximal untuk menggunakan SVM | Unbounded loss affected by outliers |
Cross-entropy | Klasifikasi | Lebih Stabil | Unbounded loss, less robust |
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.
You can download all code in MYGITHUB Thank you
Implementasi Loss Function pada Regresi Linier
Reviewed by Jimmy Pujoseno
on
April 10, 2018
Rating:
Sangat membantu 👍
ReplyDeletewah makasih mbak hani
ReplyDelete