Melhor resposta
o pré-treinamento em aprendizagem profunda nada mais é do que , treinando as máquinas, antes que elas comecem a fazer uma tarefa específica.
Por exemplo:
- Você deseja treinar uma rede neural para realizar uma tarefa, faça uma classificação em um conjunto de dados de imagens. Você começa o treinamento inicializando os pesos aleatoriamente. Assim que você inicia o treinamento, os pesos são alterados ou variados para realizar as tarefas com menos erros (otimizados). Quando estiver satisfeito com os resultados do treinamento, você salva os pesos da sua rede, para que a rede neural treinada possa realizar a tarefa semelhante na próxima vez com uma boa otimização e melhores resultados.
- Na próxima vez, comece de treinando com pesos inicializados aleatoriamente, você pode usar os pesos salvos da rede anterior como os valores de peso iniciais para seu novo experimento. Inicializar os pesos desta forma é referido como usar uma rede pré-treinada ……………………….
A primeira rede é sua rede pré-treinada. O segundo é a rede que você está ajustando.
A ideia básica por trás do pré-treinamento é que, a inicialização aleatória das entradas é boa .. aleatória, os valores dos pesos não têm nada a ver com o tarefa que você está tentando resolver.
Os valores do anterior, o treinamento deve ser melhor que o anterior, os valores devem ser inicializados adequadamente para a tarefa, podemos também defini-los para os valores ideais.
Portanto, o pré-treinamento dá à rede uma vantagem inicial. Como se já tivesse visto os dados antes.
Resposta
Em primeiro lugar, vou assumir que estamos no planeta Mercúrio, onde uma semana equivale a cerca de 58 semanas. Supondo que você gaste cerca de 8 horas por dia aprendendo durante 5 dias por semana, você tem 2.320 horas, o suficiente para ter um domínio bom o suficiente sobre o aprendizado profundo para se passar por um engenheiro de pesquisa e um pesquisador de nível iniciante.
Então, primeiro, faça um favor a si mesmo e adquira o livro de Aprendizado profundo de Goodfellow et al. É um livro extremamente SÓLIDO sobre aprendizagem profunda que não se intimida com a matemática, embora não seja excessivamente pedante. Por exemplo, ele tem uma ótima maneira de explicar o que acontece quando você otimiza a divergência KL de outra maneira, o que as perdas L1 e L2 realmente fazem aos seus pesos (em termos de autovetores da função de perda), intuição por trás dos LSTMs e assim por diante. Comece com a primeira seção do livro. Levará aproximadamente 2 semanas para digerir completamente esse material (YMMV). Se você já passou esta semana sem ficar entediado ou atolado com a complexidade matemática, agora você está pronto para mudar para o aprendizado de máquina.
Nesse ponto, precisamos parar de ler e começar a programar . Mas para realmente entender as coisas, não baixe o Tensorflow, comece com a implementação de coisas básicas (regressão logística, SVMs, kNN, PCA, GMMs) no bom e velho python. Muitas pessoas se apressam em usar bibliotecas de alto nível sem entender como codificar blocos básicos do zero, e você aprenderá muito se fizer isso. Por exemplo, aprender que você precisa padronizar seus dados antes de aplicar PCA, como tornar o softmax numericamente estável, por que você não deve reutilizar sua função softmax para implementar log-softmax e assim por diante. Para começar a implementá-los, vá para CS231n e conclua a primeira Atribuição, construindo sobre ela para implementar SVMs e GMMs. Isso levaria aproximadamente 4 semanas (assumindo que você começou sem nenhum conhecimento de numpy ou python) para implementar e depurar. Agora você sabe como implementar algoritmos básicos de aprendizado de máquina do zero.
Agora você está pronto para ir em frente e ler as excelentes notas no site CS231n (até o Módulo-1). Aproveite o seu doce tempo para digerir os meandros da otimização de funções não convexas e, sim, IMPLEMENTE cada coisa que você ler. De métodos baseados em momentum a backprop básico, a implementação é a chave se você realmente deseja aprender a mecânica. Por exemplo, se você implementar o backprop por conta própria, perceberá como precisa manter uma tonelada de dados ao redor para a passagem para trás e esse conhecimento pode ser muito útil se você encontrar erros de falta de memória em algum estágio de sua engenharia de DL carreira. Isso levará mais 4 semanas.
Já se passaram 10 semanas de DL insano agora. Agora você está sólido em suas habilidades matemáticas básicas e pode implementar redes feed forward e algoritmos de ML básicos em Python puro. Parabéns por isso. Vamos subir um degrau a partir daqui. Só vai ficar mais difícil (e, portanto, mais divertido).
É hora de pegar nosso livro Aprendizado profundo e começar de onde paramos. Leia os capítulos 6, 7 e 8. O Capítulo 6 é fácil, e já o dominamos. O Capítulo 7 é onde começa a ficar difícil – mas o livro faz um excelente trabalho em destilar conceitos matemáticos pesados em um texto fácil de entender.Para complementar seu aprendizado, assista a esta palestra incrível – Aula 11 de aprendizado profundo: Aprendizado com margem máxima, redes de transferência e memória .
Isso levará mais 4 semanas, mas com isso feito, estamos prontos para graduar para CNNs e RNNs. Seguiremos a mesma filosofia novamente – ler notas de cs231n, implementar e treinar rede de dados e, em seguida, ler o livro para entender os detalhes mais sutis. Esta fase vai e deve demorar mais porque implementar backprop em CNNs (com todos os recursos, como normalização em lote) não é tão fácil. O mesmo vale para LSTMs (observe a norma desse gradiente e corte se ficar muito grande ou truncar para sequências mais curtas se ficar muito pequeno). Dica profissional – para treinar LSTMs, recomendo verificar o conjunto de dados do PennTree Bank e treinar um modelo de linguagem para obter uma perplexidade de cerca de 110. Se você puder fazer aquele 90ish, parabéns, você está fazendo certo. Para treinar uma CNN, basta fazer a atribuição 2 de CS231n.
Ufa. essa última fase de treinamento de CNNs / RNNs e, em seguida, de leitura do material associado do livro, atrasou-nos cerca de 6 semanas e agora temos apenas 38 semanas em nossa busca para nos tornarmos os melhores.
Finalmente, hora para pip install tensorflow.
Não nem pense em mais nada. Não, não estamos fazendo pytorch (é dinâmico por natureza, não é ótimo se você quiser se familiarizar com o software autodiff, mas ótimo caso contrário) ou theano (não é grande o suficiente). Ou bibliotecas de alto nível como keras (lindas, mas fazem tudo parecer muito fácil). Vá para a documentação e leia o tutorial MNIST (para especialistas, porque é isso que somos agora). Tudo vai ser muito estranho no início, a ideia de um gráfico de computação, sessões e o fato de que há uma “compilação” e “execução” separadas, mesmo dentro do próprio python. Mas assim que você pegar o jeito, você começará a perceber o quão lindamente foi projetado e como é fácil de estender – por exemplo, escrever seu próprio LSTM é tão fácil quanto estender uma classe LSTM base. Como um conjunto de exercícios de aquecimento, leia o código nos tutoriais ( Tutoriais | TensorFlow ) e passe por cada tutorial com muito cuidado, entendendo o que cada linha faz e porque. Você aprenderá como organizar seu código tensorflow. Dica profissional – Sempre gosto de ter abstrações separadas para treinamento, teste e previsão. E uma função build()
separada que constrói todo o gráfico de computação, começando com marcadores, até definir a função de perda e train\_op que otimiza essa função de perda.
Plugue sem vergonha – recentemente codifiquei um modelo para compreensão de máquina (uma tarefa que aprendi a gostar muito). Para ver como montar o código do seu modelo, verifique MurtyShikhar / Resposta a perguntas . Para testar suas habilidades de tensorflow, traduza seu código CNN e LSTM em tensorflow para obter a mesma (talvez melhor) precisão / perplexidade.
Aprender tensorflow levou cerca de 8 semanas de hackeamento insano, lendo tutoriais e ficando frustrado com o dem erros de compilação do tensorflow, mas espero que a jornada tenha sido recompensadora. Agora você tem o poder do autodiff e um arsenal de funções muito bom para conectar literalmente QUALQUER modelo de aprendizado profundo de todos os tempos. Antes de prosseguirmos para algumas coisas de pesquisa, por que não tentar um projeto divertido em tensorflow? Pegue qualquer artigo interessante sobre um problema bem definido (tradução automática / legendagem de imagens / compreensão / resposta a perguntas / resposta visual a perguntas / transferência de estilo) e implemente o modelo de última geração no Tensorflow. Não tente GANs ainda, porque nós não somos tão legais (ainda). Você levará cerca de 5 semanas para terminar seu projeto e obter resultados competitivos, deixando cerca de 5 semanas apenas para ler sobre a pesquisa atual.
Eu percebi que 5 semanas é realmente um período curto para cobrir toda a extensão do EaD pesquisa, então por que não restringir nosso escopo? Escolha um problema ou técnica – seja modelos gerativos, modelos seq2seq ou aprendizagem por reforço. Não sei nada sobre aprendizado por reforço (estou tentando aprender, no entanto), então vou me concentrar nos outros dois.
Para modelos generativos, comece com este tutorial incrível de nosso senhor e salvador – NIPS 2016 – Generative Adversarial Networks – Ian Goodfellow , e prossiga lentamente, pausando e pesquisando como e quando necessário. Você vai achar essas habilidades matemáticas das primeiras semanas MUITO úteis aqui. Recomendo que você leia o artigo original do GAN e acompanhamentos como DCGANs , SeqGANs, e os mais novos e legais WGAN .
Para Seq2Seq, assista a esta palestra incrível de um cientista do cérebro do Google – Sequence to Sequence Deep Learning (Quoc Le, Google) e, em seguida, verifique o tutorial ICML 2017 de Oriol Vinyals – tutorial seq2seq icml .
O FIM.
Isso levou algum tempo e esforço. É o final da semana 58 e agora você tem um amplo conhecimento do Deep Learning, junto com algumas habilidades sólidas de matemática e engenharia. É hora de se aventurar mais (entendeu o trocadilho?) Na pesquisa do Deep Learning, ou talvez construir um aplicativo legal. Deixo essa decisão para você, seu engenheiro profissional de DL.