Eu sou novo no TensorFlow e preciso entender os recursos e as deficiências do TensorFlow antes de poder usá-lo. Eu sei que é uma estrutura de aprendizado profundo, mas, além daquela que outros algoritmos de aprendizado de máquina podemos usar com o fluxo tensorial. Por exemplo, podemos usar SVMs ou florestas aleatórias usando o TensorFlow? (Eu sei que isso parece loucura)
Em resumo, quero saber quais algoritmos de aprendizado de máquina são suportados pelo TensorFlow. É apenas aprendizado profundo ou algo mais?
machine-learning
Swaroop
fonte
fonte
Respostas:
Essa é uma grande simplificação excessiva, mas existem essencialmente dois tipos de bibliotecas de aprendizado de máquina disponíveis hoje:
A razão para isso é que o aprendizado profundo é muito mais intensivo em termos computacionais do que outros métodos de treinamento mais tradicionais e, portanto, requer intensa especialização da biblioteca (por exemplo, usando uma GPU e recursos distribuídos). Se você estiver usando Python e estiver procurando por um pacote com a maior variedade de algoritmos, tente o scikit-learn. Na realidade, se você quiser usar o aprendizado profundo e métodos mais tradicionais, precisará usar mais de uma biblioteca. Não há pacote "completo".
fonte
O TensorFlow é especialmente indicado para aprendizado profundo, ou seja, redes neurais com muitas camadas e topologias estranhas.
É isso aí. É uma alternativa ao Theano , mas desenvolvido pelo Google.
No TensorFlow e no Theano, você programa simbolicamente. Você define sua rede neural na forma de operações algébricas (esses nós são multiplicados por esses pesos e, em seguida, uma transformação não linear é aplicada, bla bla bla), que internamente são representadas por um gráfico (que no caso do TensorFlow, mas não Theano, você pode realmente ver para depurar sua rede neural).
Então, o TensorFlow (ou Theano) oferece algoritmos de otimização que fazem o trabalho pesado de descobrir quais pesos minimizam qualquer função de custo que você queira minimizar. Se sua rede neural é destinada a resolver um problema de regressão, convém minimizar a soma das diferenças quadráticas entre os valores previstos e os valores reais. O TensorFlow faz o trabalho pesado de diferenciar sua função de custo e tudo mais.
EDIT: Esqueci de mencionar que, é claro, os SVMs podem ser vistos como um tipo de rede neural ; portanto, obviamente, você pode treinar um SVM usando as ferramentas de otimização do TensorFlow. Mas o TensorFlow vem apenas com otimizadores baseados em descida de gradiente que são um pouco estúpidos de usar para treinar um SVM, a menos que você tenha muitas observações, pois existem otimizadores específicos para SVM que não ficam presos nos mínimos locais.
Além disso, provavelmente vale a pena mencionar, que o TensorFlow e o Theano são estruturas de baixo nível. A maioria das pessoas usa estruturas que são construídas sobre elas e são mais fáceis de usar. Não vou sugerir aqui nenhum, porque isso geraria sua própria discussão. Veja aqui sugestões para pacotes fáceis de usar.
fonte
Ryan Zotti oferece uma boa resposta, mas isso está mudando. Com a adição dos métodos Random Forest , Gradient Boosting e Bayesian
TensorFlow
, ele caminha na direção de se tornar uma solução completa. Algoritmos mais tradicionais estão listados aqui . O TensorFlow tem uma promessa específica, pois foi projetado para dimensionar bem e suporta operações da GPU. No entanto,scikit learn
é o balcão único tradicional, onde você pode encontrar muitos algoritmos padrão. Eles geralmente não são os melhores e mais recentes, então você provavelmente também desejará bibliotecas especializadas.fonte