Z Błażejem Osińskim, Senior Data Scientist w deepsense.ai rozmawiamy o przeniesieniu sieci neuronowej z symulatora do rzeczywistości podczas prac badawczych nad autonomicznym pojazdem dla firmy Volkswagen; problemach stojących przed wprowadzeniem do powszechnego użytku samochodów autonomicznych; specyfice, możliwych zastosowaniach i przewidywalności Reinforcement Learning oraz ciekawym zastosowaniu dla gier Atari.
Uczenie maszynowe to szerszy termin, obejmujący trzy poddziały: uczenie nadzorowane, uczenie bez nadzoru i uczenie ze wzmocnieniem. Przy wyborze odpowiedniej techniki kluczowe jest pytanie jakiego typu problem rozwiązujemy? W tym przypadku chodzi o sekwencyjne podejmowanie decyzji. Czyli jaki szereg akcji należy podejmować, aby uzyskać zamierzony efekt. System ma więc podejmować decyzje i nauczyć się prawidłowych zachowań na podstawie własnych błędów i ich konsekwencji, także długoterminowych. Po ustaleniu jakiego typu problem będziemy rozwiązywali, należy też stwierdzić jaka metoda będzie najlepiej się w stanie nauczyć się go rozwiązywać, czyli “kto” będzie podejmował decyzje. W naszym przypadku korzystamy właśnie z głębokich sieci neuronowych.
Za jakie kwestie był Pan odpowiedzialny w zespole, który pracował nad projektem badawczym związanym z pojazdem autonomicznym dla Volkswagena? Kto poza Panem tworzył ten zespół?
Badania przeprowadził zespół z deepsense.ai, czyli Adam Jakubowski, Paweł Zięcina i Krzysztof Galias, początkowo także Tomasz Grel i Przemysław Podczasi. Poza tym Piotr Miłoś, który oprócz tego, że pracuje u nas, reprezentuje również Instytut Matematyki PAN oraz Henryk Michalewski, profesor Uniwersytetu Warszawskiego. Zajmowaliśmy się rozwojem oprogramowania i samych algorytmów, które odpowiadają za prowadzenie samochodu. W dużym skrócie wyglądało to tak, że otrzymaliśmy od Volkswagena przygotowany pojazd, do którego mogliśmy podpiąć komputer sterujący samochodem za pomocą stworzonego przez nas oprogramowania opartego o uczenie maszynowe.
Jak wyglądały prace nad systemem?
Powstające problemy staraliśmy się rozwiązać przy pomocy tzw. transferu między symulacją a rzeczywistością. Zaczęliśmy od szkolenia autonomicznego pojazdu w symulowanym środowisku. System na starcie nie miał żadnego doświadczenia, ale pod koniec treningu miał umiejętności zbierane przez sto lat prowadzenia samochodu. Wynik taki udało się osiągnąć dzięki prowadzeniu treningu w kilku instancjach równolegle i przyspieszonym czasie. Wszystkich zachowań uczył się sam. Gdy opanował już jazdę na symulatorze, przenieśliśmy go na prawdziwy samochód i zaczęliśmy wykonywać testy mające sprawdzić czy rzeczywiście będzie mógł sam jeździć.
Jakie rozwiązania zastosowaliście, aby system mógł uczyć się sam?
System wykorzystany przez nas do sterowania samochodem autonomicznym został oparty o głębokie sieci neuronowe. A uczył się przy pomocy Reinforcement Learning, czyli uczenia ze wzmocnieniem, które w dużym skrócie polega na tym, że programujemy na wejściu system nagród i kar. Zadaniem systemu jest tak dostosowywać swoje zachowania, aby optymalizować nagrody a minimalizować kary. Termin uczenia ze wzmocnieniem – stosowany przy tworzeniu algorytmów – zainspirowany jest biologią. Wykorzystywany jest podobny mechanizm, co przy tresurze zwierząt.
Czym uczenie ze wzmocnieniem różni się od uczenia maszynowego? I jak ma się ono do głębokich sieci neuronowych?
Wszystkie te terminy przeplatają się ze sobą. Uczenie maszynowe to szerszy termin, obejmujący trzy poddziały: uczenie nadzorowane, uczenie bez nadzoru i uczenie ze wzmocnieniem. Przy wyborze odpowiedniej techniki kluczowe jest pytanie jakiego typu problem rozwiązujemy? W tym przypadku chodzi o sekwencyjne podejmowanie decyzji. Czyli jaki szereg akcji należy podejmować, aby uzyskać zamierzony efekt. System ma więc podejmować decyzje i nauczyć się prawidłowych zachowań na podstawie własnych błędów i ich konsekwencji, także długoterminowych. Po ustaleniu jakiego typu problem będziemy rozwiązywali, należy też stwierdzić jaka metoda będzie najlepiej się w stanie nauczyć się go rozwiązywać, czyli “kto” będzie podejmował decyzje. W naszym przypadku korzystamy właśnie z głębokich sieci neuronowych, to one na podstawie informacji z sensorów wybierają, jak prowadzić.
Z jakimi trudnościami wiąże się przeniesienie sieci neuronowej do prawdziwego samochodu? W jaki sposób algorytm wypełnił lukę między symulacją a rzeczywistością?
Trudności widoczne są już, gdy porównamy choćby zrzut z ekrany symulatora z tym co widzimy za oknem prawdziwego samochodu. Przenoszenie jest więc pewnym wyzwaniem. Zastosowaliśmy przy nim kilka metod. Jedna z nich polegała na tym, że w symulatorze przedstawiliśmy różne wersje tamtejszego świata. Zmienialiśmy pogodę albo oświetlenie, aby system widział bardzo różne wersje drogi i nauczył się generalizować z tych bardzo różnych widoków rzeczywistości. Inny przykład to stosowanie sieci, które potrafią zrobić semantyczną segmentację. Czyli mamy klasyczny algorytm w uczeniu maszynowym, który na podstawie zdjęcia jest w stanie powiedzieć, który jego fragment jest drzewem, drogą albo pieszymi czy innym samochodem. I to była jedyna część naszego systemu, w której uczeniu używaliśmy zdjęć z rzeczywistości. Cała reszta oparta była o dane z symulacji.
Gdzie przeprowadzone zostały testy samochodu kontrolowanego przez sieć neuronową i jak wyglądały?
Poruszaliśmy się w warunkach miejskich, ale kontrolowanych, na specjalnym obszarze testowym. W samochodzie był tzw. Safety Driver, który czuwał, aby – w razie problemów – przejąć kontrolę nad autem. Dodatkowo siedział w nim ktoś z naszego zespołu z laptopem podpiętym do samochodu. Na potrzeby pracy, którą zaprezentowaliśmy podczas warsztatów Machine Learning for Autonomous Driving – w ramach konferencji Neural Information Processing System 2019 w Vancouver w Kanadzie – wykonaliśmy ponad 400 krótkich przejazdów testowych. Sprawdzaliśmy bowiem różne wersje systemu, w różnych warunkach pogodowych.
Czy realne jest „wyszkolenie” samochodu autonomicznego tak, aby w pełni dostosowywał się do zmieniającego się otoczenia czy właściwie reagował na nieprzewidziane sytuacje? Pytam w kontekście wypadku pojazdu autonomicznego Ubera, który, w wyniku błędów w oprogramowaniu, podczas testów w USA śmiertelnie potrącił kobietę.
Na pewno nie jesteśmy jeszcze na etapie systemów, które są w pełni bezpieczne. Z drugiej strony wraz z rozwojem obecnej technologii wydaje się, że będą one w stanie być bardziej bezpieczne niż człowiek. Pytanie tylko jaka będzie skala tego bezpieczeństwa? Bo jeśli będzie to powiedzmy 10 razy bardziej bezpieczny system od człowieka, to w mojej ocenie opinia publiczna będzie miała duży problem z jego akceptacją.
Oczywiście wszyscy znamy wspomniany przez pana nieszczęśliwy wypadek, ale trzeba też pamiętać, że wypadków, które powodują ludzie jest nieporównywalnie więcej. Niektórzy eksperci uważają, że obecne systemy są już dużo bardziej bezpieczne niż człowiek. Aby jednak były one w pełni zaakceptowane przez opinie publiczną powinny być kilka rzędów wielkości bardziej bezpieczne niż człowiek. A do tego jeszcze wciąż daleka droga.
Z czego wynikają ograniczenia nie pozwalające osiągnąć tego pożądanego poziomu?
Trudno wskazać tutaj jedną przyczynę. Tworzenie systemów, które są kilka razy bardziej niezawodne niż człowiek jest po prostu bardzo trudne. Natomiast cała dziedzina posuwa się obecnie bardzo szybko do przodu. Z każdą chwilą jesteśmy coraz bliżej rozwiązania tych problemów. Są też przeszkody natury legislacyjnej. Jedną z takich blokad jest fakt, że w przypadku, gdy w pełni autonomiczny samochód doprowadzi do jakiegoś wypadku to wciąż nie ma jasnych rozwiązań prawnych, które są w stanie, w jakikolwiek sposób „osadzić” odpowiedzialność za takie zdarzenie.
Mówi się też o problemie „etycznym” związanym z autonomicznymi pojazdami np. w przypadku konieczności podjęcia decyzji o tym, czy ratować kierowcę, czy pieszego…
Odnoszę wrażenie, że ten problem jest dużo bardziej komentowany niż możliwy do zaistnienia w rzeczywistości. W praktyce zadaniem systemu jest zminimalizowanie prawdopodobieństwa wystąpienia wypadku. Bardzo rzadko występują przecież sytuacje, w których trzeba podjąć decyzję tego typu.
System wykorzystany przez nas do sterowania samochodem autonomicznym został oparty o głębokie sieci neuronowe. A uczył się przy pomocy Reinforcement Learning, czyli uczenia ze wzmocnieniem, które w dużym skrócie polega na tym, że programujemy na wejściu system nagród i kar. Zadaniem systemu jest tak dostosowywać swoje zachowania, aby optymalizować nagrody a minimalizować kary. Termin uczenia ze wzmocnieniem – stosowany przy tworzeniu algorytmów – zainspirowany jest biologią. Wykorzystywany jest podobny mechanizm, co przy tresurze zwierząt.
Wypadki trwają zazwyczaj ułamki sekund i człowiek nie jest w stanie roztrząsać problemów etycznych. Reaguje zazwyczaj instynktownie np. kierujący pojazdem zazwyczaj będzie chciał ocalić samego siebie. Sztuczna inteligencja w samochodzie autonomicznym będzie z kolei przede wszystkim starała się, aby w ogóle nie doszło do wystąpienia takiego problemu. Będzie to robić m.in. poprzez zachowanie odpowiedniej prędkości, przy której droga hamowania będzie w pełni bezpieczna.
Nasz system nie rozróżnia, czy zderzy się z innym samochodem czy z pieszym. Po prostu wie, że w ogóle nie powinien doprowadzić do wypadku. Jeśli natomiast miałby faktycznie trafić na ulice do normalnego ruch miejskiego to rzeczywiście trzeba by zacząć wprowadzać inne, bardziej szczegółowe klasyfikacje takich zdarzeń. Jest to możliwe, ale nie jest to coś, co już badaliśmy.
Czyli to są te dwa najważniejsze problemy, które stoją przed firmami, chcącymi wprowadzić na rynek pojazdy autonomiczne?
Kwestia legislacyjna to z pewnością jeden z nich. Ale jest także problem związany z zapewnieniem możliwie wysokiej niezawodności tych systemów. Póki co wszyscy producenci samochodów autonomicznych zakładają jednak obecność kierowcy i jego i gotowość do reakcji. W przywoływanym przez pana przypadku Ubera, w samochodzie tym był też kierowca bezpieczeństwa, który niestety nie był wystarczająco czujny.
Samochody autonomiczne pozbawione kierowcy poruszają się wyłącznie w konwojach – na torach testowych bądź autostradach – w których w pierwszym pojeździe znajduje się człowiek. Jak jednak dojść do pełnej automatyzacji w ruch miejskim? Niektórzy mówią o konieczności wdrożenia zupełnie nowej organizacji ruchu. Czy i kiedy to się stanie?
Zmiana organizacji ruch raczej nie przejdzie. Pierwsze możliwości wdrożeń, w których samochody autonomiczne mogłyby się najwcześniej pojawić na drogach, to wdrożenia w stylu, który nazwałbym hybrydowy. Jedna z firma amerykańskich testuje samochody poruszające się autostradami między hubami przeładunkowymi zlokalizowanymi pod miastami, w pełni autonomicznie i jadące na trasie samodzielnie. Człowiek byłby potrzebny tylko do kierowania pomiędzy takim hubem, a punktem docelowym – np. fabryką – na trasie, gdzie ruch drogowy i infrastruktura stanowią większe wyzwanie niż szeroka autostrada.
Na pewno nie jesteśmy jeszcze na etapie systemów, które są w pełni bezpieczne. Z drugiej strony wraz z rozwojem obecnej technologii wydaje się, że będą one w stanie być bardziej bezpieczne niż człowiek. Pytanie tylko jaka będzie skala tego bezpieczeństwa? Bo jeśli będzie to powiedzmy 10 razy bardziej bezpieczny system od człowieka, to w mojej ocenie opinia publiczna będzie miała duży problem z jego akceptacją. Oczywiście wszyscy znamy wspomniany przez pana nieszczęśliwy wypadek, ale trzeba też pamiętać, że wypadków, które powodują ludzie jest nieporównywalnie więcej. Niektórzy eksperci uważają, że obecne systemy są już dużo bardziej bezpieczne niż człowiek. Aby jednak były one w pełni zaakceptowane przez opinie publiczną powinny być kilka rzędów wielkości bardziej bezpieczne.
Takie autonomiczne ciężarówki, bez kierowców, jeżdżące między hubami powinny trafić do normalnego użytkowania w ciągu 5 lat. Potencjalnie może być w takim wdrożeniu zastosowany jeszcze jakiś „wytrych bezpieczeństwa”. Na przykład nadzorca dwudziestu samochodów, który połączony z nimi przy pomocy zabezpieczającego systemu teleoperacyjnego, będzie w stanie przejąć zdalną kontrolę nad każdym z nich w wypadku jakiegoś niebezpieczeństwa.
Wracając do Waszego rozwiązania, czy może ono być pomocne w dalszych badaniach nad pojazdami autonomicznymi? Jak w ogóle zostało przyjęte?
Rozwiązanie wzbudziło spore zainteresowanie. Był to bowiem pierwszy, skuteczny transfer pomiędzy symulacją a rzeczywistością przy udziale uczenia ze wzmocnieniem. Nasza praca miała jednak charakter naukowo-badawczy i nie ma ona jeszcze charakteru wdrożeniowego. Wydaje mi się, że rozwiązaniem, które faktycznie znajdzie zastosowanie, będzie swego rodzaju hybrydą systemów modułowych opartych o reguły, z systemami opartymi o uczenie ze wzmocnieniem. Takie podejście hybrydowe jest potrzebne w sytuacji, w której wymagane jest pewne ryzyko, czyli np. włączenie się samochodu do ruchu. Podejście uczenia ze wzmocnieniem ma potencjał, aby rozwiązywać tego typu problemy.
Czy wypracowaną przez Wasz zespół technikę można wykorzystać do innych zastosowań? W jakich dziedzinach można zastosować uczenie ze wzmocnieniem?
Można je zastosować wszędzie tam, gdzie mamy interakcję ze światem rzeczywistym, np. w robotyce. Zresztą to już się dzieje i różnego rodzaju specjaliści nad tym pracują. Klasyczne linie produkcyjne – które notabene są na coraz wyższym poziomie – nie radzą sobie w lekko chaotycznych sytuacjach, gdy np. nie wiadomo jakiego rodzaju produkt trzeba będzie zapakować do pudełka. W inny sposób bowiem robot powinien chwycić pluszową zabawkę, a w jeszcze inny słoik. Inny przykład zastosowania – bardziej może przyszłościowy – to zrobotyzowani asystenci dla ludzi, którzy mają problemy z poruszaniem się. Będą oni mogli np. opróżnić lub załadować zmywarkę, czy też wyjąć coś z lodówki.
Zajmowaliśmy się dla Volkswagena rozwojem oprogramowania i samych algorytmów, które odpowiadają za prowadzenie samochodu. Powstające problemy staraliśmy się rozwiązać przy pomocy tzw. transferu między symulacją a rzeczywistością. Zaczęliśmy od szkolenia autonomicznego pojazdu w symulowanym środowisku. System na starcie nie miał żadnego doświadczenia, ale pod koniec treningu miał umiejętności zbierane przez sto lat prowadzenia samochodu. Wynik taki udało się osiągnąć dzięki prowadzeniu treningu w kilku instancjach równolegle i przyspieszonym czasie. Wszystkich zachowań uczył się sam. Gdy opanował już jazdę na symulatorze, przenieśliśmy go na prawdziwy samochód.
Samo uczenie ze wzmocnieniem mogłoby z kolei być używane przy podejmowaniu np. pewnych decyzji biznesowych. Wyobrażam sobie system, który będzie potrafił przewidywać, czy firma może stracić klienta i w związku z takim zagrożeniem dobierać odpowiednią akcję. System taki mógłby jeszcze sam się uczyć, że skoro poprzednio podjął jakąś decyzję, a ona nie przyniosła pożądanych skutków to następnym razem podejmie inną.
Czy taki system będzie do końca przewidywalny czy też może nas czymś zaskoczyć?
Zdecydowanie może nas zaskoczyć. Systemy oparte o uczenie ze wzmocnieniem, są w stanie wymyślić strategie, które dotychczas nie przyszły ludziom do głowy. Były już zresztą takie przypadki, choćby w przypadku firmy Google, której spółka zależna DeepMind, opracowała system tego rodzaju do chłodzenia centrów obliczeniowych (data center). Odkrył on takie heurystyki, których ludzcy operatorzy nie mieli.
A czy istnieje ryzyko, że system wymyśli coś nieprzewidzianego, co będzie po prostu złe dla jakiegoś rozwiązania?
Istnieje. Ale zwykle da się to wychwycić na etapie projektowania. Istotne jest więc zdefiniowanie tej funkcji, która ma optymalizować dany system – wspomnianego wcześniej systemu nagród i kar. Systemy tego kalibru nie mają „swojej woli”, więc nie mogą w jakikolwiek sposób wymknąć się spod kontroli. Nie są też w żadnym stopniu złośliwe. Co z drugiej strony nie oznacza, że nie trzeba być bardzo uważnym przy ich projektowaniu.
Pracował Pan również przy innym projekcie, w którym wykorzystywane było uczenie ze wzmocnieniem. Mam tu na myśli pracę dotyczącą gier Atari, która dostała się z wyróżnieniem na konferencję ICLR…
Ten projekt był realizowany przez bardzo dużą grupę naukowców. Pracowali z nami specjaliści z Google Brain oraz przedstawiciele amerykańskich uniwersytetów. Zaczęliśmy go w 4 osoby, a finalnie pracowało nad nim 14 autorów. Zadanie, jakie postawiliśmy przed sobą dotyczyło tego czy jesteśmy w stanie nauczyć system grać dobrze w gry na Atari, ale przy wykorzystaniu jak najmniejszej ilości interakcji z tymi grami. Algorytmy oparte na uczeniu ze wzmocnieniem bardzo dobrze sprawdzają się przy grach, potrzebują jednak milionów interakcji ze środowiskiem. Człowiek zaś, aby nauczyć się grać dobrze w taką grę, nie potrzebuje aż tyle czasu. Nauczenie się przez system tych interakcji jest też istotne w kontekście tego, o czym mówiliśmy wcześniej, czyli zastosowaniu uczenia ze wzmocnieniem w różnych dziedzinach. Podejście, które zaproponowaliśmy polegało na tym, aby system nauczył się podstawowych interakcji, a następnie, na ich podstawie, stworzył wewnętrznie, symulator świata, który go otacza. Do pewnego stopnia udało się nam to zrobić. Mamy zatem system, który jest w stanie stworzyć wewnętrzny model wideo i prowadząc interakcje z tym modelem uczyć się grać tak, aby w efekcie końcowym robić to naprawdę dobrze.
Czy chcecie wykorzystać to rozwiązanie przy jakiś większych, bardziej skomplikowanych systemach?
Nie rozwijamy na razie tej metody, ale widzimy możliwości jej potencjalnego zastosowania. Kolega, z którym pracowałem przy tym projekcie, pracuje nad wykorzystaniem tego podejścia do planowania optymalnego uczenia sieci neuronowych.
Rozmawiał Mikołaj Marszycki