Nauka opiera się na modelowaniu komputerowym - co się dzieje, gdy idzie źle?

Od przekształcającego odkrycia penicyliny do teorii względności i mechaniki kwantowej nauka rozwijała się z zadziwiającą prędkością, zanim jeszcze pojawiły się komputery. Wiele z tego wynika z solidności metody naukowej: wyniki naukowe są zatwierdzane przez powielanie i rozszerzanie przez innych naukowców.

Zmienia się jednak sposób, w jaki robimy naukę - coraz bardziej polegamy na skomplikowanych modelach komputerowych, aby zrozumieć naturę. Okazuje się, że modele te mogą być prawie niemożliwe do odtworzenia, co oznacza, że ​​ważny kamień milowy nauki jest kwestionowany. Jakie są zatem realne konsekwencje tej zmiany i co możemy z tym zrobić?

Przednowoczesna nauka - znana jako „filozofia naturalna” - była empiryczna. Nauki empiryczne wykorzystują obserwacje z przeszłości, aby przewidywać przyszłość, które następnie można przetestować. Tycho Brahe, duńskiemu astronomowi z 16 wieku, udało się w ten sposób dokładnie i kompleksowo obserwować niebo.

Współczesna nauka jest jednak teoretyczna. Nauki teoretyczne również przewidują, ale wywodzą je z modeli matematycznych, a nie z wcześniejszych obserwacji. Pomyśl o prawach ruchu Izaaka Newtona, takich jak odwrotne kwadratowe prawo grawitacji.

Na przykład istnieje równanie opisujące orbitę Ziemi wokół Słońca. To równanie można wykorzystać do zbudowania modelu komputerowego, w którym można po prostu podłączyć określone zmienne i zobaczyć, jak zmienia się rozwiązanie. Możesz po prostu podłączyć przyszłą datę i odczytać pozycję Ziemi w tym dniu. Możesz również użyć tego samego programu do modelowania innych układów planetarnych - wszystko oparte na tej samej matematyce. Wszystko, co musisz zrobić, to podłączyć różne masy i różne inne właściwości zaangażowanych ciał.


wewnętrzna grafika subskrypcji


Takie równania matematyczne są świetne, gdy są dostępne - ale często nie są. Na przykład wiemy, że nie ma prostego równania, które rozwiązałoby tak zwane „problem trzech ciał”, Który opisuje trzy ciała krążące wokół siebie i wpływające na siebie siłami grawitacyjnymi - takimi jak księżyc, Ziemia i słońce.

Znaczna część współczesnej nauki dotyczy jeszcze bardziej skomplikowanych systemów i podobnie brakuje dokładnych rozwiązań. Takie modele muszą być „obliczeniowe” - opisujące, jak system zmienia się z jednej chwili na drugą. Nie ma jednak innego sposobu na określenie dokładnego stanu w przyszłości niż „symulowanie” jego ewolucji w ten sposób. Prognozowanie pogody jest znanym przykładem; aż do pojawienia się komputerów w 1950, niemożliwe było przewidzenie przyszłej pogody szybciej niż w rzeczywistości.

Obecna nauka zazwyczaj polega na opracowaniu modelu matematycznego opisującego skomplikowany system, a następnie przekształceniu go w symulację obliczeniową i uruchomieniu symulacji w celu wykonania prognoz w celu zweryfikowania modelu.

Gdy modelowanie nie powiedzie się

Modelowanie stosuje się w różnych dziedzinach nauki - od astrofizyki i prognoza klimatu do bioinformatyki i ekonomii. Ale tam jest rosnąca debata o tym, że nauka ta jest trudna do zweryfikowania poprzez rozmnażanie.

Okazuje się, że samo opisanie metod eksperymentalnych słowami nie wystarczy. Wynika to częściowo z tego, że języki naturalne, takie jak angielski, są po prostu zbyt niejasne, aby precyzyjnie opisywać obliczenia. Jest przecież powód, dla którego programiści używają języków programowania. Jednym z największych wyzwań w rozwoju oprogramowania jest przekształcenie niejasnych wymagań w precyzyjne specyfikacje zachowania.

Ludzie - nawet naukowcy - są w końcu omylni. Przekształcanie dowolnych informacji w program prawie zawsze wprowadza błędy po drodze. Na przykład wielu naukowców polega na narzędziach do eksploracji danych, takich jak arkusze kalkulacyjne, które zostały zaprojektowane z myślą o łatwości użytkowania, a nie odporności. Bardzo łatwo jest po prostu zsumować niewłaściwy zakres komórek w arkuszu kalkulacyjnym, bez otrzymywania ostrzeżeń. To był jeden z wady metodologiczne w dokumencie, na którym Partia Republikańska USA oparła swoją politykę pro-oszczędnościową.

Podobnie a Ostatnie badania na arkuszach kalkulacyjnych 15,770, które zostały upublicznione podczas dochodzenia w amerykańskiej korporacji Enron wykazało, że% 24 arkuszy kalkulacyjnych zawierających co najmniej jedną formułę zawiera oczywiste błędy, takie jak dodanie pustych komórek.

W naukach przyrodniczych Mars Climate Observer, sonda kosmiczna uruchomiona w 1998 w celu zbadania klimatu na Marsie, została utracona rok później, ponieważ jedna część oprogramowania sterującego błędnie zastosowała imperial zamiast jednostek metrycznych. W innym badaniu z dziewięciu niezależnych wdrożeń tego samego eksperymentu z geologii - przy użyciu tego samego zestawu danych, algorytmów i języka programowania - wykazał bardzo małą zgodność w uzyskanych wynikach.

Co więcej, nawet jeśli czytelnik artykułu badawczego będzie w stanie z powodzeniem zinterpretować dokładne intencje autora, a następnie bezbłędnie przełożyć je na program, w jego wykonaniu nadal występują pułapki. Jedna szczególnie skomplikowana klasa problemów wynika ze sposobu, w jaki komputery radzą sobie z liczbami: chociaż mogą manipulować liczbami całkowitymi, takimi jak 42 i -17, z doskonałą dokładnością, standardowe techniki manipulowania liczbami rzeczywistymi, takimi jak ?3.14 i ?2?1.414, pozwalają jedynie na przybliżoną dokładność. Przybliżenia te oznaczają, że pozornie równoważne sposoby obliczania tej samej wartości mogą dają różne wyniki.

Co można zrobić? Jeśli nawet eksperci tworzący oprogramowanie nie są w stanie w wiarygodny sposób stworzyć prawidłowego oprogramowania, to jaką nadzieję mają dla programistów amatorów, takich jak naukowcy?

Jedna linia pracy polega na opracowaniu narzędzi do projektowania „języków specyficznych dla domeny”, z których każdy jest dostosowany do konkretnej klasy problemu, takiego jak zachowanie agentów na rynkach ekonomicznych lub rozprzestrzenianie się leków w komórkach. Mają one na celu ułatwienie specjalistom opisywania obliczeń bezpośrednio znanymi terminami, zamiast pośredniego kodowania ich w języku programowania ogólnego.

Drugie podejście ma na celu zaprojektowanie bardziej wyrazistych, ale wciąż przyjaznych dla użytkownika „systemów typów” dla programów. Ułatwi to wychwycenie „głupich” błędów, takich jak puste komórki w arkuszach kalkulacyjnych lub pomieszanie wartości w różnych jednostkach. Nie może jednak wykluczyć wszystkich błędów logicznych. Trzecią linią jest opracowanie użytecznych bibliotek kodu dla dokładnej arytmetyki, unikając problemów z aproksymacją.

Istnieją wszelkie szanse, że takie podejście może pomóc w rozwiązaniu problemu lub przynajmniej wyeliminować część ryzyka. W końcu świat potrzebuje nauki, a naukowcy potrzebują komputerów - to raczej nie zmieni się w najbliższym czasie.

O autorze

Jeremy Gibbons, profesor informatyki, University of Oxford. Kierownik tematu badań języków programowania.

Artykuł pierwotnie ukazał się w The Conversation

Powiązana książka:

at Rynek wewnętrzny i Amazon