Keras – Uczenie maszynowe dla ludzi

W ostatnich latach mamy do czynienia z gwałtownym rozwojem sztucznej inteligencji. Jedna z umiejętności jaką oczekujemy od SI to że będzie potrafiła rozumieć ludzkie sygnały wejściowe i zwracać odpowiedzi w formie zrozumiałej dla człowieka. U podstaw prac nad tą technologią spotykamy się z Deep learning (uczenie maszynowe) czyli jedną z najprężniej rozwijających się i najbardziej skomplikowanych dziedzin współczesnej informatyki. Dzięki dużemu zapotrzebowaniu na specjalistów DL dziedziny, pojawiają się narzędzia przystępne dla początkujących takie jak Keras.

Jaki problem rozwiązuje projekt ?

Keras jest wysoko-poziomową biblioteką służącą do tworzenia sieci neuronowych. Napisana w języku Python i możliwa do uruchomienia na popularnych systemach jak TensorFlowCNTK lub Theano.

Projekt został przygotowany do tworzenia szybkich i możliwie jak najłatwiejszych w badaniach modeli DL. Kompatybilny z pythonem 2.7 lub 3.6 może bezproblemowo wykonywać obliczenia na procesorach zarówno CPU i GPU.  

Keras został opracowany przez François Chollet, inżyniera Google’a, który stosuje cztery podstawowe zasady:

A. Łatwość użycia: API zaprojektowane dla ludzi, nie dla maszyn.  Keras wspiera najlepsze praktyki w celu zredukowania ładowania kognitywnego : minimalizuje liczbę akcji użytkownika wymaganych do popularnych zadań, zwraca jasne i przydatne informacje na temat błędów.

B. Modułowość: Model rozumiany jako sekwencja bądź graf to w pełni konfigurowalny moduł.  W szczególności warstwy neuronowe, funkcje kosztowe, optymalizatory, schematy inicjalizacji, funkcje aktywacyjnesą samodzielnymi modułami, które można łączyć w celu tworzenia nowych modeli.

C. Rozszerzalność : Nowe moduły są proste do dodania (jako nowe klasy i funkcje), a istniejące moduły stanowią doskonałe na to przykłady.

D. Czysty python : Brak plików konfiguracyjnych modeli w formacie deklaratywnym. Modele są opisane w kodzie Pythona, który jest zwarty, łatwiejszy do debugowania i pozwala na łatwą rozbudowę.

Jak zacząć kontrybuować ?

Keras jest darmowym oprogramowaniem publikowanym na licencji MIT.

Najpopularniejszym sposobem na pomoc w rozwoju oprogramowania jest oczywiście zgłaszanie błędów. Jeżeli chcesz zgłosić błąd, najpierw upewnij się że korzystasz z najnowszych wersji narzędzi Keras oraz tenserflow oraz sprawdź czy nie jest zostało już utworzone zgłoszenie dotyczące twojego błędu. 

GitHub Issues można również wykorzystać do zaproponowania funkcjonalności, jaką chciał byś aby Keras posiadał.  Tworząc Issue tego typu, należy dołączyć jasny i szczegółowy opis funkcjonalności. Pamiętaj, że funkcje powinny być przydatne dla większości użytkowników, a nie tylko niewielkiej grupy.

Jeżeli Twój PR ma wprowadzić zmiany w działaniu funkcjonalności, musisz wcześniej sporządzić dokumentację na podstawie udostępnionego wzoru. Sporządzoną dokumentację należy przesłać do twórców na adres
keras-users@googlegroups.com, podając w tytule maila
[API DESIGN REVIEW] (z caps-lock). W odpowiedzi dostaniemy sugestie do zaproponowanych zmian. W momencie gdy otrzymamy akceptacje dokumentacji, możemy przejść do pisania kodu. Należy pamiętać aby kod był ozdobiony w adnotacje (DocStrings).

Cały kod musi być pokryty testami, i oczywiście pozytywnie zdać testy przed przesłaniem PR. Testy należy przeprowadzić zarówno dla
Theano , TensorFlow i CNTK. Po spełnieniu wszystkich opisanych wyżej warunków, jesteś gotów do zaktualizowania dokumentacji oraz do stworzenia PR do projektu https://github.com/keras-team/keras-contrib. Gdzie zostanie przetestowany i jeżeli nie bezie żadnych uwag, autorzy scalą Twoje zmiany z Kereas master. Oczywiście zmian w dokumentacji nie musicie robić gdy naprawiacie Bug’a, a zestaw bugów dla początkujących znajdziecie w tym miejscu.

Jaką technologię wykorzystuje projekt ?

Keras został stworzony przy użyciu języka Python. Współpracuje z silnikami do DeepLerningu TensorFlow, CNTK lub Theano. Autorzy zalecają TensorFlow.

Dodatkowo wspiera biblioteki takie jak :
cuDNN (zalecane do używania Keras na GPU).
HDF5 i h5py (wymagany, do zapisywania modeli Keras na dysku).
graphviz i pydot (używany przez narzędzia wizualizacyjne do tworzenia wykresów modeli).
Do zwiększenia dokładności wykorzystywany jest model ResNet, ResNet v2.
Modele do rozpoznawania obrazów zostały przeszkolone na ImageNet:

Keras jest oprogramowaniem multiplatformowym, z możliwością uruchomienia w Docker. Do kontroli nad testami wykorzystywany jest framework Travis.

Na jakim etapie jest projekt ?

Keras jest młodym ale bardzo dojrzałym projektem w wersji 2.0. Z całą pewnością możemy polecić pracę z tym projektem ponieważ cechuje się bardzo dobrą dokumentacją i popularnością, co gwarantuje długi cykl życia projektu. W ostatnich latach został wsparty i zarekomendowany przez TensorFlow, Theano czyli gigantów tej dziedziny. Na bieżąco prowadzony jest blog https://blog.keras.io/ gdzie możecie poczytać o nadchodzących zmianach.

Podsumowanie

Takich projektów jak Keras potrzebuje dzisiaj dział Informatyki zajmujący się sztuczną inteligencją. Dzięki nim dużo łatwiej można wgryźć się w trudny temat Deep Learning. Jeżeli zainteresowała Cię ta tematyka, swoją przygodę polecam rozpocząć od świetnych przykładów na GitHub projektu. Z tymi przykładami szybko połączysz koniec z końcem (aby później nauczyć łączyć koniec z końcem Twoją maszynę :)).

daxter
marcinek44@windowslive.com

2 thoughts on “Keras – Uczenie maszynowe dla ludzi”

    1. Niestety, uczenie maszynowe to moja kula u nogi jeżeli chodzi o najnowsze technologie 🙂
      W ostatnim czasie byłem na konferencji gdzie była prelekcja o ML dla laików stąd pomysł na ten artykuł.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *