Sztuczna inteligencja
Etyka w AI – równoważąc innowacyjność i odpowiedzialność w IT
Sztuczna inteligencja (ang. artificial intelligence – AI) to coraz częściej wykorzystywana technologia, obecna w różnych aspektach naszego życia. Jej implementacja otwiera przed nami coraz więcej możliwości i umożliwia rozwiązania, które przed jej zaistnieniem nie były możliwe. Ciągły rozwój w dziedzinie sztucznej inteligencji pokazuje, jak duże różnice występują między rozwiązaniami wykreowanymi przez umysł człowieka, a tymi proponowanymi nam przez maszyny. Okazuje się, że sztuczna inteligencja potrafi rozwiązywać pewne problemy w sposób zupełnie inny, niż zrobiłby to człowiek.
W kontekście sztucznej inteligencji warto zauważyć, że dzisiejszy świat to świat dużych zbiorów danych (ang. big data). Dzięki sztucznej inteligencji i sieciom neuronowym możemy podejmować oparte na tych danych decyzje i pozyskiwać ogromne ilości informacji dosłownie w ciągu sekund. Pozyskiwana dzięki AI wiedza wpływa więc znacząco na tempo rozwoju wielu różnych dziedzin.
Zauważając ten potencjał, w firmie WEBSENSA wykorzystujemy sztuczną inteligencję i jej podobszary, takie jak przetwarzanie języka naturalnego (ang. natural language processing) oraz narzędzia, takie jak uczenie maszynowe(ang. machine learning). Wdrażamy technologie oparte na AI w różnych projektach, zarówno tych realizowanych dla klientów, jak i w naszych własnych. Celem wprowadzenia do opisu sposobów wykorzystania przez nas tej technologii, przedstawimy teraz krótko specyfikę i budowę głównych rodzajów sieci neuronowych.
Sieci neuronowe, nazywane właściwie sztucznymi sieciami neuronowymi (ang. artificial neural networks – ANN), oparte są na zasadzie działania biologicznych sieci neuronowych. ANN składają się z elementów zwanych neuronami, z których każdy może podejmować pojedyncze decyzje oparte na obliczeniach matematycznych. Sieci neuronowe są więc konstrukcją matematyczną – złożonym z warstw algorytmem, który po otrzymaniu danych wejściowych oddaje dane wyjściowe.
Sztuczne sieci neuronowe można stosować na różne sposoby, między innymi do rozpoznawania wzorców, optymalizacji, pamięci asocjacyjnej i przewidywania. W tym artykule chcemy przybliżyć nieco dwa rodzaje sieci neuronowych.
Konwolucyjna (splotowa) sieć neuronowa (ang. Convolutional neural network – CNN) to sieć specjalizująca się głównie w rozpoznawaniu i klasyfikowaniu obrazów. Można ją wykorzystywać do realizacji dowolnych zadań związanych z wizualizacją komputerową. Ogólnie rzecz biorąc, CNN wykorzystuje fakt, że każdy obraz składa się z dających się rozróżnić, pojedynczych elementów – pikseli. Sieć tworzy mechanizm analizy każdego z tych elementów w celu klasyfikacji obrazu jako całości.
Warstwa łącząca jest też nazywana próbkowaniem w dół i działa na każdej mapie cech, w celu utworzenia nowych zestawów połączonych map cech. Warstwa łącząca ma za zadanie zmniejszyć rozmiar danych (liczbę pikseli czy wartości). Uzyskane wyniki w postaci map z próbkowaniem w dół są przydatne ze względu na wrażliwość sieci na lokalizację elementów obrazu. Po połączeniu map, sieci stają się bardziej odporne na zmiany położenia obiektu na obrazie.
W pełni połączona warstwa jest kluczową częścią każdej sieci neuronowej, w tym także CNN. W tej warstwie odbywa się końcowa klasyfikacja obrazów do wersji komputerowej, a jej celem jest porządkowanie obrazów według przyjętych klas.
Po tym, jak warstwa konwolucyjna i warstwa pooling zakończą analizę, dane wyjściowe są spłaszczone w pojedynczy wektor wartości, gdzie każda wartość pokazuje, jakie jest prawdopodobieństwo, że konkretna cecha należy do określonej klasy. W pełni połączona warstwa zbiera wyniki tego procesu oraz oblicza wynik klasyfikacji, a następnie przechodzi przez wsteczną propagację.
Propagacja wsteczna (ang. backpropagation) to algorytm, który minimalizuje możliwość błędu poprzez wyszukiwanie optymalnych wartości wag sieci. Podczas tego procesu dokonuje się korekty wag poszczególnych neuronów w taki sposób, aby zmniejszyły błąd jaki był obliczony na wyjściu sieci. Cały ten proces pozwala uzyskać wynik jak najbardziej zgodny z prawdą.
Rekurencyjna sieć neuronowa (ang. Recurrent neural network – RNN) to wielowarstwowa sieć neuronowa, która wykorzystuje uczenie głębokie do przewidywania lub klasyfikacji danych sekwencyjnych, w tym językowych. RNN jest oparta na procesie wyszukiwania zależności, w którym bierze pod uwagę elementy analizowanych danych wejściowych.
Ten rodzaj sieci różni się od pozostałych. W przeciwieństwie do jednokierunkowych sieci neuronowych, dane wyjściowe niektórych warstw są przesyłane z powrotem do danych wejściowych poprzedniej warstwy. To dodanie pozwala na analizę danych sekwencyjnych, czego nie jest w stanie wykonać tradycyjna sieć neuronowa.
Chociaż sieci neuronowe otwierają przed nami wiele możliwości, korzystanie z nich wiąże się też z różnymi ograniczeniami. Ich przyczyną mogą być między innymi ilość lub jakość danych wejściowych – jeśli nie zapewnimy wystarczającej ich ilości lub nie będą one reprezentatywne. Sieć może mieć wtedy problemy z wyciągnięciem odpowiednich wniosków i klasyfikacją danych według jakiegoś wzoru czy korelacji.
Kolejna problematyczna sytuacja może pojawić się w przypadku bardzo dużych sieci neuronowych. Im są one większe, tym ich “trenowanie” staje się trudniejsze i bardziej czasochłonne. Aby uzyskać pożądane efekty, sieci neuronowe wymagają trenowania w zakresie „poprawnego” działania danych wejściowych, a w przypadku dużych zbiorów danych – dłuższego czasu ich przetwarzania.
Razem z OMD Poland Media Agency i McDonald's Poland WEBSENSA stworzyła System Rozpoznawania Obrazów, którego zadaniem było wykrywanie, które produkty sieci McDonald były prezentowane na zdjęciach użytkowników Instagrama z hashtagiem #mamsmakanamaka.
Przeszkoliliśmy sieci neuronowe tak, aby rozpoznawały i klasyfikowały te produkty na zdjęciach. Byliśmy w stanie otagować i wyróżnić produkty sieci – hamburgery, frytki, kawy, zimne napoje, lody i desery. Dzięki temu możliwe było zobaczenie, z jakimi produktami sieci McDonald użytkownicy najchętniej robią sobie zdjęcia, a tym samym – które produkty są najbardziej popularne wśród konsumentów.
System ten pozwolił firmie McDonald lepiej poznać preferencje swoich konsumentów, a następnie polepszyć komunikację z klientami w mediach społecznościowych. Zebrane dane umożliwiły wdrożenie skuteczniejszej promocji marki w Internecie.
Projekt okazał się dużym sukcesem. Doceniono go między innymi na konkursie INNOVATION 2018 – otrzymaliśmy za niego III miejsce w kategorii media/algorytmy i narzędzia optymalizacyjne.
Bidder to część naszego zestawu produktów stworzonych dla obszaru AdTech OpenRTB (real-time bidding). Jego celem jest wybór i wyświetlenie najbardziej odpowiedniej reklamy dla użytkownika odwiedzającego daną stronę z zestawu wszystkich aktywnych kampanii reklamowych.
Ostatnia z wymienionych kwestii może być rozwiązana tylko za pomocą algorytmów uczenia maszynowego lub sieci neuronowych. Przez ponad rok ciągłego rozwoju i testowania kolejnych wersji WEBSENSA OpenRTB Bidder wdrażaliśmy różne algorytmy uczenia maszynowego i architektury sieci neuronowych.
Zaczęliśmy od regresji logistycznej (ang. logistic regression), ale nie dało nam to wyników lepszych niż prosta heurystyka. Drugim rozwiązaniem była maszyna do faktoryzacji (ang. factorisation machine) oparta na sieci neuronowej z warstwami w pełni połączonymi. Następnie wdrożyliśmy rekurencyjną sieć neuronową i uwzględniliśmy w niej historię sesji użytkowników, co znacznie poprawiło wydajność Biddera. Ostateczne rozwiązanie oparliśmy na specjalnym rodzaju sieci rekurencyjnej – long short-term memory (LSTM), która okazała się świetnym rozwiązaniem.
Obecnie WEBSENSA OpenRTB Bidder opiera się na specjalnie dostosowywanych sieciach neuronowych opartych na wcześniejszych doświadczeniach. Ze względu na spersonalizowane podejście nasz Bidder przewyższa konkurencję w dziedzinie openRTB. Stale rozwijamy to narzędzie i mamy nadzieję, że testowanie nowych architektur sieci neuronowych będzie dawało nam coraz lepsze wyniki.
Jest to projekt, który realizowaliśmy przez kilka miesięcy w ramach naszych wewnętrznych projektów badawczo-rozwojowych. Chcieliśmy dzięki niemu spróbować czegoś zupełnie innego, niż robiliśmy dotąd. Celem projektu było stworzenie aplikacji wykorzystującej fotograficzną technikę bullet-time (znaną również jako efekt zatrzymania czasu czy fotografię obrotową). Efekt zatrzymania czasu daje możliwości ciekawego kreowania obrazu i uchwyceniu dynamizmu chwili.
Aplikacja Freeeze ma umożliwiać stworzenie efektu bullet-time za pomocą jedynie 2 smartfonów.
Tradycyjnym sposobem osiągnięcia tego efektu jest posiadanie od 24 do 150+ aparatów fotograficznych, które umiejscowione są na szynach wokół fotografowanego obiektu. Poprzez złączenie zrobionych przez nie w tym samym momencie zdjęć tworzy się kolejne klatki filmu. Ponieważ zorganizowanie takich warunków jest poza zasięgiem większości z nas, postanowiliśmy stworzyć projekt Freeeze. Aplikacja ma umożliwiać stworzenie efektu bullet-time za pomocą jedynie 2 smartfonów. Działanie Freeeze opiera się na synchronizacji 2 zrobionych zdjęć, a potem wygenerowaniu za pomocą algorytmów wykorzystujących sieci neuronowe wszystkich zdjęć pośrednich.
Aby to było możliwe, musieliśmy najpierw pozyskać ogromne ilość danych treningowych – zdjęć reprezentujących różne sceny pod wieloma, specjalnie dobranymi kątami widzenia. Następnie wykorzystaliśmy sieci neuronowe, aby nauczyły się odtwarzać na podstawie 2 zdjęć danej sceny jej widok z dowolnego innego kąta patrzenia.
Dane wejściowe, jakich użyliśmy w pierwszym etapie to zestawy ujęć powstałych w technice obrotowej. Bardzo ważne na tym etapie było zebranie na tyle dużego zbioru zdjęć, aby sieci neuronowe miały materiał do generowania pożądanych wyników. Użyliśmy dwóch metod zbierania danych.
W pierwszym etapie – sami zabraliśmy się za robienie zdjęć. Na statywie zainstalowaliśmy trzy kamery i skierowaliśmy ich obiektywy w to jedno miejsce. Używając tej konstrukcji sfilmowaliśmy obiekty, a następnie powstałe filmy pocięliśmy na kadry, aby uzyskać ujęcia z różnych miejsc – pod różnymi kątami. Filmy robiliśmy w kilku lokalizacjach – naszym biurze oraz przestrzeni miejskiej – aby zebrany materiał był jak najbardziej zróżnicowany.
Drugą metodą, z której skorzystaliśmy, było cięcie na kadry dostępnych filmów wykorzystujących efekt zatrzymania czasu. Dzięki połączeniu tych dwóch metod zebraliśmy wystarczającą ilość materiału, aby rozpocząć trenowanie sieci neuronowych.
We Freeeze użyliśmy dwóch rodzajów sieci neuronowych. Pierwszym z nich była konwolucyjna sieć neuronowa, wykorzystująca rozpoznawanie obrazów i uczenie głębokie. Sieć ta miała na celu analizowanie obrazów wejściowych, klasyfikowanie różnych elementów na tych obrazach, a dzięki temu odróżnienie jednego od drugiego.
Drugim użytym przez nas rozwiązaniem była sieć generative adversarial network (GAN), która posiada zdolność generowania nowych treści (w naszym przypadku – zdjęć). Składa się ona z dwóch podmodeli: generatora i dyskryminatora. Generator, jak sugeruje jego nazwa, generuje nowe przykłady, natomiast dyskryminator próbuje rozróżnić prawdziwe przykłady (te z zestawu danych) od tych fałszywych (tych wygenerowanych).
W projekcie Freeeze są użyte dwie sieci neuronowe, które ze sobą konkurują, jednocześnie ucząc się od siebie nawzajem
Są to dwie współpracujące ze sobą sieci neuronowe, z których pierwsza ma generować z otrzymanych danych wejściowych nowe obrazy, natomiast druga – rozróżniać rzeczywiste obrazy od tych generowanych przez pierwszą sieć neuronową. Można powiedzieć, że w rozwiązaniu GAN te dwie sieci konkurują ze sobą, jednocześnie ucząc się od siebie nawzajem. Jak to działa? Druga sieć wykrywa fałszywe obrazy stworzone przez pierwszą, natomiast pierwsza kreuje na tyle realistyczne kadry, aby nie zostały wykryte przez tę drugą.
W czasie pisania tego artykułu projekt jest ciągle w fazie rozwoju. Jeśli jesteś zainteresowany naszymi postępami w tym projekcie, napisz do nas. Zachęcamy też do zapisu do newslettera – na pewno będziemy informować o kolejnych kamieniach milowych w naszych projektach
W WEBSENSA pasjonujemy się odkrywaniem nowych możliwości, jakie oferuje AI, tworząc innowacyjne rozwiązania od systemów rozpoznawania obrazu, przez zaawansowane algorytmy reklamowe po chatboty oparte na bazach wiedzy. Zachęcamy do kontaktu, jeśli chcesz porozmawiać o możliwościach wdrożenia AI w Twoim projekcie.
Poznaj kluczowe trendy AI kształtujące przyszłość społeczeństw i biznesu, oparte na analizach Infuture Institute. Zrozum zmiany i ich wpływ.
Dowiedz się, czym różni się tradycyjna AI od generatywnej AI. Odkryj wpływ na biznes oraz praktyczne zastosowania tych rodzajów sztucznej inteligencji.