Czy TensorFlow jest kompletną biblioteką uczenia maszynowego?

11

Jestem nowy w TensorFlow i muszę zrozumieć możliwości i wady TensorFlow, zanim będę mógł z niego korzystać. Wiem, że jest to platforma do głębokiego uczenia się, ale oprócz tej, której innych algorytmów uczenia maszynowego możemy używać z przepływem tensora. Na przykład, czy możemy używać SVM lub losowych lasów za pomocą TensorFlow? (Wiem, że to brzmi szalenie)

Krótko mówiąc, chcę wiedzieć, które algorytmy uczenia maszynowego są obsługiwane przez TensorFlow. Czy to tylko głębokie uczenie się czy coś więcej?

Swaroop
źródło
1
Maszyna wektorów nośnych realizowane w TensorFlow: github.com/AidanGG/tensorflow_tmva/wiki/Support-Vector-Machine
Neil Slater
3
Dla pewności: TensorFlow NIE JEST biblioteką do głębokiego uczenia się. Keras (który może wykorzystywać TensorFlow jako Backend) jest taką biblioteką. TensorFlow to inteligentny sposób na obsługę ciężkich obliczeń (przy użyciu grafu obliczeniowego) w celu wykonania ich na wielu urządzeniach (CPU, GPU i innych).
Robin

Odpowiedzi:

15

Jest to duże uproszczenie, ale istnieją obecnie zasadniczo dwa rodzaje bibliotek uczenia maszynowego:

  1. Dogłębne uczenie się (CNN, RNN, w pełni połączone sieci, modele liniowe)
  2. Wszystko inne (SVM, GBM, Losowe lasy, Naive Bayes, K-NN itp.)

Powodem tego jest to, że głębokie uczenie się jest o wiele bardziej intensywne obliczeniowo niż inne bardziej tradycyjne metody szkolenia, a zatem wymaga intensywnej specjalizacji biblioteki (np. Przy użyciu karty graficznej i możliwości rozproszonych). Jeśli używasz języka Python i szukasz pakietu z największą liczbą algorytmów, spróbuj scikit-learn. W rzeczywistości, jeśli chcesz skorzystać z głębokiego uczenia się i bardziej tradycyjnych metod, musisz użyć więcej niż jednej biblioteki. Nie ma „kompletnego” pakietu.

Ryan Zotti
źródło
1
Czy ta odpowiedź jest nadal ważna dwa lata później? Wygląda na to, że od tego czasu TensorFlow bardzo się rozrósł.
John Sullivan,
7

TensorFlow jest szczególnie wskazany do głębokiego uczenia się, tj. Sieci neuronowych z dużą ilością warstw i dziwnymi topologiami.

Otóż ​​to. Jest to alternatywa dla Theano , ale opracowana przez Google.

Zarówno w TensorFlow, jak i Theano programujesz symbolicznie. Swoją sieć neuronową definiujesz w formie operacji algeabreicznych (te węzły są mnożone przez te wagi, a następnie stosowana jest transformacja nieliniowa, bla bla bla), które wewnętrznie są reprezentowane przez wykres (który w przypadku TensorFlow, ale nie Theano, faktycznie można to zobaczyć w celu debugowania sieci neuronowej).

Następnie TensorFlow (lub Theano) oferuje algorytmy optymalizacji, które wykonują ciężką pracę nad ustaleniem, jakie wagi minimalizują funkcję kosztów, którą chcesz zminimalizować. Jeśli twoja sieć neuronowa ma rozwiązać problem regresji, możesz zminimalizować sumę kwadratowych różnic między wartościami przewidywanymi a wartościami rzeczywistymi. TensorFlow wykonuje ciężką pracę polegającą na różnicowaniu funkcji kosztów i tym podobnych.

EDYCJA: Zapomniałem wspomnieć, że SVM można oczywiście postrzegać jako rodzaj sieci neuronowej , więc oczywiście można trenować SVM za pomocą narzędzi optymalizacyjnych TensorFlow. Ale TensorFlow jest dostarczany tylko z optymalizatorami opartymi na zniżaniu gradientu, które są nieco głupie, aby używać SVM, chyba że masz dużo obserwacji, ponieważ istnieją specjalne optymalizatory dla SVM, które nie utknęły w lokalnych minimach.

Warto również wspomnieć, że TensorFlow i Theano to całkiem niskie frameworki. Większość ludzi korzysta z frameworków, które są na nich zbudowane i są łatwiejsze w użyciu. Nie zasugeruję tutaj żadnego, ponieważ spowodowałoby to własną dyskusję. Zobacz tutaj sugestie dotyczące łatwych w użyciu pakietów.

Ricardo Cruz
źródło
1
Theano nie jest rozwijany przez Google. Według ich strony internetowej jest ona „opracowana głównie przez naukowców”. Tensorflow został opracowany przez Google .
dantiston
1
@ Daniston tak, wiem. Chciałem powiedzieć „TensorFlow jest alternatywą dla Theano, a TensorFlow jest opracowany przez Google”. Miałem na myśli TensorFlow, a nie Theano. Przepraszam za złe sformułowania.
Ricardo Cruz,
5

Ryan Zotti oferuje dobrą odpowiedź, ale to się zmienia. Dzięki dodaniu metod Random Forest , Gradient Boosting i Bayesian TensorFlow, firma zmierza w kierunku kompleksowego rozwiązania. Bardziej tradycyjne algorytmy są wymienione tutaj . TensorFlow ma szczególną obietnicę, ponieważ ma dobrze skalować i obsługuje operacje GPU. Jednak scikit learnjest tradycyjnym one-stop shop, gdzie można znaleźć wiele standardowych algorytmów. Zazwyczaj nie są najnowszymi i najlepszymi, więc prawdopodobnie będziesz chciał także specjalistycznych bibliotek.

Adam Erickson
źródło