TensorFlow est-il une bibliothèque complète d'apprentissage automatique?

11

Je suis nouveau sur TensorFlow et j'ai besoin de comprendre les capacités et les défauts de TensorFlow avant de pouvoir l'utiliser. Je sais qu'il s'agit d'un cadre d'apprentissage en profondeur, mais en dehors de celui que d'autres algorithmes d'apprentissage automatique peuvent utiliser avec le flux tensoriel. Par exemple, pouvons-nous utiliser des SVM ou des forêts aléatoires en utilisant TensorFlow? (Je sais que cela semble fou)

En bref, je veux savoir quels algorithmes d'apprentissage machine sont pris en charge par TensorFlow. Est-ce juste un apprentissage en profondeur ou quelque chose de plus?

Swaroop
la source
1
Prise en charge de la machine vectorielle implémentée dans TensorFlow: github.com/AidanGG/tensorflow_tmva/wiki/Support-Vector-Machine
Neil Slater
3
Juste pour être sûr: TensorFlow N'EST PAS une bibliothèque d'apprentissage en profondeur. Keras (qui peut utiliser TensorFlow comme backend) est une telle bibliothèque. TensorFlow est un moyen intelligent de gérer des calculs lourds (en utilisant un graphe de calcul) afin de les exécuter sur plusieurs matériels (CPU, GPU et autres).
Robin

Réponses:

15

Il s'agit d'une simplification excessive, mais il existe essentiellement deux types de bibliothèques d'apprentissage automatique disponibles aujourd'hui:

  1. Apprentissage profond (CNN, RNN, réseaux entièrement connectés, modèles linéaires)
  2. Tout le reste (SVM, GBMs, Random Forests, Naive Bayes, K-NN, etc.)

La raison en est que l'apprentissage en profondeur est beaucoup plus intensif en calcul que les autres méthodes de formation plus traditionnelles, et nécessite donc une spécialisation intense de la bibliothèque (par exemple, en utilisant un GPU et des capacités distribuées). Si vous utilisez Python et recherchez un package avec la plus grande variété d'algorithmes, essayez scikit-learn. En réalité, si vous souhaitez utiliser l'apprentissage en profondeur et des méthodes plus traditionnelles, vous devrez utiliser plusieurs bibliothèques. Il n'y a pas de package "complet".

Ryan Zotti
la source
1
Cette réponse est-elle toujours valable deux ans plus tard? Il semble que TensorFlow ait beaucoup grandi depuis lors.
John Sullivan
7

TensorFlow est particulièrement indiqué pour l'apprentissage en profondeur, c'est-à-dire les réseaux de neurones avec beaucoup de couches et des topologies étranges.

C'est ça. C'est une alternative à Theano , mais développée par Google.

Dans TensorFlow et Theano, vous programmez symboliquement. Vous définissez votre réseau neuronal sous la forme d'opérations algeabreic (ces nœuds sont multipliés par ces poids puis une transformation non linéaire est appliquée, bla bla bla), qui sont représentés en interne par un graphique (qui dans le cas de TensorFlow, mais pas Theano, vous pouvez réellement voir pour déboguer votre réseau de neurones).

Ensuite, TensorFlow (ou Theano) propose des algorithmes d'optimisation qui font le gros du travail pour déterminer quels poids minimisent la fonction de coût que vous souhaitez minimiser. Si votre réseau de neurones est destiné à résoudre un problème de régression, vous souhaiterez peut-être minimiser la somme des différences au carré entre les valeurs prédites et les vraies valeurs. TensorFlow fait le gros travail de différenciation de votre fonction de coût et tout cela.

EDIT: J'ai oublié de mentionner que, bien sûr, les SVM peuvent être considérés comme un type de réseau neuronal , donc évidemment, vous pouvez former un SVM à l'aide des outils d'optimisation TensorFlow. Mais TensorFlow n'est livré qu'avec des optimiseurs basés sur la descente de gradient qui sont un peu stupides à utiliser pour entraîner un SVM, sauf si vous avez beaucoup d'observations, car il existe des optimiseurs spécifiques pour SVM qui ne restent pas coincés dans les minima locaux.

En outre, il convient probablement de mentionner que TensorFlow et Theano sont des cadres assez bas niveau. La plupart des gens utilisent des frameworks construits sur eux et plus faciles à utiliser. Je ne proposerai rien ici, car cela générerait sa propre discussion. Voir ici les suggestions de packages faciles à utiliser.

Ricardo Cruz
la source
1
Theano n'est pas développé par Google. Selon leur site Web , il est «principalement développé par des universitaires». Tensorflow a été développé par Google .
dantiston
1
@dantiston oui, je sais. Je voulais dire "TensorFlow est une alternative à Theano et TensorFlow est développé par Google". Je parlais de TensorFlow, pas de Theano. Mauvais libellé, désolé.
Ricardo Cruz
5

Ryan Zotti offre une bonne réponse, mais cela change. Avec l'ajout des méthodes Random Forest , Gradient Boosting et Bayesian TensorFlow, il se dirige vers une solution à guichet unique. Des algorithmes plus traditionnels sont répertoriés ici . TensorFlow est particulièrement prometteur, car il est conçu pour évoluer correctement et prend en charge les opérations GPU. Cependant, scikit learnc'est le guichet unique traditionnel où vous pouvez trouver de nombreux algorithmes standard. Ce ne sont généralement pas les dernières et les meilleures, vous voudrez donc probablement aussi des bibliothèques spécialisées.

Adam Erickson
la source