Bronikowski.com - Emil Oppeln-Bronikowski: Kod & Słowa

Skip navigation

Bronikowski.com G+

Ja, Kłopot

Posted in Pisanina, µGeek | 14 Comments

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 robota1, 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 operacji2 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 []

14 Responses to Ja, Kłopot

  1. Adam Mateja says:

    Świetny felieton, tytuł pomysłowy. Kolega się wyrabia :-)

  2. carstein says:

    Opi,

    Przeczytaj sobie pierwsze opowiadanie z tomu “Engineering infinity” – zdaje się Petera Wattsa. Taki motyw z odyseji kosmicznej z HAL, tyle że w dronie bojowej – sprzeczne priorytety, fuzzy logic i co z tego wynika.

    Wpis bardzo fajny.

  3. Emil Oppeln-Bronikowski says:

    @Adam

    No, po dziesięciu latach mogę się zacząć wyrabiać, prawda?

    @carstein

    Zaraz zzerkam Amazona.

  4. Że tez mnie tu jeszcze nie bylo? Wpis bardzo zacny, podoba mi sie swada z jaką jest napisane. Przywitaj się z kolegami z RSS :). Do problemu przez Ciebie opisanego dochodzą jeszcze algorytny uczenia się, personalizacji automatycznej. To jak ustawisz sposób uczenia się systemu, a przecież są systemy automatycznie uczaće sie. Nawet nasza lodówka będzie nalizować historię zakupów aby poznać nasze gusta. I jak wtedy będziemy próbować nowe smaki?
    - Chciałbym spróbować pasty pomidorowej.
    - Z historii twoich zakupów wynika, że nie lubisz pomidorów.
    - Ja wiem ale chciałbym spróbować.
    - Nie będzie ci smakować, analiza historii zakupów z ostatnich pięciu lat jasno pokazuje, że pasta pomidorowa to marnotrastwo pieniędzy, energii elektrycznej i środowiska…

    Sprzedam jeszcze jedną ciekawą “ubran legend” z podwórka wojskowości. Robiono system – sieć neuronową mający rozpoznawać czołgi w terenie. komputer przez kamerę rejestrował zdjęcie i rozpoznawał czy na zdjęciu jest prawdziwy czołg czy go nie ma. Operator miał za zadanie tylko potwierdzać lub nie. Na zdjęciach wszystko działało cudnie, parę setek zdjęć komputer rozpoznawał jak ta lala. Po wypchnięciu w teren okazało się, że nie działa nic. Dlaczego? Sesję zdjęciową bez czołgu robiono w jednym czasie, potem robiono sesję zdjęciową czołgu. Okazało się przy analizie, że wtedy była różna pogoda i system zamiast nauczyć się rozpoznawać czołg, rozpoznawał pogodę.

  5. Emil Oppeln-Bronikowski says:

    @Przemysław

    Do problemu przez Ciebie opisanego dochodzą jeszcze algorytny uczenia się

    Jap, dysponując ograniczonym czasem i niewielką wiedzą na ten temat postanowiłem zostawić to na “potem-kiedyś”. Trochę zahaczałem o to w przykładzie z morderczą bieżnią.

  6. insider says:

    i dlatego właśnie Douglas Rushkoff w “Program or Be Programmed” twierdzi, że żeby opanować dobrze technikę, trzeba się nauczyć nad nią panować i programować (modyfikować do własnych celów, zmieniać, ulepszać).
    Bez tego technika zapanuje nad nami – a my będziemy bezradni, niczym emeryt gapiący się smutnym wzrokiem na 5 rozbudowanych pilotów do swej cyfry… którym to robiło się ciszej?

  7. Cosi says:

    Być może taki Googlochód, postawiony w ekstremalnej sytuacji, podejmie decyzję, do jakiej my nigdy nie bylibyśmy zdolni, i zamiast przejechać trójkę dzieci, które wbiegły na jezdnię, wjedzie na chodnik i potrąci leżącego tam starego pijaczka.
    Może to zapoczątkuje nowy dział filozofii moralności… ;-)

  8. feaber says:

    Sporo o algorytmach podejmowania decyzji.

    Jest też coś takiego jak ‘systemy ekspertowe’ http://en.wikipedia.org/wiki/Expert_system

    Brat opowiadał mi ciekawą dygresję swojego profesora. W Czarnobylu podobno mieli system tego typu (wczesny jakiś?), który przed katastrofą poprawnie podpowiadał pracownikom co powinni zrobić. Jednak ci nie zaufali mu wtedy.

  9. valwit says:

    O ile w czernobylu im maszyna nie powiedziala od poczatku “nie idzcie ta droga, towarzysze”, to i tak nie miala nic do gadania bo zalozenie i przeprowadzenie testu bylo wbrew wszytkiemu co tam mieli w swoich zasadach powypisywane.

  10. feaber says:

    Jeszcze z ciekawych technik: http://en.wikipedia.org/wiki/Genetic_programming

    Programowanie genetyczne – tu oprogramowanie na podstawie problemu który podasz na wejściu (np. balansowanie barki rzecznej :) ) – potrafi ułożyć algorytm rozwiązania.

  11. Dziś przeczytałem wpis z przyjemnością na Kindle, siedząc na działce, pod drzewem. Bardzo sympatyczna lektura, dobrze się czytało.

    Co do samej treści. Niewątpliwie odpowiedzialność programistów wzrasta. Jeden z moich ulubionych wykładowców jeszcze za czasów studiów powiedział, że kiedy pisał program dla jakieś maszyny badającej i operującej oczy, poczuł po raz pierwszy presję, że absolutnie nie może popełnić błędu. Im więcej elektroniki w naszym życiu, tym takie sytuacje będą częstsze.

    Mimo wszystko, statystycznie rzecz biorąc sądzę, że programy wypadną lepiej niż ludzie w większości zastosowań. Przykład Google Car idealnie się tutaj nadaje. Kiedyś na moich oczach samochód który nadjeżdżał z naprzeciwka wykonał gwałtowny manewr, odbił się od wysokiego nasypu na poboczu i niemal nie dachując stanął tyłem do kierunku jazdy. Kiedy zatrzymałem się, żeby zobaczyć czy nie trzeba pomóc, dowiedziałem się, że prowadząca pani zobaczyła kota i nie chciała go potrącić. Samochód do złomowania, ojciec prowadzącej mocno potłuczony. Wniosek?

    Takich kierowców jest zapewne bardzo, bardzo dużo, znaczący procent. Program nie popełnia takich błędów. Nie panikuje. Do tego nie zasypia, nie jest zmęczony, nie prowadzi po pijanemu. Załóżmy, że kiedyś błąd oprogramowania doprowadzi do wypadku śmiertelnego. Zapewne będzie wielkie halo, draka w mediach itd. Ale być może po tym wypadku uda się znaleźć problem i RAZ NA ZAWSZE go rozwiązać. Jak z tymi samolotami. W efekcie nigdy więcej do niego nie dojdzie. A ile ofiar powodują pijani kierowcy w każde święta? Tym sposobem dochodzimy do tego, że błędy programistów są statystycznie mniej niebezpieczne, niż zwykła ludzka głupota, słabość, niedoświadczenie etc. Wiele razy słyszałem prognozy, że wyeliminowanie ludzi jako kierowców spowoduje dramatyczny wzrost bezpieczeństwa na drogach.

  12. rozie says:

    @feaber: Algorytm genetyczny potrafi znaleźć jedynie bliskie optymalnemu rozwiązanie przez ukierunkowane przeszukanie przestrzeni rozwiązań. Ale nadal nie zabezpieczy przed zmiennymi czynnikami. Szczególnie, że jest powolny. I nie gwarantuje znalezienia optymalnego rozwiązania, w szczególności może utknąć w ekstremum lokalnym.

    Co do zawału na bieżni – jakby poza zakresem kompetencji bieżni, podobnie jak wykrycie przez pralkę, czy ktoś nie próbuje wyprać kota/psa. Znaczy to urządzenie ma generować warunki do określonego wysiłku, a nie rozpoznawać, czy użytkownik jest zdrowy. Zakładam, że wykrycie zawału to coś więcej niż tylko “sprawdź tętno” (chyba tylko to robią automaty, ew. może ciśnienie/oddech jeszcze?), bo gdyby było to tak trywialne, to już dawno pewnie nosilibyśmy masowo wykrywacze zawału w komórkach, zegarkach itd.

  13. vontrompka says:

    noale my jesteśmy w starożytności programowania eksperckiego.

    na razie robimy prymitywne algorytmy ogarnialne białkiem ludzkiego umysłu. zabawa się zacznie, kiedy poziom skomplikowania tych wytworów zbliży się do poziomu tegoż białka i kiedy sprawność podejmowania decyzji (w szerszym zakresie niż wybór potraw do lodówki) je przewyższy. to będzie emancypacja maszyn, to będzie deprecjacja człowieka, jako maszyny znacznie mniej doskonałej. w taką maszynę wystarczy wbudować mechanizm unikania własnej destrukcji – i włala: ruch obrony praw robota gotowy.

    i to jest ciekawy problem etyczny: udoskonalanie algorytmów prowadzące do dewaluacji człowieka.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Hej, mamy 2012! ...a Twój Internet Explorer ma już ponad 10 lat!

Zaktualizuj natychmiast przeglądarkę lub zainstaluj którąś z alternatywnych:

...po czym wróć na naszą stronę :)