Keras: Loss and Loss Function

From OnnoWiki
Revision as of 10:32, 31 August 2019 by Onnowpurbo (talk | contribs) (→‎Summary)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Sumber: https://machinelearningmastery.com/loss-and-loss-functions-for-training-deep-learning-neural-networks/


Neural Network yang di training menggunakan stochastic gradient descent dan mengharuskan anda memilih fungsi loss saat merancang dan mengkonfigurasi model anda.

Ada banyak fungsi loss yang dapat dipilih dan merupakan tantangan untuk mengetahui apa yang harus dipilih, atau bahkan apa fungsi loss dan peran yang dimainkannya saat melatih neural network.

Dalam posting ini, anda akan menemukan peran fungsi loss dan dalam deep learning neural network training dan bagaimana memilih fungsi loss yang tepat untuk masalah pemodelan prediktif anda.

Sesudah membaca tulisan ini, anda akan mengetahui:

  • Neural Network dapat dilatih menggunakan proses optimasi yang membutuhkan fungsi loss untuk menghitung kesalahan model.
  • Maximum Likelihood menyediakan kerangka kerja untuk memilih fungsi loss saat men-train neural network dan model machine learning secara umum.
  • Cross-entropy dan mean squared error adalah dua jenis utama fungsi kerugian yang digunakan ketika melatih model neural network.

Overview

Tutorial ini di bagi dalam tujuh bagian, yaitu:

  • Neural Network Learning sebagai Optimization
  • Apakah Loss Function dan Loss?
  • Maximum Likelihood
  • Maximum Likelihood dan Cross-Entropy
  • Loss Function yang dapat kita gunakan?
  • Cara mengimplementasi Loss Function
  • Loss Function dan Reported Model Performance

Disini kita akan fokus pada teory dibelakang loss function.


Neural Network Learning sebagai Optimization

Deep learning neural network belajar untuk memetakan serangkaian input ke serangkaian output dari data training.

Kami tidak dapat menghitung weight yang sempurna untuk neural network; ada terlalu banyak yang tidak diketahui. Sebaliknya, masalah pembelajaran dilemparkan sebagai masalah pencarian atau optimisasi dan algoritma digunakan untuk menavigasi ruang set bobot yang mungkin digunakan model untuk membuat prediksi yang baik atau cukup baik.

Biasanya, model neural network dilatih menggunakan stochastic gradient descent optimization algorithm dan weight diperbarui menggunakan backpropagation of error algorithm.

"Gradien" dalam gradient descent mengacu pada gradien kesalahan. Model dengan seperangkat weight tertentu digunakan untuk membuat prediksi dan kesalahan untuk prediksi tersebut dihitung.

Gradient descent algorithm berupaya mengubah weight sehingga evaluasi selanjutnya mengurangi kesalahan, artinya algoritma pengoptimalan mengarahkan gradien (atau kemiringan) kesalahan.

Sekarang kita tahu bahwa pelatihan neural network pada dasarnya menyelesaikan masalah optimisasi, kita dapat melihat bagaimana kesalahan dari set weight dihitung.

Apakah Loss Function dan Loss?

Dalam konteks algoritma pengoptimalan, fungsi yang digunakan untuk mengevaluasi solusi kandidat (yaitu serangkaian weight) disebut sebagai fungsi objektif.

Kami dapat berupaya untuk memaksimalkan atau meminimalkan fungsi tujuan, yang berarti bahwa kami sedang mencari solusi kandidat yang masing-masing memiliki skor tertinggi atau terendah.

Biasanya, dengan neural network, kita berupaya meminimalkan kesalahan. Dengan demikian, fungsi objektif sering disebut sebagai fungsi cost atau fungsi loss dan nilai yang dihitung oleh fungsi loss disebut sebagai “loss”.


The function we want to minimize or maximize is called the objective function or criterion. When we are minimizing it, we may also call it the cost function, loss function, or error function. — Halaman 82, Deep Learning, 2016.


Fungsi cost atau loss memiliki pekerjaan penting karena dia harus dengan menyaring semua aspek model menjadi satu angka sedemikian rupa sehingga peningkatan angka itu merupakan tanda-tanda dari model yang lebih baik.


The cost function reduces all the various good and bad aspects of a possibly complex system down to a single number, a scalar value, which allows candidate solutions to be ranked and compared. — Halaman 155, Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks, 1999.


Dalam menghitung kesalahan model selama proses optimasi, sebuah fungsi loss harus dipilih.

Ini bisa menjadi masalah yang menantang karena fungsinya harus menangkap sifat-sifat masalah dan dimotivasi oleh concern yang penting bagi project dan stakeholders.


It is important, therefore, that the function faithfully represent our design goals. If we choose a poor error function and obtain unsatisfactory results, the fault is ours for badly specifying the goal of the search. — Page 155, Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks, 1999.


Sekarang kita sudah akrab dengan fungsi loss dan loss itu sendiri, kita perlu tahu fungsi apa yang digunakan.

Maximum Likelihood

Ada banyak fungsi yang dapat digunakan untuk memperkirakan kesalahan dari set weight dalam neural network.

Kita lebih suka fungsi di mana ruang kandidat solusi memetakan ke bidang yang mulus (tetapi high-dimensional) yang dapat ditelusuri dengan baik oleh algoritma pengoptimalan melalui pembaruan iteratif dari weight model.

Estimasi kemungkinan maksimum, atau MLE, adalah kerangka kerja untuk inferensi untuk menemukan estimasi statistik terbaik dari parameter dari data pelatihan historis: persis apa yang kita coba lakukan dengan neural network.


Maximum likelihood seeks to find the optimum values for the parameters by maximizing a likelihood function derived from the training data. — Halaman 39, Neural Networks for Pattern Recognition, 1995.


Kita memiliki dataset training dengan satu atau lebih variabel input dan kita membutuhkan model untuk memperkirakan parameter weight model yang memetakan contoh-contoh input ke output atau variabel target.

Diberikan input, model ini mencoba membuat prediksi yang sesuai dengan distribusi data dari variabel target. Di bawah maximum likelihood, fungsi loss memperkirakan seberapa dekat distribusi prediksi yang dibuat oleh suatu model cocok dengan distribusi variabel target dalam data training.


One way to interpret maximum likelihood estimation is to view it as minimizing the dissimilarity between the empirical distribution […] defined by the training set and the model distribution, with the degree of dissimilarity between the two measured by the KL divergence. […] Minimizing this KL divergence corresponds exactly to minimizing the cross-entropy between the distributions. — Halaman 132, Deep Learning, 2016.

Manfaat menggunakan maximum likelihood sebagai kerangka kerja untuk memperkirakan parameter model (weight) untuk neural network dan machine learning secara umum adalah bahwa ketika jumlah contoh dalam dataset training ditingkatkan, estimasi parameter model meningkat. Ini disebut properti "konsistensi."


Under appropriate conditions, the maximum likelihood estimator has the property of consistency […], meaning that as the number of training examples approaches infinity, the maximum likelihood estimate of a parameter converges to the true value of the parameter. — Halaman 134, Deep Learning, 2016.


Sekarang kita sudah terbiasa dengan pendekatan umum maximum likelihood, kita dapat melihat fungsi kesalahan.

Maximum Likelihood and Cross-Entropy

Di bawah framework maximum likelihood, kesalahan antara dua distribusi probabilitas diukur menggunakan cross-entropy.

Saat memodelkan masalah klasifikasi di mana kita tertarik dalam memetakan variabel input ke label kelas, kita dapat memodelkan masalah sebagai memprediksi probabilitas dari contoh masuk ke masing-masing kelas klasifikasi. Dalam masalah klasifikasi biner, akan ada dua kelas, jadi kita dapat memprediksi probabilitas dari contoh masuk ke kelas pertama. Dalam kasus klasifikasi multi-kelas, kita dapat memprediksi probabilitas untuk contoh masuk ke masing-masing kelas.

Dalam dataset pelatihan, probabilitas contoh milik kelas tertentu akan menjadi 1 atau 0, karena setiap sampel dalam dataset training adalah contoh yang diketahui dari domain. Kami tahu jawabannya.

Oleh karena itu, di bawah maximum likelihood estimation, kita akan mencari satu set weight model yang meminimalkan perbedaan antara distribusi probabilitas prediksi model dari dataset yang diberikan dengan distribusi probabilitas dari dataset training. Ini disebut cross-entropy.


In most cases, our parametric model defines a distribution […] and we simply use the principle of maximum likelihood. This means we use the cross-entropy between the training data and the model’s predictions as the cost function. — Halaman 178, Deep Learning, 2016.


Secara teknis, cross-entropy berasal dari bidang teori informasi dan memiliki satuan "bit." Ini digunakan untuk memperkirakan perbedaan antara distribusi probabilitas yang diperkirakan dan yang diprediksi.

Dalam kasus masalah regresi di mana kuantitas diprediksi, adalah umum untuk menggunakan fungsi loss mean squared error (MSE).


A few basic functions are very commonly used. The mean squared error is popular for function approximation (regression) problems […] The cross-entropy error function is often used for classification problems when outputs are interpreted as probabilities of membership in an indicated class. — Halaman 155-156, Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks, 1999.


Namun demikian, di bawah kerangka estimasi kemungkinan maksimum dan mengasumsikan distribusi Gaussian untuk variabel target, mean squared error dapat dianggap sebagai cross-entropy antara distribusi prediksi model dan distribusi variabel target.


Many authors use the term “cross-entropy” to identify specifically the negative log-likelihood of a Bernoulli or softmax distribution, but that is a misnomer. Any loss consisting of a negative log-likelihood is a cross-entropy between the empirical distribution defined by the training set and the probability distribution defined by model. For example, mean squared error is the cross-entropy between the empirical distribution and a Gaussian model. — Halaman 132, Deep Learning, 2016.


Oleh karena itu, ketika menggunakan framework of maximum likelihood estimation, kita akan menerapkan fungsi loss cross-entropy, yang sering dalam praktiknya berarti cross-entropy loss function for classification problem dan mean squared error loss function for regression problem.

Hampir secara universal, deep learning neural network dilatih di bawah framework of maximum likelihood menggunakan cross-entropy sebagai fungsi loss.


Most modern neural networks are trained using maximum likelihood. This means that the cost function is […] described as the cross-entropy between the training data and the model distribution. — Halaman 178-179, Deep Learning, 2016.


Bahkan, mengadopsi kerangka kerja ini dapat dianggap sebagai tonggak dalam deep learning, saat sebelum sepenuhnya diformalkan, umumnya neural network untuk klasifikasi menggunakan mean squared error loss function.


One of these algorithmic changes was the replacement of mean squared error with the cross-entropy family of loss functions. Mean squared error was popular in the 1980s and 1990s, but was gradually replaced by cross-entropy losses and the principle of maximum likelihood as ideas spread between the statistics community and the machine learning community. — Halaman 226, Deep Learning, 2016.


Maximum likelihood approach diadopsi hampir secara universal bukan karena kerangka teoritis, tetapi terutama karena hasil yang dihasilkannya. Secara khusus, neural network untuk klasifikasi yang menggunakan fungsi aktivasi sigmoid atau softmax di lapisan output belajar lebih cepat dan lebih robust (kuat) menggunakan fcross-entropy loss function.


The use of cross-entropy losses greatly improved the performance of models with sigmoid and softmax outputs, which had previously suffered from saturation and slow learning when using the mean squared error loss. — Halaman 226, Deep Learning, 2016.

Fungsi Loss mana yang digunakan?

Kami dapat meringkas bagian sebelumnya dan secara langsung menyarankan fungsi loss yang harus kita gunakan dalam framework of maximum likelihood.

Yang penting, pilihan fungsi loss berhubungan langsung dengan fungsi aktivasi yang digunakan di lapisan output neural network. Kedua elemen desain ini saling terhubung satu sama lain.

Pikirkan konfigurasi lapisan output sebagai pilihan tentang pembingkaian masalah prediksi Anda, dan pilihan fungsi loss sebagai cara untuk menghitung kesalahan untuk pembingkaian masalah anda.


The choice of cost function is tightly coupled with the choice of output unit. Most of the time, we simply use the cross-entropy between the data distribution and the model distribution. The choice of how to represent the output then determines the form of the cross-entropy function. — Halaman 181, Deep Learning, 2016.


Kita akan meninjau best practice atau nilai default untuk setiap jenis masalah terkait dengan lapisan keluaran dan fungsi loss.

Regression Problem

Masalah dimana kita perlu mem-prediksi nilai real.

Konfigurasi Lapisan Output: One node dengan linear activation unit.
Fungsi Loss: Mean Squared Error (MSE).

Binary Classification Problem

Masalah di mana kita mengklasifikasikan sebuah contoh sebagai salah satu dari dua kelas.

Masalah dibingkai sebagai memprediksi kemungkinan contoh yang kita miliki termasuk kelas "satu", misalnya kelas yang anda tetapkan nilai integer 1, sedangkan kelas lainnya diberi nilai 0.

Konfigurasi Output Layer: One node dengan sigmoid activation unit.
Fungsi Loss: Cross-Entropy, juga dikenal sebagai Logarithmic loss.

Multi-Class Classification Problem

Masalah di mana kita mengklasifikasikan sebuah contoh sebagai salah satu dari lebih dari dua kelas.

Masalah dibingkai sebagai memprediksi kemungkinan sebuah contoh menjadi milik masing-masing kelas.

Konfigurasi Output Layer: One node untuk setiap class menggunakan softmax activation function.
Fungsi Loss: Cross-Entropy, juga dikenal sebagai Logarithmic loss.

Cara Meng-Implementasi Fungsi Loss

Untuk membuat fungsi loss menjadi kenyataan, bagian ini menjelaskan cara kerja masing-masing jenis fungsi loss dan cara menghitung skor dengan Python.

Mean Squared Error Loss

Mean Squared Error loss, atau singkatnya MSE, dihitung sebagai rata-rata perbedaan kuadrat antara nilai yang diprediksi dan yang sebenarnya.

Hasilnya selalu positif terlepas dari tanda nilai yang diprediksi dan nilai aktual dengan nilai sempurna adalah 0,0. Nilai kerugian diminimalkan, meskipun dapat digunakan dalam proses optimisasi maksimalisasi dengan membuat skor menjadi negatif. Fungsi Python di bawah ini menggambarkan implementasi fungsi pseudocode-like dari fungsi untuk menghitung mean squared error untuk nilai aktual dan perkiraan nilai riil.

# calculate mean squared error
def mean_squared_error(actual, predicted):
	sum_square_error = 0.0
	for i in range(len(actual)):
		sum_square_error += (actual[i] - predicted[i])**2.0
	mean_square_error = 1.0 / len(actual) * sum_square_error
	return mean_square_error

Untuk implementasi yang effisien, sangat disarankan untuk menggunakan fungsi di scikit-learn mean_squared_error().

Cross-Entropy Loss (atau Log Loss)

Cross-entropy loss sering disebut sebagai “cross-entropy,” “logarithmic loss,” “logistic loss,” atau “log loss” untuk pendek-nya.

Setiap probabilitas yang diprediksi dibandingkan dengan nilai output kelas sebenarnya (0 atau 1) dan skor dihitung yang kemudian memberikan penalti / menghukum probabilitas yang diberikan berdasarkan jarak dari nilai yang diharapkan. Hukumannya adalah logaritmik, menawarkan skor kecil untuk perbedaan kecil (0,1 atau 0,2) dan skor besar untuk perbedaan besar (0,9 atau 1,0).

Cross-entropy loss diminimalkan, di mana nilai yang lebih kecil mewakili model yang lebih baik daripada nilai yang lebih besar. Sebuah model yang memprediksi probabilitas secara sempurna memiliki cross entropy atau log loss sebesar 0,0.

Cross-entropy untuk masalah prediksi biner atau dua kelas sebenarnya dihitung sebagai rata-rata cross entropy di semua contoh yang diberikan.

Fungsi Python di bawah ini menyediakan implementasi fungsi pseudocode seperti fungsi untuk menghitung cross-entropy untuk list nilai 0 dan 1 yang sebenarnya dibandingkan dengan probabilitas yang diprediksi untuk kelas 1.

from math import log

# calculate binary cross entropy
def binary_cross_entropy(actual, predicted):
	sum_score = 0.0
	for i in range(len(actual)):
		sum_score += actual[i] * log(1e-15 + predicted[i])
	mean_sum_score = 1.0 / len(actual) * sum_score
	return -mean_sum_score

Catatan, kita menambahkan nilai yang sangat kecil (dalam hal ini 1E-15) ke probabilitas yang diprediksi untuk menghindari penghitungan log 0,0. Ini berarti bahwa dalam praktiknya, kerugian terbaik adalah nilai yang mendekati nol, tetapi tidak sepenuhnya nol.

Cross-entropy dapat dihitung untuk multiple-class classification. Kelas-kelas telah di one hot encoded, yang berarti bahwa ada fitur biner untuk setiap nilai kelas dan prediksi harus memperkirakan probabilitas untuk masing-masing kelas. Cross-entropy kemudian dijumlahkan di setiap fitur biner dan dirata-rata di semua contoh dalam dataset.

Fungsi Python di bawah ini menyediakan implementasi fungsi pseudocode-like dari fungsi untuk menghitung cross-entropy untuk daftar aktual satu nilai one hot encoded dibandingkan dengan probabilitas yang diprediksi untuk setiap kelas.

from math import log

# calculate categorical cross entropy
def categorical_cross_entropy(actual, predicted):
	sum_score = 0.0
	for i in range(len(actual)):
		for j in range(len(actual[i])):
			sum_score += actual[i][j] * log(1e-15 + predicted[i][j])
	mean_sum_score = 1.0 / len(actual) * sum_score
	return -mean_sum_score

Untuk effisiensi implementasi, sangat di sarankan untuk melihat fungsi scikit-learn log_loss() .

Fungsi Loss dan Kinerja Model yang di laporkan

Dengan framework of maximum likelihood, kita tahu bahwa kita ingin menggunakan fungsi cross-entropy atau mean squared error loss functiondi dalam stochastic gradient descent.

Namun demikian, kita mungkin atau mungkin juga tidak ingin melaporkan kinerja model menggunakan fungsi loss.

Sebagai contoh, logarithmic loss sulit untuk ditafsirkan, terutama untuk para pemangku kepentingan yang bukan praktisi machine learning. Hal yang sama dapat dikatakan untuk gmean squared error. Sebagai gantinya, mungkin lebih penting untuk melaporkan akurasi dan root mean squared error untuk masing-masing model yang digunakan untuk klasifikasi dan regresi.

Mungkin juga diinginkan untuk memilih model berdasarkan pada metrik ini daripada loss. Ini merupakan pertimbangan penting, karena model dengan loss minimum mungkin bukan model dengan metrik terbaik yang penting bagi pemangku kepentingan proyek.

Pembagian yang baik untuk dipertimbangkan adalah menggunakan loss untuk mengevaluasi dan mendiagnosis sebaik apa model pembelajaran. Ini termasuk semua pertimbangan proses optimasi, seperti overfitting, underfitting, dan konvergensi. Metrik alternatif kemudian dapat dipilih yang memiliki arti bagi pemangku kepentingan proyek untuk mengevaluasi kinerja model dan melakukan pemilihan model.

Loss: Digunakan untuk meng-evaluasi dan hanya mendiagnosa optimalisasi model.
Metric: Digunakan untuk meng-evaluasi dan memilih model dalam konteks proyek yang dikembangkan.

Metrik yang sama dapat digunakan untuk kedua masalah tersebut, tetapi kemungkinan besar masalah proses optimasi akan berbeda dari tujuan proyek dan skor yang berbeda akan diperlukan. Namun demikian, sering terjadi bahwa peningkatan loss akan meningkat atau, paling buruk, tidak berpengaruh pada metrik yang penting.

Further Reading

This section provides more resources on the topic if you are looking to go deeper. Books

   Deep Learning, 2016.
   Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks, 1999.
   Neural Networks for Pattern Recognition, 1995.

Articles

   Maximum likelihood estimation, Wikipedia.
   Kullback–Leibler divergence, Wikipedia.
   Cross entropy, Wikipedia.
   Mean squared error, Wikipedia.
   Log Loss, FastAI Wiki.

Summary

Dalam tulisan ini, kita menemukan peran fungsi loss dan loss itu sendiri dalam training deep learning neural network dan bagaimana memilih fungsi loss yang tepat untuk masalah pemodelan prediktif yang kita lakukan.

Terutama, kita belajar:

  • Neural network di training menggunakan proses optimasi yang membutuhkan fungsi loss untuk menghitung error pada model.
  • Maximum Likelihood memberikan framework untuk memilih fungsi loss saat men-training neural network dan model machine learning secara umum.
  • Cross-entropy dan mean squared error adalah dua tipe utama fungsi loss yang digunakan saat melakukan training model neural network.

Referensi

Pranala Menarik