Sinir ağımı sinüs dalgalarını tahmin etmede nasıl daha iyi hale getirebilirim?


21

İşte bir göz atın: Üretilen Sinüs Dalgası Egzersiz verilerinin nerede bittiğini tam olarak görebilirsiniz. Egzersiz verileri 1 için .1

Keras ve tanh aktivasyonlu 1-100-100-2 yoğun bir ağ kullandım. Sonucu p ve q olmak üzere iki değerden p / q olarak hesaplarım. Bu şekilde, sadece 1 değerden küçük herhangi bir sayı boyutu elde edebilirim.

Lütfen hala bu alanda yeni başlayan biriyim, bu yüzden bana iyi davran.


1
Açıklığa kavuşturmak için, eğitim verileriniz yaklaşık -1.5 ila +1.5 arasındadır, bu nedenle ağ bunu doğru bir şekilde öğrendi mi? Sorunuz sonucu, eğitim verisi aralığı dışındaki görünmeyen sayılara tahmin etmek mi?
Neil Slater

11
Fourier'i her şeyi dönüştürmeyi ve frekans alanında çalışmayı deneyebilirsiniz.
Nick Alger

4
Gelecekteki yorumcular için: Bunun neden kapatılmak üzere işaretlendiğini bilmiyorum. Benim için çok açık görünüyor: bu, nöral ağlarla periyodik verileri modelleme stratejileri ile ilgili.
Sycorax, Reinstate Monica'ya

1
Sanırım burada öğrenmemiz gereken makine öğrenimi alanında yeni başlayanlar için makul bir soru. Bunu kapatmak olmaz
Aksakal

1
Bunun yardımcı olup olmayacağını bilmiyorum, ancak bir vanilya NN sadece bir polinom fonksiyonlarını öğrenebilecek. Pratikte bu, polinomu belirli bir aralıkta keyfi olarak kapatabileceğiniz için iyidir. Ancak bu, aralığın sonlarına kadar uzanan bir sinüs dalgasını asla öğrenemeyeceğiniz anlamına gelir. Diğer cevapların aşağıda işaret ettiği hile, sorunu bu şekilde çözülebilecek bir soruna dönüştürmektir. Fourier dönüşümünün önerdiği şey budur ve bu durumda bir sinüs dalgası öğrenmek sadece bir sabit öğrenmek demektir.
Ukko

Yanıtlar:


19

İleri besleme ağı kullanıyorsunuz; diğer cevaplar, FFNN'lerin eğitim verisi aralığının ötesinde ekstrapolasyonda mükemmel olmadığı doğrudur.

Bununla birlikte, veriler periyodik bir kaliteye sahip olduğundan, sorun bir LSTM ile modellenmeye uygun olabilir. LSTM'ler, diziler üzerinde çalışan ve daha önce gördükleri şey hakkında bir "belleğe" sahip olan çeşitli sinir ağı hücresidir. Bu kitap bölümünün özeti, LSTM yaklaşımının periyodik problemlerde nitelikli bir başarı olduğunu göstermektedir.

Bu durumda, eğitim verileri bir dizi tuple ve bazı n ve i için yeni girişler x i + 1x i + n için doğru tahminler yapma görevi olacaktır.(xi,sin(xi))xi+1xi+nni endeksler bazı artan sıra. Her bir giriş dizisinin uzunluğu, kapladıkları aralığın genişliği ve aralıkları size kalmış. Sezgisel olarak, 1 periyodu kapsayan düzenli bir ızgaranın başlamak için iyi bir yer olmasını beklerdim, eğitim sekansları bir süre ile sınırlı olmaktan ziyade çok çeşitli değerleri kapsar.

(Jimenez-Guarneros, Magdiel ve Gomez-Gil, Pilar ve Fonseca-Delgado, Rigoberto ve Ramirez-Cortes, Manuel ve Alarcon-Aquino, Vicente, "Bir LSTM Sinir Ağı Kullanarak Sinüs Fonksiyon Uzun Vadeli Tahmin" de Nature- Hibrit Akıllı Sistemlerden Esinlenen Tasarım )


2
Burada sıralanan model nedir? Zaman adımları nelerdir? Bu benim için basit bir eğri uydurma uygulaması gibi görünüyor.
David J. Harris

@ DavidJ.Harris Cevabımı güncelledim.
Sycorax, Reinstate Monica'ya

1/(2π)

Örneğin, pazar tahminleri böyle mi yapılıyor?
Markus Appel

3
Hayır, piyasa tahminlerini böyle yapmazsınız. En azından para kazanmak için nasıl yaptığınızı değil.
Aksakal

13

Yapmak istediğiniz şey bunun gibi basit periyodik fonksiyonları öğrenmekse, Gauss Süreçlerini kullanmayı düşünebilirsiniz. GP'ler, uygun bir kovaryans işlevi belirterek etki alanı bilginizi bir ölçüde güçlendirmenize olanak tanır; bu örnekte, verilerin periyodik olduğunu bildiğiniz için, periyodik bir çekirdek seçebilirsiniz, daha sonra model bu yapıyı tahmin eder. Resimde bir örnek görebilirsiniz; burada, gelgit yüksekliği verilerine uymaya çalışıyorum, bu yüzden periyodik bir yapıya sahip olduğunu biliyorum. Periyodik bir yapı kullandığım için, model bu periyodikliği (az ya da çok) doğru şekilde tahmin ediyor. Nöral ağları öğrenmeye çalışıyorsanız, bu gerçekten alakalı değil, ancak bu el mühendisliği özelliklerinden biraz daha hoş bir yaklaşım olabilir. Bu arada, sinir ağları ve gp'ler teoride yakından ilişkilidir,resim açıklamasını buraya girin

GP'ler her zaman yararlı değildir çünkü sinir ağlarından farklı olarak, büyük veri kümelerine ve derin ağlara ölçeklendirmek zordur, ancak bunun gibi düşük boyutlu sorunlarla ilgileniyorsanız, muhtemelen daha hızlı ve daha güvenilir olacaktır.

(resimde, siyah noktalar eğitim verisi ve kırmızı hedeflerdir; tam olarak doğru olmasa da, modelin periyodikliği yaklaşık olarak öğrenir. Renkli bantlar, modelin güven aralıklarıdır. öngörü)


2
Bu arsa güzel.
Sycorax, Reinstate Monica'ya

11

Yapay sinir ağları da dahil olmak üzere makine öğrenme algoritmaları, rastgele işlevlerin yaklaşık değerlerini öğrenmeyi öğrenebilir, ancak yalnızca yeterli eğitim verisi yoğunluğunun olduğu aralıklarda.

İstatistik tabanlı makine öğrenme algoritmaları, enterpolasyon gerçekleştirirken en iyi sonucu verir - eğitim örneklerine yakın veya aralarındaki değerleri tahmin eder.

Eğitim verilerinizin dışında, ekstrapolasyonu umuyorsunuz. Ama bunu başarmanın kolay bir yolu yok. Sinir ağı asla analitik olarak bir işlevi öğrenmez, sadece yaklaşık olarak istatistiklerle - bu neredeyse tüm denetimli öğrenme ML teknikleri için geçerlidir. Daha gelişmiş algoritmalar, yeterince örnek (ve modeldeki serbest parametreler) verildiğinde seçilen bir işleve keyfi olarak yaklaşabilir, ancak yine de bunu yalnızca sağlanan eğitim verileri aralığında yapar.

Ağın (veya diğer ML'nin) egzersiz verilerinizin aralığı dışında nasıl davrandığı, kullanılan etkinleştirme işlevleri de dahil olmak üzere mimarisine bağlı olacaktır.

sinsin(x),sin(2x+π/4)sin


"Sinir ağı hiçbir zaman analitik olarak bir işlevi öğrenmez, sadece yaklaşık olarak istatistiklerle." - aynısı pratikte kullanılan hemen hemen her şey için de söylenebilir, örneğin FFT analitik olarak da öğrenmez. Örnekleme oranını ve süreyi sonsuza kadar artırabilir ve gerçek işleve sonsuz bir şekilde yaklaşabilirsiniz, ancak NN için de aynı şey geçerlidir.
Aksakal

@Aksakal: Evet, bu doğru. Ancak, "Tüm ML algoritmalarının işlevleri analitik olarak asla öğrenmediğini" belirtmek istemedim. çünkü hiç kimse şüphesiz bazı Bayesci analitik öğrenen veya genetik programlama vb. karşı bir örnekle gelecektir. Daha genel hale getirmek için düzenlemeye çalışacağım
Neil Slater

9

Bazı durumlarda, @Neil Slater'ın özelliklerinizi periyodik bir işlevle dönüştürmeye yönelik önerilen yaklaşımı çok iyi sonuç verir ve en iyi çözüm olabilir. Buradaki zorluk, periyodu / dalga boyunu manuel olarak seçmeniz gerekebilmesidir ( bu soruya bakın ).

Periyodikliğin ağa daha derinden gömülmesini istiyorsanız, en kolay yol bir / daha fazla katmanda aktivasyon işleviniz olarak sin / cos kullanmaktır. Bu makale periyodik aktivasyon fonksiyonlarıyla başa çıkma potansiyel zorluklarını ve stratejilerini tartışmaktadır.

Alternatif olarak, bu makale ağın ağırlıklarının periyodik bir fonksiyona bağlı olduğu farklı bir yaklaşım benimsemektedir. Makale ayrıca daha esnek oldukları için sin / cos yerine spline kullanılmasını önermektedir. Bu, geçen yıl en sevdiğim makalelerden biriydi, bu yüzden yaklaşımını kullanmasanız bile okumaya (veya en azından videoyu izlemeye) değer.


9

Yanlış bir yaklaşım izlediniz, sorunu çözmek için bu yaklaşımla hiçbir şey yapılamaz.

Sorunu çözmenin birkaç farklı yolu vardır. En açık olanı özellik mühendisliği ile önereceğim. Zamanı doğrusal bir özellik olarak tıkamak yerine, T = 1 modülünün geri kalanı olarak koyun. Örneğin, t = 0.2, 1.2 ve 2.2'nin tümü t1 = 0.1 vb. Bir özellik haline gelecektir. T dalga süresinden daha büyük olduğu sürece, bu işe yarayacaktır. Bu şeyi ağınıza takın ve nasıl çalıştığını görün.

Özellik mühendisliği önemsizdir. Satış görevlilerinin tüm girdilerinizi ağa döktüğünüzü iddia ettikleri AI / ML'de bu eğilim var ve bir şekilde onlarla ne yapacağınızı anlayacak. Elbette, örneğinizde gördüğünüz gibi, ama sonra kolayca bozulur. Bu, en basit durumlarda bile iyi özellikler oluşturmak için ne kadar önemli olduğunu gösteren harika bir örnektir.

Ayrıca, umarım bunun özellik mühendisliğinin en kaba örneği olduğunu fark edersiniz. Sadece onunla ne yapabileceğiniz hakkında bir fikir vermek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.