Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00497 012480 16439025 na godz. na dobę w sumie
Inteligentna sieć. Algorytmy przyszłości. Wydanie II - książka
Inteligentna sieć. Algorytmy przyszłości. Wydanie II - książka
Autor: , , Liczba stron: 248
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-3250-8 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> algorytmy - programowanie
Porównaj ceny (książka, ebook (-25%), audiobook).
Określenie „inteligentna sieć” może przywodzić na myśl futurystyczną wizję maszyn przejmujących kontrolę nad światem i niszczących ludzkość, jednak w rzeczywistości jest związane z rozwojem technologii. Związane jest z powstawaniem oprogramowania, które potrafi się uczyć i reagować na zachowania użytkowników. Oznacza też projektowanie i implementację inteligencji maszynowej. Inteligentna sieć rozwija się tu i teraz — znajomość zagadnień uczenia maszynowego i budowy inteligentnych algorytmów staje się bardzo potrzebna inżynierom oprogramowania!

Niniejsza książka jest przeznaczona dla osób, które chcą projektować inteligentne algorytmy, a przy tym mają podstawy z zakresu programowania, matematyki i statystyki. Przedstawiono tu schematy projektowe i praktyczne przykłady rozwiązań. Opisano algorytmy, które przetwarzają strumienie danych pochodzące z internetu, a także systemy rekomendacji i klasyfikowania danych za pomocą algorytmów statystycznych, sieci neuronowych i uczenia głębokiego. Mimo że przyswojenie tych zagadnień wymaga wysiłku, bardzo ułatwi implementację nowoczesnych, inteligentnych aplikacji!

W tej książce między innymi:

Inteligentny algorytm wyławia perły w strumieniach danych!


Dr Douglas McIlwraith jest ekspertem w dziedzinie uczenia maszynowego. Zajmuje się analizą danych w londyńskiej agencji reklamowej. Prowadził badania w dziedzinach systemów rozproszonych, robotyki i zabezpieczeń.

Dr Haralambos Marmanis jest pionierem w obszarze technik uczenia maszynowego w rozwiązaniach przemysłowych. Od 25 lat rozwija profesjonalne oprogramowanie.

Dmitry Babenko projektuje złożone systemy dla firm z takich branż, jak bankowość, ubezpieczenia, zarządzanie łańcuchem dostaw i analityka biznesowa.
Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Algorithms of the Intelligent Web, 2nd Edition Tłumaczenie: Tomasz Walczak Projekt okładki: Studio Gravite / Olsztyn; Obarek, Pokoński, Pazdrijowski, Zaprucki Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock Images LLC. ISBN: 978-83-283-3250-8 Original edition copyright © 2016 by Manning Publications Co. All rights reserved. Polish edition copyright © 2017 by HELION SA. All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/intsi2 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/intsi2.zip Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści Przedmowa 9 Wprowadzenie 11 Podziękowania 13 O książce 15 Rozdział 1. Budowanie aplikacji na potrzeby inteligentnej sieci 19 Inteligentny algorytm w akcji — Google Now 21 1.1. 1.2. Cykl życia inteligentnych algorytmów 23 1.3. 1.4. Czym inteligentne aplikacje nie są 25 Inne przykłady inteligentnych algorytmów 24 1.4.1. 1.4.2. 1.4.3. Inteligentne algorytmy nie są myślącymi maszynami do uniwersalnych zastosowań 25 Inteligentne algorytmy nie zastąpią ludzi 25 Inteligentne algorytmy nie są odkrywane przez przypadek 26 1.5. Klasy inteligentnych algorytmów 26 1.5.1. Sztuczna inteligencja 27 1.5.2. Uczenie maszynowe 28 1.5.3. Analityka predykcyjna 29 1.6. Ocena działania inteligentnych algorytmów 30 1.6.1. Ocena inteligencji 30 1.6.2. Ocena predykcji 31 1.7. Ważne uwagi na temat inteligentnych algorytmów 33 1.7.1. Dane nie są wiarygodne 34 1.7.2. Wnioskowanie wymaga czasu 34 1.7.3. Wielkość ma znaczenie! 34 1.7.4. Różne algorytmy skalują się w odmienny sposób 35 1.7.5. Nie wszystko jest gwoździem! 35 1.7.6. Dane to nie wszystko 35 1.7.7. Czas treningu może się zmieniać 36 1.7.8. Celem jest generalizacja 36 1.7.9. Ludzka intuicja nie zawsze się sprawdza 36 1.7.10. Pomyśl o zaprojektowaniu nowych cech 36 1.7.11. Poznaj wiele różnych modeli 36 1.7.12. Korelacja nie oznacza związku przyczynowo-skutkowego 37 1.8. Podsumowanie 37 Poleć książkęKup książkę 6 Spis treści Rozdział 2. Wydobywanie struktury z danych — klastrowanie i transformacja danych 39 2.1. Dane, struktura, błąd systematyczny i szum 41 2.2. 2.3. Algorytm k-średnich 45 „Przekleństwo wymiarów” 44 2.3.1. K-średnie w praktyce 49 2.4. Gaussowski model mieszany 52 2.4.1. Czym jest rozkład Gaussa? 52 2.4.2. Maksymalizacja wartości oczekiwanej i rozkład Gaussa 55 2.4.3. Gaussowski model mieszany 55 2.4.4. Przykład uczenia z użyciem gaussowskiego modelu mieszanego 57 2.5. Zależności między k-średnimi i algorytmem GMM 59 2.6. Transformacje osi danych 60 2.6.1. Wektory własne i wartości własne 61 2.6.2. Analiza głównych składowych 61 2.6.3. Przykład zastosowania analizy głównych składowych 63 2.7. Podsumowanie 65 Rozdział 3. Rekomendowanie odpowiednich treści 67 3.1. Wprowadzenie — internetowy sklep z filmami 68 3.2. Odległość i podobieństwo 69 3.2.1. Więcej o odległości i podobieństwie 73 3.2.2. Który wzór na podobieństwo jest najlepszy? 75 Jak działają systemy rekomendacji? 76 3.3. 3.4. Filtrowanie kolaboratywne według użytkowników 77 3.5. Rekomendacje według modelu z wykorzystaniem rozkładu SVD 82 3.5.1. Rozkład SVD 83 3.5.2. Rekomendacje z użyciem rozkładu SVD — wybór filmów dla danego użytkownika 84 3.5.3. Rekomendacje z wykorzystaniem rozkładu SVD — określanie użytkowników, których może zainteresować dany film 90 3.6. Konkurs Netflix Prize 93 3.7. Ocenianie systemu rekomendacji 94 3.8. Podsumowanie 96 Rozdział 4. Klasyfikowanie — umieszczanie elementów tam, gdzie ich miejsce 97 4.1. Do czego potrzebna jest klasyfikacja? 98 4.2. Przegląd klasyfikatorów 101 4.2.1. Strukturalne algorytmy klasyfikacji 102 4.2.2. Statystyczne algorytmy klasyfikacji 104 4.2.3. Cykl życia klasyfikatora 105 4.3. Wykrywanie oszustw za pomocą regresji logistycznej 106 4.3.1. Wprowadzenie do regresji liniowej 106 4.3.2. Od regresji liniowej do logistycznej 108 4.3.3. Implementowanie wykrywania oszustw 111 Poleć książkęKup książkę Spis treści 7 4.4. Czy wyniki są wiarygodne? 119 4.5. Klasyfikowanie w bardzo dużych zbiorach danych 122 4.6. Podsumowanie 124 Rozdział 5. Studium przypadku — prognozowanie kliknięć w reklamie internetowej 127 5.1. Historia i informacje wstępne 128 5.2. Giełda 130 5.2.1. Dopasowywanie plików cookie 130 5.2.2. Oferty 131 5.2.3. Powiadomienie o wygranej (lub przegranej) w licytacji 132 5.2.4. Umieszczanie reklamy 132 5.2.5. Monitorowanie reklam 132 5.3. Czym jest agent? 133 5.3.1. Wymagania stawiane agentowi 133 5.4. Czym jest system podejmowania decyzji? 134 Informacje o użytkowniku 135 Informacje o przestrzeni reklamowej 135 Informacje o kontekście 135 5.4.1. 5.4.2. 5.4.3. 5.4.4. Przygotowywanie danych 135 5.4.5. Model dla systemu podejmowania decyzji 136 5.4.6. Odwzorowywanie prognozowanego współczynnika kliknięć na oferowaną kwotę 136 5.4.7. Inżynieria cech 137 5.4.8. Trening modelu 137 5.5. Predykcja kliknięć za pomocą biblioteki Vowpal Wabbit 138 5.5.1. Format danych używany w VW 138 5.5.2. Przygotowywanie zbioru danych 141 5.5.3. Testowanie modelu 146 5.5.4. Kalibrowanie modelu 148 5.6. Komplikacje związane z budowaniem systemu podejmowania decyzji 150 5.7. Przyszłość prognozowania zdarzeń w czasie rzeczywistym 150 5.8. Podsumowanie 151 Rozdział 6. Uczenie głębokie i sieci neuronowe 153 Intuicyjne omówienie uczenia głębokiego 154 6.1. 6.2. Sieci neuronowe 155 6.3. Perceptron 156 6.3.1. Trening 158 6.3.2. Trening perceptronu z użyciem pakietu scikit-learn 160 6.3.3. Geometryczna interpretacja działania perceptronu dla dwóch wejść 162 6.4. Perceptrony wielowarstwowe 164 Intuicyjne wyjaśnienie propagacji wstecznej 169 6.4.1. Trening z wykorzystaniem propagacji wstecznej 167 6.4.2. Funkcje aktywacji 168 6.4.3. 6.4.4. Teoria propagacji wstecznej 170 6.4.5. Wielowarstwowe sieci neuronowe w pakiecie scikit-learn 172 6.4.6. Perceptron wielowarstwowy po zakończeniu nauki 174 Poleć książkęKup książkę 8 Spis treści 6.5. Zwiększanie głębokości — od wielowarstwowych sieci neuronowych do uczenia głębokiego 175 6.5.1. Ograniczone maszyny Boltzmanna 176 6.5.2. Maszyny BRBM 177 6.5.3. Maszyny RBM w praktyce 180 6.6. Podsumowanie 183 Rozdział 7. Dokonywanie właściwego wyboru 185 7.1. Testy A/B 187 7.1.1. Teoria 187 7.1.2. Kod 190 7.1.3. Adekwatność testów A/B 191 7.2. Wieloręki bandyta 192 7.2.1. Strategie stosowane w problemie wielorękiego bandyty 192 7.3. Strategia bayesowska w praktyce 197 7.4. Testy A/B a strategia bayesowska 207 7.5. Rozwinięcia eksperymentu z wielorękim bandytą 208 7.5.1. Bandyci kontekstowi 209 7.5.2. Problem bandytów z przeciwnikiem 210 7.6. Podsumowanie 210 Rozdział 8. Przyszłość inteligentnej sieci 213 8.1. Przyszłe zastosowania inteligentnej sieci 214 Internet rzeczy 214 8.1.1. 8.1.2. Opieka zdrowotna w domu 215 8.1.3. Autonomiczne samochody 215 8.1.4. Spersonalizowane fizyczne reklamy 216 8.1.5. Sieć semantyczna 216 8.2. Społeczne implikacje rozwoju inteligentnej sieci 217 Dodatek. Pobieranie danych z sieci WWW 219 Przykład — wyświetlanie reklam w internecie 220 Dane dostępne w kontekście reklamy internetowej 220 Rejestrowanie danych — naiwne rozwiązanie 221 Zarządzanie zbieraniem danych w dużej skali 222 Poznaj system Kafka 224 Replikacja w systemie Kafka 226 Grupy konsumentów, równoważenie i kolejność 232 Łączenie wszystkich elementów 233 Ocena systemu Kafka — rejestrowanie danych w dużej skali 236 Wzorce projektowe w systemie Kafka 238 Łączenie systemów Kafka i Storm 238 Łączenie systemów Kafka i Hadoop 240 Skorowidz 243 Poleć książkęKup książkę Przedmowa Sieć WWW to infrastruktura wykorzystywana przez oparte na internecie społeczeństwo informacyjne. Jest to podstawowe narzędzie, z którego miliardy osób korzystają do interakcji w internecie. Postęp przemysłowy dokonuje się dzięki rozwijaniu usług informacyjnych w internecie. Obecnie dzięki dojrzałym technologiom przetwarzania w chmurze i komunikacji bezprzewodowej sieć WWW staje się nie tylko narzędziem do publikowania i konsumowania informacji, ale też platformą, w której można rozwijać i wdrażać usługi informacyjne, a także udostępniać je miliardom użytkowników w dowol- nym miejscu i czasie. Duże zbiory danych (ang. big data) zapewniają bogate materiały do budowania wszechstronnych usług, a także umożliwiają wbudowanie inteligencji w usługi i ulepszenie dzięki temu wrażeń z użytkowania usług w sieci WWW. Inteli- gentne usługi sprawiają, że sieć WWW zmienia nasze życie. Pomaga nam znaleźć odpo- wiednią restaurację, zaplanować wymarzone wakacje, kupić niemal dowolny produkt i tworzyć społeczności mające najróżniejsze cele. Uzyskanie tej inteligencji jest moż- liwe dzięki analizie danych wygenerowanych w wyniku interakcji użytkowników z zawartością sieci WWW. Rozwijanie inteligencji w sieci jest więc jednym z podsta- wowych aspektów nowoczesnej nauki o danych. Mam wielką przyjemność zaprezentować Ci tę doskonałą książkę, Inteligentna sieć. Algorytmy przyszłości, zaktualizowaną przez młodego, ale bardzo doświadczonego bada- cza danych, dr. Douglasa McIlwraitha. Ta pozycja ma pokazać istotę inteligentnych apli- kacji sieciowych — algorytmy zapewniające inteligencję. To ambitny cel. Zaskoczyło mnie to, że Doug zdołał kompleksowo przedstawić ten obszerny temat w przystępnym języku na mniej niż 250 stronach. W tej książce opisane są najpopularniejsze techniki o szerokim spektrum zastoso- wań. Znajdziesz tu zwięzły opis algorytmów i ich matematycznych podstaw oraz kod w Pythonie. Lektura tej książki była dla mnie prawdziwą przyjemnością. Mam nadzieję, że Tobie też się ona spodoba. Ważniejsze jest jednak to, że po zakończeniu lektury powi- nieneś zyskać umiejętności i wiedzę pozwalające zwiększyć inteligencję sieci WWW. Yike Guo Profesor i dyrektor Data Science Institute, Imperial College, Londyn Poleć książkęKup książkę 10 Przedmowa Poleć książkęKup książkę Budowanie aplikacji na potrzeby inteligentnej sieci Zawartość rozdziału:  Dostrzeganie inteligencji w sieci  Typy inteligentnych algorytmów  Ocena inteligentnych algorytmów Określenie „inteligentna sieć” dla różnych osób znaczy coś innego. Dla niektórych zwią- zane jest z ewolucją sieci WWW w kierunku reagującego na interakcje i przydatnego bytu, który potrafi uczyć się od użytkowników i reagować na ich zachowania. Dla innych znaczy wkroczenie sieci WWW w wiele aspektów naszego życia. Dla mnie inteligentna sieć jest daleka od pierwszej wersji Skynetu, w którym komputery przejmują władzę w dystopicznej przyszłości. Jest natomiast związana z projektowaniem i implemento- waniem w naturalny sposób reagujących aplikacji, dzięki którym wrażenia z użytko- wania internetu są w policzalny sposób lepsze. Prawdopodobnie każdy z Czytelników zetknął się w wielu sytuacjach z inteligencją maszynową. W tym rozdziale przedsta- wiamy przykłady, które ułatwią Ci dostrzeżenie jej w przyszłości. To z kolei pomoże Ci zrozumieć, co tak naprawdę dzieje się na zapleczu, gdy wchodzisz w interakcje z inte- ligentnymi aplikacjami. Skoro wiesz już, że ta książka nie dotyczy pisania bytów, które spróbują przejąć kontrolę nad światem, warto wspomnieć też o innych rzeczach pominiętych na jej stronach. Przede wszystkim jest to książka skoncentrowana na technologiach używa- nych na zapleczu. Nie przeczytasz tu o atrakcyjnych interaktywnych wizualizacjach Poleć książkęKup książkę 20 ROZDZIAŁ 1. Budowanie aplikacji na potrzeby inteligentnej sieci lub platformach. Te tematy poznasz dzięki świetnym publikacjom Scotta Murraya1, Davida McCandlessa2 i Edwarda Tuftego3. Tu nie mamy miejsca na omówienie tego zagadnienia w stopniu, na jaki zasługuje. Z tej książki nie nauczysz się też statystyki. Jednak aby jak najlepiej wykorzystać zawartość tej pozycji, powinieneś znać przy- najmniej podstawy tej dziedziny i ukończyć kurs statystyki. Nie jest to też książka o nauce o danych. Dostępnych jest wiele tytułów pomocnych dla praktyków nauki o danych. Mamy nadzieję, że także ta książka będzie dla nich przy- datna, jednak w jej rozdziałach znajdziesz mało szczegółów na temat tego, jak być naukowcem z tej dziedziny. Jej omówienie znajdziesz w tekstach Joela Grusa4 oraz Fostera Provosta i Toma Fawcetta5. Ponadto ta książka nie jest szczegółowym omówieniem projektowania algorytmów. Często pomijamy szczegóły projektowania algorytmów i przedstawiamy intuicyjny opis zamiast wnikania w szczegóły. Pozwala to omówić więcej zagadnień, choć może dziać się to kosztem precyzji. Każdy rozdział możesz traktować jak trop prowadzący przez ważne aspekty danego podejścia i pozwalający dotrzeć do zasobów zawierających więcej szczegółów. Choć wiele przykładów z tej książki jest napisanych z użyciem pakietu scikit-learn (http://scikit-learn.org), nie jest to pozycja poświęcona temu narzędziu. Ten pakiet to tylko narzędzie pozwalające zademonstrować prezentowane w tekście techniki. Każdy przykład opatrzyliśmy przynajmniej ogólnym objaśnieniem tego, dlaczego dany algorytm działa. W niektórych sytuacjach przedstawiamy więcej szczegółów, jednak w wielu miejscach powinieneś kontynuować poszukiwania poza tą książką. O czym więc jest ta pozycja? Omawiamy tu narzędzia związane z całym procesem funkcjonowania nowoczesnych inteligentnych algorytmów. Opisujemy informacje zbie- rane na temat przeciętnych użytkowników sieci, które mogą być przetwarzane w przy- datne strumienie pozwalające prognozować zachowania tych osób (oraz modyfikować prognozy w reakcji na zmiany zachowań użytkowników). To oznacza, że często odcho- dzimy od modelu typowego dla książek o podstawach algorytmów i dajemy Ci przed- smak (!) wszystkich ważnych aspektów inteligentnych algorytmów. Omawiamy nawet (w dodatku) technologię publikuj-subskrybuj, która umożliwia porządkowanie dużych ilości danych w trakcie zbierania. Choć nie jest to temat do książki poświęconej ściśle nauce o danych lub algorytmom, uważamy, że należy opi- sać go w pozycji dotyczącej inteligentnej sieci. Nie oznacza to, że ignorujemy naukę o danych lub algorytmy — w żadnym razie! Omawiamy tu większość najważniej- szych algorytmów używanych przez czołowych graczy w dziedzinie inteligentnych algorytmów. 1 Scott Murray, Interactive Data Visualization for the Web (O’Reilly, 2013). 2 David McCandless, Information Is Beautiful (HarperCollins, 2010). 3 Edward Tufte, The Visual Display of Quantitative Information (Graphics Press USA, 2001). 4 Joel Grus, Data Science From Scratch: First Principles with Python (O’Reilly, 2015). 5 Foster Provost i Tom Fawcett, Data Science for Business (O’Reilly Media, 2013). Poleć książkęKup książkę 1.1. Inteligentny algorytm w akcji — Google Now 21 Tam, gdzie to możliwe, wskazujemy znane przykłady zastosowania technik w prak- tyce. Dzięki temu będziesz mógł porównać swoją wiedzę z działaniem systemów — i bez wątpienia zrobić tym wrażenie na znajomych! Wybiegamy jednak za daleko w przyszłość. W tym rozdziale przedstawiamy kilka przykładów zastosowania inteligentnych algorytmów, które powinieneś natychmiast rozpoznać. Opisujemy, czego inteligentne algorytmy nie potrafią, a następnie przed- stawiamy taksonomię omawianego obszaru, z którą będziesz mógł wiązać poznawane zagadnienia. W końcowej części prezentujemy szereg metod oceny inteligentnych algo- rytmów i przedstawiamy kilka przydatnych informacji. Już słyszymy, jak pytasz: „Czym jest inteligentny algorytm?”. Na potrzeby tej książki za inteligentny uznajemy każdy algorytm, który wykorzystuje dane do modyfikacji swo- jego działania. Pamiętaj, że gdy wchodzisz w interakcje z algorytmem, komunikujesz się wyłącznie z zestawem określonych reguł. Inteligentne algorytmy różnią się od innych tym, że mogą zmieniać swoje działanie w trakcie pracy. Często użytkownik ma wrażenie, że taki algorytm jest inteligentny. Rysunek 1.1 przedstawia takie algorytmy. Widać tu, że inteligentny algorytm reaguje na zacho- dzące w środowisku zdarzenia i podejmuje decyzje. Zbierając dane (mogą nimi być też same zdarzenia) z kontekstu, w którym działa, algorytm ewoluuje — w tym sensie, że decyzje nie zależą deterministycznie od samego zdarzenia. Inteligentny algorytm w różnych momentach może podejmować odmienne decyzje w za- leżności od zebranych danych. Rysunek 1.1. Ogólny obraz pracy inteligentnego algorytmu. Taki algorytm przejawia inteligencję, ponieważ podejmuje decyzje na podstawie zebranych danych 1.1. Inteligentny algorytm w akcji — Google Now Aby zilustrować proces pokazany na rysunku, postaramy się przeprowadzić analizę aplikacji Google Now. Warto wspomnieć, że jej szczegóły są chronione przez firmę Google, dlatego wykorzystujemy nasze doświadczenie do pokazania, jak algorytm z tej aplikacji może działać na zapleczu. Użytkownicy urządzeń z systemem Android zapewne natychmiast rozpoznają ten produkt, a dla osób korzystających z systemu iOS mamy informację, że Google Now to odpowiedź Google’a na program Siri. Google reklamuje go za pomocą hasła: „Odpo- wiednie informacje we właściwym czasie”. Google Now to aplikacja potrafiąca wyko- rzystać różne źródła informacji i powiadamiać użytkowników o pobliskich restauracjach, wydarzeniach, korkach i podobnych rzeczach, które uzna za interesujące dla danej osoby. Aby pokazać, czym jest inteligentny algorytm, posłużymy się konkretnym przykładem z aplikacji Google Now. Gdy wykryje ona korek na standardowej drodze użytkownika do pracy, wyświetla określone informacje przed wyjściem danej osoby z domu. Świetnie! Jak jednak jest to możliwe? Zacznijmy od zrozumienia, co się tu dzieje. Aplikacja zna lokalizację użytkownika dzięki modułowi GPS i zarejestrowanym stacjom łączności bezprzewodowej. Dlatego aplikacja zawsze wie, gdzie użytkownik się znajduje (z dość dużą dokładnością). Poleć książkęKup książkę 22 ROZDZIAŁ 1. Budowanie aplikacji na potrzeby inteligentnej sieci W kontekście rysunku 1.1 jest to jeden z aspektów danych używanych do zmiany dzia- łania algorytmu. Teraz potrzebny jest tylko niewielki krok, by ustalić lokalizację domu i pracy. Odbywa się to dzięki wykorzystaniu uprzedniej wiedzy, która została wbudo- wana w algorytm, zanim zaczął on uczyć się na podstawie danych. Tu uprzednia wie- dza może mieć postać następujących reguł:  Lokalizacja najczęściej wykrywana w nocy to dom.  Lokalizacja najczęściej wykrywana w ciągu dnia to praca.  Ludzie (w większości) prawie każdego dnia jadą do pracy, a następnie z powro- tem do domu. Choć ten przykład nie jest idealny, dobrze ilustruje pewną kwestię: w społeczeństwie używane są pojęcia „pracy”, „domu” i „dojazdów”, a na podstawie danych i modelu można wyciągać wnioski. Tu można ustalić prawdopodobną lokalizację domu i pracy wraz z prawdopodobnymi trasami dojazdu. Używamy tu określenia prawdopodobne, ponieważ w wielu modelach uwzględniane jest prawdopodobieństwo określonych decyzji. Gdy użytkownik kupuje nowy telefon lub rejestruje nowe konto w usługach firmy Google, Google Now potrzebuje czasu na wyciągnięcie wniosków. Podobnie dzieje się, gdy użytkownik zmieni mieszkanie lub pracę. Aplikacja musi wtedy nauczyć się nowych lokalizacji. Szybkość reagowania modelu na zmiany to szybkość uczenia się. Nadal jednak brakuje informacji, aby móc wyświetlać adekwatne informacje doty- czące trasy dojazdu (aby podejmować decyzje na podstawie zdarzeń). Ostatni fragment układanki wymaga prognozowania, kiedy użytkownik zamierza opuścić jedną lokali- zację i wyruszyć w drogę do drugiej. Podobnie jak wcześniej można utworzyć model i określić godzinę dojazdów, a następnie aktualizować ją, aby odzwierciedlić zmiany wzorców zachowania. W przyszłości można określić prawdopodobieństwo, z jakim użyt- kownik znajduje się w danej lokalizacji i szykuje się do drogi. Jeśli to prawdopodo- bieństwo przekroczy poziom progowy, Google Now może sprawdzić informacje o kor- kach i przekazać je w powiadomieniu użytkownikowi. Ten konkretny aspekt aplikacji Google Now jest dość skomplikowany i prawdo- podobnie pracuje nad nim specjalny zespół. Jednak łatwo jest zauważyć, że schemat działania tego narzędzia oparty jest na inteligentnym algorytmie. Aplikacja wykorzy- stuje dane na temat dojazdów, aby zrozumieć zwyczaje użytkownika i przygotować dla niego spersonalizowane podpowiedzi (decyzje) na podstawie obecnej lokalizacji (zda- rzenie). Rysunek 1.2 przedstawia ten proces w formie graficznej. Warto zauważyć, że produkt Google Now prawdopodobnie wykorzystuje na zapleczu cały pakiet inteligentnych algorytmów. Przeprowadzają one przeszukiwanie tekstowe kalendarza Google, starając się zrozumieć plan dnia użytkownika, a modele badania zainteresowań próbują ustalić, które wyniki wyszukiwania są przydatne i czy należy oznaczyć nowe treści jako interesujące. Programista inteligentnych algorytmów musi korzystać ze swoich umiejętności do budowania nowych rozwiązań na podstawie złożonych wymagań i starannie identyfi- kować wszystkie podzadania, które można wykonać za pomocą istniejącej klasy takich Poleć książkęKup książkę 1.2. Cykl życia inteligentnych algorytmów 23 Rysunek 1.2. Graficzne ujęcie jednego z aspektów projektu Google Now. Aby aplikacja Google Now mogła prognozować przyszłe lokalizacje, używa modelu uwzględniającego przeszłe lokalizacje i obecną pozycję. Uprzednia wiedza pozwala wbudować wcześniej znane informacje w system algorytmów. Każde tworzone rozwiązanie powinno być oparte na dokonaniach z oma- wianej dziedziny i zbudowane na ich podstawie. Wiele takich dokonań omawiamy w tej książce. Wprowadziliśmy tu kilka ważnych pojęć wyróżnionych kursywą. Używamy ich w dalszych rozdziałach przy szczegółowym omawianiu poszczególnych algorytmów. 1.2. Cykl życia inteligentnych algorytmów W poprzednim podrozdziale opisaliśmy, że inteligentny algorytm składa się z czarnej skrzynki, przyjmuje dane i generuje prognozy na podstawie zdarzeń. Przedstawiliśmy konkretny przykład z firmy Google w postaci projektu Google Now. Może się zastana- wiasz, jak projektanci inteligentnych algorytmów dochodzą do rozwiązań. Istnieje ogólny cykl życia zaadaptowany z książki Computational Information Design Bena Fry’a6. Możesz posługiwać się tym cyklem w trakcie projektowania własnych rozwiązań. Cykl ten poka- zany jest na rysunku 1.3. Rysunek 1.3. Cykl życia inteligentnego algorytmu 6 Ben Fry, praca doktorska, Computational Information Design (MIT, 2004). Poleć książkęKup książkę 24 ROZDZIAŁ 1. Budowanie aplikacji na potrzeby inteligentnej sieci Gdy projektujesz inteligentne algorytmy, najpierw musisz pomyśleć o zbieraniu danych (na tym koncentrujemy się w dodatku), a następnie zająć się ich parsowaniem i oczysz- czaniem, ponieważ ich format jest niewłaściwy. Następnie trzeba zrozumieć dane, co można uzyskać dzięki ich eksploracji i wizualizacji. Następnie możesz przedstawić dane w odpowiednich formatach (omawiamy to w rozdziale 2.). Na tym etapie jesteś gotowy do rozpoczęcia treningu modelu i oceny zdolności predykcyjnej utworzonego rozwią- zania. W rozdziałach od 3. do 7. omawiamy różne modele, którymi możesz się posłu- giwać. Po zakończeniu każdego etapu możesz cofnąć się do wcześniejszych kroków. Najczęściej używane ścieżki powrotne są pokazane za pomocą przerywanych linii na rysunku 1.3. 1.3. Inne przykłady inteligentnych algorytmów Przyjrzyjmy się innym aplikacjom z ostatniej dekady, w których też używana jest inte- ligencja oparta na algorytmach. Punktem zwrotnym w historii sieci WWW było poja- wienie się wyszukiwarek. Jednak duża część możliwości sieci WWW pozostawała nie- wykorzystana aż do 1998 roku, kiedy to zaczęto analizować odsyłacze w kontekście wyszukiwania. Od tego czasu w niecałe 20 lat firma Google rozwinęła się od startupu do lidera w branży technologicznej. Początkowo rozwój tej firmy wynikał z sukcesu wyszukiwania opartego na odsyłaczach, a później — z licznych nowych i innowacyj- nych aplikacji z obszaru usług mobilnych i działających w chmurze. Jednak świat inteligentnych aplikacji sieciowych nie ogranicza się do wyszukiwarek. Amazon był jednym z pierwszych sklepów internetowych, w których użytkownikom prezentowano rekomendacje oparte na wzorcach zakupowych. Możliwe, że znasz tę funkcję. Załóżmy, że kupujesz książkę na temat platformy JavaServer Faces i inną o Pythonie. Gdy tylko dodasz je do koszyka zakupów, Amazon zaproponuje dodatkowe pozycje powiązane z tymi, które już wybrałeś. Możliwe, że będą to książki dotyczące AJAX-a lub Ruby on Rails. Ponadto gdy ponownie otworzysz witrynę Amazonu, może ona zarekomendować te same lub inne powiązane produkty. Inną inteligentną apli- kacją sieciową jest Netflix — największy na świecie internetowy serwis strumienio- wania filmów. Oferuje on ponad 53 milionom subskrybentów dostęp do stale zmieniającej się biblioteki filmów i seriali, które można natychmiast obejrzeć za pomocą technologii strumieniowania. Sukces Netfliksa wynika po części z zapewnienia użytkownikom łatwego sposobu wyboru filmów z bogatej kolekcji. Odpowiada za to system rekomendacji Cinematch. Jego zadanie polega na prognozowaniu, czy użytkownikowi spodoba się dany film. Uwzględniane jest przy tym to, czy danej osobie spodobały się inne filmy. Jest to następny świetny przykład inteligentnej aplikacji sieciowej. Zdolność predykcyjna algorytmu Cinematch jest dla Netfliksa tak ważna, że w październiku 2006 roku firma ogłosiła konkurs na jego usprawnienie z główną nagrodą miliona dolarów. We wrześniu 2009 roku nagroda została przyznana zespołowi BellKor’s Pragmatic Chaos. W rozdziale 3. omawiamy algorytmy potrzebne do budowania systemów rekomendacji takich jak Cine- match oraz opisujemy zwycięski projekt. Poleć książkęKup książkę 1.4. Czym inteligentne aplikacje nie są 25 Wykorzystywanie opinii społeczności do generowania inteligentnych prognoz nie ogranicza się do rekomendacji książek lub filmów. Firma PredictWallStreet rejestruje prognozy użytkowników dotyczące określonych akcji lub indeksów, aby wykryć trendy w opiniach graczy giełdowych i przewidzieć wartość danych papierów wartościowych. Nie zalecamy podjęcia wszystkich oszczędności i rozpoczęcia inwestowania zgodnie z prognozami tej firmy, jest to jednak następny przykład kreatywnego zastosowania w praktyce technik omawianych w tej książce. 1.4. Czym inteligentne aplikacje nie są Ponieważ w sieci WWW działa tak wiele inteligentnych algorytmów, łatwo jest dojść do wniosku, że odpowiednia liczba inżynierów zdoła opracować lub zautomatyzować dowolny proces. Niech jednak powszechność takich rozwiązań Cię nie zwiedzie. Każda odpowiednio zaawansowana technologia jest nieodróżnialna od magii. — Arthur C. Clarke Po zapoznaniu się z aplikacją Google Now możesz mieć skłonność do podejrzewania bardziej rozbudowanych aplikacji o większą inteligencję. Jednak w rzeczywistości takie aplikacje łączą zestaw uczących się algorytmów w celu zapewnienia przydatnego roz- wiązania, ograniczonego jednak do konkretnych problemów. Dlatego nie czuj się przy- tłoczony złożonością zadania, ale zadaj sobie pytanie: „Które aspekty problemu są możliwe do wyuczenia i zamodelowania?”. Dopiero potem będziesz mógł opracować rozwiązania przejawiające inteligencję. W dalszych podrozdziałach omawiamy najczę- ściej przyjmowane błędne założenia dotyczące inteligentnych algorytmów. 1.4.1. Inteligentne algorytmy nie są myślącymi maszynami do uniwersalnych zastosowań Na początku tego rozdziału wspomnieliśmy, że nie jest to książka poświęcona budo- waniu czujących istot. Omawiamy tu budowanie algorytmów, które potrafią dostoso- wać swoje działanie na podstawie otrzymanych danych. Zgodnie z naszym doświad- czeniem projekty biznesowe, które najczęściej kończą się niepowodzeniem, to te z tak rozbudowanymi celami jak rozwiązanie całego problemu sztucznej inteligencji! Zacznij od czegoś prostego i rozwijaj to, stale oceniając aplikację do momentu, w którym uznasz, że pierwotny problem został rozwiązany. 1.4.2. Inteligentne algorytmy nie zastąpią ludzi Inteligentne algorytmy świetnie radzą sobie z uczeniem się konkretnego zagadnienia na podstawie odpowiednich danych. Nie są jednak dobre w uczeniu się nowych zagad- nień wykraczających poza to, jak zostały zaprogramowane. Dlatego inteligentne algo- rytmy i rozwiązania trzeba opracowywać i łączyć w staranny sposób, aby zapewnić zadowalające efekty. Ludzie natomiast są doskonałymi uniwersalnymi maszynami obliczeniowymi. Potrafią łatwo zrozumieć nowe koncepcje i wykorzystać wiedzę z jednej dziedziny w innej. Poleć książkęKup książkę 26 ROZDZIAŁ 1. Budowanie aplikacji na potrzeby inteligentnej sieci Posiadają różne serwomechanizmy (!) i można ich programować w wielu różnych języ- kach (!!). Błędem jest myśleć, że można łatwo napisać oparte na kodzie rozwiązania wyko- nujące pozornie proste ludzkie czynności. Wiele wymagających udziału człowieka procesów w firmach i organizacjach na pozór wydaje się prostych, jednak zwykle wynika to z tego, że kompletna specyfikacja danego procesu jest nieznana. Dalsze analizy zwykle prowadzą do wykrycia rozbudo- wanej komunikacji z użyciem różnych kanałów i często także koniecznością uwzględnie- nia sprzecznych celów. Inteligentne algorytmy słabo sobie radzą w takich scenariuszach i wymagają uproszczenia oraz sformalizowania procesu. Warto przedstawić prostą, ale trafną analogię do automatyzacji linii montażowych pojazdów silnikowych. W porównaniu z początkami automatyzacji w tej dziedzinie (gdzie pionierem był Henry Ford) obecnie można całkowicie zautomatyzować kroki procesu produkcji z użyciem robotów. Nie zostało to uzyskane, jak mógłby to sobie wyobrażać Henry Ford, dzięki zbudowaniu uniwersalnych humanoidalnych robotów, które zastąpiły pracowników. Automatyzacja była możliwa dzięki abstrakcyjnemu przed- stawieniu linii montażowej i rygorystycznemu sformalizowaniu procesu. To z kolei doprowadziło do ścisłego zdefiniowania podzadań, które można było rozwiązać dzięki robotyzacji. Choć teoretycznie możliwe jest opracowanie zautomatyzowanych proce- sów uczenia na potrzeby ręcznie wykonywanych optymalizacji, wymagałoby to podob- nego przeprojektowania i formalizacji zadań. 1.4.3. Inteligentne algorytmy nie są odkrywane przez przypadek Najlepsze inteligentne algorytmy są często wynikiem wykorzystania prostych abstrakcji i mechanizmów. Takie algorytmy wyglądają na skomplikowane, ponieważ uczą się i zmieniają, ale mechanizmy, na których są oparte, są proste. Natomiast inteligentne algorytmy niskiej jakości często są oparte na wielu warstwach skomplikowanych reguł dodawanych niezależnie od siebie w celu rozwiązania konkretnych sytuacji. Ujmijmy to tak: zawsze zaczynaj od możliwie najprostszego modelu. Następnie staraj się stopniowo uzyskiwać lepsze wyniki, wbudowując w rozwiązanie dodatkowe inteligentne aspekty. Reguła KISS (ang. keep it simple, stupid, czyli nie komplikuj, głupku) jest Twoim przyjacielem i niezmienną zasadą inżynierii oprogramowania. 1.5. Klasy inteligentnych algorytmów Może pamiętasz, że posłużyliśmy się nazwą inteligentny algorytm do opisu dowolnego algorytmu, który może modyfikować swoje działanie na podstawie danych. W tej książce to bardzo ogólne określenie ma obejmować wszystkie aspekty inteligencji i uczenia się. Gdy zajrzysz do innych pozycji, prawdopodobnie natrafisz na odmienne określenia, które po części się pokrywają. Oto one: uczenie maszynowe (ang. machine learning — ML), analityka predykcyjna (ang. predictive analytics — PA) i sztuczna inteligencja (ang. artificial intelligence — AI). Rysunek 1.4 przedstawia zależności między tymi dziedzinami. Poleć książkęKup książkę 1.5. Klasy inteligentnych algorytmów 27 Choć we wszystkich trzech dziedzinach wy- stępują algorytmy wykorzystujące dane do mody- fikowania działania, w każdym z tych obszarów klu- czowe są inne aspekty. W następnych podpunktach omawiamy po kolei każdy z tych obszarów, aby zapewnić Ci wiedzę niezbędną do powiązania tych dziedzin. Rysunek 1.4. Taksonomia inteligentnych algorytmów 1.5.1. Sztuczna inteligencja Sztuczna inteligencja, powszechnie znana pod akronimem AI, powstała jako dziedzina informa- tyki około 1950 roku. Początkowo badacze sztucz- nej inteligencji mieli ambitne plany i chcieli opracować maszyny myślące podobnie jak ludzie7. Z czasem, gdy ustalono pełen zakres prac potrzebnych do zasymulowania inteli- gencji, cele badaczy stały się bardziej praktyczne i konkretne. Obecnie stosowanych jest wiele definicji sztucznej inteligencji. Na przykład Stuart Russell i Peter Norvig opisują ją tak: „Dziedzina badań nad agentami, które przyjmują bodźce ze środowiska i wyko- nują działania”8, natomiast John McCarthy stosuje następującą definicję: „Dziedzina nauki i inżynierii związana z budowaniem inteligentnych maszyn, a zwłaszcza inteli- gentnych programów komputerowych”9. McCarthy dodaj też, że: „Inteligencja jest obliczeniowym aspektem możliwości realizowania celów w świecie”. W większości omówień sztuczna inteligencja wiązana jest z badaniami nad agen- tami (oprogramowaniem i maszynami), które mają zestaw opcji do wyboru i muszą zre- alizować konkretne cele. Badania dotyczą określonych dziedzin problemowych (na przy- kład gier w go10, szachy11 i Jeopardy!12) i w takich ograniczonych środowiskach efekty są często znakomite. Na przykład komputer Deep Blue firmy IBM w 1997 roku pokonał Garriego Kasparowa w szachy, a w 2011 roku komputer Watson tej samej firmy wygrał pierwszą nagrodę miliona dolarów w amerykańskim teleturnieju Jeopardy! Niestety, nieliczne algorytmy dobrze radzą sobie w wymyślonej przez Alana Turinga grze w naśladowanie13 (nazywanej też testem Turinga), uznawanej przez większość auto- rów za standardowy test na inteligencję. W tej grze chodzi o to, aby sędzia nie potrafił wykryć, że jego rozmówca jest maszyną (eliminowane są przy tym wskazówki wizualne 7 Herbert Simon, The Shape of Automation for Men and Management (Harper Row, 1965). 8 Stuart Russell i Peter Norvig, Artificial Intelligence: A Modern Approach (Prentice Hall, 1994). 9 John McCarthy, What Is Artificial Intelligence? (Stanford University, 2007), http://www-formal. stanford.edu/jmc/whatisai. 10Bruno Bouzy i Tristan Cazenave, Computer Go: An AI Oriented Survey, „Artificial Intelligence” (Elsevier) 132, nr 1 (2001): 39 – 103. 11Murray Campbell, A.J. Hoane i Feng-hsiung Hsu, Deep Blue, „Artificial Intelligence” (Elsevier) 134, nr 1 (2002): 57 – 83. 12D. Ferrucci i współpracownicy, Building Watson: An Overview of the DeepQA Project, „AI Maga- zine” 31, nr 3 (2010). 13Alan Turing, Computing Machinery and Intelligence, „Mind” 59, nr 236 (1950): 433 – 60. Poleć książkęKup książkę 28 ROZDZIAŁ 1. Budowanie aplikacji na potrzeby inteligentnej sieci i dźwiękowe — komunikacja odbywa się wyłącznie za pomocą wpisywanego tekstu). To zadanie jest znacznie trudniejsze, ponieważ maszyna musi mieć obszerną wiedzę z wielu obszarów. Sędzia nie jest tu ograniczony, jeśli chodzi o pytania, jakie może zadawać. 1.5.2. Uczenie maszynowe Uczenie maszynowe związane jest ze zdolnością oprogramowania do generalizowania na podstawie wcześniejszych doświadczeń. Ważne jest to, że te generalizacje mają pozwalać na udzielanie odpowiedzi na pytania dotyczące zarówno wcześniej zebranych danych, jak i nowych informacji. Niektóre techniki uczenia polegają na tworzeniu możliwych do wyjaśnienia modeli — nawet laik może prześledzić proces generali- zowania. Przykładami są tu drzewa decyzyjne i, w bardziej ogólnym ujęciu, dowolne metody uczenia oparte na regułach. Jednak inne algorytmy nie są równie transpa- rentne dla ludzi. Do tej kategorii należą sieci neuronowe i maszyny SVM (ang. support vector machines). Możesz uznać, że zakres uczenia maszynowego znacznie różni się od tematyki sztucz- nej inteligencji. W sztucznej inteligencji istotne są agenty, które mają realizować cele (podobnie jak agent będący człowiekiem działa na ogólnym poziomie w swoim środowi- sku), natomiast w uczeniu maszynowym ważne są uczenie się i generalizacja (bardziej przypomina to wewnętrzne funkcjonowanie ludzi). W uczeniu maszynowym rozwią- zywane są takie problemy jak klasyfikowanie (rozpoznawanie klas na podstawie danych) i regresja (prognozowanie jednego wyniku na podstawie innego). Na ogólnym poziomie praktycy z dziedziny uczenia maszynowego używają danych treningowych do opracowania modelu. Ten model generalizuje w pewien sposób (zależny od używanego modelu) relacje między danymi, aby możliwe było generowa- nie prognoz na temat nienapotkanych wcześniej danych. Ilustruje to rysunek 1.5. W tym przykładzie dane obejmują trzy cechy: A, B i C. Cechy to aspekty danych. Jeśli klasy to „kobiety” i „mężczyźni”, a zadanie polega na podziale grupy na te klasy, można wyko- rzystać cechy takie jak wzrost, waga i numer buta. Rysunek 1.5. Przepływ danych w uczeniu maszynowym. Dane służą do treningu modelu, który można następnie zastosować do nowych danych. Tu schemat ilustruje klasyfikowanie. Schematy obrazujące klastrowanie i regresję wyglądają podobnie W danych treningowych relacje między cechami i klasami są znane. W modelu należy ująć te relacje. Po zakończeniu treningu model można zastosować do nowych danych, których klasa jest nieznana. Poleć książkęKup książkę 1.5. Klasy inteligentnych algorytmów 29 1.5.3. Analityka predykcyjna Analityka predykcyjna nie jest tak szeroko opisywana w literaturze akademickiej jak sztuczna inteligencja i uczenie maszynowe. Jednak wraz z dojrzewaniem architektur przetwarzania dużych zbiorów danych i rosnącym apetytem na operacyjne wykorzy- stanie danych i uzyskanie dzięki nim dodatkowej wartości dziedzina ta zyskuje na popularności. Na potrzeby tej książki używamy przedstawionej poniżej definicji, roz- budowującej definicję analityki ze słownika oksfordzkiego. Dodany został fragment wyróżniony kursywą: Analityka predykcyjna: systematyczna obliczeniowa analiza danych lub statystyk w celu tworzenia modeli predykcyjnych. Możesz zadać pytanie: „Jak różni się to od uczenia maszynowego, które też dotyczy predykcji?”. To dobre pytanie. Ogólnie techniki uczenia maszynowego mają pomóc zrozumieć i zgeneralizować strukturę oraz relacje w zbiorze danych. W analityce pre- dykcyjnej ważne jest generowanie ocen, rankingów i predykcji dotyczących przyszłych danych i trendów, często w środowisku biznesowym lub operacyjnym. Choć to porów- nanie może wydawać się niejasne, warto zauważyć, że omawiane tu klasy inteligentnych algorytmów w dużym stopniu się pokrywają oraz nie są konkretne i ścisłe. Co ciekawe, analitycy zwykle nie tworzą rozwiązań z obszaru analityki predykcyjnej. W analityce predykcyjnej ważne jest tworzenie modeli, które na podstawie informacji potrafią reagować szybko i wydajnie, generując przydatne dane wyjściowe prognozu- jące przyszłe zjawiska. Takie systemy często są tworzone przez inżynierów oprogra- mowania i naukowców zajmujących się danymi. Sytuację dodatkowo komplikuje to, że w modelach analityki predykcyjnej używane są czasem techniki uczenia maszynowego i sztucznej inteligencji! PRZYKŁADY Z OBSZARU ANALITYKI PREDYKCYJNEJ Aby pomóc Ci intuicyjnie zrozumieć ten obszar, przedstawiamy kilka przykładowych rozwiązań z dziedziny analityki predykcyjnej. Pierwszy pochodzi ze świata reklamy internetowej. Uważni użytkownicy internetu zapewne zauważyli, że reklamy często „podążają za nimi”, gdy przeglądają różne witryny. Jeśli wcześniej oglądałeś buty na stronie sklepu Nike, na innych stronach często zobaczysz reklamy tego właśnie obuwia! Jest to tak zwany retargeting. Za każdym razem, gdy wczytywana jest strona z rekla- mami, wiele różnych jednostek podejmuje setki decyzji, chcąc wyświetlić Ci okre- ślone reklamy. System wymiany reklamy działa w ten sposób, że każda jednostka podaje cenę, jaką jest gotowa zapłacić za wyświetlenie Ci reklamy. Oferent najwyższej kwoty wygrywa prawo do pokazania reklamy. Ponieważ cały proces musi zachodzić w ciągu milisekund, cenę ustala inteligentny algorytm starający się przewidzieć lub ocenić war- tość danego użytkownika. To rozwiązanie z obszaru analityki predykcyjnej podejmuje decyzje na podstawie wcześniejszych zachowań użytkownika i daje korzyści w porów- naniu z losowym doborem odbiorców reklam. Do tego przykładu wrócimy w roz- dziale 5., gdzie zobaczysz, jak problem ten rozwiązało wiele firm reklamujących się w internecie. Poleć książkęKup książkę 30 ROZDZIAŁ 1. Budowanie aplikacji na potrzeby inteligentnej sieci Drugi przykład pochodzi z dziedziny kredytów konsumpcyjnych. Za każdym razem, gdy starasz się o kredyt na karcie stałego klienta, karcie kredytowej, u dostawcy tele- fonii komórkowej lub o kredyt hipoteczny, sprzedawca naraża się na pewne ryzyko, a także może odnieść określone korzyści. Aby zrównoważyć te aspekty, sprzedawcy chcą wiedzieć, że udzielają kredytów zwłaszcza godnym zaufania osobom, a odmawiają klien- tom, którzy z większym prawdopodobieństwem nie będą spłacać długu. W praktyce podejmowanie takich decyzji zlecane jest wyspecjalizowanym agencjom ratingowym, które za opłatą przekazują sprzedawcy informacje o zdolności kredytowej danej osoby. Ocena jest generowana przez rozwiązanie z obszaru analityki predykcyjnej na pod- stawie danych historycznych dla danej populacji. Ta ocena to liczba wysoce skorelo- wana z ryzykiem dotyczącym danej osoby. Im wyższy wynik, tym bardziej godny zaufa- nia jest klient i tym mniejsze ryzyko niespłacenia kredytu. Zauważ, że to podejście daje tylko przewagę statystyczną, ponieważ osoby o wysokiej ocenie kredytowej też mogą zaprzestać spłat (choć — jeśli model działa — zdarza się to rzadziej niż w przypadku klientów o niższej ocenie). 1.6. Ocena działania inteligentnych algorytmów Do tej pory pisaliśmy o ogólnych klasach inteligentnych algorytmów i przedstawiliśmy kilka przykładów. Jak jednak praktyk z tej dziedziny może ocenić swój algorytm? Ma to duże znaczenie i to z kilku przyczyn. Po pierwsze, bez obiektywnej oceny nie da się śledzić wyników i ustalić, czy modyfikacje ulepszyły rozwiązanie. Po drugie, jeśli nie da się mierzyć wyników, trudno jest uzasadnić sens stosowania rozwiązania. W kon- tekście biznesowym menedżerowie i technologowie zawsze będą starali się uwzględ- niać zyski i koszty, a możliwość solidnej oceny rozwiązania pomaga zachować je w śro- dowisku produkcyjnym. Dalej wracamy do poszczególnych klas inteligentnych algorytmów i omawiamy stra- tegie ich oceny. Choć poruszamy tu kwestię oceny inteligencji, ten podrozdział doty- czy głównie oceny predykcji (związanych z uczeniem maszynowym i analityką pre- dykcyjną). Ocena i definiowanie inteligencji to obszerne tematy, które zasługują na odrębną książkę. Dlatego zamiast omawiać je w tym miejscu, odsyłamy Czytelników do książek Lindy Gottfredson14, Jamesa Flynna15 i Alana Turinga16. 1.6.1. Ocena inteligencji Wcześniej wspomnieliśmy o teście Turinga. Czasem jednak trzeba ocenić systemy, któ- rym stawiane są mniej ambitne cele — na przykład inteligentne systemy grające w szachy lub biorące udział w teleturnieju Jeopardy! Takie systemy nie potrafią naśla- 14Linda S. Gottfredson, Mainstream Science on Intelligence:An Editorial with 52 Signatories, History, and Bibliography, „Wall Street Journal”, 13 grudnia 1994. 15James R. Flynn, What Is Intelligence? Beyond the Flynn Effect (Cambridge University Press, 2009). 16Alan Turing, Computing Machinery and Intelligence. Poleć książkęKup książkę 1.6. Ocena działania inteligentnych algorytmów 31 dować człowieka, ale świetnie radzą sobie w pojedynczych zadaniach. Zaproponowany przez Sandeepa Rajaniego sposób oceny sztucznej inteligencji17 obejmuje cztery poziomy:  Optymalny — niemożliwe jest uzyskanie lepszych wyników.  Zdecydowanie lepszy od człowieka — działanie lepsze niż jakiegokolwiek człowieka.  Lepszy od człowieka — działanie lepsze niż większości ludzi.  Gorszy od człowieka — działanie gorsze niż większości ludzi. Na przykład obecny poziom sztucznej inteligencji pozwala tworzyć systemy optymalne w grze w kółko i krzyżyk, lepsze od człowieka (lub nawet zdecydowanie lepsze od czło- wieka) w szachach i gorsze od człowieka w tłumaczeniu tekstów w językach naturalnych. 1.6.2. Ocena predykcji Choć sztuczna inteligencja jest interesująca, większość rozwiązań z tej książki nie dotyczy tej dziedziny. Dlatego należy poszukać bardziej adekwatnych sposobów oceny. Pamiętaj, że w uczeniu maszynowym i analityce predykcyjnej celem jest generowanie prognoz na podstawie danych oraz relacji między cechami i docelowymi wartościami (klasami). Istnieje więc konkretny schemat oceny i można zastosować statystykę do for- malnego pomiaru wyników. W tabeli 1.1 przedstawiony jest (skrajnie uproszczony) zbiór danych, który posłuży do zilustrowania pomiaru skuteczności predyktora. Cechy danych są opisane za pomocą liter alfabetu, a obok przedstawione są wartości logiczne oznaczające rzeczywisty i prognozowany wynik. Przyjmij, że predykcje zostały wygenerowane na podstawie zbioru danych testowych, których pierwotny model nie znał. W zbiorze danych testo- wych rzeczywiste wyniki były ukryte, dlatego model musiał ustalić dane wyjściowe wyłącznie na podstawie cech. Tabela 1.1. Przykładowy zbiór danych używany do przedstawienia sposobu oceny inteligentnego algorytmu A 10 20 5 1 B 4 7 6 2 … … … … … Rzeczywisty wynik Predykcja Prawda Prawda Fałsz Fałsz Fałsz Prawda Fałsz Prawda Od razu widać, że do oceny działania tego klasyfikatora można zastosować kilka pro- stych miar. Przede wszystkim można badać współczynnik predykcji prawdziwie pozy- tywnych (ang. true positive rate — TPR), czyli łączną liczbę predykcji prawdziwie pozytywnych podzieloną przez łączną liczbę wartości pozytywnych w całym zbiorze danych. Miarę tę nazywa się czasem czułością (ang. sensivity lub recall). Zauważ jednak, że jest to tylko połowa obrazu! Jeśli zbudujesz klasyfikator, który zawsze generuje 17Sandeep Rajani, Artificial Intelligence — Man or Machine, „International Journal of Information Technology and Knowledge Management” 4, nr 1 (2011): 173 – 76. Poleć książkęKup książkę 32 ROZDZIAŁ 1. Budowanie aplikacji na potrzeby inteligentnej sieci pozytywną prognozę (niezależnie od cech w danych), uzyskasz bardzo wysoką czułość. Dlatego tę miarę trzeba analizować razem z innym wskaźnikiem — swoistością (ang. specificity; inaczej współczynnik predykcji prawdziwie negatywnych, ang. true negative rate — TNR). Określa on liczbę predykcji prawdziwie negatywnych podzieloną przez łączną liczbę wartości negatywnych w całym zbiorze. Idealny klasyfikator uzyskuje TPR i TNR na poziomie 100 . Niestety, większość klasyfikatorów jest daleka od doskonałości, dlatego ich skutecz- ność trzeba oceniać na podstawie błędów. Współczynnik predykcji fałszywie pozytyw- nych (ang. false positive rate — FPR) to 1 minus TNR, natomiast współczynnik pre- dykcji fałszywie negatywnych (ang. false negatywnych rate — FNR) to 1 minus TPR. Są to tak zwane błędy pierwszego rodzaju i błędy drugiego rodzaju. W tabeli 1.2 przed- stawione są relacje między opisanymi miarami. Tabela 1.2. Miary skuteczności używane do oceny inteligentnych algorytmów Miara Współczynnik predykcji prawdziwie pozytywnych (TPR) Współczynnik predykcji prawdziwie negatywnych (TNR) Współczynnik predykcji fałszywie pozytywnych (FPR) Współczynnik predykcji fałszywie negatywnych (FNR) Obliczenia Predykcje prawdziwie pozytywne / rzeczywiste wyniki pozytywne Predykcje prawdziwie negatywne / rzeczywiste wyniki negatywne 1 – współczynnik predykcji prawdziwie negatywnych 1 – współczynnik predykcji prawdziwie pozytywnych Aby utrwalić te informacje, zastosuj miary z tabeli 1.2 do zbioru danych z tabeli 1.1. Jeśli starannie zastosujesz definicje, stwierdzisz, że TPR i TNR są równe 1/2, z czego wynika, że wartości FPR i FNR są takie same. Załóżmy teraz, że algorytm zawiera wewnętrzny mechanizm dostosowujący jego działania — na przykład „pokrętło” dostosowujące czułość algorytmu. Gdy pokrętło jest ustawione na zero, algorytm ma bardzo niską czułość i klasyfikuje wszystkie przy- padki jako fałszywe (TNR = 1, TPR = 0). Natomiast po ustawieniu pokrętła na 11 algorytm uznaje wszystkie przypadki za prawdziwe (TNR = 0, TPR = 1). Oczywiście żadna z tych sytuacji nie jest pożądana. Optymalny jest klasyfikator, który generuje wynik pozytywny tylko dla pozytywnych elementów i wynik negatywny tylko dla nega- tywnych elementów (TNR = 1, TPR = 1). Taki idealny mechanizm jest możliwy wyłącznie dla skrajnie uproszczonych problemów. Możesz jednak zobaczyć, jak roz- wiązanie działa dla różnych ustawień pokrętła, i wykorzystać wyniki do oceny algorytmu (zobacz rysunek 1.6). Na rysunku 1.6 pokazane są krzywe ROC (ang. receiver operating characteristic) dla dwóch fikcyjnych klasyfikatorów. Te krzywe ilustrują miary TPR i FPR dla różnych ustawień wyimaginowanego pokrętła, które zmienia parametry klasyfikatorów. Wcze- śniej wspomnieliśmy, że dla idealnego klasyfikatora TPR = 0 i TNR = 0 (FPR = 0). Dlatego modele zbliżone do lewego górnego rogu wykresu są teoretycznie lepsze, ponieważ lepiej radzą sobie z wyodrębnianiem klas pozytywnej i negatywnej. Na poka- zanym wykresie klasyfikator 2. jest skuteczniejszy i należy go wybrać zamiast klasyfi- Poleć książkęKup książkę 1.7. Ważne uwagi na temat inteligentnych algorytmów 33 Rysunek 1.6. Krzywe ROC dwóch fikcyjnych klasyfikatorów. Po zmodyfikowaniu parametru algorytmu widoczna jest zmiana w jego działaniu dla określonego zbioru danych. Im bliżej krzywa znajduje się lewego górnego rogu, tym klasyfikator jest bliższy ideałowi, ponieważ TPR = 1 i TNR = 1 (TNR = 1 – FPR) katora 1. Inny sposób oceny skuteczności to obliczenie powierzchni pod krzywą ROC (jest to powierzchnia AUC — od ang. area under the curve, czyli powierzchnia pod krzywą). Im większa jest powierzchnia AUC, tym wyższa skuteczność modelu. Do tej pory wszystko wygląda sensownie. Wiedz jednak, że w rozwiązaniach z obszaru analityki predykcyjnej sytuacja nie zawsze jest tak prosta. Pomyśl na przykład o ocenach kredytowych. Gdy wydasz ocenę, nie zawsze możesz prześledzić, jak dany klient będzie się zachowywał w przyszłości. Ponadto w takich scenariuszach nie próbujesz udzielić odpowiedzi; celem jest określenie wartości skorelowanej z docelową zmienną (na przykład z wiarygodnością kredytobiorcy). Choć w takich sytuacjach można posłużyć się krzywą ROC, czasem trzeba pokonać kilka dodatkowych przeszkód. 1.7. Ważne uwagi na temat inteligentnych algorytmów Do tej pory omówiliśmy już wiele wprowadzającego materiału. Na tym etapie powinie- neś dobrze (choć na ogólnym poziomie) rozumieć inteligentne algorytmy i wiedzieć, jak się nimi posługiwać. Zapewne jesteś niecierpliwy i zmotywowany, aby przejść do szczegółów. Nie zawiedziemy Cię. Każdy następny rozdział jest bogaty w nowy i war- tościowy kod. Jednak zanim rozpoczniesz podróż po ekscytującym i (dla bardziej cynicznych programistów) atrakcyjnym finansowo świecie inteligentnych aplikacji, powinieneś zapoznać się z listą przydatnych informacji. Liczne z nich zapożyczyliśmy z doskonałej i przystępnej pracy Pedro Domingosa18. Te informacje będą pomocne w czasie lektury tej książki, a także później, w trakcie pracy w dziedzinie inteligentnych algorytmów. 18Pedro Domingos, A Few Useful Things to Know About Machine Learning, „Communications of the ACM” 55, nr 10 (2012): 78 – 87. Poleć książkęKup książkę 34 ROZDZIAŁ 1. Budowanie aplikacji na potrzeby inteligentnej sieci 1.7.1. Dane nie są wiarygodne Dane z wielu powodów mogą być niewiarygodne. To dlatego zawsze powinieneś sprawdzać, czy używane dane są godne zaufania. Dopiero potem możesz zacząć zasta- nawiać się nad rozwiązaniem problemu za pomocą inteligentnych algorytmów. Nawet inteligentni ludzie dochodzą zwykle do błędnych wniosków, jeśli posługują się niepra- widłowymi danymi. Poniżej znajduje się przydatna, choć niepełna lista źródeł proble- mów z danymi:  Dane dostępne w trakcie rozwijania rozwiązania mogą być niereprezentatywne dla danych ze środowiska produkcyjnego. Załóżmy, że chcesz dzielić użytkow- ników sieci społecznościowej według wzrostu na grupy: „wysocy”, „przeciętni” i „niscy”. Jeśli najniższa osoba w Twoim zespole programistycznym ma 184 cen- tymetry wzrostu, ryzykujesz tym, że nazwiesz kogoś niskim, ponieważ mierzy „tylko” 184 centymetry.  W danych mogą występować braki. W rzeczywistości, jeśli dane nie są sztucznie generowane, prawie na pewno będą niepełne. Obsługa braku wartości to skom- plikowane zadanie. Zwykle albo pozostawia się lukę w wartościach, albo zapeł- nia ją domyślnymi lub obliczonymi wartościami. Oba podejścia mogą prowa- dzić do niestabilnych rozwiązań.  Dane mogą się zmieniać. Ktoś może zmodyfikować schemat bazy danych lub zmienić znaczenie przechowywanych w niej danych.  Dane mogą być nieznormalizowane. Załóżmy, że analizujesz wagę grupy osób. Aby można było dojść do znaczących wniosków na podstawie wagi, jednostki miary dla wszystkich osób powinny być takie same. W całym zbiorze trzeba używać albo funtów, albo kilogramów, a nie jednej jednostki dla części osób i drugiej dla pozostałych.  Dane mogą być niedostosowane do algorytmicznego podejścia, jakie planujesz zastosować. Dane przyjmują różne postacie i formy, którym odpowiadają typy danych. Niektóre zbiory danych są liczbowe, inne nie. Niektóre zbiory danych można porządkować, inne tego nie umożliwiają. Niektóre liczbowe zbiory danych są nieciągłe (na przykład liczba osób w pomieszczeniu), natomiast inne — ciągłe (na przykład temperatura lub ciśnienie atmosferyczne). 1.7.2. Wnioskowanie wymaga czasu Obliczanie rozwiązania zajmuje czas, a szybkość reagowania aplikacji może być krytyczna dla odniesienia przez firmę finansowego sukcesu. Nie powinieneś przyjmować, że wszystkie algorytmy dla wszystkich zbiorów danych będą działały na tyle szybko, by aplikacja mogła udzielić odpowiedzi w ustalonym limicie czasu. Należy przetestować szybkość algorytmu z uwzględnieniem charakterystyki działania aplikacji. 1.7.3. Wielkość ma znaczenie! W kontekście inteligentnych aplikacji wielkość ma znaczenie! Wielkość danych jest istotna w dwóch aspektach. Pierwszy związany jest ze wspomnianym wcześniej czasem reagowania. Drugi dotyczy możliwości uzyskania wartościowych wyników dla dużych Poleć książkęKup książkę 1.7. Ważne uwagi na temat inteligentnych algorytmów 35 zbiorów danych. Możliwe, że aplikacja potrafi generować doskonałe rekomendacje filmów lub muzyki dla około 100 użytkowników, ale dla grup około 100 000 osób zwraca mało przydatne wyniki. Ponadto, co związane jest z „przekleństwem wymiarów” (zobacz rozdział 2.), prze- kazanie większej ilości danych do prostego algorytmu często daje znacznie lepsze wyniki niż budowanie bardziej skomplikowanego klasyfikatora. Gdy przyjrzysz się dużym korporacjom (takim jak Google), które wykorzystują bardzo duże ilości danych, powinieneś docenić zarówno umiejętność obsługi dużych zbiorów danych treningo- wych, jak i złożoność oraz zaawansowanie rozwiązań klasyfikujących. 1.7.4. Różne algorytmy skalują się w odmienny sposób Nie zakładaj, że możliwe jest skalowanie inteligentnej aplikacji przez proste dodanie kolejnych maszyn. W ogóle nie powinieneś przyjmować, że rozwiązanie jest skalowalne. Niektóre algorytmy się skalują, natomiast inne nie. Załóżmy, że wśród miliardów tytułów chcesz znaleźć grupy artykułów informacyjnych z podobnymi nagłówkami. Nie wszystkie algorytmy klastrowania mogą działać równolegle. Powinieneś uwzględnić skalowalność na etapie projektowania aplikacji. W niektórych sytuacjach możliwy jest podział danych i zastosowanie inteligentnego algorytmu równolegle do mniejszych zbiorów danych. Algorytmy wybrane w trakcie projektowania mają czasem wersje równoległe (współ- bieżne), jednak powinieneś sprawdzić to już na początku prac, ponieważ na podstawie użytych algorytmów tworzona jest rozbudowana infrastruktura i logika biznesowa. 1.7.5. Nie wszystko jest gwoździem! Możliwe, że zetknąłeś się już z twierdzeniem: „Jeśli masz tylko młotek, wszystko wygląda jak gwóźdź”. Oznacza to, że nie da się za pomocą tego samego algorytmu rozwiązać wszystkich problemów wymagających inteligentnych aplikacji. Inteligentne aplikacje są jak każde inne oprogramowanie — mają określony obszar zastosowań i pewne ograniczenia. Koniecznie starannie przetestuj swoje ulubione roz- wiązanie w nowych obszarach. Ponadto zalecamy, aby każdy problem analizować z nowej perspektywy. Inne algorytmy mogą rozwiązywać określone problemy w wydaj- niejszy lub bardziej dogodny sposób. 1.7.6. Dane to nie wszystko Algorytmy uczenia maszynowego nie działają w magiczny sposób i wymagają indukcji, aby wyjść poza dane treningowe i móc przetwarzać nieznane wcześniej informacje. Jeśli masz już bogatą wiedzę na temat zależności w danych, dobrą reprezentacją mogą być modele graficzne, pozwalające łatwo przedstawić uprzednią wiedzę19. Staranne przemyślenie tego, co już wiadomo w danej dziedzinie (z uwzględnieniem danych), pomaga budować skuteczne klasyfikatory. 19Judea Pearl, Probabilistic Reasoning in Intelligent Systems (Morgan Kaufmann Publishers, 1988). Poleć książkęKup książkę 36 ROZDZIAŁ 1. Budowanie aplikacji na potrzeby inteligentnej sieci 1.7.7. Czas treningu może się zmieniać W niektórych zastosowaniach czas generowania rozwiązania może się znacznie zmie- niać przy tylko niewielkiej zmianie parametrów. Zwykle użytkownicy oczekują, że po zmianie parametrów problemu nadal będzie można go rozwiązać w tym samym czasie. Gdy używasz metody zwracającej odległość między dwoma lokalizacjami geograficz- nymi na Ziemi, spodziewasz się, że uzyskasz wynik w tym samym czasie niezależnie od uwzględnianych lokalizacji. Jednak nie we wszystkich problemach jest to prawdą. Pozornie niewinna zmiana w danych może prowadzić do znacznej zmiany czasu gene- rowania wyniku. Bywa, że ten czas zmienia się z sekund na godziny! 1.7.8. Celem jest generalizacja Jedną z pułapek, w którą praktycy z obszaru uczenia maszynowego wpadają najczę- ściej, jest koncentracja na procesie pracy i zapomnienie o ostatecznym celu, a jest nim generalizacja analizowanego zjawiska. W fazie testów niezbędne jest stosowanie metod, które pozwalają ocenić ogólność rozwiązania (pomijanie danych testowych w czasie treningu, walidacja krzyżowa itd.). Nic jednak nie zastąpi używania od początku odpo- wiedniego zbioru danych! Jeśli próbujesz uogólnić proces o milionie atrybutów za pomocą kilkuset przykładów testowych, skupianie się na osiągnięciu wysokiej trafności nie ma żadnego sensu. 1.7.9. Ludzka intuicja nie zawsze się sprawdza Gdy przestrzeń cech rośnie, następuje eksplozja kombinatoryczna, jeśli chodzi o liczbę możliwych wartości wejściowych. Dlatego już dla umiarkowanie rozbudowanego zbioru cech możesz zobaczyć tylko bardzo niewielki ułamek wszystkich możliwych danych wej- ściowych. Bardziej problematyczne jest to, że wraz z rosnącą liczbą cech ludzka intu- icja zaczyna zawodzić. Na przykład większość masy w wielowymiarowym rozkładzie normalnym znajduje się nie blisko średniej, ale w „otoczce” wokół niej20. Budowanie prostego klasyfikatora dla niewielkiej liczby wymiarów jest łatwe, jednak przy większej liczbie wymiarów trudno jest zrozumieć zależności w danych. 1.7.10. Pomyśl o zaprojektowaniu nowych cech Prawdopodobnie zatknąłeś się ze stwierdzeniem: „śmieci na wejściu, śmieci na wyjściu”. Ma ono duże znaczenie w trakcie budowania rozwiązań z obszaru uczenia maszyno- wego. Bardzo istotne jest tu zrozumienie dziedziny problemowej, a ustalenie zestawu cech uwidaczniającego badane zjawisko może mieć duży wpływ na trafność i ogólność klasyfikatora. Nie wystarczy przekazać klasyfikatorowi wszystkich dostępnych danych i liczyć na cud. 1.7.11. Poznaj wiele różnych modeli Coraz popularniejsze stają się zestawy modeli, ponieważ pozwalają ograniczyć zmien- ność w procesie klasyfikacji kosztem tylko niewielkiego błędu systematycznego. W kon- kursie Netflix Prize pierwsze i drugie miejsce zajęły zestawy warstwowe (w których da
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Inteligentna sieć. Algorytmy przyszłości. Wydanie II
Autor:
, ,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: