Регресійне тестування хаотичних числових моделей


10

Коли у нас є числова модель, яка представляє реальну фізичну систему і демонструє хаос (наприклад, моделі динаміки рідини, кліматичні моделі), як ми можемо знати, що модель працює як слід? Ми не можемо безпосередньо порівнювати два набори вихідних моделей, оскільки навіть невеликі зміни в початкових умовах різко змінять результати окремих моделювання. Ми не можемо порівняти вихідний результат безпосередньо із спостереженнями, тому що ми ніколи не можемо з достатньою деталізацією дізнатись початкові умови спостережень, а числове наближення все одно спричинить незначні відмінності, які поширюватимуться через систему.

Це питання частково натхнене питанням Девіда Кетчесона про науковий код одиничного тестування : Мене особливо цікавить, як можна було б реалізувати регресійні тести для таких моделей. Якщо незначна зміна початкових умов може призвести до серйозних змін на виході (які все ще можуть бути адекватними уявленнями реальності), то як ми можемо відокремити ці зміни від змін, викликаних зміною параметрів або впровадженням нових числових процедур?

Відповіді:


7

Все, що ви можете порівняти в таких випадках, - це статистика вашого рішення: середні значення, більш високі моменти, теплові потоки через межу та інші цілісні величини. Погляньте на один із численних статей, що обговорюють моделі турбулентності для рівнянь Нав'є-Стокса: наприклад, вони наповнені грані спектрами силових спектрів, ентальпіями, ентропіями, енстрофіями та іншими словами, про які ви ніколи раніше не чули . Всі вони є деякою цілісною кількістю потоку, і їх порівнюють проти однакових інтегральних величин, обчислених в результаті інших моделей та / або експериментів.


Ви знаєте хороший приклад паперу? Буде гарним доповненням до вашої відповіді.
naught101

Не вгорі голови - я не людина, що моделює турбулентність. Я б почав з деяких останніх робіт Тома Х'юза і працюю звідти.
Вольфганг Бангерт

Я думаю, що це хороший приклад використання зведеної статистики для визначення режиму динамічної системи: "Статистичний висновок для галасливих нелінійних екологічних динамічних систем"
Jugurtha

4

Якщо ваш код може працювати в не хаотичних режимах вашої основної проблеми, особливо в не хаотичних режимах, де ви можете використовувати метод виготовлених рішень, вам слід написати регресійні тести, які виконуються в цих режимах, навіть якщо вони вам інакше не цікаві. . Якщо ці тести не вдаються, то ви відразу знаєте, що щось пішло не так в останніх змінах коду. Тоді можна перейти до більш фізично важливих проблем.


Я не думаю, що цілі кліматичні моделі можна запустити таким чином, але, можливо, основні компоненти можуть. Щось на кшталт тесту на супер-одиницю. Хороша ідея.
naught101

2
Але в цьому справа. Ваші регресійні тести повинні мати гарне покриття коду (gcov тощо) - ваші друзі) і повинні швидко працювати. Якщо ви використовуєте цілу модель клімату як свій щоденний регресійний тест, я підозрюю, що ви витрачаєте багато часу.
Білл Барт

Я думаю, що я думав більше за принципом: ви запускаєте тест спочатку, а потім зберігаєте купу метрик (як згадується у відповіді Вольфганга). Потім ви вносите зміни та запускаєте тести ще раз і порівнюєте ті самі показники з тими, які ви зберігали минулого разу. Якщо ви вдосконалили модель (або суперкомпонент моделі), то теоретично, показники повинні все покращитися або принаймні не різко погіршитися (якщо ви раніше не помічалися, чи щось, але ви можете прийняти це рішення суб'єктивно) . Я думаю, тест у цьому сенсі набагато якісніший, але вони все ще можуть бути дуже корисними.
naught101

Як і обговорювалося у цій відповіді , я думаю.
naught101

2

По-перше, я збираюся зосередитись на вашому останньому реченні, коли ви торкаєтесь декількох речей у вашому питанні, але я відчуваю, що це адекватно фіксує те, що ви запитуєте. Якщо ви змінюєте числові підпрограми, ви не повинні змінювати початкові умови або системні параметри, доки ви не затвердили нову процедуру зі старої. На найслабшому рівні я вважаю це порівнянням середніх значень часу за вашим рішенням, і вони узгоджуються (навіть якщо тимчасові поведінки розходяться один від одного в хаосі). На найсильнішому рівні можна було б очікувати, що обидві процедури відтворюватимуть повну перехідну поведінку. Яке з них ви хочете, а яке прийнятне, залежить від того, які запитання ви задаєте та які висновки ви робите з рішень.

Що стосується того, щоб сказати, чи модель працює "як слід", це зовсім інше питання. Це не має нічого спільного з обраними вами числовими процедурами. Як ви будуєте свою модель, від спрощення припущень до вимірювань / обчислень параметрів, ви повинні базувати всі свої рішення на фізиці проблеми і, сподіваємось, попередньо виконати роботу в подібних випадках. Можливо, ви зможете перевірити модель з простим випадком, відтвореним в лабораторних умовах, але бувають випадки, коли навіть це нетривіально. Якщо ви не можете визначити важливий системний параметр в межах порядку, ви не можете сподіватися, що хтось довіриться дрібним деталям, які ви обчислюєте, в перехідній локальній поведінці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.