PyBrain - przegląd
Pybrain to biblioteka open source do uczenia maszynowego zaimplementowana przy użyciu języka Python. Biblioteka oferuje kilka łatwych w użyciu algorytmów szkoleniowych dla sieci, zestawów danych, trenerów do trenowania i testowania sieci.
Definicja Pybrain w oficjalnej dokumentacji jest następująca:
PyBrain to modułowa biblioteka uczenia maszynowego dla języka Python. Jego celem jest oferowanie elastycznych, łatwych w użyciu, ale wciąż wydajnych algorytmów dla zadań uczenia maszynowego oraz różnorodnych wstępnie zdefiniowanych środowisk do testowania i porównywania algorytmów.
PyBrain jest skrótem od Python-Based Reinforcement Learning, Artificial Intelligence i Neural Network Library. W rzeczywistości wymyśliliśmy najpierw nazwę, a później poddaliśmy inżynierii wstecznej ten dość opisowy „Backronym”.
Cechy Pybrain
Oto cechy Pybrain -
Sieci
Sieć składa się z modułów i są one połączone za pomocą połączeń. Pybrain obsługuje sieci neuronowe, takie jak Feed-Forward Network, Recurrent Network itp.
feed-forward networkto sieć neuronowa, w której informacje między węzłami przemieszczają się w kierunku do przodu i nigdy nie będą podróżować do tyłu. Sieć Feed Forward jest pierwszą i najprostszą spośród sieci dostępnych w sztucznej sieci neuronowej.
Informacje są przekazywane z węzłów wejściowych, obok węzłów ukrytych, a później do węzła wyjściowego.
Recurrent Networkssą podobne do sieci Feed Forward; jedyną różnicą jest to, że musi pamiętać dane na każdym kroku. Historia każdego kroku musi zostać zapisana.
Zestawy danych
Zbiory danych to dane, które należy przekazać do testowania, walidacji i szkolenia w sieci. Rodzaj używanego zestawu danych zależy od zadań, które będziemy wykonywać w ramach uczenia maszynowego. Najczęściej używanymi zbiorami danych obsługiwanymi przez Pybrain sąSupervisedDataSet i ClassificationDataSet.
SupervisedDataSet - Składa się z pól input i target. Jest to najprostsza forma zbioru danych i używana głównie do nadzorowanych zadań uczenia się.
ClassificationDataSet- Służy głównie do rozwiązywania problemów klasyfikacyjnych. Przyjmujeinput, targetpole, a także dodatkowe pole zwane „class”, które jest automatyczną kopią zapasową podanych celów. Na przykład, wyjście będzie miało wartość 1 lub 0 albo dane wyjściowe zostaną zgrupowane razem z wartościami na podstawie podanych danych wejściowych, tj. Albo będzie należeć do jednej określonej klasy.
Trener
Kiedy tworzymy sieć, tj. Sieć neuronową, zostanie ona przeszkolona na podstawie przekazanych jej danych szkoleniowych. Teraz to, czy sieć jest odpowiednio trenowana, czy nie, będzie zależeć od przewidywania danych testowych testowanych w tej sieci. Najważniejszą koncepcją w Pybrain Training jest użycie BackpropTrainer i TrainUntilConvergence.
BackpropTrainer - Jest to trener, który szkoli parametry modułu zgodnie z nadzorowanym lub zbiorem danych ClassificationDataSet (potencjalnie sekwencyjnym) przez wsteczną propagację błędów (w czasie).
TrainUntilConvergence −Służy do trenowania modułu na zbiorze danych, dopóki nie osiągnie zbieżności.
Przybory
Pybrain oferuje moduły narzędzi, które mogą pomóc w budowaniu sieci poprzez importowanie pakietu: pybrain.tools.shortcuts.buildNetwork
Wyobrażanie sobie
Dane testowe nie mogą być wizualizowane za pomocą pybrain. Ale Pybrain może współpracować z innymi frameworkami, takimi jak Mathplotlib, pyplot, aby wizualizować dane.
Zalety Pybrain
Zalety Pybrain to -
Pybrain to darmowa biblioteka typu open source do nauki uczenia maszynowego. To dobry początek dla każdego nowicjusza zainteresowanego uczeniem maszynowym.
Pybrain używa Pythona do implementacji, co sprawia, że jest szybki w rozwoju w porównaniu z językami takimi jak Java / C ++.
Pybrain z łatwością współpracuje z innymi bibliotekami Pythona w celu wizualizacji danych.
Pybrain oferuje wsparcie dla popularnych sieci, takich jak Feed-Forward Network, Recurrent Networks, Neural Networks itp.
Praca z .csv w celu załadowania zestawów danych w Pybrain jest bardzo łatwa. Umożliwia także korzystanie ze zbiorów danych z innej biblioteki.
Trenowanie i testowanie danych jest łatwe dzięki trenerom Pybrain.
Ograniczenia Pybrain
Pybrain oferuje mniej pomocy w przypadku napotkanych problemów. Istnieje kilka zapytań bez odpowiedzistackoverflow i dalej Google Group.
Przepływ pracy Pybrain
Zgodnie z dokumentacją Pybrain przepływ uczenia maszynowego pokazano na poniższym rysunku -
Na początku mamy surowe dane, które po wstępnym przetworzeniu mogą być użyte z Pybrain.
Przepływ Pybrain rozpoczyna się od zbiorów danych, które są podzielone na trenowane i testowe.
sieć jest tworzona, a zbiór danych i sieć są przekazywane trenerowi.
trener szkoli dane w sieci i klasyfikuje dane wyjściowe jako wyuczony błąd i błąd walidacji, które można zwizualizować.
przetestowane dane można zweryfikować, aby sprawdzić, czy dane wyjściowe są zgodne z wytrenowanymi danymi.
Terminologia
Podczas pracy z Pybrain w uczeniu maszynowym należy wziąć pod uwagę ważne terminy. Są następujące -
Total Error- Dotyczy błędu wyświetlanego po przeszkoleniu sieci. Jeśli błąd zmienia się przy każdej iteracji, oznacza to, że nadal potrzebuje czasu na ustalenie, aż zacznie pokazywać stały błąd między iteracjami. Gdy zacznie wyświetlać stałe numery błędów, oznacza to, że sieć osiągnęła zbieżność i pozostanie taka sama bez względu na zastosowane dodatkowe szkolenie.
Trained data - To dane używane do trenowania sieci Pybrain.
Testing data - Są to dane używane do testowania wytrenowanej sieci Pybrain.
Trainer- Kiedy tworzymy sieć, czyli sieć neuronową, zostanie ona przeszkolona na podstawie przekazanych jej danych szkoleniowych. Teraz to, czy sieć jest odpowiednio trenowana, czy nie, będzie zależeć od przewidywania danych testowych testowanych w tej sieci. Najważniejszą koncepcją w Pybrain Training jest użycie BackpropTrainer i TrainUntilConvergence.
BackpropTrainer - Jest to trener, który szkoli parametry modułu zgodnie z nadzorowanym lub zbiorem danych ClassificationDataSet (potencjalnie sekwencyjnym) przez wsteczną propagację błędów (w czasie).
TrainUntilConvergence - Służy do trenowania modułu na zbiorze danych, aż do osiągnięcia zbieżności.
Layers - Warstwy to w zasadzie zestaw funkcji używanych na ukrytych warstwach sieci.
Connections- Połączenie działa podobnie do warstwy; jedyną różnicą jest to, że przesuwa dane z jednego węzła do drugiego w sieci.
Modules - Moduły to sieci składające się z bufora wejściowego i wyjściowego.
Supervised Learning- W tym przypadku mamy dane wejściowe i wyjściowe i możemy użyć algorytmu do odwzorowania wejścia na wyjście. Algorytm uczy się na podanych danych szkoleniowych i iteruje na nich, a proces iteracji zatrzymuje się, gdy algorytm przewiduje prawidłowe dane.
Unsupervised- W tym przypadku mamy dane wejściowe, ale nie znamy wyniku. Rola uczenia się bez nadzoru polega na szkoleniu w jak największym stopniu z podanymi danymi.