Di sini, lihat: Anda dapat melihat dengan tepat di mana data pelatihan berakhir. Data pelatihan berubah dari menjadi .
Saya menggunakan Keras dan jaringan padat 1-100-100-2 dengan aktivasi tanh. Saya menghitung hasil dari dua nilai, p dan q sebagai p / q. Dengan cara ini saya dapat mencapai ukuran angka apa pun menggunakan hanya lebih kecil dari 1 nilai.
Harap dicatat bahwa saya masih pemula di bidang ini, jadi tenang saja.
regression
neural-networks
python
keras
Markus Appel
sumber
sumber
Jawaban:
Anda menggunakan jaringan umpan-maju; jawaban lain benar bahwa FFNN tidak hebat dalam ekstrapolasi di luar jangkauan data pelatihan.
Namun, karena data memiliki kualitas periodik, masalahnya mungkin dapat dimodelkan dengan LSTM. LSTM adalah berbagai sel jaringan saraf yang beroperasi pada urutan, dan memiliki "memori" tentang apa yang mereka "lihat" sebelumnya. Abstrak dari bab buku ini menunjukkan bahwa pendekatan LSTM adalah keberhasilan yang memenuhi syarat untuk masalah-masalah berkala.
Dalam hal ini, data pelatihan akan menjadi urutan tupel , dan tugas untuk membuat prediksi yang akurat untuk input baru untuk beberapa dan mengindeks beberapa urutan yang meningkat. Panjang setiap urutan input, lebar interval yang mereka tutup, dan jaraknya, terserah Anda. Secara intuitif, saya berharap grid biasa yang mencakup 1 periode menjadi tempat yang baik untuk memulai, dengan urutan pelatihan yang mencakup berbagai nilai, daripada dibatasi pada beberapa interval.(xi,sin(xi)) xi+1…xi+n n i
(Jimenez-Guarneros, Magdiel dan Gomez-Gil, Pilar dan Fonseca-Delgado, Rigoberto dan Ramirez-Cortes, Manuel dan Alarcon-Aquino, Vicente, "Prediksi Jangka Panjang dari Fungsi Sinus Menggunakan LSTM Neural Network", di Nature- Desain Terinspirasi Sistem Cerdas Hibrida )
sumber
Jika yang ingin Anda lakukan adalah mempelajari fungsi periodik sederhana seperti ini, maka Anda bisa melihat ke dalam menggunakan Proses Gaussian. Dokter memungkinkan Anda untuk menegakkan pengetahuan domain Anda sampai batas tertentu dengan menentukan fungsi kovarian yang sesuai; dalam contoh ini, karena Anda tahu datanya periodik, Anda dapat memilih kernel periodik, maka model akan memperkirakan struktur ini. Anda dapat melihat contoh dalam gambar; di sini, saya mencoba untuk menyesuaikan data ketinggian pasang, jadi saya tahu itu memiliki struktur periodik. Karena saya menggunakan struktur periodik, modelnya memperkirakan periodisitas ini (kurang lebih) dengan benar. OFC jika Anda mencoba untuk belajar tentang jaringan saraf ini tidak benar-benar relevan, tetapi ini mungkin pendekatan yang sedikit lebih bagus daripada fitur rekayasa tangan. Kebetulan, jaringan saraf dan gp terkait erat dalam teori,
Dokter tidak selalu berguna karena tidak seperti jaring saraf, mereka sulit untuk skala ke dataset besar dan jaringan dalam, tetapi jika Anda tertarik pada masalah dimensi rendah seperti ini, mereka mungkin akan lebih cepat dan lebih dapat diandalkan.
(dalam gambar, titik-titik hitam adalah data pelatihan dan merah adalah targetnya; Anda dapat melihat bahwa meskipun tidak tepat, modelnya mempelajari periodisitas sekitar. Pita berwarna adalah interval kepercayaan dari model yang ramalan)
sumber
Algoritma pembelajaran mesin - termasuk jaringan saraf - dapat belajar untuk memperkirakan fungsi-fungsi sewenang-wenang, tetapi hanya dalam interval di mana ada cukup banyak data pelatihan.
Algoritma pembelajaran mesin berbasis statistik bekerja paling baik ketika mereka melakukan interpolasi - memprediksi nilai yang dekat atau di antara contoh pelatihan.
Di luar data pelatihan Anda, Anda berharap untuk ekstrapolasi. Tetapi tidak ada cara mudah untuk mencapainya. Jaringan saraf tidak pernah mempelajari suatu fungsi secara analitis, hanya kira-kira melalui statistik - ini berlaku untuk hampir semua teknik pembelajaran ML yang diawasi. Algoritme yang lebih maju dapat mendekati secara sewenang-wenang ke fungsi yang dipilih dengan memberikan contoh yang cukup (dan parameter bebas dalam model), tetapi akan tetap hanya melakukannya dalam kisaran data pelatihan yang disediakan.
Bagaimana jaringan (atau ML lainnya) berperilaku di luar kisaran data pelatihan Anda akan bergantung pada arsitekturnya termasuk fungsi aktivasi yang digunakan.
sumber
Dalam beberapa kasus, pendekatan yang disarankan @Neil Slater untuk mengubah fitur Anda dengan fungsi periodik akan bekerja dengan sangat baik, dan mungkin menjadi solusi terbaik. Kesulitan di sini adalah bahwa Anda mungkin perlu memilih periode / panjang gelombang secara manual (lihat pertanyaan ini ).
Jika Anda ingin periodisitas tertanam lebih dalam ke jaringan, cara termudah adalah dengan menggunakan sin / cos sebagai fungsi aktivasi Anda dalam satu atau lebih lapisan. Makalah ini membahas potensi kesulitan dan strategi untuk berurusan dengan fungsi aktivasi berkala.
Atau, makalah ini mengambil pendekatan yang berbeda, di mana bobot jaringan tergantung pada fungsi periodik. Makalah ini juga menyarankan penggunaan splines daripada sin / cos, karena mereka lebih fleksibel. Ini adalah salah satu makalah favorit saya tahun lalu, jadi layak dibaca (atau setidaknya menonton video) bahkan jika Anda tidak menggunakan pendekatannya.
sumber
Anda mengambil pendekatan yang salah, tidak ada yang bisa dilakukan dengan pendekatan ini untuk memperbaiki masalah.
Ada beberapa cara berbeda untuk mengatasi masalah tersebut. Saya akan menyarankan yang paling jelas melalui rekayasa fitur. Alih-alih memasukkan waktu sebagai fitur linier, letakkan sebagai sisa modulus T = 1. Misalnya, t = 0,2, 1,2 dan 2,2 semua akan menjadi fitur t1 = 0,1 dll. Selama T lebih besar dari periode gelombang, ini akan berhasil. Tancapkan benda ini ke jaring Anda dan lihat cara kerjanya.
Rekayasa fitur diremehkan. Ada tren ini dalam AI / ML di mana tenaga penjualan mengklaim bahwa Anda membuang semua input Anda ke internet, dan entah bagaimana itu akan mencari tahu apa yang harus dilakukan dengan mereka. Tentu, memang, seperti yang Anda lihat dalam contoh Anda, tetapi kemudian mudah rusak. Ini adalah contoh yang bagus yang menunjukkan betapa pentingnya membangun fitur yang baik bahkan dalam beberapa kasus paling sederhana.
Juga, saya harap Anda menyadari bahwa ini adalah contoh paling kasar dari rekayasa fitur. Ini hanya untuk memberi Anda gambaran tentang apa yang dapat Anda lakukan dengannya.
sumber