Książkę dedykuję inżynierom i naukowcom,
którzy wynaleźli i skonstruowali inteligentne maszyny

Dane oryginału

Copyright © 2018 by Massachusetts Institute of Technology. Title of English-language original: How smart machines think by Sean Gerrish, ISBN 978-0-2620-3840-9, published by MIT Press. Polish-language edition copyright © 2020 by Polish Scientific Publishers PWN Wydawnictwo Naukowe PWN Spółka Akcyjna. All rights reserved.

Przekład Filip Fierek

Projekt okładki i stron tytułowych Joanna Andryjowicz

Wydawca Edyta Kawala

Redaktor prowadzący Jolanta Kowalczuk

Redaktor Jolanta Sierakowska

Koordynator produkcji Anna Bączkowska

Skład wersji elektronicznej na zlecenie Wydawnictwa Naukowego PWN: Marcin Kośka/Woblink

Zastrzeżonych nazw firm i produktów użyto w książce wyłącznie w celu identyfikacji.

Copyright © for the Polish edition by Wydawnictwo Naukowe PWN SA

Warszawa 2020

ISBN 978-83-01-21050-2

eBook został przygotowany na podstawie wydania papierowego z 2020 r., (wyd. I)
Warszawa 2020

Wydawnictwo Naukowe PWN SA

02-460 Warszawa, ul. Gottlieba Daimlera 2

tel. 22 69 54 321, faks 22 69 54 288

infolinia 801 33 33 88

e-mail: pwn@pwn.com.pl, reklama@pwn.pl

www.pwn.pl

Spis treści

Przedmowa

Wstęp

Podziękowania

1. Sekret automatu

2. Samochody autonomiczne i Grand DARPA Challenge

3. Utrzymać się na drodze. Percepcja samochodów autonomicznych

4. Ustępowanie pierwszeństwa na skrzyżowaniach. Mózg samochodu

5. Netflix i konkurs na najlepszy algorytm rekomendacji

6. Zjednoczone zespoły: zwycięzcy Nagrody Netfliksa

7. Jak uczyć komputery, karmiąc je smakołykami

8. Jak zwyciężać w grach Atari dzięki sieciom neuronowym

9. Jak sztuczne sieci neuronowe widzą świat

10. Zaglądając pod maskę głębokich sieci neuronowych

11. Sieci neuronowe, które słyszą, mówią i pamiętają

12. Rozumienie języka naturalnego (i pytań w grze Jeopardy!)

13. Wydobywanie najlepszej odpowiedzi w grze Jeopardy!

14. Dobra strategia wyszukaną metodą siłową

15. Partia w go na poziomie eksperckim

16. Sztuczna inteligencja czasu rzeczywistego i StarCraft

17. Pięćdziesiąt (lub więcej) lat później

O Autorze

Przypisy

Przedmowa

Od mojego pierwszego spotkania z Seanem minęło ponad dziesięć lat. Pracowałem wówczas w Google, gdzie kierowałem zespołami odpowiedzialnymi za tworzenie systemów uczenia maszynowego na szeroką skalę, które wspomagały oferowane przez firmę reklamy wyszukiwarkowe. Sean, będąc w mojej grupie jednym z głównych inżynierów, pracował nad złożonymi zagadnieniami lokującymi się na granicy tego, co w ogóle było wówczas możliwe w obszarze uczenia maszynowego. Odkąd rozpoczęliśmy wspólną pracę, sztuczna inteligencja urzeczywistniana w metodach statystycznego uczenia maszynowego, będąca najpierw niedostępną, tajemną sztuką, a jednocześnie domeną zastrzeżoną dla naukowców i firm zajmujących się najbardziej zaawansowanymi technologiami, stawała się coraz bardziej przystępnym i niezwykle użytecznym zestawem technik i narzędzi, które teraz powinny znaleźć się w skrzynce każdego programisty.

Gwałtowny postęp, który dokonuje się właśnie w dziedzinie uczenia maszynowego, jest po części wynikiem eksplozji danych, a po części skutkiem odrodzenia architektury komputerowej wysokiej wydajności; owocem rywalizacji między dostawcami usług chmurowych w tworzeniu skalowalnych platform sztucznej inteligencji dla programistów i naukowców, a także następstwem gorączkowego wdrażania działającej w czasie rzeczywistym inteligencji do sprzętów przenośnych, samochodów, elektroniki użytkowej i coraz powszechniejszych urządzeń brzegowych w chmurze. Choć ów gwałtowny postęp obejmuje osiągnięcia, które zaskakują obserwatorów zdumionych tym, że maszyny osiągnęły lub nawet prześcignęły zdolności człowieka w wielu wąskich obszarach – jak opisywanie obiektów na zdjęciach, rozpoznawanie mowy, granie w gry strategiczne czy tłumaczenie z jednego języka na drugi – wciąż jesteśmy u początków rozwoju tych technologii, a w następnych dekadach czekają nas kolejne innowacje i odkrycia.

Programiści i naukowcy próbujący zrozumieć, na czym polega uczenie maszynowe, dokonują mądrego zakładu o stawkę, którą jest ich własna kariera. Doświadczenie w obszarze wspomnianych technologii już teraz jest dobrem bardzo pożądanym w największych firmach technologicznych. Wiele z tych spółek – takich jak Microsoft, Amazon, Google, Apple czy Baidu – tworzy API, pakiety narzędzi i infrastruktury obliczania w chmurze, by pracę nad rozwojem uczenia maszynowego przekazać w ręce dziesiątków tysięcy programistów na całym świecie. Jest bardzo prawdopodobne, że w nadchodzących latach większość programistów będzie musiała dodać uczenie maszynowe do swojego repertuaru, jako że coraz więcej zastosowań wykorzystuje „inteligentną” funkcjonalność. Oto dlaczego książka ta okaże się nieocenionym źródłem.

Praca Jak myślą inteligentne maszyny zrodziła się z żywionego przez Seana pragnienia zrozumienia, na czym opiera się współczesne uczenie maszynowe. Opisując podstawy tych systemów w zrozumiały i przystępny sposób, Sean czerpie z ponaddziesięcioletniego doświadczenia uniwersyteckiego i branżowego, by rozwikłać najtrudniejsze zagadnienia tej problematyki. A że systemy uczenia maszynowego bywają zdolne reprodukować ludzką inteligencję w niektórych aspektach, licentia poetica może zostać rozszerzona do granic wytrzymałości. Opisywanie tych technologii w sposób dokładny i praktyczny wynika z lat spędzonych przez Seana na polu bitwy, gdzie o tym, iż uczenie maszynowe to nie magia, człowiek dowiaduje się czasem bolesną metodą prób i błędów. Stanowi ono narzędzie niezwykle przydatne, jeśli wiemy, jak je zastosować i jakie ma ograniczenia; gdy zaś tego nie wiemy – staje się bezwartościowe.

Sean uprzystępnia idee nowoczesnego uczenia maszynowego dzięki technikom motywacyjnym i wziętym z życia przykładom, unikając jednocześnie zbędnego żargonu. W książce Jak myślą inteligentne maszyny przyjęto założenie, że czytelnik o uczeniu maszynowym i informatyce wie niewiele, stąd stanowi ona tak bardzo przystępną pozycję dla szerszego grona odbiorców. Biorąc pod uwagę gorące debaty toczone wokół opartej na uczeniu maszynowym sztucznej inteligencji, a także wpływ, jaki technologie te wywrą na naszą przyszłość, wypada, by każdy, kto chce uczestniczyć w tym dialogu, dowiedział się tyle, ile tylko może. Zważywszy na niedostatek przystępnych, a jednocześnie wiarygodnych pod względem naukowym wprowadzeń do problematyki uczenia maszynowego, praca ta jest idealną okazją do samodzielnego zgłębienia leżących u jego podłoża technologii, a jednocześnie pomaga dokonać rozstrzygnięć między tym, czemu należy dać wiarę, a tym, co należy odrzucić jako przesadę czy nonsens.

Kevin Scott

Dyrektor ds. technologii, Microsoft

Wstęp

Pomysł na tę książkę wykiełkował pewnej nocy 2010 roku w laboratorium badań nad sztuczną inteligencją, ulokowanym na ostatnim piętrze wydziału informatyki. Wziąwszy udział w kilku wykładach na temat pojazdów autonomicznych, zacząłem szperać w internecie, zaciekawiony zasadą ich działania. Spośród tego, co znalazłem, najlepiej tłumaczyły ją prace naukowe napisane przez badaczy z Carnegie Mellon University i Stanford University. Przeglądałem je przez kilka minut, zdobyłem pobieżną wiedzę o tym, jak działają samochody bezzałogowe, i na tym koniec.

Z czasem uzmysłowiłem sobie, że powtarzam ten proces wciąż od nowa. Ilekroć dowiadywałem się z prasy o jakimś nowym przełomie w dziedzinie sztucznej inteligencji czy uczenia maszynowego, zadawałem sobie to samo pytanie: jak to działa? Intrygujący był dla mnie fakt, że choć spędziłem niezliczone godziny nad badaniami i wcielaniem w życie uczenia maszynowego, zarówno na uniwersytecie, jak i w branży, nadal nie potrafiłem odpowiedzieć na to pytanie w sposób wyczerpujący. Być może – myślałem – nie mam wystarczającej wiedzy na temat sztucznej inteligencji i uczenia maszynowego albo też na zajęciach podczas studiów nie przekazywano nam właściwej wiedzy. Na większości zajęć poświęconych tej tematyce mówi się zazwyczaj jedynie o cegiełkach składających się na te osiągnięcia, nie zaś o tym, jak powinno się złożyć je w całość, by robiły ciekawe rzeczy.

Istniał jednak inny, bardziej zasadniczy powód, dla którego nie mogłem pojąć, jak działają: wiele z tych przełomowych odkryć wymagało naprawdę nowatorskich wysiłków badawczych; po prostu nie było wiadomo, jak stworzyć daną maszynę, dopóki nie udało się tego uczynić jakiejś grupie naukowców, którzy następnie opisali cały proces lub skonstruowali prototyp. Oto dlaczego naukowcy piszą o swoich odkryciach w czasopismach recenzowanych: są nowatorskie, wpływowe i nieoczywiste (i recenzowane). To jednak, że szczegółowe informacje na temat tych przełomów, raz opublikowane, zostały rozsiane po różnych źródłach – to tu, to tam – nie pomaga.

Ostatecznie uświadomiłem sobie, że wiedzą, którą zdobyłem podczas własnych poszukiwań, powinienem podzielić się z innymi, tak aby nie musieli mierzyć się z tymi samymi przeszkodami, próbując rozumieć te same rzeczy co ja. Innymi słowy, napisałem tę książkę, gdyż sam chciałem ją przeczytać.

Pracę Jak myślą inteligentne maszyny pisałem z myślą o młodszych i starszych pasjonatach technologii, a także o liderach branży, którzy chcieliby przekonać się, czy uczenie maszynowe i sztuczna inteligencja mogą przysłużyć się jakoś ich działalności biznesowej. Książka została pomyślana tak, by była dostępna szerszej publiczności – poczynając od zainteresowanego tą tematyką ucznia szkoły średniej, a kończąc na emerytowanym inżynierze mechaniku. Choć pewna wiedza na temat informatyki może się przydać podczas lektury, tak naprawdę jedynymi wymaganiami są tu ciekawość i trochę skupienia. Język matematyki ograniczyłem w publikacji do minimum, tak aby przekazać kluczowe idee, nie zrażając przy tym zwykłych czytelników.

Specjaliści od robotyki, sztucznej inteligencji i uczenia maszynowego dysponują już być może szczegółową wiedzą na temat opisywanych przeze mnie algorytmów, niemniej jednak pozostała część opowieści oraz informacje na temat budowy całych systemów raczej na pewno będą stanowiły dla nich nowość (z wyjątkiem tego, co mieści się w obszarze ich własnych badań). Mam nadzieję, że każdy dowie się z tej książki czegoś nowego.

Podziękowania

Napisanie pracy Jak myślą inteligentne maszyny byłoby niemożliwe bez ciężkiej pracy naukowców i inżynierów odpowiedzialnych za prezentowane na następnych stronach osiągnięcia, a także bez dziennikarzy, który opisali ich wysiłki od bardziej „ludzkiej” strony. W pewnym sensie praca nad tą książką była dla mnie prostym zadaniem, ponieważ naukowcy wykonali już większość ciężkiej roboty. Poświęcili lata na eksperymenty, badania i dokumentowanie własnych ustaleń. Moja rola sprowadzała się przede wszystkim do zebrania i uporządkowania wyników ich badań, i ujęcia ich w bardziej strawną formę.

W pracy nad książką pomogło mi wiele osób i instytucji. W trakcie jej pisania nieocenionego wsparcia udzielała mi rodzina. Muszę wspomnieć przede wszystkim o mojej żonie Sarze, która przeczytała więcej wersji roboczych, niżby sobie tego życzyła, oraz moich rodzicach i braciach, którzy zainteresowali mnie komputerami. Teza Technologies, gdzie jestem zatrudniony, w swojej szczodrości pozwoliła mi pogodzić obowiązki pracownika z pragnieniem napisania książki (co czyniłem nocami i w weekendy). Michael Turker z Teza przejrzał rękopis i podzielił się ze mną trafnymi uwagami na jego temat. Redakcja „MIT Press”, w tym Marie Lufkin Lee, Marcy Ross i Christine Savage, okazywała mi w trakcie pracy wiele serdeczności i pomocy, anonimowi recenzenci zaś czytający wczesne wersje publikacji wnieśli istotne spostrzeżenia. Mary Bragg podzieliła się ze mną wieloma sugestiami co do rękopisu, skomentowała go i naniosła poprawki, South Park Commons zaś stworzyło mi miłe środowisko pracy, dzięki któremu mogłem dokonać ostatnich szlifów w książce.

Pomysłami, czasem i wiedzą podzieliło się ze mną wielu moich przyjaciół, by wymienić Erica Jankowskiego, Andrew Cowitta i Ricky’ego Wonga. Daniel Duckworth przekazał mi swoje dogłębne uwagi na temat rozdziałów poświęconych Jeopardy!, mój ojciec Gary Gerrish zaś przeanalizował pierwszą połowę rękopisu. David Churchill, Ben Weber, Jie Tang, James Fan i Chris Volinsky znaleźli w swojej hojności czas, by odpowiedzieć na pytania dotyczące opisywanych w niniejszej książce projektów, którymi się zajmowali, i skomentować wstępne wersje rozdziałów. Jason Yosinski i jego współpracownicy pozwolili mi wykorzystać w rozdziale dziewiątym, poświęconym po raz pierwszy w całości uczeniu głębokiemu, ilustracje ukazujące, co widzą sieci neuronowe, Alex Krizhevsky zaś udzielił mi zgody na wykorzystanie obrazu z AlexNet (ostatecznie użyłem pewnego wariantu tej grafiki).

Miałem to szczęście, że zanim jeszcze zacząłem pracę nad niniejszą książką, przez lata otrzymywałem wsparcie ze strony wielu mentorów, formalnych czy nieformalnych, od których dowiadywałem się o istnieniu opisywanych dalej idei.

1

Sekret automatu

Flecista

W roku 1737, u świtu rewolucji przemysłowej, Francuz Jacques de Vaucanson, geniusz mechaniki, ukończył swoje arcydzieło – figurę zdolną wydobyć dźwięki z fletu i przypominającą w tym człowieka. Trzymając prawdziwy flet w ustach, owa figura ludzkich rozmiarów dęła w instrument swymi mechanicznymi płucami, w wyniku czego powstawał dźwięk. Poruszając ustami, dopasowując siłę podmuchu, a także przesuwając palce z jednego otworu fletu na drugi, produkowała sekwencję nut, która składała się na kompletny utwór muzyczny, a czyniła to „równie doskonale jak człowiek”[1]. Vaucanson, niezadowolony jednak z dzieła, które potrafiło odegrać na flecie zaledwie jedną pieśń, obdarzył je zdolnością wygrywania aż dwunastu różnych utworów[2].

Publiczność znała już wówczas podobne urządzenia, ale Flecista był wyjątkowy. Urządzenia znane były jako automaty, a ludzie byli ich wciąż spragnieni. Zlecanie ich tworzenia stanowiło hobby zamożnych Europejczyków stanowiących elitę ówczesnego społeczeństwa[3]. Przez pewien czas Vaucanson pobierał od każdej osoby chcącej zobaczyć jego przedziwne dzieło opłatę w wysokości tygodniowej pensji. Naturalność ruchów Flecisty i jego skomplikowane zachowanie stanowiły wówczas nowość. Ostatecznie Vaucanson wyruszył w podróż po Europie, podczas której prezentował ludziom zarówno Flecistę, jak i inne automaty.

Jak działał Flecista? Czy była to czarna magia? Dekadę wcześniej jeden z hierarchów kościelnych nakazał zniszczyć warsztaty Vaucansona, ponieważ uznał go za poganina; Vaucanson zatroszczył się zatem o to, by nie tworzyć żadnych dzieł, które mogłyby nazbyt przywodzić na myśl czarną magię. Czy była to mistyfikacja? Zaledwie kilka lat przed powstaniem Flecisty króla Francji Ludwika XV oczarował automat, który rzekomo potrafił grać na klawesynie. Władca, chcąc dociec, jak działa urządzenie, odkrył, że jest to po prostu kukła z pięcioletnią dziewczynką w środku[4]. Vaucanson, świadom tego oszustwa, chętnie pokazywał publiczności mechanizmy ukryte we wnętrzu Flecisty. Owszem, Flecista poruszał się płynnie i naturalnie, jednak – jak dowodził wynalazca – wykonywał on jedynie wiele procedur zakodowanych w jego mechanicznych trzewiach.

Kolejnym krokiem Vaucansona ku uwiarygodnieniu działania wynalazku było zaprezentowanie go Francuskiej Akademii Nauk, przed którą wygłosił dysertację „Mechanizm automatu Flecista”. W wykładzie Vaucanson dokładnie tłumaczył, jak działa ta niesłychana maszyna. Figura wykonana została z drewna i tektury, pomalowanych tak, by przypominały marmur, koniuszki palców były zaś zrobione ze skóry w celu uszczelnienia przestrzeni między nimi a otworami fletu. Automat poruszał się dzięki dwóm obracającym się osiom. Aby figura mogła dąć w instrument, jedna z osi – wał korbowy – tłoczyła powietrze do trzech zestawów miechów, co wytwarzało podmuchy o trzech poziomach ciśnienia: niskim, średnim i wysokim. Te trzy strumienie zbiegały się w sztucznej tchawicy wprowadzonej do ust maszyny. Druga oś urządzenia powoli obracała bęben nabity niewielkimi kołkami. Gdy bęben się obracał, kołki naciskały piętnaście sprężynowych dźwigni. Za sprawą łańcuchów i lin dźwignie uruchamiały różne części automatu. Niektóre z dźwigni kontrolowały poruszanie palcami i wargami[5]. Inne z kolei wpływały na to, który z poziomów ciśnienia zastosować podczas dęcia w flet, a także określały ułożenie języka figury kontrolującego przepływ powietrza. Lokując kołki w odpowiednich miejscach obracającego się bębna, Vaucanson mógł programować figurę tak, by generowała ona utwór, jaki tylko zażyczył sobie wynalazca; było to zatem coś więcej niż gigantyczna, wyrafinowana pozytywka. Akademia przyjęła dysertację i wydała jej entuzjastyczną ocenę[6].

Arcydzieło Vaucansona było zaledwie jednym z wielu automatów stworzonych przez wynalazców XVIII wieku na przestrzeni dekad. Automat cieszył się popularnością właśnie dlatego, że był całkowicie autonomiczny, a także dlatego, że wydawał się naśladować ludzką inteligencję. Wynalazek Vaucansona i jemu podobne stanowiły zapowiedź sztucznej inteligencji czasów rewolucji przemysłowej: gdy w ciągu kolejnych dekad wynalazki te oraz nieodzowne do ich tworzenia materiały upowszechniły się, technologowie i hobbyści zaczęli za ich pomocą naśladować nasze ciała i umysły.

Współczesne automaty

Przenieśmy się do współczesności. Samochody autonomiczne z prawdziwego zdarzenia krążą dziś między miastami Doliny Krzemowej przez całą dobę. Nauczyliśmy komputery, jak grać w gry Atari lepiej od człowieka, karmiąc je smakołykami, tak jak uczymy psa siadać albo się turlać. Jakimś cudem program komputerowy zdołał pokonać dwóch mistrzów świata w Jeopardy!. Stworzyliśmy program komputerowy zdolny pokonać najlepszych graczy w starożytnej grze go. Jednocześnie sztuczna inteligencja, która stoi u podstaw tych przełomowych osiągnięć, rozwija się w tempie wprawiającym w osłupienie nawet ekspertów.

Jeśli chodzi o to ostatnie stwierdzenie, trudno o przesadę. Zespół, który skonstruował Watsona do gry w Jeopardy!, stwierdził, że stworzenie programu umiejącego pokonać najlepszych graczy na świecie nie jest możliwe, po czym, dosłownie po chwili, tego właśnie dokonał. Wielu specjalistów utrzymywało, że napisanie programu komputerowego zdolnego wygrywać w go zajmie dziesięć lat, aż pojawił się AlphaGo, program, który był w stanie pokonać światowych mistrzów go dzięki kilkumiesięcznemu treningowi. W ciągu kolejnych dwudziestu miesięcy autorzy AlphaGo przygotowali następną wersję programu, który wiedzę na temat go, skumulowaną na przestrzeni tysięcy lat, nabył samodzielnie w ciągu trzech dni; nowa wersja AlphaGo pokonała poprzedni program w stu meczach na sto rozegranych, a dysponowała zaledwie jedną dziesiątą mocy obliczeniowej w porównaniu z wcześniejszą wersją. W pewnej mierze udało się tego dokonać dzięki rozwojowi sztucznych sieci neuronowych, które leżą u podstaw AlphaGo i które stanowią jedno z głównych zagadnień poddawanych intensywnym badaniom w ciągu ostatniej dekady. Sieci neuronowe nie tylko grają w gry – obecnie posiadają one zdolność rozpoznawania obrazów na fotografiach oraz tekstu mówionego na tyle dobrze, że konkurują już ze zdolnościami człowieka w tym względzie.

Jako że o wspomnianych przełomach technologicznych jest wciąż głośno, nasze zainteresowanie budzi pytanie: jak działają te urządzenia? Tak jak XVIII-wieczni Europejczycy zastanawiali się nad działaniem Flecisty i innych automatów tamtego czasu, tak i my, gdy rozmawiamy o nowych automatach, pytanie to pozostawiamy często bez odpowiedzi.

Na szczęście – i przypomina to sposób, w jaki Vaucanson prezentował swoją dysertację przed Francuską Akademią Nauk – ludzie stojący za najnowszymi osiągnięciami dokładnie udokumentowują procesy, w wyniku których powstają inteligentne programy komputerowe. Szczegółowe informacje na ten temat rozrzucone są po różnych źródłach; w niniejszej książce starałem się je uporządkować i w zrozumiały sposób objaśnić, jak myślą inteligentne maszyny.

W przeciwieństwie do automatu z pięcioletnią dziewczynką w środku (okazał się mistyfikacją) osiągnięcia, którym przyglądamy się w tej książce, są prawomocne i mają charakter naukowy. Choć mogą przypominać magię, ludzie nauki uważnie je prześwietlili, podobnie jak przez Francuską Akademię Nauk prześwietlony został Flecista. Osiągnięcia te również – by znów przywołać Flecistę jako punkt odniesienia – zaliczają się do automatów. Automat to maszyna samoczynna. Wydaje się, że pracuje samodzielnie, przypominając w tym często człowieka lub zwierzę, tak jakby mógł myśleć na własną rękę. Jednak z samej definicji maszyny te posłuszne są programom. Programy zaś są to sekwencje uprzednio ustalonych instrukcji, w czym przypominają program, który Vaucanson stworzył na potrzeby Flecisty, by ten mógł wygrywać swoje pieśni.

Jak zobaczymy, zawód technologa niezbyt zmienił się na przestrzeni ostatnich wieków. Technologowie nadal konstruują i programują automaty w celu odtworzenia w nich ludzkiego umysłu i ciała, wciąż też zdarza się im tworzyć automaty będące mistyfikacjami. Jedyna różnica polega na tym, że uzupełnili swoją skrzynkę z narzędziami o dźwignie, zębatki i silniki XXI wieku: komputery i ich oprogramowania.

Ruch wahadła

Automaty XVIII-wieczne często korzystały z przewagi, jaką oferowała precyzyjna technologia tamtych czasów, mianowicie mechanizm zegarowy. Zasilane były energią mechaniczną: zawieszonym wysoko masywnym obciążnikiem lub cewką obracaną kluczem. Ich autorzy sami byli często zegarmistrzami, a technologicznymi przodkami automatów były zegary wykonujące skomplikowane, a często też zabawne sekwencje mechaniczne wraz z wybiciem każdej godziny. Odmierzały czas i wykonywały przeznaczone im czynności, czerpiąc z energii potencjalnej skumulowanej w ich wnętrzu, przed wprawieniem w ruch. Mechanizm zegarowy umożliwiał przeprowadzanie programu krok po kroku, za sprawą zwalniania skumulowanej energii w małych dawkach.

Zegary mechaniczne odmierzały czas za pomocą ruchu wahadła. Otóż wahadło porusza się z taką regularnością, że stanowiło najlepszą metodę odmierzania czasu aż do lat 30. XX wieku[7]. Wraz z każdym ruchem wahadła zestaw zatrzasków i kół zębatych rejestruje upływ kolejnej chwili, wyzwalając skumulowaną energię, tak aby zegar mógł zrobić coś interesującego, a wahadło zostało lekko pchnięte i dzięki temu pozostawało w ruchu. Proces powtarza się samoczynnie. Zegarek mechaniczny działa na podobnej zasadzie: precyzyjnie wykonana sprężyna obraca nieustannie okrągły dysk wokół własnej osi. Wraz z każdym obrotem dysku koło zębate przemieszcza się o jeden lub dwa ząbki, tak aby reszta mechanizmu zegarowego mogła zrobić coś interesującego.

Po części jest to ta sama maszyneria, która pozwala komputerom elektronicznym uruchamiać programy. Komputery opierają się na zasadzie zatrzasków i kół zębatych, tyle że zamiast cichego ruchu wahadła zegarowego wykorzystują ruch elektronów przemykających z jednego obwodu do drugiego i z powrotem. Pęd elektronu znajdującego się w połowie drogi do celu po którejś ze stron zostaje zachowany, kiedy przepływa przez inną część obwodu, na przykład skręcony odcinek przewodu (elektromagnes) czy też elastyczny łuk kryształowego kamertonu (przygotowany laboratoryjnie i precyzyjnie wycięty kawałek piasku), którego wibracje liczone w milionach na sekundę przekładają się na niezwykle precyzyjną frekwencję rezonansową obwodu. Owe krystaliczne oscylatory zastąpiły wahadła mechaniczne, jako że okazały się stabilne – odporne na siły zewnętrzne w postaci trzęsień ziemi, zmian temperatury, przyspieszenia w samolotach i łodziach podwodnych – a także dlatego, że okazały się szybkie (wykonują miliony ruchów na sekundę).

Za każdym razem, gdy elektrony przechodzą między jedną częścią obwodu a drugą, elektroniczne przekładnie – podobne do tych, które występują w zegarze czy zegarku mechanicznym – rejestrują upływ chwili, jednocześnie przeprowadzając kolejną instrukcję programu. Następnie licznik instrukcji posuwa się do przodu, mechanizm zegarowy czeka na ruch powrotny elektronów (lub zastąpienie ich przez nowe elektrony) i cały proces powtarza się samoczynnie.

Automaty, o jakich będzie mowa w tej książce

Głównym zagadnieniem poruszanym w niniejszej książce będzie ruch wspomnianych elektronów, a także inteligentne zachowania, które z niego wynikają. Ani razu nie zajmiemy się instrukcjami napisanymi językiem niskiego poziomu – to jest nazwami zmiennych i funkcji sporządzonych przez programistów w celu stworzenia programu – czy też kodem maszynowym generowanym przez owe programy. Przyjrzymy się za to cegiełkom składającym się na automaty – mówiąc ogólnie, „statystycznym zębatkom i miechom” o jeden poziom wyższym. Mam nadzieję, że zrozumiawszy kwestię cegiełek tworzących owe automaty, czytelnicy książki będą w stanie lepiej pojąć, jak działają inne współczesne maszyny. Na przykład, wiedząc już, jak działa Flecista Vaucansona, jesteśmy być może zdolni poczynić pewne przypuszczenia co do niektórych mechanizmów zawiadujących Jedzącą Kaczką. Automat ten potrafił trzepotać skrzydłami, kwakać, jeść, trawić i (prawdopodobnie) się wypróżniać[8].

Automaty autorstwa Vaucansona nie wchodziły w interakcje ze światem. Powstałe wówczas urządzenia wykonywały proste, uprzednio określone sekwencje kroków. Współczesne automaty potrafią reagować na zmieniające się uwarunkowania środowiskowe, ponieważ cechuje je zdolność postrzegania. Reagują nie tylko na naciśnięcie klawisza na klawiaturze, ale również na widok samochodów i pieszych przechodzących przez zatłoczone skrzyżowanie, a także na subtelne wskazówki w pytaniach stawianych w teleturnieju Jeopardy!. Dzisiejsze automaty czynią to wszystko w taki sposób, że Vaucanson i jemu współcześni poczuliby wobec nich podziw.

Napisałem tę książkę z myślą o wszystkich tych, których ciekawi, jak działają te urządzenia. Nie trzeba mieć stopnia naukowego w dziedzinie informatyki, by ją zrozumieć, choć założyłem, że czytelnikom znane są ogólne informacje na temat komputera, na przykład wiedzą, że wykonuje on wyraźne instrukcje zakodowane przez człowieka czy też że wyświetlanie obrazów w komputerze opiera się na ilości kolorów czerwonego, zielonego i niebieskiego w każdym pikselu itd. Poza tym nawet jeśli czytelnik zna się na sztucznej inteligencji czy robotyce, niektóre fragmenty książki i tak mogą być dla niego nowością. Mimo że być może uczyliście się o cegiełkach składających się na te urządzenia podczas zajęć na temat uczenia maszynowego czy sztucznej inteligencji, istnieje prawdopodobieństwo, że nie wiecie, w jaki sposób cegiełki te zostały złożone w całość, by dać początek nowym dokonaniom w nauce; kwestia nie jest bowiem wykładana w żadnym konkretnym miejscu. Wreszcie, napisałem tę książkę w taki sposób, by czytelnik mógł przejść prosto do tematu, który go interesuje, o ile nie chce przeczytać jej od początku do końca. Cofnięcie się o nie więcej niż kilka rozdziałów zazwyczaj wystarczy, by zyskać potrzebną w lekturze wiedzę na temat określonych aspektów uczenia maszynowego i sztucznej inteligencji.

Skądinąd co to jest właściwie uczenie maszynowe i sztuczna inteligencja? Sztuczna inteligencja to szeroka dziedzina badań, której celem jest wyposażanie komputerów w zdolności do wykonywania inteligentnych czynności. Sztuczna inteligencja nie obiecuje, że komputery będą w stanie wykonywać te czynności w taki sposób, jak robią to ludzie, i jak zobaczymy, w istocie robią to często w sposób zupełnie odmienny. Sztuczna inteligencja stara się po prostu odpowiedzieć na pytanie, w jaki sposób komputery mogą wykonywać inteligentne czynności, i odnosi je do bardzo konkretnych zagadnień, na przykład jak odszukać drogę we mgle. Uczenie maszynowe to dziedzina ściśle powiązana ze sztuczną inteligencją, a poświęcona wyposażaniu maszyn w umiejętności wykonywania inteligentnych czynności przez naukę danych.

W niniejszej książce zobaczymy, że ani sztuczna inteligencja, ani też uczenie maszynowe same w sobie nie są wszechmocne. Zdarzą się sytuacje, w których potrzebować będziemy algorytmu działającego na podstawie zwyczajnej metody siłowej i niewykorzystującego do tego żadnych danych; zdarzą się też takie sytuacje, kiedy będziemy zmuszeni zaprojektować algorytmy uczące się miliardów punktów danych, przy czym pozostaną one bezużyteczne, dopóki nie połączymy ich pracy ze zwykłą logiką siłową. Aby dojść do interesujących rozwiązań, będziemy musieli połączyć oba typy algorytmów.

Wspomniałem już o niektórych wspaniałych osiągnięciach w obszarze sztucznej inteligencji i uczenia maszynowego, o których będzie mowa w książce. W jej pierwszej połowie wskażę pewne kluczowe rozwiązania, za sprawą których inteligentne maszyny postrzegają świat i wchodzą z nim w interakcje. Dowiemy się, jak to możliwe, że samochody autonomiczne nie wypadają z drogi i poruszają się w zatłoczonym środowisku miejskim. Dowiemy się też, jak to się dzieje, że sieci neuronowe pozwalają samochodom autonomicznym oraz innym urządzeniom postrzegać otaczający świat, a także jakim sposobem rozpoznają one obiekty na zdjęciach czy też rozróżniają ludzką mowę. Skupię się także na działaniu najlepszych na świecie algorytmów rekomendacji filmów, zarówno dlatego, że skrywają one fascynującą historię, jak i dlatego, że wiele z wykorzystanych w nich pomysłów przeniknęło do projektów innych maszyn, którym będziemy przyglądać się w książce. Następnie opowiem, w jaki sposób możemy trenować komputery w wykonywaniu określonych czynności za sprawą karmienia ich smakołykami, a także wytłumaczę, w jaki sposób mogą one postrzegać rzeczywistość z wykorzystaniem sztucznych sieci neuronowych. W dalszej części książki przyjrzymy się bliżej temu, jak komputery grają w różnego rodzaju gry. Mówiąc konkretniej, zajmiemy się AlphaGo i Deep Blue, które pokonały mistrzów świata Lee Sedola i Garry’ego Kasparowa w – odpowiednio – grze go i szachach; rzucimy też okiem na Watsona autorstwa IBM, który przewyższa mistrzów Jeopardy!: Kena Jenningsa i Brada Ruttera.

W książce będzie podążać szlakiem opowieści o tym, jak doszło do tych przełomów. Spotkamy wielu badaczy, którzy się do nich przyczynili, i poznamy wykraczające poza technologię i metodologię czynniki, jakie uczyniły ten rozwój możliwym. Powracającym motywem jest na przykład fakt, że konkurencja w społeczności badaczy przyczynia się do intensyfikacji wysiłków i przyspiesza postęp. Właśnie to sprawiło, że pojazdy autonomiczne trafiły do świadomości zbiorowej i że przyjęły współcześnie taki, a nie inny kształt: setki zespołów badaczy przystąpiło do konkursu, którego uczestnicy mieli stworzyć pojazd autonomiczny potrafiący poruszać się po pustyni przez długi czas bez człowieka za kierownicą. To właśnie tu – pewnego chłodnego poranka na pustyni Mojave, w chwili gdy zespoły biorące udział w konkursie przygotowywały swoje pojazdy do wyścigu – zaczyna się nasza historia.

2

Samochody autonomiczne i Grand DARPA Challenge

Większość rzeczy, których warto dokonać, nie przychodzi ani łatwo, ani szybko. Bawisz się tym, co masz, i jak ci wychodzi, tak powinno być. Należy wybrać coś, co kochasz, i trzymać się tego wszelkimi sposobami, na tym właśnie polega życie.

William „Red” Whittaker, lider Red Team[1]

Milionowy wyścig na pustyni

Pierwszy wyścig samochodów autonomicznych odbył się na pustyni Mojave w chłodny wtorkowy poranek 2004 roku. Słońce wschodziło, a pustynny żółw wychylał głowę ze swojej nory z zamiarem, że spędzi ten dzień na wygrzewaniu się na rozgrzanej promieniami słonecznymi drodze. Jego nora jednak stała się pułapką, a on nie był w stanie donikąd wyruszyć. Biologowie, których była z grubsza dwudziestka, ustawili zapory wokół jego i innych nor, by uchronić zagrożone zwierzęta przed łańcuchem pojazdów mających przejechać pobliską autostradą[2]. Przewidywali oni (zresztą słusznie), że samochody nie utrzymają się w obrębie drogi, nie mówiąc już o omijaniu znajdujących się pośród nich żółwi.

Prognozy mówiące o tym, czy samochodom uda się ukończyć rajd, znacząco się od siebie różniły. Kierownik rajdu bez mrugnięcia okiem stwierdził, że zwycięzca zawodów ukończy 142-milowy dystans w mniej niż 10 godzin[3]. Inni – włączając w to naukowców zajmujących się robotyką – wątpili, że którykolwiek uczestnik zdoła pokonać trasę[4].

Nagroda wynosiła milion dolarów. Jedną z osób starających się o zdobycie tej sumy był Chris Urmson, główny projektant w zespole badaczy konstruujących pojazd autonomiczny o nazwie Humvee.

Chris był szczupły, wysoki i miał kręcone włosy koloru blond. Pracował właśnie nad doktoratem na Carnegie Mellon University (CMU) pod okiem legendarnego robotyka Williama „Red” Whittakera. Poświęcając się wyłącznie badaniom, spędził prawie dwa miesiące na pustyni, by móc przeprowadzać testy pojazdu Humvee. Raz zdarzyło się, że nie spał nawet 40 godzin[5]. Podczas jednego z tych długich eksperymentów opatulony grubymi kocami zaobserwował, jak Humvee kręcił się w kółko[6]. Pojazd, widoczny zza lekkiej mgły dzięki przednim światłom, nagle zboczył z kursu i uderzył w metalowy płot[7]. Z kolei w innym eksperymencie dachował podczas wykonywania ostrego skrętu, w wyniku czego na kilka tygodni utracił czujniki. Chris wiedział jednak, że dobrze się stało, iż wypadki te przytrafiły się przed rajdem, a nie w jego trakcie.

Ulubieńcem mediów relacjonujących wyścig był (oczywiście) motocykl autonomiczny. Jego projektanci zamocowali w nim żyroskopy, dzięki którym utrzymywał stabilność, stosując przeciwskręty. Motocykl był jedną z ponad stu kandydatur zgłoszonych do zawodów przez badaczy i hobbystów z całego kraju[8]. Żyroskopowy motocykl był mądry, ale każdy wiedział, że jeśli ktokolwiek ukończy wyścig, będzie to zespół Chrisa i Williama z CMU. Badacze z Carnegie Mellon byli pionierami w tym obszarze badań przez ostatnie dwadzieścia lat, czego świadectwem było wypuszczenie na ulice Pittsburgha samochodu autonomicznego już w roku 1991. Nikt nie mógł zaprzeczyć ich talentom w dziedzinie elektromechaniki. A hojne finansowanie w ramach dotacji wojskowych z pewnością nie zaszkodziło[9].

W dzień wyścigu wyposażony w liczne czujniki pojazd Humvee, zaprojektowany przez Chrisa i jego współpracowników, pomknął obok żółwiej jamy, ścigany przez inny samochód. Humvee jechał przez około 25 minut. Choć nie poruszał się z dużą prędkością – wynosiła ona 15 mil na godzinę na 7-milowym odcinku – to i tak radził sobie lepiej niż pozostali kandydaci do nagrody. Z przednią szybą przysłoniętą sporym logo CAT pewny siebie Humvee mknął do przodu. Nagle jednak, gdy wjechał na skręcającą w lewo serpentynę, wzrok odmówił mu posłuszeństwa. Straciwszy wzrok, poruszał się odtąd na ślepo.

Jak skonstruować samochód autonomiczny

Jak to możliwe, że Humvee przebył samodzielnie 7 mil? Mogło wam się już gdzieś obić o uszy, że pojazdy autonomiczne, by poruszać się na własną rękę, wykorzystują uczenie maszynowe, a konkretniej głębokie sieci neuronowe. Jednak gdy Chris i jego współpracownicy, już po wyścigu, opowiadali o Humvee, ani słowem nie wspomnieli o uczeniu maszynowym czy o sieciach neuronowych. Był rok 2004, a my dopiero dziesięć lat później odkryliśmy, jak wytrenować sieci neuronowe w zdolności „widzenia obiektów”. Z jakich technologii korzystały więc te pierwsze samochody autonomiczne? W kilku następnych rozdziałach postaram się odpowiedzieć na to pytanie i jednocześnie wyjaśnić działanie algorytmów umożliwiających im poruszanie się samodzielne. Zacznę od próby wytłumaczenia, jak to się dzieje, że pojazd autonomiczny potrafi przejechać długi dystans po pustyni, na której nie ma ruchu drogowego, mając do dyspozycji listę miejsc do odwiedzenia. W kolejnych rozdziałach postaram się objaśnić algorytmy, dzięki którym pojazdy autonomiczne zdolne są „widzieć” otaczający świat oraz umieć się poruszać w środowisku miejskim na tyle dobrze, by przestrzegać przepisów drogowych w Kalifornii. Zanim jednak przejdziemy do tych szczegółowych zagadnień – z których każde odnosi się do oprogramowania pojazdu autonomicznego – spójrzmy jeszcze, w jaki sposób komputer kontroluje poziom sprzętowy samochodu.

Vaucanson, projektując Flecistę, o którym mówiliśmy w poprzednim rozdziale, zaprogramował go do wygrywania konkretnych utworów dzięki umieszczeniu kołków w określonych miejscach obracającego się bębna. Kołki naciskały na dźwignie kontrolujące ruch warg Flecisty, przepływ powietrza w jego ustach oraz jego palce. Kiedy Vaucanson chciał, by Flecista zagrał nowy utwór, wystarczyło, że stworzył nowy bęben z kołkami rozmieszczonymi w innych miejscach. Kiedy zaś chciał, by posąg inaczej poruszał ustami i palcami – zachowując katalog 12 utworów – musiał przekształcić dźwignie, łańcuchy i złącza w urządzeniu. Projekt automatu podzielił więc na dwie części – obracający się bęben oraz pozostałą część systemu – co sprawiło, że praca nad nim oraz myślenie o nim stały się prostsze. Tak samo możemy uczynić w przypadku samochodu autonomicznego.

Na razie skupmy się na samej prędkości samochodu. Mówiąc najprościej, zadaniem samochodu jest przekształcić liczbę przekazaną mu przez komputer – niech będzie to 25 – w coś bardziej namacalnego, a konkretnie prędkość. Zadanie staje się trudniejsze do wykonania, niż na to wygląda, ponieważ silnik nie zna pojęcia liczby 25. Na przykład, nawet wiedząc, że ustawienie napięcia silnika elektrycznego na poziomie 250 woltów sprawi, iż samochód będzie poruszać się z prędkością 25 mil na godzinę, nie możemy oczekiwać, że odpowiednio zmniejszając i zwiększając napięcie, otrzymamy taką prędkość, jaką chcemy. Jeśli więc chcielibyśmy, żeby samochód poruszał się z prędkością jednej mili na godzinę, nie powinniśmy się spodziewać, że aplikowanie silnikowi napięcia w wysokości 10 woltów załatwi sprawę. Przy takim napięciu samochód w ogóle nie ruszyłby z miejsca.

Ludzie żyjący w tym samym czasie co Vaucanson rozwiązali ten problem za pomocą urządzenia zwanego odśrodkowym regulatorem obrotów, który wytwarza sprzężenie zwrotne w celu kontroli prędkości. Odśrodkowy regulator obrotów to „kręcące się” urządzenie posiadające dwie metalowe kule – jak przedstawia to ilustracja 2.1 – które przywodzi na myśl silnik parowy i warsztaty czasów oświecenia. Gdy silnik zaczyna pracować szybciej, regulator również obraca się szybciej, a metalowe kule oddalają się od siebie dzięki sile odśrodkowej. Za pomocą zestawu dźwigni zawór przewodu paliwowego wprowadzonego do silnika zamyka się, spowalniając go. Jeśli zaś silnik pracuje zbyt wolno, urządzenie dodaje paliwa do silnika parowego, przywracając poprzednią prędkość. Dostosowując ilość paliwa trafiającego do silnika, regulator utrzymuje jego prędkość na stabilnym poziomie.

Ilustracja 2.1. Odśrodkowy regulator obrotów, prekursor elektronicznych systemów kontroli. Im szybciej działa silnik, tym szybciej obraca się oś z „latającymi kulami”, które odpychane są na zewnątrz za sprawą siły odśrodkowej. W ten sposób – za pomocą serii dźwigni – zamykany jest zawór silnika. Jeśli silnik pracuje zbyt wolno, zawór przepuszcza więcej paliwa

Wadą takiego regulatora jest to, że wie on jedynie, jak utrzymywać pracę silnika na tym samym poziomie. Współczesne pojazdy autonomiczne również wykorzystują pętlę zwrotną, z tą jednak różnicą, że potrafią poruszać się tylko z taką prędkością, jaką narzuci im program komputerowy. Zasadę pętli zwrotnej przedstawia ilustracja 2.2. Prędkość docelowa – załóżmy, że wynosi ona 25 mil na godzinę – to dana wejściowa pętli zwrotnej, która, zamiast kręcącego się urządzenia, wykorzystuje elektroniczny czujnik prędkości do ustalenia, jak daleko jest prędkości kół do prędkości docelowej.

Ilustracja 2.2. Pętla kontroli w złożonym z trzech reguł regulatorze PID opisanym w tekście. Regulator wykorzystuje informacje zwrotne pochodzące z prędkościomierza, by dostosować dane wejściowe silnika, takie jak moc

Intuicyjnie rzecz biorąc, czynnością, jakiej oczekujemy od algorytmu kontrolującego prędkość, jest zwiększanie dopływu energii do silnika, gdy samochód porusza się zbyt wolno, oraz zmniejszanie jej, gdy jedzie zbyt szybko. Jednym z powszechnych sposobów dostosowywania energii dostarczanej silnikowi jest kontrola proporcjonalna, nazwana tak, ponieważ zmiany w dopływie energii równają się różnicy między prędkością bieżącą a prędkością docelową pomnożonej przez określoną liczbę. Kontrola proporcjonalna nie jest rozwiązaniem idealnym – jeśli samochód jedzie pod górę lub pod wiatr, będzie poruszał się wolniej, niż chcemy. W związku z tym do takiego algorytmu kontrolującego należy wprowadzić kilka poprawek, tak aby w sytuacji, gdy samochód stale porusza się zbyt wolno, silnik został trochę pobudzony.

Jednym z najpowszechniejszych algorytmów kontrolujących jest podobny do opisanego wyżej zestaw trzech prostych reguł doprowadzający samochód do żądanej prędkości. To właśnie taki regulator (specjaliści nazywają go regulatorem PID) wykorzystany został w wielu samochodach autonomicznych, o których będzie mowa w kolejnych rozdziałach książki[10].

Skoro wiemy już mniej więcej, jak kontrolowany jest poziom sprzętowy, nie musimy myśleć zbytnio o detalach. Projektowanie sprzętu jest z pewnością rzeczą ważną, możemy jednak uznać, że stanowi ono osobne zadanie i temat na inną książkę. Aby kontrolować prędkość i sterowanie pojazdem, musimy po prostu napisać oprogramowanie, które dyktuje, z jaką prędkością ma się poruszać samochód i jak szybko mają obracać się jego koła. Mówiąc o poruszaniu się samochodu, zmieniliśmy perspektywę ze sprzętu na oprogramowanie, możemy więc skupić się teraz wyłącznie na tym ostatnim.

Planowanie ścieżki

W ramach swojej 25-minutowej jazdy podczas rajdu Humvee nie jechał w przypadkowym kierunku, podążał do określonego celu. Było tak, ponieważ samochód wyposażony został w oprogramowanie mówiące mu, w którą stronę ma się kierować. Element planujący to najważniejsza część samochodu autonomicznego: ustala on priorytety dla reszty systemu. Pozostałe aspekty pracy pojazdu – sterowanie służące utrzymaniu się na drodze i uniknięciu uderzenia w skały – stanowią środek do osiągnięcia celu, jakim jest podążanie po zaplanowanym kursie.

Organizatorzy zawodów dali zespołom biorącym w nich udział elektroniczną mapę przejazdu zaledwie dwie godziny przez startem, ponieważ nie chcieli, by uczestnicy znali ją wcześniej. Mapa – za pomocą współrzędnych GPS – wskazywała, którędy ma podążać samochód w drodze od startu do mety. Chris i jego współpracownicy wyposażyli więc swój pojazd w czujnik GPS określający jego aktualne położenie. Teoretycznie pojazd musiał po prostu nawigować z jednego punktu mapy do drugiego, korzystając przy tym z czujnika, dzięki któremu skręcał w tę i w tę stronę, byle utrzymać się na trasie przejazdu.

Zespół Chrisa, który wymyślił dla siebie nazwę Red Team, zdawał sobie sprawę, że GPS jest najważniejszym elementem systemu nawigacji, ale jednocześnie – że nie jest to jedyna potrzebna składowa. Na drodze czekały przeszkody, takie jak płoty czy skały. Red Team stworzył więc zawczasu ogromną mapę, którą nazwał „najlepszą mapą świata”, aby uzupełnić nią mapę, którą otrzymał o poranku w dzień startu[11]. Zanim zawody się rozpoczęły, członkowie ekipy tygodniami przeglądali zdjęcia satelitarne z liczącego 54 000 mil kwadratowych fragmentu pustyni w celu ustalenia lokalizacji przeszkód. Następnie, podczas dwóch godzin, które dzieliły otrzymanie współrzędnych GPS od startu rajdu, czternaście osób z zespołu (wraz z pomocą kilkudziesięciu komputerów) w pośpiechu opatrywało komentarzami teren przejazdu[12].

Kiedy to robiły, komputer na bieżąco wyszukiwał najlepszą drogę od startu do mety, odsyłając aktualizację ludziom, którzy dzięki temu mogli określić priorytety swoich badań. Chris i jego zespół zamierzali zaktualizować trasę przejazdu w pojeździe Humvee na chwilę przed startem.

Wyszukiwanie ścieżki

Być może kiedy byliście dziećmi, graliście w grę, w której udawało się, że podłoga w salonie jest tak naprawdę gorącą lawą. Celem uczestników było odnalezienie drogi w pokoju, unikając kontaktu z podłogą (czyli lawą), o ile istniała taka możliwość. Humvee miał przed sobą to samo zadanie, mianowicie musiał dotrzeć z bieżącej pozycji do następnego punktu mapy, z tą różnicą, że zamiast lawy musiał omijać niebezpieczne rejony pustyni.

Nie możemy jednak powiedzieć mu po prostu: znajdź odpowiednią drogę. Pamiętajmy, że kiedy Vaucanson projektował Flecistę, musiał wyposażyć figurę w instrukcje określające najmniejszą nawet czynność, dzięki czemu Flecista wypracował w końcu umiejętność gry na flecie. W tym przypadku jest podobnie: kiedy programujemy komputer, tak by odnalazł on odpowiednią drogę, musimy przedstawić mu jasną sekwencję kroków, dzięki którym będzie on w stanie odnaleźć ją samodzielnie. Te kroki przypominają przepis kulinarny, przy czym tutaj musimy wyraźnie opisać najdrobniejszy nawet detal.

Gdybyśmy mieli opisać formalnie proces, w ramach którego odnajdujemy drogę w wypełnionym lawą salonie, wyglądałoby to prawdopodobnie następująco. Po pierwsze, określilibyśmy w umyśle koszt wykonania kroku po danej powierzchni lub obiektach w salonie mniej więcej tak:

Tabela 2.1

Typ teren

„Koszt” jednego kroku

Dywan (lawa)

1

Stół

0,5 (mama będzie zła, ale lawa to jednak nie jest)

Kanapa

0

Śpiący pies lub kot

10

Następnie zaplanowalibyśmy drogę przez salon, szacując, która kombinacja kroków doprowadziłaby nas na drugi koniec pokoju najmniejszym możliwym kosztem. Zauważmy, że ujęliśmy problem odnalezienia odpowiedniej drogi w pojęciach minimalizacji funkcji (kosztu drogi). Jest to rzecz ważna, ponieważ uchwyciliśmy problem w kategoriach, na których dobrze znają się komputery. Nie radzą sobie z luźnym planowaniem drogi w złożonym środowisku, ale akurat w minimalizacji funkcji są niezłe. Koncept ten będzie co jakiś czas powracał w niniejszej książce.

W rajdzie, w którym wziął udział Humvee, liczył się czas, tak więc Red Team przypisał każdej komórce mapy o wymiarach metr na metr określony w sześciostopniowej skali koszt, który odzwierciedlał spodziewany czas, jaki zajmie pojazdowi przejechanie bezpiecznie jednego metra. Trudny teren uplasował się wyżej na skali kosztu niż teren łatwy, ponieważ po tym pierwszym Humvee musiałby poruszać się wolniej. Zespół przyznał specjalne kary tym częściom terenu, które były nieutwardzone, gdzie brakowało danych GPS, stromych i nierównych, a także tym komórkom mapy, które znajdowały się zbyt daleko od korytarza określonego współrzędnymi GPS. Dysponując już mapą z kosztem przypisanym każdej kwadratowej komórce, zespół musiał wyznaczyć odpowiednią drogę.

W przypadku znanej metody wyszukiwania ścieżki za pomocą algorytmu Dijkstry komputer wyszukuje ścieżkę przez podnoszenie „granicy” wyszukiwania z punktu startowego[13]. Program wykonuje pętlę, przesuwając nieco granicę wraz z każdym uruchomieniem pętli, dopóki granica nie osiągnie punktu docelowego. Wraz z podnoszeniem granicy przez program powoli zwiększa się koszt, który program skłonny jest ponosić za dotarcie do jakiegokolwiek punktu w ramach granicy; tak więc ilekroć rozciąga granicę, zawierając w niej kolejny punkt, ów nowy punkt lokuje się na krawędzi tego, ile program jest skłonny zapłacić. Z rozciągania granicy w taki sposób płynie taka oto korzyść, że można dzięki niemu prowadzić wyszukiwanie wśród najbardziej obiecujących tras – takich jak płaskie drogi, którym przypisany jest niski koszt – na długo przedtem, zanim przystąpi się do wyszukiwania w obrębie trudnych tras, na przykład trudnego terenu pozbawionego dróg.

W momencie gdy osiągnięty zostanie punkt docelowy – w przypadku samochodu autonomicznego jest to cel podróży – komputer wie już, że ścieżka istnieje, i zna także jej koszt. O ile komputer przechowuje dane na temat rozmieszczenia granic na mapie, może sprawnie cofnąć się i znaleźć najkrótszą ścieżkę do punktu docelowego. Ilustracje 2.3a, 2.3b i 2.3c ukazują, jak wygląda zarówno najkrótsza ścieżka, jak i granica wyszukiwania.

Informatycy i robotycy poświęcili wiele lat na badanie tego typu algorytmów i wiedzą, w jaki sposób w ułamku sekundy odnaleźć ścieżkę o najniższym koszcie na obszernych mapach. Jeśli zaś rozwiązaniem nie musi być najlepsza możliwa ścieżka, a jedynie ścieżka wystarczająco dobra, zajmuje im to jeszcze mniej czasu. Kiedy już zespół Red Team za pomocą algorytmu zaplanował trasę pojazdu, Humvee był gotowy do startu.

Ilustracja 2.3a. Przykładowa mapa. Ciemne odcienie oznaczają wyższy koszt podróży

Ilustracja 2.3b. „Granica” wyszukiwania w różnych iteracjach algorytmu Dijkstry

Ilustracja 2.3c. Optymalna ścieżka wiodąca przez mapę

(a) Mapa z czterema różnymi rodzajami terenu. Każda komórka siatki odpowiada metrowi kwadratowemu i przyjmuje jeden z czterech kolorów oznaczających określony typ terenu. Ciemniejsze odcienie powiązane są z wyższym kosztem i niełatwo jest je przebyć. Pozycja startu i pozycja mety zaznaczone są – odpowiednio – po lewej stronie i u góry ilustracji. Zaczynając od najjaśniejszego, a kończąc na najciemniejszym odcieniu, czas potrzebny na przebycie komórki wynosi 1, 3, 9, 18 sekund na metr; (b) Wybrane algorytmy wyszukiwania uruchomione przez podniesienie „granicy” wyszukiwania z punktu startowego. Każda granica reprezentowana jest przez linię konturu; ukazuje ona, jaki dystans przejedzie samochód w 175, 350, 525 i 700 sekund; (c) Po zakończeniu pracy algorytmu na mapie naniesiona jest najbardziej odpowiednia ścieżka wiodąca przez siatkę kosztu. W tym przypadku ścieżka utrzymuje się z reguły na jasnym terenie, po którym samochód może przejechać szybciej

Nawigowanie

Aby odszukać swoją pozycję na mapie, Humvee wykorzystywał czujnik GPS przymocowany do pojazdu przez Chrisa. Czujniki GPS pracują na podstawie sygnałów pochodzących z ogromnego zbioru doskonale skalibrowanych satelitów umieszczonych na orbicie przez Departament Obrony Stanów Zjednoczonych. W danym momencie niektóre z tych satelitów – nie zawsze te same – stają się widoczne dla czujnika GPS; wykorzystuje on cztery z nich, by określić aktualny czas (t) i aktualną pozycję (x, y, z) z dokładnością do kilku metrów.

Niemniej jednak GPS to nie wszystko, czego potrzebuje samochód autonomiczny. Po pierwsze, pomiary GPS nie zawsze są dokładne: dobry system GPS potrafi być dokładny co do kilku centymetrów, ale niektóre mylą się w najgorszych wypadkach nawet o setki metrów. W wynikach GPS mogą także powstawać przerwy wynikające z kłopotów sprzętowych, kiedy przejeżdża się w tunelu, albo też z powodu zakłóceń sygnału satelitarnego, kiedy przechodzi on przez jonosferę planety. GPS nie podaje też samochodowi bezzałogowemu jego kierunku jazdy; Humvee mógłby zgubić swoją pozycję, gdyby na przykład koła pojazdu poślizgnęły się na piaszczystej drodze. Sprawą kluczową była więc dla pojazdu Humvee znajomość drogi bez konieczności korzystania z GPS.

W związku z tym Red Team wyposażył pojazd w przyspieszeniomierze pozwalające kontrolować przyspieszenie w trzech wymiarach. Humvee gromadził owe informacje, by móc szacować swoją prędkość i swoje położenie. Dodano także żyroskopy, które są przyspieszeniomierzami mierzącymi kąt obrotu, dzięki czemu Humvee kontrolował swoją aktualną orientację.

Humvee zestawiał ze sobą wyniki przyspieszeniomierzy i systemu GPS za pomocą filtra Kalmana, modelu matematycznego odkrytego w roku 1960. Filtr Kalmana to metoda śledzenia obiektu w czasie – pozycji łodzi podwodnej czy właśnie maszyny Humvee – za pomocą przekształcania zbioru pomiarów obiektu w jego przybliżoną pozycję. Kluczową koncepcją stojącą za filtrem Kalmana jest rozpoznanie, że nigdy tak naprawdę nie znamy faktycznego położenia obiektu i jego prędkości: możemy jedynie dokonywać przybliżonych pomiarów, co przywodzi na myśl sygnały generowane przez sonar. Niektóre z nich mogą być błędne, nie chcemy ich więc brać od uwagę, by nie zniekształcić przybliżonego pomiaru – może to być odbicie orki lub jakiś wodorost – filtr Kalmana zaś jest w stanie wygładzić te niepasujące elementy.

W gruncie rzeczy filtr Kalmana zakłada, że żaden z pomiarów nie będzie prawidłowy; uznaje za to, że wszystkie razem wzięte są prawidłowe jako średnia. O ile dokona wystarczającej liczby obserwacji, potrafi określić rzeczywiste położenie obiektu i jego prędkość z niesamowitą dokładnością. Filtr Kalmana, który wykorzystuje dane z przyspieszeniomierzy, żyroskopów i systemu GPS, a także pomiary z kół, pozwala samochodowi autonomicznemu na określenie pozycji – nawet podczas dwuminutowego przestoju w działaniu GPS – z dokładnością do centymetrów[14].

Przypisy

Rozdział 1

1 Gaby Wood, „Living Dolls: A Magical History of the Quest for Mechanical Life by Gaby Wood,” The Guardian, February 15, 2002, accessed February 5, 2017, https://www.theguardian.com/books/2002/feb/16/extract.gabywood.

2 Georgi Dalakov, History of Computers and Computing, Automata, Jacques Vaucanson, accessed March 9, 2017, http://history-computer.com/Dreamers/Vaucanson.html.

3 Tom Standage, The Turk (New York: Berkeley Publishing Group, 2002), xii.

4 Standage, The Turk, 5.

5 Wood, „Living Dolls”; Standage, The Turk, 5.

6 Dalakov, History of Computers.

7 Warren A. Marrison, „The Evolution of the Quartz Crystal Clock,” The Bell System Technical Journal 27, no. 3 (1948): 517–536.

8 Według pewnych źródeł kaczka Vaucansona tak naprawdę nie potrafiła trawić; w swym wnętrzu miała tajemną komorę, do której trafiał pokarm i którą opuszczały sztucznie zabarwione fekalia.

Rozdział 2

1 Whittaker, quoted in Radha Chitale, –Red Team Falls to Its Own Offspring,” The Tartan [CMU Student Newspaper], October 10, 2005, accessed June 15, 2017, https://thetartan.org/2005/10/10/scitech/redteam.

2 Marsha Walton, –Robots Fail to Complete Grand Challenge,” CNN, May 6, 2004, accessed June 16, 2017, http://www.cnn.com/2004/TECH/ptech/03/14/darpa.race.

3 Joseph Hooper, „From DARPA Grand Challenge: 2004DARPA’s Debacle in the Desert,” Popular Science, June 3, 2004, accessed June 16, 2017, http:// www. popsci.com/scitech/article/2004-06/darpa-grand-challenge-2004darpas-debacle-desert; Chris Urmson et al., „High Speed Navigation of Unrehearsed Terrain: Red Team Technology for Grand Challenge,” Technical Report, CMU- RI-04–37, Robotics Institute, Carnegie Mellon University, 2004.

4 „Driven to Innovate,” Carnegie Mellon University Homepage Archive, 2010, accessed October 16, 2016, http://www.cmu.edu/homepage/computing/2010/fall/driven-to-innovate.shtml.

5 Douglas McGray, „The Great Robot Race,” Wired, March 1, 2004, accessed June 15, 2017, https://www.wired.com/2004/03/robot-3.

6 Ibid.

7 Ibid.

8 Ibid.

9 Ibid.; Joshua Davis, „Say Hello to Stanley,” Wired, January 1, 2006, accessed June 15, 2017, https://www.wired.com/2006/01/stanley.

10 Czasami regulator gromadzi błędy na przestrzeni czasu i dołącza je do sygnału wysyłanego do silnika; sprawdza się to, gdy błąd jest stale zbyt wysoki lub zbyt niski (nazywamy to kontrolą całkową). Czasami regulator rejestruje tempo zmian błędu w celu dostosowania sygnału wysyłanego do silnika, przewidując przyszłe zmiany (nazywa się to kontrolą pochodną). Złożony z trzech reguł regulator nazywamy regulatorem PID czy też regulatorem proporcjonalno-całkująco-różniczkującym. Technicznie rzec biorąc, Humvee wykorzystywał jedynie element proporcjonalny i element różniczkujący w celu kontroli przepustnicy; ponadto nadano mu nieco inny kształt.

11 McGray, „The Great Robot Race.”

12 Choć opatrywanie mapy odręcznymi komentarzami jest czasochłonne, w przypadku samochodu autonomicznego stanowi ono sensowne rozwiązanie, jako że wystarczy tylko raz stworzyć dokładną mapę dla wszystkich pojazdów na drodze i nie trzeba jej aktualizować z dużą częstotliwością.

13 Algorytm stosowany w wielu samochodach autonomicznych nazywamy algorytmem A*; wykorzystuje on aproksymacje, by przyspieszyć proces wyszukiwania odpowiedniej ścieżki.

14 Sebastian Thrun et al., „Stanley: The Robot That Won the DARPA Grand Challenge,” Journal of Field Robotics 23, no. 9 (2006): 661–692.