Kaotik sayısal modellerin regresyon testi


10

Gerçek bir fiziksel sistemi temsil eden ve kaos sergileyen sayısal bir modelimiz olduğunda (örn. Akışkan dinamiği modelleri, iklim modelleri), modelin olması gerektiği gibi performans gösterdiğini nasıl bilebiliriz? İki model çıktı setini doğrudan karşılaştıramayız, çünkü başlangıç ​​koşullarındaki küçük değişiklikler bile bireysel simülasyonların çıktılarını önemli ölçüde değiştirir. Model çıktısını doğrudan gözlemlerle karşılaştıramayız, çünkü gözlemlerin başlangıç ​​koşullarını asla yeterince ayrıntılı bir şekilde bilemeyiz ve sayısal yaklaşım zaten sistemde yayılacak küçük farklılıklara neden olur.

Bu soru kısmen David Ketcheson'un birim test bilimsel koduyla ilgili sorusundan esinlenmiştir : Özellikle bu tür modeller için regresyon testlerinin nasıl uygulanabileceği ile ilgileniyorum. Küçük bir başlangıç ​​koşulları değişikliği büyük çıktı değişikliklerine yol açabilirse (ki bu hala gerçekliğin yeterli bir temsili olabilir), o zaman bu değişiklikleri parametrelerin değiştirilmesinden veya yeni sayısal rutinlerin uygulanmasından kaynaklanan değişikliklerden nasıl ayırabiliriz?

Yanıtlar:


7

Bu gibi durumlarda karşılaştırabileceğiniz tek şey çözümünüzün istatistikleridir: ortalamalar, daha yüksek momentler, sınır boyunca ısı akıları ve diğer integral miktarlar. Örneğin Navier-Stokes denklemleri için türbülans modellerini tartışan birçok makaleden birine göz atın: güç spektrumları, entalpiler, entropiler, enstrofiler ve daha önce hiç duymadığınız başka kelimelerle dolu. . Hepsi akışın bir miktar integral miktarıdır ve diğer simülasyonlardan ve / veya deneylerden hesaplanan aynı integral miktarlarıyla karşılaştırılırlar.


İyi bir örnek kağıt biliyor musunuz? Cevabınıza iyi bir katkı olur.
naught101

Başımın tepesinden değil - Ben türbülans modelleme yapan biri değilim. Yine de Tom Hughes'un daha yeni gazetelerinden bazılarıyla başlıyorum ve oradan çalışıyorum.
Wolfgang Bangerth

Bence bu, dinamik bir sistemin rejimini belirlemek için özet istatistikleri kullanmak için iyi bir örnek: "Gürültülü doğrusal olmayan ekolojik dinamik sistemler için istatistiksel çıkarım"
Jugurtha

4

Kodunuz altta yatan probleminizin kaotik olmayan rejimlerinde, özellikle de üretilen çözümler yöntemini kullanabileceğiniz kaotik olmayan rejimlerde çalışabiliyorsa, sizin için başka türlü ilginç olmasalar bile bu rejimlerde çalışan regresyon testleri yazmalısınız. . Bu testler başarısız olursa, en son kod değişikliklerinizde bir şeyin yanlış gittiğini hemen bilirsiniz. Daha sonra fiziksel olarak daha ilgili sorunlara geçebilirsiniz.


Tüm iklim modellerinin bu şekilde çalışabileceğini düşünmüyorum, ama belki de büyük bileşenler olabilir. Süper birim testi gibi bir şey. İyi fikir.
naught101

2
Ama mesele bu. Regresyon testleriniz iyi bir kod kapsamına sahip olmalıdır (gcov ve benzerleri arkadaşlarınızdır) ve hızlı bir şekilde çalışmalıdır. Günlük regresyon testiniz olarak tüm bir iklim modelini çalıştırıyorsanız, çok zaman harcadığınızdan şüpheleniyorum.
Bill Barth

Sanırım daha çok düşünüyorum: testi önce çalıştırıyorsunuz ve sonra bir grup metrik (Wolfgang'ın cevabında belirtildiği gibi) saklıyorsunuz. Ardından değişiklikler yapar ve testleri tekrar çalıştırırsınız ve aynı metrikleri en son kaydettiğiniz metriklerle karşılaştırırsınız. Modeli (veya model süper bileşenini) geliştirdiyseniz, teorik olarak, metriklerin tümü iyileştirilmeli veya en azından önemli ölçüde kötüleşmemelidir (daha önce fazla uymadığınız sürece veya başka bir şey yoksa, bu kararı öznel olarak yapabilirsiniz) . Bu anlamda testin çok daha nitel olduğunu düşünüyorum, ancak yine de çok yararlı olabilirler.
naught101

Sanırım bu cevapta tartışıldığı gibi .
naught101

2

İlk olarak, sorunuzdaki birkaç farklı şeye dokunduğunuzda son cümlenize odaklanacağım, ancak sorduğunuz şeyi yeterince yakaladığını hissediyorum. Sayısal rutinleri değiştiriyorsanız, yeni rutini eskisinden doğrulayana kadar başlangıç ​​koşullarını veya sistem parametrelerini değiştirmemelisiniz. En zayıf seviyede bunu, çözümünüz üzerindeki zamana göre ortalama değerleri karşılaştırmak ve uyum içinde olmak olarak görüyorum (geçici davranışlar kaos içinde birbirinden ayrılsa bile). En güçlü seviyede, iki rutinin geçici davranışın tamamını yeniden üretmesini beklersiniz. Bunlardan hangisini istediğiniz ve hangisinin kabul edilebilir olduğu, hangi soruları sorduğunuza ve çözümlerden hangi sonuçları çıkardığınıza bağlıdır.

Bir modelin "olması gerektiği gibi performans gösterip göstermediğini" söylemek tamamen farklı bir sorudur. Bunun seçtiğiniz sayısal rutinlerle hiçbir ilgisi yoktur. Modelinizi nasıl oluşturduğunuz, basitleştirici varsayımlarınızdan parametrelerin ölçümlerine / hesaplamalarına kadar, tüm kararlarınızı sorunun fiziğine dayandırmalısınız ve umarım daha önce benzer vakalarda çalışmalısınız. Bir laboratuvar ortamında çoğaltılan basit bir durumla bir modeli doğrulayabilirsiniz, ancak bunun bile önemsiz olmadığı zamanlar vardır. Önemli bir sistem parametresini bir büyüklük sırasına göre belirleyemezseniz, geçici yerel davranışta hesapladığınız küçük ayrıntılara kimsenin güvenmesini bekleyemezsiniz.

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.