Dwa tygodnie temu media obiegła wieść o skandalicznej wpadce Google Photos. System automatycznego rozpoznawania twarzy i obiektów na zdjęciach zaklasyfikował dwie czarnoskóre osoby jako „goryle” i utworzył dla nich specjalny album o tym właśnie tytule.
Wśród tłumaczeń Google – a trzeba firmie przyznać, że zareagowała bardzo szybko – najbardziej spodobało mi się wyznanie, że twarze białych osób niejednokrotnie są rozpoznawane i podpisywane jako foki albo psy.
Moją uwagę przykuły komentarze czytelników, którzy domagali się „natychmiastowej zmiany algorytmu”. Pomyślałam, że to dobra okazja, żeby napisać kilka słów o uczeniu maszynowym i wyjaśnić, że za tę wpadkę nie odpowiada algorytm w klasycznym znaczeniu tego słowa.
Algorytm to skończony ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Ludzie stosują algorytmy w swoim codziennym życiu, mniej lub bardziej świadomie (każdy z nas wie mniej więcej, jakie kroki należy wykonać w celu wymiany zepsutej żarówki). Jeżeli jednak chcemy skłonić do działania komputer, musimy powiedzieć mu wyraźnie i jednoznacznie, jak ma postąpić w określonej sytuacji.
Jedną z metod zapisu algorytmów są schematy blokowe. Poniższy diagram przedstawia schemat blokowy algorytmu sprzątania po swoim psie w miejscu publicznym.

Przykład pięknego „poważnego” algorytmu znajdziesz w moim poprzednim wpisie.
Algorytmy można badać i porównywać, dzięki czemu powstają ich coraz szybsze i sprawniejsze wersje. Istnieje jednak grupa problemów, które algorytmom nie poddają się najlepiej. Chodzi albo o zadania bardzo skomplikowane, w których rozpisywanie kroków zajęłoby całe lata, albo o takie, które ludzkie mózgi wykonują bardzo szybko, ale ich nosiciele sami nie są w stanie odpowiedzieć na pytanie, jak to się dzieje. Doskonałymi przykładami są tutaj rozpoznawanie twarzy i rozpoznawanie mowy. Sprawa nie jest trywialna. Wiadomo, że istnieją choroby, które odbierają ludziom wymienione przed chwilą umiejętności, nie zaburzając przy tym zdolności logicznego myślenia.
Problemy z opisanej kategorii można rozwiązywać przy użyciu uczenia maszynowego. Jest to dziedzina, która od lat dziewięćdziesiątych nabiera coraz większego znaczenia, w miarę jak wzrasta moc obliczeniowa komputerów i wraz z dostępnością coraz większej ilości danych w Internecie. Dominują dwa nurty: pierwszy oparty na sieciach neuronowych (mających naśladować budowę ludzkiego mózgu), drugi na statystyce i rachunku prawdopodobieństwa. Poniżej przedstawię prosty (żeby nie użyć mocniejszego słowa) przykład statystycznego uczenia maszynowego.
Jak to działa? Rozważmy popularne zadanie wykrywania spamu. Jeżeli przeanalizujemy tysiąc maili, z których połowa została przez użytkownika oznaczona jako spam, a połowa to normalne, pożądane treści, będziemy w stanie wyciągnąć jakieś wnioski. Możemy, na przykład, utworzyć listę słów, które pojawiły się w wiadomościach i podliczyć, ile razy dane słowo pojawiło się w wiadomości oznaczonej jako spam, a ile razy w wartościowej wiadomości. W ten sposób dla każdego ze słów wyznaczymy prawdopodobieństwo „bycia spamem”. Kiedy pojawi się nowa wiadomość, możemy, w oparciu o listę słów, wyliczyć całkowite prawdopodobieństwo (ryzyko), że dana wiadomość to spam.
Poniżej przykładowy prosty model i związane z nim wyliczenia. Proszę pod żadnym pozorem nie uczyć się z tego statystyki!!!
Wiadomości otrzymane przez użytkownika, zaklasyfikowane przez niego jako wartościowe treści albo spam:
Treść wiadomości | Klasyfikacja |
Ciociu, jak będzie okazja, kup mi nad morzem wisiorek z bursztynem. | Ok. |
Okazja! Tylko dzisiaj kup viagrę za 30 zł! Okazja! | Spam. |
Analiza słów zawartych w wiadomościach:
Słowo | Wystąpień „spam” | Wystąpień „ok” | Prawdopodobieństwo, że to spam |
ciociu | 0 | 1 | 0 |
kup | 1 | 1 | 1/2 |
okazja | 2 | 1 | 2/3 |
viagrę | 1 | 0 | 1 |
wisiorek | 0 | 1 | 0 |
… |
Próba automatycznego oszacowania, czy nowe wiadomości należy wrzucić do folderu „spam”:
Treść nowej wiadomości | Prawdopodobieństwo, że spam? |
Ciociu, kup wisiorek. | (0+1/2+0)/3 = 1/6 = 16.6% |
Ciociu, kup viagrę. | (0+1/2+1)/3 = 1/2 = 50% |
Kup viagrę. | (1/2+1)/2 = 3/4 = 75% |
Można spotkać się z terminem „algorytm uczenia maszynowego”, ale należy pamiętać, że najczęściej mamy w tej kategorii do czynienia z matematycznymi metodami, które dadzą kompletnie odmienne wyniki w zależności od tego, na jakim zbiorze danych zostaną wytrenowane.
Jakie są efekty? Raczej dobre. Nie da się jednak dogodzić wszystkim, a już na pewno nie na podstawie jednego, wspólnego zbioru danych. Większość z nas chce, aby reklamy środków na powiększenie penisa automatycznie trafiały do katalogu „spam” lub do kosza, ale ktoś przecież takie środki kupuje i wówczas z pewnością chce się dowiedzieć, kiedy dotrze do niego upragniona przesyłka. Poza tym, zbiór danych użyty do trenowania może okazać się za mały, za duży, błędnie opisany lub niewystarczająco reprezentatywny.
Co dokładnie stało się w przypadku Google? Najprawdopodobniej dane wykorzystane do uczenia nie były wystarczająco reprezentatywne – występowali na nich głównie biali ludzie, więc system uwzględnił jasny kolor skóry jako istotny wyznacznik bycia człowiekiem. Warto dodać, że autor (i obiekt) fotografii, które rozpętały całe to zamieszanie, sam jest programistą i od razu zaznaczał, że wie co się stało. Pytał tylko retorycznie „skąd wzięliście te dane?”. Najbardziej wstydliwa możliwość, choć raczej mało prawdopodobna, jest taka, że podczas trenowania użyte zostały zdjęcia opatrzone rasistowskimi komentarzami, które system potraktował jako pewnik.
Problem nie jest łatwy do naprawienia. Być może firma do końca nie wie, skąd pochodziły dane. Być może trenowanie trwa wiele dni. Zgodnie z aktualnymi doniesieniami, etykieta „gorillas” została na wszelki wypadek kompletnie usunięta z systemu.