https://szkolazpieklarodem.pl/
Do tej pory mówiliśmy o interaktywnym nauczaniu w kawałkach, ale nadszedł czas, aby napisać jakiś kod i to zrobić. Interaktywne uczenie się to jedna z najfajniejszych funkcji Rasy, dzięki której nauka uczenia maszynowego staje się przyjemna i łatwa. Są dwie części: w pierwszej uczymy model, podając nasz początkowy zbiór danych przy użyciu różnych polityk, a w drugiej części testujemy model, poprawiamy go i ponownie szkolimy w sposób interaktywny.
Trenowanie modelu agenta Chatbota
Utwórzmy nowy plik o nazwie train_initialize.py w naszym głównym katalogu projektu. Zawartość train_initialize.py wygląda następująco:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from rasa_core import utils
from rasa_core.agent import Agent
from rasa_core.policies.keras_policy import KerasPolicy
from rasa_core.policies.memoization import MemoizationPolicy
from rasa_core.policies.sklearn_policy import SklearnPolicy
if __name__ == ‘__main__’:
utils.configure_colored_logging(loglevel=”DEBUG”)
training_data_file = ‘./data/stories.md’
model_path = ‘./models/dialogue’
agent = Agent(“horoscope_domain.yml”,
policies=[MemoizationPolicy(), KerasPolicy()])
training_data = agent.load_data(training_data_file)
agent.train(
training_data,
augmentation_factor=50,
epochs=500,
batch_size=10,
validation_split=0.2
)
agent.persist(model_path)
To jest kod, który zapisujemy w pliku train_initialize.py. Teraz, zanim przejdziemy do następnego pliku kodu, spróbujmy najpierw zrozumieć zawarte w nim ważne punkty.
- Najpierw importujemy kilka metod z modułu __future__. Przyszłe instrukcje w Pythonie mają specjalne zastosowanie, zmieniają sposób analizowania modułu Pythona i zmieniają sposób, w jaki zachowuje się istniejąca metoda.
Curious personality ? Try the below code in your python
interpreter
from __future__ import braces
- Zaimportuj metodę utils z modułów rasa_core, aby skonfigurować rejestrowanie.
- Zaimportuj klasę agenta z modułu agenta, aby utworzyć obiekt agenta.
- KerasPolicy, MemorizationPolicy zostaną przekazane jako parametry polityk do klasy agenta.
5.configure_colored_logging: Metoda narzędziowa zdefiniowana w utils.py do kolorowego rejestrowania przy użyciu pakietu colorlogs Pythona.
- Agent: Klasa zdefiniowana przez Rasa, która zapewnia interfejs umożliwiający wykorzystanie najważniejszych funkcjonalności Rasa Core, takich jak szkolenie, obsługa komunikatów, ładowanie modelu okna dialogowego, uzyskiwanie następnej akcji i obsługa kanału.
- loading_data: ładuje dane treningowe z podanej ścieżki.
- pociąg: szkoli daną politykę/zespół polityk korzystając z danych z udostępnionego pliku.
- Training_data: obiekt zwrócony metodą Load_data. Lista DialogueStateTracker. To nic innego jak nasz plik danych treningowych.
- augmentation_factor: informuje Rasę, ile fikcyjnych historii należy utworzyć, biorąc pod uwagę nasz początkowy zestaw historii. Współczynnik 10x to heurystyka rund wzmacniających dla generatora danych szkoleniowych.
- Epoki: 1 epoka to pełny cykl szkoleniowy na całym zbiorze danych uczących. Całkowita liczba przejść danych szkoleniowych do przodu i do tyłu.
- rozmiar_wsadu: informuje o ilości próbki szkoleniowej do wykorzystania w każdym przebiegu. 100 przykładów o wielkości partii wynoszącej 10 zajmie 10 epok, aby przejrzeć cały zbiór danych.
- validation_split: procent danych służący do sprawdzenia bezstronnej dokładności modelu.
- utrwalanie: ta metoda służy do utrwalania obiektu agenta w danym katalogu w celu ponownego użycia.
W tym momencie powinno być już całkiem jasne, co robi każda metoda i co dzieje się w kodzie. Zanim przejdziemy do uruchomienia skryptu, upewnij się, że masz zainstalowaną bibliotekę rasa_core przed wykonaniem tego skryptu. Możesz zainstalować rasa_core za pomocą następującego polecenia:
pip zainstaluj rasa_core==0.11.1
Jeśli podążasz za przykładem chatbota z tej książki, upewnij się, że zainstalowałeś tylko wyżej wymienioną wersję, ponieważ Rasa może nie być kompatybilna wstecz. Szybko opracowują nowsze i bardziej zoptymalizowane metody.
NAJNOWSZY RASA_CORE
Możesz także zainstalować najnowszą wersję rasa_core z repozytorium Github. Wystarczy wykonać następujący zestaw poleceń, który pobierze najnowszy kod z githuba bezpośrednio przed instalacją.
git clone https://github.com/RasaHQ/rasa_core.git
cd rasa_core
pip install -r requirements.txt
pip install -e
Spróbujmy uruchomić ten plik kodu, aby wytrenować nasz model zgodnie z podanymi parametrami.
$python train_initialize.py
Możesz także uruchomić ten skrypt z samego Notatnika Jupyter za pomocą magicznego polecenia Jupytera, jak pokazano tutaj:
!python train_initialize.py #Use python3 if you have installed rasa for python3
Wytrenowanie modelu na tak małym zbiorze danych jak nasz powinno zająć około 25–30 sekund. Dodałem SklearnPolicy do listy polityk wraz z MemorizationPolicy i KerasPolicy, aby wytrenować mój model. Różne polityki mają swoje zalety. Przeczytaj więcej na ich temat, aby dowiedzieć się, które z nich mogą działać lepiej w Twoim przypadku; dla mojego zbioru danych wydaje się, że czasami SklearnPolicy działa lepiej niż KerasPolicy. Po zakończeniu wykonywania skryptu powinieneś zobaczyć kilka pomyślnych komunikatów, takich jak te:
2018-08-30 04:24:31 INFO rasa_core.policies.keras_policy – Done fitting
keras policy model
2018-08-30 04:24:31 INFO rasa_core.featurizers – Creating states and
action examples from collected trackers (by MaxHistoryTrackerFeaturizer)…
Processed trackers: 100%|████████| 96/96 [00:00<00:00,
898.31it/s, # actions=75]
2018-08-30 04:24:31 INFO rasa_core.featurizers – Created 75 action
examples.
2018-08-30 04:24:31 INFO rasa_core.policies.sklearn_policy – Done
fitting sklearn policy model
2018-08-30 04:24:31 INFO rasa_core.agent – Model directory models/nlu
exists and contains old model files. All files will be overwritten.
2018-08-30 04:24:31 INFO rasa_core.agent – Persisted model to
‘/Users/sumit/apress_all/Chapter IV/horoscope_bot/models/nlu’
You will also find a couple of folders created as per their model name. Make sure
you have them in the model_path you gave in the script. Below are the folders/files I see
inside my model_path folder.
policy_0_MemoizationPolicy
policy_1_KerasPolicy
policy_2_SklearnPolicy
domain.json
domain.yml
Policy_metadata.json
Jeśli sprawdziłeś, że Twój model pomyślnie zakończył wykonanie i utrwalił go w systemie lokalnym, możemy przejść do kolejnego etapu interaktywnego szkolenia.