Strona Główna / Blog

Wsparcie kognitywne dla aplikacji na przykładzie IBM Watson Assistant oraz IBM Watson Visual Recognition

Krystian Kucharski

Krystian Kucharski

Azure Architect w Chmurowisku. Odpowiada za realizację projektów dookoła wdrożeń i migracji rozwiązań do chmury Microsoft Azure. Specjalizuje się w rozwiązaniach PaaS, konteneryzacji i procesach CI/CD.

Watson to nazwisko twórcy IBM (Thomas J.Watson). Jest to również najnowocześniejszy system kongnitywny, który odpowiednio nauczony – „rozumuje i wyciąga wnioski”. Jeszcze kilka lat temu rozwiązania tego typu były dostępne wyłącznie w laboratoriach badawczych, obecnie są dostępne dla wszystkich.

Dostęp do IBM Watson jest bardzo prosty poprzez wykorzystanie chmury obliczeniowej IBM (konsola webowa). Możemy założyć całkowicie darmowe  konto, które nigdy nie wygasa, przez co pozwala poznać dostępne serwisy i zacząć wykorzystywać sztuczną inteligencję w praktyce.

Systemy kognitywne rozumieją skomplikowane formy danych nieustrukturyzowanych (zdjęcia, nagrania wideo, dźwięki) oraz język naturalny. Deweloperzy którzy rozumieją i wykorzystują cognitive computing, sztuczną inteligencję i uczenie maszynowe mogą tworzyć małe aplikacje, aby następnie je łatwo skalować i które są konkurencyjne dzięki wykorzystaniu AI. Coraz częściej są używane Chatbot’y. Popularni są wirtualni agenci, którzy dzięki możliwości przetwarzania mowy naturalnej zmieniają sposób, w jaki firmy bardziej inteligentnie komunikują się z konsumentami.

image7

IBM Watson oferuje szereg generycznych rozwiązań kognitywnych, które dostarczają różnorodną infrastrukturę sieci neuronowych gotowych od użycia pod postacią usług. Dzisiaj przyjrzymy się bliżej dwóm rozwiązaniom: IBM Watson Assistant oraz IBM Watson Visual Recognition.

image5

IBM Watson Assistant

image44

Zdaniem analityków Gartnera, do 2020 r. 80% procesów zakupowych będzie przebiegało bez bezpośredniej interakcji człowiek-człowiek, a inteligentni agenci ułatwią 40% interakcji mobilnych.

image2

IBM Watson Assistant, dawniej (IBM Watson Conversation) to usługa w IBM Cloud prowadząca rozmowę w języku naturalnym wykorzystując uczenie maszynowe. Jest to funkcjonalność inteligentnego asystenta symulująca naturalną rozmowę między ludźmi, utrzymując stan konwersacji, gromadzi informacje z rozmowy i może podejmować decyzje na podstawie całości profilu. Zapewnia dostosowany do człowieka tok rozmowy prowadzący do oczekiwanych rezultatów. Może współpracować z innymi aplikacjami.

Działanie

image1

IBM Watson Assistant wyszukuje w każdej wypowiedź człowieka intencję i dodatkowe informacje. Intencja określa czynność do wykonania przez asystenta, a informacje uzupełniają szczegóły naszych oczekiwań (np. „Please, order pizza pepperoni without anchois” Order jest intencją, pizza pepperoni without anchois to informacje dodatkowe, które powinniśmy uwzglednić). W ten sposób tworzymy dialogi, które pozwalają komunikować się ludziom z systemami w języku naturalnym. To systemy dopasowują się do ludzi i uczą się nas rozumieć, a nie zmuszamy ludzi do poznawania kodu maszyn.

Jeśli intencje reprezentują czasowniki, czyli coś, co użytkownik chce zrobić, to informacje dodatkowe reprezentują rzeczowniki takie jak obiekt lub kontekst dla intencji.

image3

Przykłady

  • Headlights off.
  • Turn the radio off.
  • Stop the air conditioner.

Powyższe przykłady reprezentują tę samą intencję, aby coś wyłączyć. Możemy nazwać tę intencję #turn_off. Aby użyć podmiotu do reprezentowania tego, co użytkownik chce wyłączyć, możemy utworzyć kategorie informacji o nazwie @accessory i nadać jej następujące wartości: headlights, radio, air conditioner.

Dane wejściowe klienta nie muszą być dokładnie dopasowane do przykładów – zamiary są rozpoznawane przy użyciu przetwarzania w języku naturalnym.

image4

Zastosowanie IBM Watson Assistant

Systemy kognitywne takie jak usługa IBM Watson Assistant sprawdzają się między innymi we wsparciu systemów obsługi automatycznej przez telefon (call center), wsparciu agentów call center, dostarczaniu naturalnego języka jako interfejsu dla aplikacji mobilnych lub stron webowych, wyposażanie urządzeń w interfejs głosowy.

A oto kilka przykładów konkretnych zastosowań z wykorzystaniem usługi:

  • Aplikacja hotelowa. Identyfikowanie i przesyłanie pytań klientów do różnych działów w hotelu.
  • Inne aplikacje mobilne. Kontrola aplikacji za pomocą wirtualnych agentów języka naturalnego.
  • IoT. Rozumienie języka i reagowanie na polecenia użytkowników.
  • Roboty. Wsparcie rozumienia języka naturalnego i zdolności konwersacyjnych.
  • Zasoby ludzkie. Osobisty asystent do obsługi pytań i wsparcia pracowników.
  • Obsługa klienta. Asystent odpowiadający na pytania klientów i realizujący proste polecenia (np. Jak wyświetlić/edytować informacje o koncie? Zapłać mój rachunek).
  • Bankowość. Umożliwienie obsługi klienta w bankowości detalicznej.
  • Dostawcy mediów. Asystent obsługi klienta (np. Jak mogę zapłacić rachunek? Jak mogę zobaczyć nowe oferty usług?).
  • Kanały komunikacji. Chat-boty obsługujące kanały popularnych serwisów społecznościowych oraz komunikatorów (np. Twitter, Slack, Messenger).

Hello World z Chat-botem!

Dla osób, które chciałyby stworzyć własną aplikację agenta asystenta lub chat-bota w ulubionym języku programowania, IBM dostarcza całe zaplecze SDK do budowania aplikacji przy pomocy IBM Watson, dostępne pod adresem: https://github.com/watson-developer-cloud.

image35

My stworzymy nowego chat-bota, korzystając z funkcji dostępnych przez GUI.

  1. Zaloguj się do platformy chmurowej IBM Cloud poprzez https://ibm.biz/cloud-4-dev.
  2. Wyszukaj w lewej górnej części portalu Menu, rozwiń je i wybierz pozycję Watson:

image47

image6

3. W sekcji Browse Services wybierz Watson Assistant:

image404. Stwórz nazwę dla nowej usługi i kliknij Create, aby rozpocząć jej wdrażanie.

image295. Gdy proces się zakończy, pozostając w IBM Watson Assistant, kliknij w Launch Tool:

image86. A następnie Create a Workspace.

image387. Wybierz Create a new workspace, aby utworzyć nowy projekt, a następnie nadaj mu nazwę i kliknij Create:

image148. Pierwszym krokiem w konfiguracji usługi IBM Watson Assistant będzie dodanie pierwszej intencji. Aby to zrobić, kliknij Add intent:

image309. W dalszej konfiguracji nadaj intencji nazwę (#turn_off) oraz dodaj przykłady. W naszym przypadku użyjemy: I don’t want to hear music anymore, I want to turn off my headlights oraz Switch my headlights off.

image4210. Teraz przejdź do zakładki Entities, a następnie kliknij w Add entity:

image4311. Pora nadać nazwę typowi informacji dodatkowej (@appliances) oraz dodać przykłady, jakie mogą zostać wykorzystane w dialogu: heater, lights oraz music.

image4512. W następnym kroku idź do sekcji Dialog, gdzie klikniesz w Create, aby przejść do scenariusza konstrukcji dialogu:

image1113. W kreatorze konfiguracji dialogu kliknij w sekcję Welcome, a następnie ustaw właściwość If bot recognizes na „welcome” oraz nadaj definicję odpowiedzi o treści „Hi. I’m here to help!” w części Then respond with:

image4814. W sekcji Welcome kliknij w przycisk oznaczony trzema kropkami i z rozwijanej listy wybierz Add node below:

image1215. Przejdź do nowo dodanej sekcji, aby ustawić właściwość If bot recognizes na wcześniej utworzoną intencję #turn_off. Tutaj nadajesz również definicję odpowiedzi o treści „What would you like me to turn off? You can say things like music, lights or heat” w części Then respond with.

image916. Teraz przejdź do sekcji #turn_off i kliknij w przycisk oznaczony trzema kropkami, aby z rozwijanej listy wybrać Add child node:

image4617. Przejdź do nowo dodanej sekcji, aby ustawić właściwość If bot recognizes na wcześniej utworzony typ informacji @appliances. Nadaj definicję odpowiedzi o treści „Ok! Turning off @appliances”.

image3218. W prawym górnym rogu kliknij w przycisk Try it, aby uruchomić okno dialogowe. Po jego uruchomieniu rozpocznij rozmowę z chat-botem:

image15

Gotowe!

IBM Watson Visual Recognition

IBM Watson Visual Recognition dostarcza API jako zaawansowane rozwiązanie poznawcze, które w pełni identyfikuje treść obrazu, wykorzystując szereg sposobów identyfikacji (min. tagowanie, optyczne rozpoznawanie znaków, detekcja kolorów, ekstrakcja tekstu pisanego z obrazów, wyszukiwanie prawdopodobieństw, rozpoznawanie mimiki twarzy, czy wykrywanie obiektów w strumieniu danych).

Usługa sama w sobie zawiera wytrenowane modele, które posiadają następujące klasyfikatory obiektów: twarze, sceny, kolory, żywność. Jednak prawdziwa moc rozwiązania IBM tkwi w umiejętności trenowania modeli do budowania własnych klasyfikatorów.

Trenowanie modeli oraz własne klasyfikatory

image13

Naszą pracę zaczynamy od stworzenia tzw. „podstawowej prawdy”. Polega ona na porównaniu dokładności klasyfikatora z klasyfikacją ludzką.

Aby klasyfikator był dokładny, musi umieć określić, kiedy obraz powinien znaleźć się w danej klasie, a także weryfikować, że żaden obraz nie został niepoprawnie przypisany.

Podczas trenowania modelu należy dostarczyć dwa zestawy ręcznie sklasyfikowanych obrazów szkoleniowych (danych). Pierwszy to pozytywne przykłady klasy, a drugi – negatywne (obiekt lub warunek, który nie występuje w obrazie). Aby zwiększyć dokładność klasyfikatora, należy wymieszać negatywne przykłady wizualnie podobne do poprawnych klas. W ten sposób IBM Visual Recognition uczy się, jakie cechy różnicujące są ważne.

  • Zaleca się podanie co najmniej 50 pozytywnych przykładów klasy oraz 50 przykładów negatywnych klasy.
  • Im więcej dostarczysz obrazów, tym dokładniejszy jest twój klasyfikator, jednak nie powinno być ich więcej niż 5000.
  • Optymalna liczba obrazów zapewniająca równowagę pomiędzy czasem a dokładnością treningu wynosi od 150 do 200 sztuk.

Zastosowanie IBM Visual Recognition

Klasyfikatory usług IBM Visual Recognition stworzyły podstawę do następujących rozwiązań:

  • Media społecznościowe. Monitorowanie najważniejszych trendów, by poznać zainteresowania klientów.
  • Zasoby naturalne. Identyfikacja wycieków zasobów naturalnych za pomocą obrazów satelitarnych.
  • Przemysł 4.0. Monitorowanie stanu jakości.
  • Ubezpieczenia. Większa skuteczność raportowania.

Tworzymy własny klasyfikator obiektów

Zanim zaczniesz pracę, przygotuj odpowiedni obraz dla identyfikatora. W naszym przykładzie użyjemy obrazu soccer.jpg.

image101. Ponownie zaloguj się do platformy chmurowej IBM Cloud poprzez adres: https://ibm.biz/cloud-4-dev  i przejdź do menu:

image472. Wybierz pozycję Watson, a następnie przejdź do sekcji Browse Services → Visual Recognition:

image173. Skonfiguruj usługę, nadając jej nazwę, a następnie kliknij w przycisk Create, aby rozpocząć wdrażanie.

image314. Po utworzeniu usługi skopiuj dwie wartości: API Key oraz Url:

image225. Następnie stwórz zapytanie API, korzystając z poniższej komendy:

curl -X POST -u „apikey:{apikey}” –form „[email protected]path_file.jpg” „{url}/v3/classify?version=2018-03-19″

Zmodyfikuj je, wklejając wartości skopiowane w poprzednim kroku:

  • {apikey} – wstawiamy wartość API Key
  • {url} – wstawiamy wartość Url
  • path_file.jpg zastępujemy ścieżką do pliku.

Całość zapytania powinna wyglądać następująco:

curl -X POST -u „apikey:p6bzeLVw0BgZb5RjZq1oxvy2mgsyvVwYSCItJy1g8iUY” –form „images_file=@soccer.jpg” „https://gateway.watsonplatform.net/visual-recognition/api/v3/classify?version=2018-03-19

6. Otwórz konsolę zgodną z powłoką typu shell i wykonaj powyższą komendę. Rezultat powinien być następujący:

{

„images”: [

{

„classifiers”: [

{

„classifier_id”: „default”,

„name”: „default”,

„classes”: [

{

„class”: „soccer (football) player”,

„score”: 0.948,

„type_hierarchy”: „/person/contestant/player/soccer (football) player”

},

{

„class”: „player”,

„score”: 0.825

},

{

„class”: „contestant”,

„score”: 0.938

},

{

„class”: „person”,

„score”: 0.938

},

{

„class”: „winger”,

„score”: 0.639,

„type_hierarchy”: „/person/contestant/athlete/winger”

},

{

„class”: „athlete”,

„score”: 0.791

},

{

„class”: „forward player (ball game)”,

„score”: 0.603,

„type_hierarchy”: „/person/contestant/athlete/basketball player/forward player (ball game)”

},

{

„class”: „basketball player”,

„score”: 0.604

},

{

„class”: „running back (ball game)”,

„score”: 0.5,

„type_hierarchy”: „/person/contestant/player/soccer (football) player/soccer (football) player/running back (ball game)”

},

{

„class”: „sport”,

„score”: 0.798

},

{

„class”: „claret red color”,

„score”: 1

}

]

}

],

„image”: „soccer3.jpg”

}

],

„images_processed”: 1,

„custom_classes”: 0

}

7. Punkty pewności zdefiniowane przez właściwość scores mieszczą się w zakresie od 1 do 0. Wyższy wynik wskazuje na większą korelację. Aby zawęzić wynik, możesz zastosować próg, manipulując zapytaniem:

curl -X POST -u „apikey:p6bzeLVw0BgZb5RjZq1oxvy2mgsyvVwYSCItJy1g8iUY” –form „[email protected]” https://gateway.watsonplatform.net/visual-recognition/api/v3/classify?version=2018-03-19&treshold=0.75

W rezultacie uzyskamy listę klasyfikatorów powyżej 0,75 punktu pewności.

Te same możliwości poprzez GUI

image18

Dla osób, które nie pracują na co dzień z API, IBM Watson oferuje usługę IBM Watson Studio zawierającą szereg narzędzi przydatnych dla naukowców zajmującymi się danymi, programistów, czy ekspertów w danej dziedzinie.

Główną zaletą rozwiązania jest graficzny interfejs umożliwiający łatwą i przyjemną pracę z danymi oraz trenowanie modeli, i to na dużą skalę!

Trenujemy model z użyciem IBM Watson Studio

W tym scenariuszu będziemy pracować na trzech zestawów danych (pliki do pobrania dostępne są tutaj https://s3.eu-de.objectstorage.softlayer.net/public-upload/Materialy.zip):

  • good_pizza_images.zip, zawierający obrazy przedstawiające obiekty klasy dobrej jakości
  • bad_pizza_images.zip, zawierający obrazy przedstawiające obiekty klasy złej jakości
  • not_pizza_images.zip, zawierający obiekty nie klasyfikujące się z klasą

1. Zaloguj się do platformy chmurowej IBM Cloud: https://ibm.biz/cloud-4-dev.

2. Kliknij w menu i wybierz pozycję Watson.

image163. Następnie idź do sekcji Browse Services i wybierz Watson Studio:

image284. Zdefiniuj nazwę dla tworzonej usługi Watson Studio, a następnie kliknij Create:

image345. W nowej zakładce kliknij Get Started, a w kolejnym kroku wybierz New project.

image196. W zakładce New project kliknij w Watson Tools:

image417. Następnie wybierz region i zatwierdź przyciskiem OK:

image208. Kolejną zakładką jest New Project. Nadaj nazwę aplikacji, a następnie kliknij Create:

image219. Pora nadać nazwę trenowanemu modelowi:

image2310. Czas załadować przedstawione zestawy danych. Aby je wyszukać, kliknij w przycisk Browse:

image36

11. Następnie stwórz nową klasę: kliknij w Create a class i wpisz nazwę. Najpierw stworzymy GoodConditionPizza, następnie, w ten sam sposób, BadConditionPizza.

image2512. Ostatecznie powinny zostać utworzone następujące modele:

image2413. W kolejnym kroku przenieś załadowane zestawy danych do odpowiednich klas (przeciągnij pliki):

  • good_pizza_images.zip do klasy GoodConditionPizza
  • bad_pizza_images.zip do klasy BadConditionPizza
  • not_pizza_images.zip do klasy Negative

image3914. Pora przejść do trenowania modeli. Kliknij w Train Model. Cały proces może potrwać kilka minut.

image2615. Gdy model zostanie wytrenowany, kliknij w utworzoną wcześniej usługę IBM Recognition – visual-recognition-dx.

image2716. Z listy wyszukaj wcześniej wytrenowany model PizzaConditionModel i kliknij w Test:

image33

17. Wyniki testu zobaczysz w kontekście PizzaConditionModel. Wejdź w zakładkę Test, a następnie załaduj przykładowe obrazy:

image37

Mechanizm klasyfikatora zadziałał prawidłowo. Pizza dobrej jakości jest zbliżona do wartości bliskim 0,9 właściwości GoodConditionPizza, natomiast pizza złej jakości oscyluje nawet wokół 0,9 właściwości BadConditionPizza.

Kognitywne wsparcie aplikacji biznesowych

Różnorodność usług kognitywnych dostarczanych przez IBM Cloud + Watson jest ogromna, a dziś poznaliśmy zaledwie fragment dostępnych zastosowań.

Rozwiązanie oferuje nieskończone możliwości wsparcia dla nowych aplikacji, dlatego warto zapoznać się z pełnym katalogiem usług IBM Watson, wybierając z niego te, które pomogą nam tworzyć lepsze, inteligentne rozwiązania w prosty i szybki sposób.

Już 22.11 zapraszamy na webinar
o chmurze Google Cloud Platform

Dołącz do listy mailingowej!

Dołącz do naszego newslettera

Staramy się wysyłać tylko wartościowe informacje, np. co miesiąc dostaniesz spis najważniejszych nowości z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.