Apa makna penerapan divergensi KL di Keras?

Saya sedikit bingung bagaimana penerapan KL divergence, khususnya di Keras, tapi menurut saya pertanyaannya bersifat umum untuk aplikasi deep learning. Dalam kerasnya, fungsi kerugian KL didefinisikan seperti ini:

def kullback_leibler_divergence(y_true, y_pred):
    y_true = K.clip(y_true, K.epsilon(), 1)
    y_pred = K.clip(y_pred, K.epsilon(), 1)
    return K.sum(y_true * K.log(y_true / y_pred), axis=-1)

Dalam model saya, y_true dan y_pred adalah matriks; setiap baris y_true merupakan pengkodean one-hot untuk satu contoh pelatihan, dan setiap baris y_pred merupakan keluaran model (distribusi probabilitas) untuk contoh tersebut.

Saya dapat menjalankan penghitungan divergensi KL ini pada pasangan baris mana pun dari y_true dan y_pred dan mendapatkan hasil yang diharapkan. Rata-rata hasil divergensi KL pada baris-baris tersebut sesuai dengan kerugian yang dilaporkan oleh Keras dalam riwayat pelatihan. Namun agregasi tersebut - menjalankan divergensi KL pada setiap baris dan mengambil mean - tidak terjadi dalam fungsi kerugian. Sebaliknya, saya memahami MAE atau MSE untuk menggabungkan seluruh contoh:

def mean_squared_error(y_true, y_pred):
    return K.mean(K.square(y_pred - y_true), axis=-1)

Untuk divergensi KL, tidak sepenuhnya jelas bagi saya bahwa mengambil mean dari seluruh contoh adalah hal yang benar untuk dilakukan. Saya kira idenya adalah bahwa contoh-contoh tersebut adalah sampel acak dari distribusi sebenarnya, sehingga contoh-contoh tersebut harus muncul sebanding dengan probabilitasnya. Namun hal tersebut tampaknya memberikan asumsi yang cukup kuat tentang bagaimana data pelatihan dikumpulkan. Saya belum benar-benar melihat aspek ini (menggabungkan seluruh sampel dari kumpulan data) yang dibahas dalam perawatan online divergensi KL; Saya hanya melihat banyak redefinisi dari rumus dasarnya.

Jadi pertanyaan saya adalah:

  1. Apakah interpretasi tentang apa yang dilakukan Keras untuk menghasilkan kerugian divergensi KL (yaitu rata-rata pada divergensi baris KL) benar?

  2. Mengapa ini merupakan hal yang benar untuk dilakukan?

  3. Dari perspektif implementasi, mengapa definisi fungsi kerugian di Keras tidak melakukan agregasi pada baris seperti yang dilakukan MAE atau MSE?


person mechner    schedule 05.06.2017    source sumber


Jawaban (1)


Divergensi Kullback-Leibler adalah ukuran kesamaan antara dua distribusi probabilitas. Divergensi KL yang diterapkan di Keras mengasumsikan dua distribusi probabilitas yang terpisah (karena itu jumlahnya).

Format pasti fungsi kerugian KL Anda bergantung pada distribusi probabilitas yang mendasarinya. Kasus penggunaan yang umum adalah jaringan saraf memodelkan parameter distribusi probabilitas P (misalnya Gaussian), dan divergensi KL kemudian digunakan dalam fungsi kerugian untuk menentukan kesamaan antara distribusi yang dimodelkan dan beberapa distribusi lain yang diketahui (berpotensi Gaussian demikian juga). Misalnya. jaringan mengeluarkan dua vektor mu dan sigma^2. Mu membentuk mean dari distribusi Gaussian P sedangkan sigma^2 adalah diagonal dari matriks kovarians Sigma. Fungsi kerugian yang mungkin terjadi adalah divergensi KL antara Gaussian P yang dijelaskan oleh mu dan Sigma, dan satuan Gaussian N(0, I). Format pasti dari divergensi KL dalam kasus tersebut dapat diturunkan secara analitis, menghasilkan fungsi keras loss custom yang sama sekali tidak sama dengan divergensi KL yang diterapkan di Keras.

Dalam makalah asli yang memperkenalkan Variational Auto-Encoders, fungsi kerugian dijumlahkan atas sampel di minibatch dan kemudian dikalikan dengan faktor (N/M), dengan N adalah ukuran seluruh kumpulan data, dan M adalah ukuran tumpukan mini. Lihat persamaan 8 dan 10 di https://arxiv.org/abs/1312.6114.

person datwelk    schedule 06.06.2017
comment
dan satuan Gaussian. Saya pikir Anda harus menjelaskan mengapa unit Gaussian. - person nbro; 29.10.2019
comment
Ini bergantung pada data dan model grafis Anda, ada berbagai alasan mengapa Anda ingin distribusi probabilitas yang dimodelkan menyerupai unit Gaussian. - person datwelk; 01.04.2020
comment
Jika alasannya bermacam-macam, maka Anda dapat dengan mudah memberikan salah satu alasan/contohnya! - person nbro; 01.04.2020