Bagaimana dan mengapa MLP untuk klasifikasi berbeda dari MLP untuk regresi? Backpropagation dan fungsi transfer yang berbeda?

8

Saya menggunakan dua 3-layer feedforward multi-layer perceptrons (MLPs). Dengan data input yang sama (14 neuron input), saya melakukan satu klasifikasi (benar / salah), dan satu regresi (jika benar, "berapa banyak") ¹. Sampai sekarang, saya sudah malas menggunakan Matlabs patternnet dan fitnet , masing-masing. Lazily, karena saya belum meluangkan waktu untuk benar-benar memahami apa yang terjadi - dan saya harus. Selain itu, saya perlu melakukan transisi ke perpustakaan OSS (mungkin FANN), yang kemungkinan akan membutuhkan lebih banyak pengaturan manual daripada Matlab NN Toolbox. Karena itu, saya mencoba memahami lebih tepatnya apa yang sedang terjadi.

Jaringan yang dibuat oleh patternnetdan fitnethampir identik: 14 input neuron, 11 neuron tersembunyi, 1 neuron target (2 untuk fitnet, tetapi hanya 1 buah informasi). Tapi, mereka tidak sepenuhnya identik. Perbedaan secara default adalah:

Haruskah perbedaan itu terjadi?

Fungsi backpropagation seperti apa yang optimal untuk klasifikasi, dan apa untuk regresi, dan mengapa?

Fungsi transfer seperti apa yang optimal untuk klasifikasi, dan apa untuk regresi, dan mengapa?


¹ Klasifikasi adalah untuk "mendung" atau "bebas cloud" (2 target komplementer), regresi adalah untuk menghitung "berapa banyak cloud" (1 target).

gerrit
sumber

Jawaban:

2

Perbedaan utama adalah dalam kriteria pelatihan. Kriteria pelatihan kuadrat terkecil sering digunakan untuk regresi karena ini memberikan (kemungkinan hukuman) estimasi maksimum parameter model dengan asumsi Gaussian noise merusak variabel respon (target). Untuk masalah klasifikasi, adalah umum untuk menggunakan kriteria pelatihan lintas-entropi, untuk memberikan estimasi kemungkinan maksimum dengan asumsi Bernoilli atau kerugian multinomial. Either way, output model dapat diartikan sebagai estimasi probabilitas keanggotaan kelas, tetapi itu adalah umum untuk menggunakan fungsi aktivasi logistik atau softmax di lapisan output sehingga output dibatasi untuk berada di antara 0 dan 1 dan untuk jumlah ke 1. Jika Anda menggunakan fungsi tanh, Anda bisa memetakannya kembali ke probabilitas dengan menambahkan satu dan membaginya dengan dua (tetapi jika tidak sama).

Perbedaan antara gradien konjugat berskala dan Levenberg-Marquardt cenderung cukup kecil dalam hal kinerja generalisasi.

Saya akan sangat merekomendasikan toolbox NETLAB untuk MATLAB lebih dari MATLAB sendiri toolbox jaringan saraf. Mungkin ide yang baik untuk menyelidiki regularisasi Bayesian untuk menghindari pemasangan yang berlebihan ( buku Chris Bishop layak dibaca dan sebagian besar dicakup dalam kotak alat NETLAB).

Dikran Marsupial
sumber
Menarik - mengapa Anda sangat merekomendasikan NETLAB lebih dari MATLAB sendiri NN toolbox? Saya sudah cukup puas dengan yang terakhir, tetapi saya bermaksud untuk pindah untuk menjadi bebas dari lisensi komersial. Netlab jelas masih Matlab, jadi selesaikan hanya setengah dari masalah yang menyangkut independensi; Saya lebih suka menggunakan sesuatu yang bisa saya gunakan dengan Python.
gerrit
Saya menduga NETLAB juga bekerja dengan oktaf, yang memecahkan masalah lisensi komersial. Saya lebih suka NETLAB karena memiliki alat dasar untuk klasifikasi dan regresi yang diatur cukup mudah dan mendorong penggunaan jaringan yang diatur, yang sangat penting dalam menghindari pemasangan yang berlebihan. Itu juga melengkapi buku Chris Bishop dengan sangat baik, dan itu adalah buku yang saya rekomendasikan untuk siapa saja yang ingin menggunakan jaringan saraf dalam kemarahan. Proses Gaussian adalah opsi yang lebih modern, toolbox dan buku GPML juga sangat direkomendasikan ( gaussianprocess.org/gpml ).
Dikran Marsupial
Ok aku paham. Itu selalu berhasil dengan baik bagi saya, saya tidak punya masalah over-fitting dengan penghentian dini. Saya mengerti maksudnya dengan Octave tetapi jika saya tetap harus melakukan transisi, saya lebih suka langsung pindah ke Python (saya salut kepada Octave, dan saya berharap saya dapat menjalankan kode Matlab saya di dalamnya, yang sangat bergantung pada kelas pasca-R2008a ; tapi saya tidak suka Matlab sebagai bahasa yang cukup untuk memilih klon FOSS Matlab daripada Octave. Pokoknya, diskusi ini mendapatkan di luar topik).
gerrit
telah berarti untuk belajar python sendiri untuk sementara waktu, itu digunakan cukup banyak di komunitas pembelajaran mesin, jadi saya berharap ada beberapa perpustakaan bagus yang tersedia.
Dikran Marsupial