Saya memiliki input yang merupakan daftar dan output adalah maksimum dari elemen-elemen dari daftar-input.
Dapatkah pembelajaran mesin mempelajari fungsi seperti itu yang selalu memilih maksimum elemen input yang ada dalam input?
Ini mungkin tampak sebagai pertanyaan yang cukup mendasar tetapi mungkin memberi saya pemahaman tentang apa yang bisa dilakukan pembelajaran mesin secara umum. Terima kasih!
machine-learning
deep-learning
pengguna78739
sumber
sumber
Jawaban:
Mungkin , tetapi perhatikan bahwa ini adalah salah satu kasus di mana pembelajaran mesin bukanlah jawabannya . Ada kecenderungan untuk mencoba dan mencoba pembelajaran mesin ke dalam kasus-kasus di mana benar-benar, solusi berbasis aturan standar rawa lebih cepat, lebih sederhana dan hanya pada umumnya pilihan yang tepat: P
Sunting : Saya awalnya menulis ini sebagai "Ya, tetapi perhatikan bahwa ..." tetapi kemudian mulai meragukan diri saya sendiri, karena belum pernah melihatnya selesai. Saya mencobanya sore ini dan itu pasti bisa dilakukan:
Output adalah 0,74576, jadi itu benar menemukan maks 74,5% dari waktu. Saya tidak ragu bahwa itu dapat ditingkatkan, tetapi seperti yang saya katakan ini bukan usecase, saya akan merekomendasikan untuk ML.
EDIT 2 : Sebenarnya saya menjalankan ulang pagi ini menggunakan RandomForestClassifier sklearn dan kinerjanya jauh lebih baik:
Dan skor di sini adalah 94,4% dari sampel dengan maks diidentifikasi dengan benar, yang memang cukup bagus.
sumber
@
, seperti dalam@Marco13
). Mengenai pertanyaan: Saya pikir pernyataan Anda "pembelajaran mesin bukanlah jawabannya" membuatnya jelas. Saya terutama takut bahwa terlalu banyak orang tidak menerapkan pengawasan yang tepat ketika menggunakan ML / DL / NNs, dan khususnya, ketika mereka menemukan sesuatu yang sepertinya bisa "menyelesaikan masalah mereka", tanpa memahami mengapa tampaknya melakukannya. , dan karenanya tanpa mengetahui kapan "solusi" hanyalah artefak dari proses yang tidak begitu dipahami.Iya nih. Sangat penting, ANDA memutuskan arsitektur solusi pembelajaran mesin. Arsitektur dan prosedur pelatihan tidak menulis sendiri; mereka harus dirancang atau templated dan pelatihan mengikuti sebagai cara menemukan parameterisasi arsitektur yang pas untuk satu set poin data.
Anda dapat membangun arsitektur yang sangat sederhana yang sebenarnya mencakup fungsi maksimum:
di mana a dan b adalah parameter yang dipelajari.
Diberikan sampel pelatihan yang cukup dan rutin pelatihan yang masuk akal, arsitektur yang sangat sederhana ini akan belajar dengan sangat cepat untuk menetapkan a ke 1 dan b ke nol untuk tugas Anda.
Pembelajaran mesin sering mengambil bentuk menghibur beberapa hipotesis tentang fitur dan transformasi input poin data, dan belajar untuk mempertahankan hanya hipotesis yang berkorelasi dengan variabel target. Hipotesis dikodekan secara eksplisit dalam arsitektur dan sub-fungsi yang tersedia dalam algoritma parameter, atau sebagai asumsi dikodekan dalam algoritma "parameterless".
Sebagai contoh, pilihan untuk menggunakan produk titik dan nonlinier seperti yang umum dalam jaringan saraf vanili ML agak arbitrer; itu mengungkapkan hipotesis yang mencakup bahwa suatu fungsi dapat dibangun menggunakan struktur jaringan komposisi komposisi yang telah ditentukan sebelumnya dan fungsi ambang batas. Parameterisasi yang berbeda dari jaringan itu mewujudkan hipotesis yang berbeda tentang transformasi linear mana yang akan digunakan. Toolbox fungsi apa pun dapat digunakan dan tugas pembelajar mesin adalah menemukan melalui diferensiasi atau coba-coba atau sinyal berulang lainnya yang fungsi atau fitur dalam arraynya paling baik meminimalkan metrik kesalahan. Dalam contoh yang diberikan di atas, jaringan yang dipelajari hanya mengurangi ke fungsi maksimum itu sendiri, sedangkan jaringan yang tidak terdiferensiasi dapat "belajar" fungsi minimum. Fungsi-fungsi ini dapat diekspresikan atau diperkirakan melalui cara lain, seperti pada fungsi regresi linear atau neural net pada jawaban lain. Singkatnya, itu benar-benar tergantung pada fungsi atau potongan LEGO yang Anda miliki di kotak alat arsitektur ML Anda.
sumber
max()
(dari data yang diberi label). Mereka tidak mengatakan " Mengingat bahwa Anda sudah memilikimax()
sebagai blok bangunan"Ya - Pembelajaran mesin dapat belajar menemukan maksimum dalam daftar angka.
Berikut adalah contoh sederhana pembelajaran untuk menemukan indeks maksimum:
sumber
Algoritma pembelajaran
Alih-alih mempelajari fungsi sebagai perhitungan yang dilakukan oleh jaringan saraf umpan-maju, ada domain penelitian lengkap tentang algoritma pembelajaran dari data sampel. Sebagai contoh, seseorang mungkin menggunakan sesuatu seperti Mesin Turing Saraf atau metode lain di mana eksekusi suatu algoritma dikendalikan oleh pembelajaran mesin pada titik-titik keputusannya. Algoritme mainan seperti menemukan maksimum, atau menyortir daftar, atau membalik daftar, atau memfilter daftar biasanya digunakan sebagai contoh dalam penelitian pembelajaran algoritma.
sumber
Saya akan mengecualikan desain berpendidikan dari jawaban saya. Tidak itu tidak mungkin untuk menggunakan keluar dari kotak pembelajaran mesin (ML) pendekatan untuk sepenuhnya mewakili fungsi maksimum untuk sewenang-wenang daftar dengan presisi sewenang-wenang. ML adalah metode berbasis data dan jelas bahwa Anda tidak akan dapat memperkirakan suatu fungsi di wilayah di mana Anda tidak memiliki titik data apa pun. Oleh karena itu, ruang pengamatan yang mungkin (yang tidak terbatas) tidak dapat ditutupi oleh pengamatan terbatas.
Pernyataan saya memiliki landasan teoretis dengan Teorema Aproksimasi Universal Cybeko untuk jaringan saraf. Saya akan mengutip teorema dari Wikipedia:
Jika ruang pengamatan Anda kompak maka Anda mungkin dapat memperkirakan fungsi maksimum dengan set data yang terbatas. Sebagai jawaban terpilih atas dibuat jelas Anda tidak harus menemukan kembali roda!
sumber
Inilah perluasan komentar saya. Untuk kata pengantar, benar-benar @DanScally benar bahwa tidak ada alasan untuk menggunakan ML untuk menemukan daftar maksimum. Tapi saya pikir Anda "mungkin memberi saya pemahaman tentang apa yang bisa dilakukan pembelajaran mesin secara umum" adalah alasan yang cukup baik untuk mempelajari hal ini.
Komentar, dan jawaban @ MachineLearner mengemukakan teorema aproksimasi universal: pada domain terbatas , jaringan saraf dapat memperkirakan fungsi yang cukup bagus seperti , tetapi kami tidak dapat mengharapkan apriori untuk memperkirakan pada input sewenang-wenang, juga tidak persis hitung mana saja.max max max
Tapi, ternyata jaringan syaraf dapat secara tepat mengurutkan angka input yang berubah-ubah. Memang, bilangan bulat-bit dapat diurutkan berdasarkan jaringan dengan hanya dua lapisan tersembunyi dari ukuran kuadrat. Jaringan Syaraf Tiruan Yang Efisien untuk Divisi dan Masalah Terkait , Teorema 7 pada halaman 955; terima kasih banyak kepada @MaximilianJanisch dalam jawaban ini untuk menemukan referensi ini.n n
Saya akan menjelaskan secara singkat penyederhanaan pendekatan dalam makalah itu untuk menghasilkan fungsi untuk input berbeda yang sewenang-wenang. Lapisan tersembunyi pertama terdiri dari neuron, masing-masing mewakili variabel indikator , untuk . Ini mudah dibangun sebagai dengan indikator langkah. Lapisan berikutnya memiliki neuron, satu untuk setiap input ; mulai dengan jumlah ; yaitu, jumlah sedemikian sehingga , dan karenanya posisiargmax n (n2) δij=1(xi<xj) i<j xj−xi n xi ∑j<iδji+∑j>i(1−δij) j xi>xj xi dalam daftar yang diurutkan. Untuk menyelesaikan argmax, cukup ambangkan lapisan ini.
Pada titik ini, jika kita dapat mengalikan, kita akan mendapatkan nilai maksimum aktual dengan cukup mudah. Solusi dalam makalah ini adalah dengan menggunakan representasi biner dari angka-angka, di mana perkalian biner titik adalah sama dengan penambahan ambang batas. Untuk hanya mendapatkan argmax, itu sudah cukup untuk memiliki fungsi linear sederhana mengalikan indikator th oleh dan menjumlahkan.ii
i i
Akhirnya, untuk pertanyaan berikut: dapatkah kita melatih NN ke kondisi ini. @DanScally membantu kami memulai; mungkin mengetahui arsitektur teoretis dapat membantu kita menyontek ke dalam solusi? (Perhatikan bahwa jika kita dapat mempelajari / memperkirakan kumpulan bobot tertentu di atas, jaring akan benar-benar berkinerja baik di luar kisaran sampel pelatihan.)
Notebook di github / Colab
Mengubah hal-hal sedikit saja, saya mendapatkan skor pengujian yang lebih baik (0,838), dan bahkan pengujian pada sampel di luar rentang pelatihan asli mendapat skor yang layak (0,698). Menggunakan input yang diskalakan ke[−1,1] mendapat skor tes hingga 0,961, dengan skor di luar kisaran 0,758. Tapi, saya mencetak dengan metode yang sama dengan @DanScally, yang tampaknya sedikit tidak jujur: fungsi identitas akan mendapat skor sempurna pada metrik ini. Saya juga mencetak beberapa koefisien untuk melihat apakah sesuatu yang dekat dengan pas yang dijelaskan di atas muncul (tidak benar-benar); dan beberapa output mentah, yang menunjukkan model terlalu malu-malu dalam memperkirakan maksimum, salah di samping memprediksi bahwa tidak ada input yang maksimal. Mungkin memodifikasi tujuan bisa membantu, tetapi pada titik ini saya sudah menghabiskan terlalu banyak waktu; jika ada yang peduli untuk meningkatkan pendekatan, silakan bermain (di Colab jika Anda suka) dan beri tahu saya.
sumber
Ya, meskipun pembelajaran mesin sederhana seperti linear least square biasa dapat melakukan ini jika Anda menggunakan kepintaran terapan.
(Tetapi sebagian besar akan menganggap ini adalah pembunuhan yang sangat mengerikan).
(Saya akan berasumsi kita ingin mencari jumlah maksimum vektor input):
sumber