Qual é a melhor maneira de aprender a aprender sem fazer nenhum curso online?
Qual é a melhor maneira de começar a aprender aprendendo com máquinas e aprendendo profundamente sem fazer nenhum curso online? originalmente apareceu em Quora: o lugar para ganhar e compartilhar conhecimento, capacitando as pessoas a aprender com os outros e entender melhor o mundo.
Resposta de Eric Jang, engenheiro de pesquisa do Google Brain, no Quora:
Deixe-me começar dizendo que não há uma única “melhor maneira” de aprender a aprendizagem de máquinas, e você deve encontrar um sistema que funcione bem para você. Algumas pessoas preferem a estrutura dos cursos, outras gostam de ler livros no seu próprio ritmo, e algumas querem mergulhar diretamente no código.
Comecei com o curso de Machine Learning Coursera do Andrew Ng em 2012, conhecendo quase zero álgebra linear e nada sobre estatística ou aprendizagem de máquinas. Note que embora a aula cobrisse redes neurais, não era um curso de Aprendizagem Profunda. Eu realmente gostei muito de como o curso formulou “Machine Learning” como nada mais que otimização numérica.
Se os cursos online são muito lentos para você, o melhor recurso consolidado é provavelmente o livro Deep Learning da Goodfellow, Bengio, e Courville. Ele tem alguns capítulos dedicados ao básico (como o que é abordado na aula do Ng) e depois salta para DNNs práticos.
Um fundo estatístico/matematicamente rigoroso não é necessário para fazer um trabalho útil de Aprendizagem Profunda, mas realmente ajuda a formular hipóteses sobre por que os modelos estão/estão não funcionando, e o que pode ajudar. Murphy’s Probabilistic Machine Learning textbook é uma grande base para ML matematicamente rigoroso (e tem grandes diagramas também!)
Depois de terminar o livro DL, você pode “especializar-se” em um dos subcampos/subcampos de Aprendizagem Profunda, implementando alguns dos trabalhos você mesmo. Alguns exemplos de tópicos:
- Aprendizagem Profunda Bayesiana (combinando redes neurais com modelos gráficos)
- Aprendizagem Profunda Reforçada (AlphaGo, IA Atari-playing, Robótica)
- Modelos Generativos (GANs, PixelCNN, VAEs)
- Métodos Aversariais (GANs, Actor-Crítico)
- Teoria da Aprendizagem Profunda
- Visão do Computador
- NLP/Speech (tradução, legendagem, modelos seq2seq)
- Relação simbólica (e.g. resolução de provas)
- Rede Neural Recorrente (p. ex. LSTMs, memória externa, atenção)
- Aplicações (resolvendo problemas específicos de domínio como classificação de câncer, dobramento de proteínas, leitura de lábios a partir do vídeo)
- Meta-learning / aprender a aprender (Gradientes Sintéticos, Pathnet)
O campo de Aprendizagem Profunda expandiu-se dramaticamente nos últimos anos, ao ponto de não ser realista tatear todos os subcampos de Aprendizagem Profunda em um curto espaço de tempo. Eu recomendo mergulhar fundo em um subcampo em particular, e então torna-se mais fácil aprender os outros subcampos uma vez que você tenha dominado uma área. Estes campos não têm mais muito em comum, além do fato de que todos eles utilizam o poder expressivo do aprendizado profundo para aprender tarefas de ponta a ponta, e são de um sabor geralmente experimental (ao invés de teórico em Ciência da Computação).
Estes dias, os trabalhos mais interessantes de Aprendizagem Profunda vêm com alguma implementação publicamente disponível em TensorFlow, Pytorch, Torch, Keras, ou Theano, então uma maneira de você construir uma intuição rapidamente é ver se você pode melhorar um modelo existente (por exemplo, fazer uma ResNet melhor).
Você provavelmente não deveria implementar seu próprio pacote de rede neural em Python a partir do zero. É muito trabalho para acertar os pequenos detalhes (por exemplo, veja este comentário sobre como a operação softmax é implementada em TensorFlow).
Deep Learning frameworks são complexos e levam um pouco de tempo para aprender, e a maneira mais rápida de dominar um framework DL é implementar uma arquitetura de rede neural desafiadora que exercita características obscuras do framework ou idéias que se sobrepõem a múltiplos subcampos do DL. Algumas recomendações sobre arquiteturas complicadas / pipelines de treinamento:
- Rede progressiva
- DenseNet
- Synthetic Gradients
- Neural Turing Machines
- Embed-to-Control
- Neural Machine Translation
>
>
>
>
Finally, Muitos pesquisadores de aprendizagem de máquinas estão no Twitter e a comunidade de aprendizagem de máquinas Reddit é uma boa maneira de obter as últimas notícias sobre redes neurais. O campo é muito competitivo e se move muito rapidamente, por isso ajuda a se manter atualizado.
Esta pergunta surgiu originalmente no Quora. o lugar para ganhar e compartilhar conhecimento, capacitando as pessoas a aprender com os outros e entender melhor o mundo. Você pode seguir o Quora no Twitter, Facebook, e Google+. Mais perguntas:
- Machine Learning: Quão difícil é para um cientista motivado construir um sistema de negociação automatizado a partir de casa?
- Programação de Computador: Como você encontra um programador iniciante?
- Aprendizagem: Como posso pensar mais rápido e melhor?
Quora: o lugar para ganhar e compartilhar conhecimento, capacitando as pessoas a aprender com os outros e entender melhor o mundo.