Caminho de aprendizagem de cima para baixo: Aprendizado de máquina para engenheiros de software
Inspirado na Coding Interview University.
Traduções: Português Brasileiro | 中文版本 | Français | 臺灣華語版本
Como eu (Nam Vu) pretendo me tornar um engenheiro de aprendizado de máquina
O que é?
Este é meu plano de estudo de vários meses para passar de desenvolvedor móvel (autodidata, sem diploma de CS) a engenheiro de aprendizado de máquina.
Meu principal objetivo era encontrar uma abordagem para estudar Aprendizado de Máquina que fosse principalmente prática e abstraísse a maior parte da matemática para iniciantes. Essa abordagem não é convencional porque é a abordagem de cima para baixo e que prioriza os resultados, projetada para engenheiros de software.
Por favor, sinta-se à vontade para fazer qualquer contribuição que achar que irá melhorar a situação.
Índice
- O que é?
- Por que usá-lo?
- Como usar
- Me siga
- Não sinta que você não é inteligente o suficiente
- Sobre recursos de vídeo
- Conhecimento pré-requisito
- O Plano Diário
- Motivação
- Visão geral do aprendizado de máquina
- Domínio do aprendizado de máquina
- O aprendizado de máquina é divertido
- Aprendizado de máquina com tinta
- Aprendizado de máquina: um guia detalhado
- Histórias e experiências
- Algoritmos de aprendizado de máquina
- Livros para iniciantes
- Livros Práticos
- Competições de conhecimento Kaggle
- Série de vídeos
- MOOC
- Recursos
- Tornando-se um contribuidor de código aberto
- Jogos
- Podcasts
- Comunidades
- Conferências
- Perguntas da entrevista
- Minhas empresas admiradas
Por que usá-lo?
Estou seguindo este plano para me preparar para meu trabalho em um futuro próximo: engenheiro de aprendizado de máquina. Tenho desenvolvido aplicativos móveis nativos (Android/iOS/Blackberry) desde 2011. Sou formado em Engenharia de Software, não em Ciência da Computação. Tenho um pequeno conhecimento básico sobre: Cálculo, Álgebra Linear, Matemática Discreta, Probabilidade e Estatística desde a universidade. Pense no meu interesse em aprendizado de máquina:
- Posso aprender e conseguir um emprego em Machine Learning sem estudar CS Master e PhD?
- "Você pode, mas é muito mais difícil do que quando entrei em campo." Draco Smith
- Como consigo um emprego em Machine Learning como um programador de software que estuda Machine Learning por conta própria, mas nunca tem a chance de usá-lo no trabalho?
- "Estou contratando especialistas em aprendizado de máquina para minha equipe e seu MOOC não vai conseguir o emprego (há notícias melhores abaixo). Na verdade, muitas pessoas com mestrado em aprendizado de máquina não conseguirão o emprego porque elas (e a maioria que fiz MOOCs) não tenho um conhecimento profundo que me ajude a resolver meus problemas." Ross C. Taylor
- Quais habilidades são necessárias para trabalhos de aprendizado de máquina?
- "Primeiro, você precisa ter uma formação decente em CS/Matemática. ML é um tópico avançado, então a maioria dos livros presume que você tenha essa formação. Em segundo lugar, o aprendizado de máquina é um tópico muito geral, com muitas subespecialidades que exigem habilidades únicas. Você pode querer para navegar no currículo de um programa de MS em Aprendizado de Máquina para ver o curso, currículo e livro didático." Uri
- "Probabilidade, computação distribuída e estatística." Hortênsia
Eu me encontro em momentos difíceis.
AFAIK, existem dois lados do aprendizado de máquina:
- Aprendizado de máquina prático: trata-se de consultar bancos de dados, limpar dados, escrever scripts para transformar dados e unir algoritmos e bibliotecas e escrever código personalizado para extrair respostas confiáveis dos dados para satisfazer questões difíceis e mal definidas. É a bagunça da realidade.
- Aprendizado de máquina teórico: trata-se de matemática e abstração e cenários idealizados e limites e beleza e informar o que é possível. É muito mais limpo e limpo e longe da bagunça da realidade.
Acho que a melhor forma de metodologia focada na prática é algo como 'prática - aprendizagem - prática', o que significa que os alunos primeiro vêm com alguns projetos existentes com problemas e soluções (prática) para se familiarizarem com os métodos tradicionais da área e talvez também com sua metodologia. Depois de praticar com algumas experiências elementares, eles podem acessar os livros e estudar a teoria subjacente, que serve para orientar sua futura prática avançada e irá aprimorar sua caixa de ferramentas para resolver problemas práticos. Estudar a teoria também melhora ainda mais a compreensão das experiências elementares e os ajudará a adquirir experiências avançadas mais rapidamente.
É um plano longo. Isso vai levar anos. Se você já estiver familiarizado com muito disso, levará muito menos tempo.
Como usar
Tudo abaixo é um esboço e você deve abordar os itens em ordem, de cima para baixo.
Estou usando o sabor especial de redução do Github, incluindo listas de tarefas para verificar o progresso.
Mais sobre descontos no estilo Github
Me siga
Sou um engenheiro de software vietnamita muito apaixonado e quer trabalhar nos EUA.
Quanto trabalhei durante este plano? Aproximadamente 4 horas/noite após um longo e árduo dia de trabalho.
Estou viajando.
Não sinta que você não é inteligente o suficiente
Fico desanimado com livros e cursos que me dizem, assim que os abro, que cálculo multivariado, estatística inferencial e álgebra linear são pré-requisitos. Ainda não sei como começar…
- E se eu não for bom em matemática
- 5 técnicas para compreender algoritmos de aprendizado de máquina sem experiência em matemática
- Como posso aprender aprendizado de máquina?
Sobre recursos de vídeo
Alguns vídeos estão disponíveis apenas através da inscrição em um curso Coursera ou EdX. É gratuito, mas às vezes as aulas não estão mais em andamento, então você tem que esperar alguns meses e não tem acesso. Adicionarei mais vídeos de fontes públicas e substituirei os vídeos dos cursos on-line ao longo do tempo. Gosto de usar palestras universitárias.
Conhecimento pré-requisito
Esta pequena seção consiste em pré-requisitos/informações interessantes que eu gostaria de aprender antes de começar o plano diário.
O Plano Diário
Cada assunto não requer um dia inteiro para ser compreendido completamente, e você pode fazer vários deles em um dia.
Cada dia eu pego um assunto da lista abaixo, leio de capa a capa, faço anotações, faço os exercícios e escrevo uma implementação em Python ou R.
Motivação
Visão geral do aprendizado de máquina
Domínio do aprendizado de máquina
O aprendizado de máquina é divertido
Aprendizado de máquina com tinta
Aprendizado de máquina: um guia detalhado
Histórias e experiências
Algoritmos de aprendizado de máquina
Livros para iniciantes
Livros Práticos
Competições de conhecimento Kaggle
Série de vídeos
MOOC
Recursos
Jogos
- Halite: jogo de codificação de IA
- Vindinium: desafio de programação de IA
- Competição geral de IA de videogame
- Competição de IA Angry Birds
- Os jogos de IA
- Competição de IA de jogos de luta
- Code Cup
- Torneio Estudantil de StarCraft AI
- Competição AIIDE StarCraft AI
- Competição CIG StarCraft AI
- CodinGame - Jogos de bots de IA
Tornando-se um contribuidor de código aberto
Podcasts
Podcasts para iniciantes:
- Máquinas Falantes
- Digressões Lineares
- Cético em relação aos dados
- Esta semana em aprendizado de máquina e IA
- Guia de aprendizado de máquina
Entrevistas com praticantes, pesquisadores e Kagglers de ML sobre sua jornada
- Chai Time Ciência de dados, áudio, redações
- Aprendizado de máquina para iniciantes – entrevistas, áudio
Podcasts avançados "mais"
- Parcialmente Derivado
- Programa de dados de O'Reilly
- Desvio não tão padrão
Podcasts para pensar fora da caixa:
Comunidades
Conferências
- Sistemas de Processamento de Informação Neural (NIPS)
- Conferência Internacional sobre Representações de Aprendizagem (ICLR)
- Associação para o Avanço da Inteligência Artificial (AAAI)
- Conferência IEEE sobre Inteligência Computacional e Jogos (CIG)
- Conferência Internacional IEEE sobre Aprendizado de Máquina e Aplicações (ICMLA)
- Conferência Internacional sobre Aprendizado de Máquina (ICML)
- Conferências Conjuntas Internacionais sobre Inteligência Artificial (IJCAI)
- Associação de Lingüística Computacional (ACL)
Perguntas da entrevista
Minhas empresas admiradas