Obecny wpis utworzyłem z intencją wywołania dyskusji wśród studentów PW (głównie informatyków i elektroników) na temat siły i ograniczeń algorytmów. Do rozmowy zapraszam oczywiście inne osoby, również stałych bywalców blogu. Zachęcam wstępnie do przeczytania krótkiego tekstu o algorytmach, który oświetli temat z szerszej perspektywy niż tylko programistyczna.
Oto link do tekstu: Algorytmy. Uwagi z pogranicza informatyki i metodologii nauk.
Zacznijmy od oczywistego faktu, że algorytmami zajmują się przede wszystkim informatycy i to oni zapisują je najbardziej precyzyjnie (co wymusza niejako specyfika języków programowania oraz przyszła implementacja na określonego typu maszynach).
Mimo to proponuję wykroczyć poza informatykę i rozważyć taki oto punkt widzenia, zgodnie z którym algorytm jest pewną sformalizowaną, schematyczną i możliwą do zautomatyzowania metodą zdobywania wiedzy naukowej. (Mówiąc pedantycznie „jest opisem takiej metody”, ale ponieważ ów opis określa precyzyjnie kolejne czynności do wykonania, można go utożsamić z metodą).
Szeroko pojętą metodę algorytmiczną stosuje zatem i matematyk – realizując precyzyjnie reguły pewnego rachunku (np. całkowego), i chemik – syntetyzując związki chemiczne zgodnie z regułami swojej dyscypliny (są tam np. precyzyjne wzory określające proporcje poszczególnych składników), i fizyk – wyznaczając przyszłe stany układów fizycznych (np. układów planetarnych) na podstawie praw przyrody.
Kontynuując dyskusję rozpoczętą na zajęciach, zastanówmy się, jakie są plusy i minusy powyższej metody. Nie ignorujmy oczywiście pewnych ustaleń samych informatyków.
Na dobry początek proponuję rozważyć taki oto zestaw plusów:
1) ekonomia poznawcza: jeden uniwersalny schemat (algorytm właśnie) reprezentuje nieskończoną liczbę rozwiązań problemów określonego typu; rozwiązania te uzyskujemy, stosując algorytm do odpowiednich danych.
2) intersubiektywność i powtarzalność: każda osoba – niezależnie od swoich osobistych poglądów, przyzwyczajeń, nastrojów etc – stosując ten sam algorytm do tych samych danych, dojdzie do tego samego wyniku.
3) możliwość automatyzacji: każdy algorytm można zakodować w sposób możliwy do realizacji na niezawodnej i szybszej od człowieka maszynie; uzyskujemy w ten sposób istotne wzmocnienie naszych zdolności poznawczych.
4) wiedzo-twórczość, która przejawia się na dwóch poziomach:
a) każde zastosowanie algorytmu do nowych danych skutkuje nową wiedzą (rozwiązaniem nowego problemu),
b) trafnie dobrany zbiór algorytmów ułatwia penetrację danej dziedziny na nowym jakościowo poziomie (na niższym poziomie dokonała się już automatyzacja).
Po stronie minusów – w pewnym sensie symetrycznych względem wypunktowanych plusów – proponuję zapisać, co następuje:
5) niepełność (albo: niewystarczalność): z ustaleń teoretyków – zajmujących się teorią obliczeń – wynika, że nawet w dziedzinie zagadnień dobrze określonych istnieją problemy algorytmicznie nierozwiązywalne (inaczej: nieobliczalne), np. problem stopu maszyny Turinga czy problem komiwojażera (jest on nierozwiązywalny praktycznie). Wydaje się nadto, że niektórych zagadnień w ogóle nie da się uściślić dla potrzeb algorytmicznego rozwiązania.
6) mechaniczność: realizacja algorytmu nie wymaga rozumienia – ani rozumienia rozwiązywanego problemu, ani istoty wykonywanych czynności; ponadto, realizacja algorytmu może przebiegać bez udziału świadomości.
7) nie-twórczość: system działający algorytmicznie jest odtwórczy; realizuje skrupulatnie to, co zaplanował jego twórca.
Powyższe punkty są oczywiście dyskusyjne, a niektóre nawet przeciwstawne (np. z jednej strony wiedzo-twórczość, a z drugiej odtwórczość).
Mam nadzieję, że formuła taka będzie sprzyjać ożywionej wymianie zdań…
Algorytmy są bardzo dobrym sposobem na usprawnienie trywialnych i uciążliwych czynności. Jednak trzeba z nimi bardzo uważać, aby nie stać się ich niewolnikiem. Algorytmizacja wszystkiego nie powinna przyćmiewać zdrowego rozsądku. Tutaj chciałbym podać przykład próby załatwienia skomplikowanej sprawy w urzędzie. Wyobraźmy sobie, że musimy w nim załatwić pewną sprawę. Podchodzimy do pierwszego okienka (bo tak, każe algorytm), pobieramy numerek stoimy w kolejce, idziemy do pierwszego okienka, potem drugiego i tak kilka razy. Finalnie okazuje się, że wszystko można było załatwić w pierwszym okienku, ale niestety przepisy nakazują odsyłanie petenta, aż zbierze wszystkie pieczątki i podpisy.
To oczywiście bardzo skrajny przykład ale wszyscy się z nim zetknęliśmy chociaż raz w życiu i jest to bardzo uciążliwe.
Poza tym algorytmem nie da się rozwiązać wszystkich problemów. Szczególnie jeśli zmieniają się one dynamicznie w trakcie jego pracy, lub odpowiedzi na poszczególnie pytania, na które on próbuje odpowiedzieć są niejednoznaczne lub co gorsza na równi prawdopodobne.
Warto jeszcze dodać, że algorytm wymaga dopracowania i testów przed rozpoczęciem korzystania z niego. Jeśli na etapie projektowania nie wychwycony zostanie jakiś błąd skutki mogą być katastrofalne.
Algorytmy narzucają pewien określony sposób myślenia – informatycy muszą w pewnym sensie “wcielić się” w rolę maszyny, która jest w stanie jedynie wykonywać zadane jej polecenia (przynajmniej dopóki nie mówimy o sztucznej inteligencji). Co prawda pozwala to na dużo szybsze rozwiązanie wielu problemów, z którymi stykamy się na codzień, jednak zastanawiam się, czy przestawienie się na myślenie w taki sposób nie zabija w nas kreatywności i intuicji? Można to zauważyć w różnych sferach życia – na przykład w edukacji. Jesteśmy pokoleniem rozwiązywania testów i wpasowywania się w klucze. Oryginalne podejście do problemów nie jest już tak mile widziane – oceniane jest zapamiętanie schematów i odtwarzanie ich. Jednak jaki to ma sens biorąc pod uwagę automatyzację? Bardzo prawdopodobne jest, że wiele osób wykonujących odtwórcze zawody, takie jak na przykład zawód sprzedawcy czy kosmetyczki, zostanie niedługo zastąpionych robotami. Dla przykładu w niektórych restauracjach McDonald nie pracują już osoby przyjmujące zamówienia – zamiast tego klient wybiera swoje zakupy na ekranie automatu. Algorytmy mają swoje ograniczenia, natomiast kreatywne myślenie jest na chwilę obecną przywilejem człowieka.
Zgadzam się poniekąd ze stwierdzeniem, że algorytmy cechuje mechaniczność. Widoczne jest to szczególnie przy algorytmach wykorzystujących sztuczną inteligencję, uczenie maszynowe. Twórcy tych algorytmów traktują je czasami jako swoistą "czarną skrzynkę", która po prostu ma działać. Rozumiemy ogólny koncept działania takiego algorytmu ale nie potrafimy przewidzieć jego zachowania.
Nie zgadzam się jednak z twierdzeniem, żę algorytmy są nietwórcze. Algorytmy wykorzystujące AI potrafią bowiem generować poezję na wysokim poziomie czy swoiste dzieła sztuki – obrazy generowane dzięki (Google DeepDream).
Mówiąc o tym szerszym spojrzeniu na algorytmy można dojść do wniosku, że ta powtarzalność je cechująca może zostać wykorzystywana do optymalizacji rozwiązania pewnych problemów. Powtarzalność algorytmów i wyników otrzymywanych dzięki nim może wymusić na ich twórcy/ użytkowniku chęć ich ulepszenia, pobudzić twórcę do kreatywnego myślenia.
Z drugiej strony w dzisiejszych czasach jeśli jakiś problem można wykonać za pomocą algorytmu to chętniej sięgniemy własnie po algorytm niż zmusimy się do dogłębnego zrozumienia tematu/ kreatywnego myślenia. Będzie to po prostu prostsze i mniej dla nas wymagające. Widoczne jest to np. przy rozwiązaniu problemów matematycznych takich jak równania różniczkowe. Łatwiej nauczyć się algorytmu, który będzie działał zawsze tak samo niż spróbować podejść do problemu po swojemu. Nawet jeśli podążanie za algorytmem może okazać się czasochłonne i nieefektywne to sam fakt, że zawsze możemy na nim polegać jest dla nas najbardziej istotny.
Jeśli tworzymy jakiś algorytm, to jak najbardziej zmusza nas to do twórczego myślenia, bo tworzymy coś nowego. Wbrew pozorom korzystanie przez innych z gotowego algorytmu również może wpłynąć na myślenie. Sądzę tak, ponieważ są ludzie, którzy bezmyślnie odtwarzali wzorzec, a istnieją przecież ludzie, którzy zauważą, że da się jakoś ulepszyć podany algorytm. Wadą algorytmu jak dla mnie jest to, że musimy rozumieć, co to jest za algorytm, bowiem wystarczy jakiś wzorzec wykonać mechanicznie. Zaletą algorytmu jest to, że często ułatwia on bardzo pracę, lecz z drugiej strony algorytm nie jest w stanie "przewidzieć" wszystkiego przez co jego skuteczność spada.
Poza tym działanie wg algorytmów w życiu codziennym powinno usprawnić je, lecz w rzeczywistości często bywa na odwrót. Dzieje się tak najczęściej przez to, że ludzie są niezbyt zdyscyplinowani lub niedoinformowani. Np. kiedy idziemy do urzędy załatwić jakąś sprawę, to teoretycznie algorytm naszego działania powinien być taki, że na recepcji lub dzięki objaśnieniom na tablicach lub drzwiach pokoi, trafiamy do odpowiedniego pokoju i tam załatwiamy co trzeba. Niestety najczęściej wygląda to tak, że chodzimy od jednego pokoju do drugiego, a na samym końcu znowu zostajemy wysłani do pokoju, w którym byliśmy na początku.
Inną zaletą algorytmów jest to, że dzięki nim można ratować życie. Chodzi mi o to, że ratownicy, lekarze czy nawet w pewnym stopniu zwykli ludzie są uczeni kroków postępowania z poszkodowanym. Dzięki temu nie działa się chaotycznie, lecz zgodnie z pewnym algorytmem, który pozwoli człowiekowi żyć dalej.
Z drugiej strony gdy ludzie zaczynają żyć wg pewnych algorytmów, tzn. codziennie robią to samo o określonej porze, to w życie zaczyna się wkradać monotonia. Nie jest to dobre, ponieważ wydaje mi się, że przez to ludzie stają się mniej szczęśliwi i mniej "wydajni" w tym, co robią.
Pingback: Algorytmiczne podejście do zdobywania, zapisywania i przekazywania wiedzy. Szkodliwe czy pożądane? | Cafe Aleph
Pingback: Między wiedzą “jak” i wiedzą “że”. Kontekst algorytmiczny. | Cafe Aleph