Jaringan saraf untuk regresi keluaran berganda


12

Saya memiliki dataset yang berisi 34 kolom input dan 8 kolom output. Salah satu cara untuk memecahkan masalah adalah dengan mengambil 34 input dan membangun model regresi individual untuk setiap kolom output. Saya bertanya-tanya apakah masalah ini dapat diselesaikan dengan hanya menggunakan satu model khususnya menggunakan Jaringan Saraf Tiruan.

Saya telah menggunakan perceptron multilayer, tetapi itu membutuhkan beberapa model seperti regresi linier. Dapatkah pembelajaran urutan ke pembelajaran urutan 1 menjadi opsi yang layak? Saya mencoba menggunakan TensorFlow tampaknya tidak dapat menangani nilai float.

Setiap saran untuk mengatasi masalah ini dengan menggunakan hanya satu model terpadu khusus menggunakan jaringan saraf akan dihargai.

  1. Ilya Sutskever, Oriol Vinyals, & Quoc V. Le (2014). Sequence to Sequence Learning dengan Neural Networks. Kemajuan dalam Sistem Pemrosesan Informasi Saraf Tiruan , 27. ( pdf )

Apa yang masalah?
TEG - Pasang kembali Monica

1
(Kepada setiap pemilih potensial: Ini bukan pertanyaan pemrograman. Ini akan menjadi topik di Stack Overflow .)
gung - Reinstate Monica

Bisakah Anda mengklarifikasi opsi "urutan ke urutan" di sini? Saya tidak tahu apakah itu akan akrab bagi orang yang bekerja dengan NNs, tetapi itu tidak bagi saya.
gung - Reinstate Monica

Pemodelan Sequence to Sequence menggunakan RNN. papers.nips.cc/paper/…
sjishan

Anda dapat mencoba MultiOutputRegressor (). Ini berfungsi untuk masalah jenis ini
Subham Sarkar

Jawaban:


7

Jaring saraf dengan banyak hasil berbentuk

Y=γ+V1Γ1+ϵV1=a(γ2+V2Γ2)V2=a(γ3+V3Γ3)VL1=a(γL+XΓL)
Jika hasil Anda memiliki dimensi , maka [ γ 1 , Γ 1 ] akan memiliki dimensi ( p V 1 + 1 ) × 8 .N×8[γ1,Γ1](pV1+1)×8

Yang mengatakan bahwa Anda akan mengasumsikan bahwa setiap hasil berbagi SEMUA parameter di lapisan tersembunyi, dan hanya memiliki parameter berbeda untuk mengambil variabel turunan teratas dan menghubungkannya dengan hasil.

Apakah ini asumsi realistis untuk konteks Anda?


5

Awalnya saya pikir komentar generic_user adalah show-stopper, tapi saya baru sadar itu bukan:

Jika saya melatih d jaringan yang berbeda pada d keluaran yang berbeda, maka masing-masing akan sesuai dengan dimensi itu tanpa memperhatikan yang lain.

Tetapi jika saya melatih satu jaringan dengan output d dan menggunakan semua output untuk backpropagation, maka setiap bobot di setiap lapisan dalam jaringan akan disesuaikan sehingga semua output d lebih akurat.

Yaitu: Setiap parameter jaringan akan disesuaikan dengan jumlah gradien (bagaimana setiap output bervariasi dengan " goyangan " pada parameter ini) sedemikian rupa sehingga menyesuaikannya dalam arah yang dipilih ke atas atau ke bawah menyebabkan keseluruhan output lebih akurat - bahkan jika menyesuaikan Bobot seperti itu menyebabkan beberapa dimensi output menjadi kurang akurat.

Jadi, ya, hal yang akhirnya membedakan setiap output hanyalah persamaan linear yang dikodekan pada lapisan terakhir, tetapi dalam melatih satu jaringan multi-output setiap lapisan akan menjadi lebih baik dalam menyajikan lapisan terakhir dengan sesuatu yang memungkinkannya melakukan tugasnya dengan lebih baik . Dan dengan demikian hubungan antara output akan diperhitungkan oleh arsitektur ini.

Anda mungkin dapat melakukan lebih baik daripada jaringan yang sepenuhnya terhubung dengan membuat arsitektur Anda mencerminkan hubungan yang dikenal dalam output, sama seperti jaringan yang dalam melakukan lebih baik daripada yang dangkal dengan mengeksploitasi hubungan "komposisi" antara input .


Regresi multivariat mengasumsikan ada beberapa (tidak diketahui) matriks kovarians yang menghubungkan variabel target satu sama lain. Apakah Anda menyarankan bahwa hanya memiliki satu lapisan padat sudah cukup untuk menangkap kovarians ini tanpa perlu secara eksplisit termasuk lapisan tersembunyi?
thecity2

Saya menyarankan bahwa lapisan tersembunyi harus menangkap beberapa kovarian itu. Satu lapisan keluaran padat saja hanyalah sekelompok fungsi linear-regressors-through-aktivasi-paralel. Tidak ada hubungan antara output yang dapat dibangun ketika tidak ada lapisan tersembunyi bagi mereka untuk saling menyetel dan menerima input / pass sebagai input ke node output lainnya.
Pavel Komarov

0

Anda dapat melakukannya hanya dengan satu Jaringan Saraf Tiruan. Tetapi Jaringan Saraf Tiruan Anda akan terlihat seperti ini:
Lapisan Input: 34 Node (satu per kolom input Anda)
Lapisan Output: 8 Node (satu per kolom output Anda)

Anda dapat menambahkan sebanyak dan sebesar lapisan tersembunyi yang Anda inginkan di Jaringan Saraf Tiruan. Jadi Neural Network menghasilkan 8 nilai yang diprediksi dan setiap nilai akan menjadi regresi input yang berbeda.


paket bahasa mana yang mendukungnya ??
Arpit Sisodia

0

Saya juga bertanya-tanya; ini ide saya:

Saya kira jika output memiliki beberapa pola tersembunyi, maka pelatihan dapat mengambil manfaat dari pembelajaran regresi secara simultan untuk semua output.

Akan menarik untuk mencoba arsitektur di mana Anda membangun jaringan saraf untuk setiap output, tetapi semua jaringan saraf berbagi beberapa lapisan (misalnya, setengah lapisan pertama). Kemudian Anda bisa melatih setiap jaringan saraf secara bersamaan: di dalam loop pembelajaran, setiap jaringan saraf dilatih satu langkah (dengan satu batch) secara berurutan.

Ini akan mirip dengan transfer pengetahuan, tetapi dengan perbedaan bahwa dalam transfer pengetahuan setiap jaringan saraf dilatih sepenuhnya sebelum menggunakan kembali beberapa bagiannya untuk melatih jaringan saraf lain.

Saya yakin seseorang pernah memikirkan hal ini sebelumnya, tetapi saya tidak punya referensi untuk itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.