Saya sedang mengerjakan model pembelajaran kategori online yang menggunakan penurunan gradien stokastik agar sesuai dengan model campuran Gauss. Model ini didasarkan pada model pembelajaran online yang digunakan dalam Toscano & McMurray (2010).
Sementara gradient descent kelihatannya bekerja cukup baik untuk memperkirakan rata-rata dan frekuensi / kemungkinan pencampuran kategori, saya mengalami masalah dengan memperkirakan kovariansi komponen campuran. Derivatif parsial yang saya gunakan untuk pembaruan gradient descent datang dari Petersen & Pedersen (2008) (hlm. 44)
Dimulai dengan
Petersen & Pedersen memberikan turunan parsial sehubungan dengan matriks kovarians sebagai
Langkah gradient descent untuk masing-masing , karena saya sudah menerapkannya di Python adalah (ini adalah penyederhanaan dan sedikit untuk semua komponen dihitung sebelum melakukan pembaruan):
j.sigma += learning_rate*(G(x)/M(x))*0.5*(-inv(j.sigma) + inv(j.sigma).dot((x-j.mu).dot((x-j.mu).transpose())).dot(inv(j.sigma)))
Di mana j adalah objek yang mewakili Komponen campuran dan j.sigma dan j.mu adalah mean dan varian komponen itu. G (x) / M (x) berdiri untuk beberapa kode yang menghitung
Jadi, saya bertanya-tanya apakah ada yang salah dengan kode saya (sangat mungkin) atau apakah ini hanya cara yang sangat buruk untuk menyesuaikan model seperti ini ketika berhadapan dengan data dengan lebih dari dua dimensi (Lihat Toscano & McMurray untuk algoritme untuk univariat dan data bivariat yang pasti berfungsi).
referensi: Toscano, JC, & McMurray, B. (2010). Integrasi isyarat dengan kategori: Menandai isyarat akustik dalam pidato menggunakan pembelajaran tanpa pengawasan dan statistik distribusi. Ilmu Kognitif, 34, 434-464.
Petersen & Pederson. Matrix Cookbook, Versi: 14 November 2008