Béton brut

Ja, Kłopot

2012-06-11

Błędy poznawcze, a raczej świadomość ich istnienia, są bardzo pomocne. Przykładowo: ilu z Was, zaraz po nauczeniu się nowego słowa, zaczyna zauważać zwiększoną ilość jego wystąpień? Tak jakby razem z Wami o słowie dowiedział się cały świat i uparł się na używanie go non-stop. Doświadczacie wtedy „fenomenu Baader-Meinhof”. To nie świat nagle zawziął się na używanie słowa lub faktu, to Wasz mózg zaczął „rozpoznawać” informację, którą wcześniej pomijał, nie znajdując dla niej miejsca w sensie, który interpretowaliście.

Przez ostatni tydzień, wystawiony na przemian na książkę „Roboty i Imperium” Asimova, subreddity dyskutujące o futurologii, socjologii i antropologii, karmiony przez mój zestaw kanałów RSS, zacząłem coraz bardziej dumać nad etyką mojej pracy, a może bardziej nad przyszłością mojego zawodu i jego znaczeniem dla rozwoju cywilizacji, który niechybnie ustawia go na pozycji kolizyjnej z dylematami moralnymi i etycznymi.

W drodze do elektronicznego piekła

Czym jest program komputerowy? Niczym więcej niż zestawem poleceń wykonywanych w pewnej kolejności, która może się zmienić pod wpływem ewaluacji dostarczonych danych. Najprostszym programem dostarczonym wraz z mózgiem dorastającego człowieka jest algorytm KarmieniaSięSingla. Można go zapisać następująco:

„Jeżeli jesteś głodny: otwórz lodówkę. Czy lodówka jest pusta? Wróć za pięć minut, sprawdź, czy jest pusta. Jest w niej coś? Usmaż to na oleju”.

Algorytm zrozumiały dla każdego, kto paradował w bieliźnie w sobotnie popołudnie aż do momentu, w którym ignorowanie głodu staje się niemożliwe. Na szczęście nasze oprogramowanie jest na tyle doskonałe, że wyżej wspomniany algorytm nie doprowadzi do naszej zagłady. Gdyby lodówka pozostawała ciągle pusta, a my nie otrzymalibyśmy od mózgu informacji o bezcelowości ciągłego zaglądania do niej, z pewnością czekałaby nas śmierć głodowa.

Proste algorytmy mogą zawierać skomplikowane błędy, a algorytmy skomplikowane zawierają wiele skomplikowanych błędów. Może trochę inaczej: nie algorytmy zawierają błędy (choć mogą), ale nasza implementacja jest niedoskonała. Czasem nie jesteśmy w stanie przewidzieć wszystkich stanów, jakie może przyjąć nasz algorytm, innym znów razem możemy przewidzieć, ale nie jesteśmy sobie w stanie wyobrazić, że „coś takiego może się stać”.

Czas na anegdotę. Może to miejska legenda? Nie wiem, czytałem ją gdzieś-kiedyś i nie weryfikowałem faktów, ale sama przypowiastka ilustruje pewien sposób, w jaki nieustannie strzelamy sobie w stopę.

Izraelczycy kupili sobie samoloty. Piękne, nowe samoloty, które strzelają. Pif-paf i w ogóle. Niestety, podczas testów wyszło na jaw, że samoloty te lubią sobie spaść z nieba. Ot tak, „pierdolę, nie lecę”. Inspekcja oprogramowania wykazała, że autorzy programu przyjęli sobie bazową na podstawie wysokości nad poziomem morza. Część Izraela znajduje się poniżej poziomu morza, komputer się pogubił i katastrofa gotowa.

Nie wydaje mi się, że historyjka jest prawdziwa, ale nadal ładnie nadaje się jako ilustracja naszej zdolności przewidywania. Zwykle nasze przewidywania zdolności przewidywania są błędne. Błędnie błędne.

Gdzie w tym wszystkim etyka, gdzie moralność? Jeszcze nigdzie. Wprawdzie błędnie zaprojektowany program, który zsyła z nieba tony żelastwa mogące uderzyć w obiekty cywilne, nie jest powodem do dumy, ale ilość przepisów i kontroli powodują, że „wina” się rozmywa.

Wspominałem na początku książkę „Roboty i Imperium”. Jest to powieść spinająca dwie serie kluczowe w twórczości Isaaca Asimova: „Roboty” i „Fundacja”. Seria książek o robotach wniosła do literatury i kultury popularnej ideę „Trzech Praw Robotyki”, które stanowiły moralne wzorce dla robotów zasiedlających wszechświat Asimova.

  1. Robot nie może skrzywdzić człowieka lub przez zaniechanie doprowadzić do jego krzywdy
  2. Robot musi wykonywać polecenia człowieka z wyjątkiem tych, które naruszałyby pierwsze prawo
  3. Robot musi chronić własne istnienie, o ile nie koliduje to z pierwszym i drugim prawem

Te jasne zasady stały u podstaw zaprogramowanej moralności. Jeżeli robot stawał przed sytuacją, w której nie istniało proste rozwiązanie zgodne z literą prawa (wybór „mniejszego zła” nie istniał w słowniku prymitywnych robotów), to istniało ryzyko awarii i zniszczenia jego sztucznego mózgu.

Prawa te powstały na potrzeby historii, jaką autor chciał opowiedzieć czytelnikom. Choć proste i oczywiste, nie przystają one do rzeczywistości. Dzięki temu stały się żywą częścią opowieści i elementem narracji.

While Zbrodnia Then Kara

Do robotów, jakie znamy z fantastyki, jeszcze daleko. Choć może bliżej niźli się nam wydaje. Mimo braku dwunożnych humanoidów nasz świat powoli wypełnia się automatyką z wyższej półki. Wiecie, lodówka zamawiająca jedzenie, ekspres strzelający prądem do tego drania, który osusza dzbanek i odchodzi bez zrobienia nowej kawy, autonomiczne samochody Googla czy też sprzęt do ćwiczeń regulujący obciążenie i tempo zależnie od historii naszych treningów i obecnych danych biometrycznych.

Urządzenia te, pozbawione kiedyś elementu „inteligencji”, mogły nas skrzywdzić dzięki zgromadzonym zasobom energii kinetycznej, potencjalnej, braku troski w eksploatacji: ogólnie, mechanicznie. Wraz z postępem wszystkie te urządzenia są komputerami, które uruchamiają czyjś program.

Może nie będzie buntu maszyn jak ze świata Terminatora, może nie zostaniesz zamieniony w baterię jak w Matriksie, może twój żywot dokona się na automatycznej bieżni, której algorytm zignorował anomalię w danych, jaką wyprodukował zawał twojego serca? Może programista systemu dietetycznego do twojej lodówki nakarmi cię produktami, na które masz uczulenie?

Dziennikarka CNET Molly Wood przetestowała samochód Googla, „wskakując” mu pod maskę. Nastąpiło efektowne hamowanie, programiści przybili sobie piątki, wpisując w rubrykę „potrąceni dziennikarze” wielkie, tłuste zero. Co by się jednak stało,gdyby taka sytuacja zdarzyła się na drodze z innymi uczestnikami ruchu, w warunkach pogodowych, w których próba wyminięcia przeszkody może spowodować większe zagrożenie dla życia niż kolizja? Ktoś będzie musiał zająć się ważeniem ryzyka na podstawie różnych danych i zadecydować, czy samochód w takich warunkach ma uderzyć w osobę, czy może wykonać manewr i „ryzykować” zderzenie. Ocenić szanse na przeżycie człowieka biorącego udział w kolizji przy szybkości X, wziąć pod uwagę fakt wyposażenia samochodu w system poduszek powietrznych.

Takie decyzje kierowca samochodu podejmuje podczas zdarzenia. Gorsze, lepsze, wynikające z doświadczenia lub jego braku. Sekundy i już. Programista takiego systemu ma miesiące, lata. W pewnym sensie unika wypadków, które wydarzą się w przyszłości.

Nie tylko jakość programu i potencjalne rozwiązania z dziedziny sztucznej inteligencji, nawet coś takiego jak wydajność systemu może być kluczowe. Im więcej opcji uda się przeanalizować, tym większe są szanse na wybranie tej najtrafniejszej. Tu znów kolejny problem: jeżeli mamy na decyzję czas T, to decyzja uzyskana w T*.5 może być najlepsza, ale niewykonalna ze względu na czas, który upłynął.

Wyobraźcie sobie dwunożnego robota 1, który roznosi drinki. Wyobraźmy go sobie jako nogi, czujniki odległości, żyroskop i może jakiś głośnik, który wydaje odgłosy zapraszające do korzystania. Robot przemieszcza się między gośćmi, wtem!

Obciążenie systemu nie pozwala mu nadal wykonywać wszystkich operacji 2 i w takiej sytuacji system czasu rzeczywistego, o którym tu niechlujnie chcę wspomnieć, ma zadeklarowane zadania mające priorytet w sytuacji kryzysowej. Robot ma ustać na nogach, przestać się poruszać i nie rozlać za wiele. Może przez to zignorować czujniki zbliżeniowe i kogoś popchnąć, może zacząć wydawać z siebie chrypliwe dźwięki. Trudno, alternatywa, w której automat nadal zaprasza na drinka, przewalając się na gości, jest mniej pożądana.

Te dylematy były rozwiązywane przez lata i czytelnicy mogą powiedzieć, że siedzę tu i wykrzykuję o tym, jak mi niebo na głowę leci, szerząc panikę.

Moja wizja problemów związanych z programowalną automatyką wiążę się z faktem jej wyjścia z hal produkcyjnych i laboratoriów wprost do kuchni i sypialni. Oznacza to, że część z nich trafi do programistów, którzy może nie będą świadomi tej całej problematyki powstającej na styku interakcji człowieka z maszyną.

Boję się, bo jeszcze wczoraj mój błąd mógł (i kosztował, nie raz) czyjeś pieniądze. Źle naliczone wypłaty, opóźnienia, małe tragedie. Pojutrze, siedząc w niedzielę w biurze, będę mógł nie tylko źle naliczyć twoją wypłatę, ale też podbić ci oko budzikiem.

Programistyczna bandyterka na odległość, bez zysków dla mnie, ze stratą dla ciebie.

  1. wiadomo, że na kołach byłby lepszy, ale na potrzeby demonstracji systemów czasu rzeczywistego nóżki są lepsze
  2. fachowo: się zamuliło