Jaka jest różnica między klasycznym programowaniem instrukcja po instrukcji, a uczeniem maszynowym (sieci neuronowe, indukcja drzew decyzyjnych, klasyfikator bayesowski). Powiedzmy w takich językach jak Python, R czy Java. Zorientowałem się już, że są gotowe biblioteki (albo usługi w chmurze), które realizują gotowe sieci neuronowe czy inne algorytmy, i tylko parametryzuje się (na chybił-trafił czy jak?), potem podaje dane wejściowe (treningowe - uczenie), a potem już dostarcza dane "produkcyjne". Czy tak to działa? Jak potem jest zapisywany stan takiego systemu nauczonego przykładami (powiedzmy sieci neuronowej)? Czy tylko w RAM i wszystko znika jak serwer padnie, czy zapisuje się stan sieci neuronowej w bazie danych czy pliku? Na czym polega uczenie maszynowe w praktyce, czyli w jakiejś firmie, a nie przykłady szkoleniowe?
Jaka jest różnica między klasycznym programowaniem instrukcja po instrukcji, a uczeniem maszynowym
W zasadzie nie ma żadnego związku między tymi pojęciami.
(na chybił-trafił
xD
Jak potem jest zapisywany stan takiego systemu nauczonego przykładami (powiedzmy sieci neuronowej)?
Jest serializowany do jakiegoś modelu - jakiego to zależy od technologii
Na czym polega uczenie maszynowe w praktyce, czyli w jakiejś firmie, a nie przykłady szkoleniowe?
@Pinek: Rzeczywistość jest dużo bardziej przerażająca.
Jak potem jest zapisywany stan takiego systemu nauczonego przykładami (powiedzmy sieci neuronowej)? Czy tylko w RAM i wszystko znika jak serwer padnie, czy zapisuje się stan sieci neuronowej w bazie danych czy pliku?
Jak to wszystko znika? xD Zapisuje się modele. Są różne sposoby zapisu takich danych zależne od używanych rozwiązań. Osobiście spotkałem się np. z PMML, ale nie jest to jedyne rozwiązanie.
Na czym polega uczenie maszynowe w praktyce, czyli w jakiejś firmie, a nie przykłady szkoleniowe?
Zbyt ogólne pytanie. W praktyce Data Scientiści analizują jakieś dane (w zależności od problemu), kombinują co mogą z nich wyciągnąć (feature engineering), a potem testują jakie algorytmy lub kombinacje algorytmów mogą zaaplikować do tych danych. Potem robią testy i sprawdzają, co działa. Jest pewna baza wyjściowa tych algorytmów znana w świecie machine learning. Następnie otrzymany wynik się produkcjonalizuje. Generalnie, takie projekty wymagają bardzo dużej i wszechstronnej wiedzy. Nie wiem, czy poza jakimiś książkowymi przykładami, jedna osoba byłaby w stanie od początku do końca stworzyć system machine learningowy z prawdziwego zdarzenia.
są gotowe biblioteki (albo usługi w chmurze)
Są, ale trzeba ich odpowiednio użyć. Natomiast te chmurowe rozwiązania są IMO zbyt uproszczone i okrojone, żeby dało się je dopasować do jakichś bardzo konkretnych wymagań. Można tam co najwyżej odpalać jakieś podręcznikowe przykłady. Np. Amazon SageMaker jest dość okrojony pod względem bibliotek MLowych w Pythonie, a Data Scientiści potrzebują często bardzo wielu bibliotek do prototypowania swoich rozwiązań.
A wez sobie regresje zrob i masz uczenie maszynowe. Jak zastosujesz na wychodzie nieliowa fukcje (jak sigmoid) i ulozysz w wiecej niz dwie warstwy to masz glebokie uczenie. Wytrenowany model jest zapisany w wagach (parmetrach) modelu. Ucznenie polega ze pomiedzy wchodem a wychodem masz map (funkcjanal) do funkcji kosztowej (np. kwadrat z roznicy pomiedzy tym co siec wypluje a etykietami do treningu (targets)), ktora to ma byc zminimalizowana. Jednak nie masz na to analitycznego rozwiazania i stosujesz gradient descent. I tak sie bujasz w te i we wte az koszt jest akceptowalnie maly. Nadmienie, ze dla kwadratowej fukcji kosztu najlepszym predyktorem dla targetu Z, zakladajac ze mamy informacje sigma, jest orthogonalan projekcja tegoz targetu Z na przestrzen sigma-mierzalnych funkcji. Poucz sie funcjonalnej analizy i teorii miary tj Banach, Lebesque i spolka jak chcesz zrozumiec teorie. Aczkolwiek jak nie robisz w research a nasuwasz anal to ci teoria nie potrzebna.
Do machine learning w Python uzywasz np. SciKitLearn a do glebokiego gardla jedziesz na PyTorch albo TensorFlow. Ja wole pierwszy ale jak kto woli. W sumie te dwie biblioteki to obliczanie pochodnych na tensorach za pomoca grafow, cyli tzw. automatyczne rozniczkowanie.
randomowy napisał(a):
Czy tylko w RAM i wszystko znika jak serwer padnie, czy zapisuje się stan sieci neuronowej w bazie danych czy pliku?
Możesz sobie zapisać wytrenowany model i go wykorzystywać w kółko nie tracą czasu na jego ponowne trenowanie, nawet pomiędzy technologiami / frameworkami / językami. Jest też pełno narzędzi do optymalizacji wybranych narzędzi, dla wyboru parametrów.
W podstawach ML i NN można się dowiedzieć, że:
- ML/NN nie są jakąś magiczną kulą która umie zajrzeć w przyszłość i przewidzieć co czym jest i będzie.
- Zabierając się za ML/NN trzeba wiedzieć dokładnie jaki problem chcesz rozwiązać, dzięki temu bazując na doświadczeniu będziesz wiedział jakich narzędzi użyć, mając na uwadze ich niedoskonałości.
- Trzeci punkt napisałem tylko po to żeby dwóm pozostałym nie było "łyso" ;p