O gargalo da aplicação da aprendizagem profunda na prática

9

Depois de ler muitos artigos de aprendizagem profunda, uma espécie de sentimento grosseiro é que existem muitos truques no treinamento da rede para obter o desempenho melhor que o normal. Do ponto de vista das aplicações do setor, é muito difícil desenvolver esse tipo de truque, exceto aqueles grupos de pesquisa de elite em grandes empresas de tecnologia, por exemplo, google ou facebook. Então, qual é a melhor maneira de aplicar algoritmos de aprendizado profundo na prática. Qualquer pensamento e sugestões serão muito apreciados.

user3269
fonte

Respostas:

9

É verdade que alguns detalhes usados ​​para melhorar o desempenho são considerados truques e você nem sempre saberá se esses truques produzem a mesma melhoria para seus dados e sua rede.

Algumas coisas que você definitivamente precisará:

  • Dados , muitos
  • As GPUs permitem executar experimentos mais rapidamente e experimentar mais coisas em um curto espaço de tempo.
  • Análise de curva de aprendizado. No final, tudo se resume ao desempenho no conjunto de testes, mas, observando as métricas de trem e teste, você pode identificar os motivos do mau desempenho. Viés forte? Sobreajuste de muitos nós ocultos?
  • A função de ativação . Não acho que seja um truque saber qual o tipo de função de ativação que você precisa. As RELU têm um caráter crítico, pois não se saturam como sigmóides e tanh. Um neurônio com ReLU terá mais probabilidade de saída, mas você não precisará disso para neurônios em camadas de nível médio. A vantagem que você obtém é mitigar o desaparecimento ou a explosão de gradientes e acelerar a convergência.
  • Regularização . Pode se aplicar como truques, mas se você estiver usando qualquer uma das principais bibliotecas de aprendizado profundo, poderá obter implementações prontas para a regularização via desistência.
  • Aumento de dados. Você basicamente está expandindo seu conjunto de dados sinteticamente, sem o custo adicional da anotação manual. A chave é aumentar os dados com transformações que realmente fazem sentido. Para que a rede veja variantes dos dados que pode encontrar na fase de teste ou quando é implantada no produto. Para dados visuais, a inversão horizontal é trivial e adiciona muito ganho. O tremor provavelmente depende do tipo de dados e da quantidade de ruído.
  • Mergulhar na exploração de hiperparâmetros pode ser frustrante. Comece com pequenas redes e procedimentos simples de treinamento. Redes menores são mais rápidas de treinar. Adicione mais camadas quando vir sinais de sobreajuste.
  • Boa inicialização . A inicialização aleatória é apropriada para medir a capacidade da rede de convergir, mas não necessariamente leva ao desempenho ideal. Ao mesmo tempo, apenas manter a iteração pode levar à adaptação da rede aos dados de treinamento. Se possível, use uma rede pré-treinada que já tenha aprendido uma representação e faça o ajuste fino no seu conjunto de dados. O pré-treinamento não supervisionado é outro caminho a percorrer e pode permitir que o procedimento de treinamento supervisionado comece de uma posição muito mais promissora no espaço de peso.
  • Examinartruques. Entenda o que o truque realmente faz. Um artigo descrevendo um pequeno detalhe usado para melhorar o desempenho de uma rede se concentrará nesse novo aspecto. O artigo pode fazer parte de uma sequência de projetos nos quais os autores estão trabalhando. O contexto do truque nem sempre pode ser claro imediatamente, mas para os autores não é um truque, mas uma técnica que resolve um problema que eles tinham. Às vezes, uma técnica é apresentada e é tratada como um truque e, posteriormente, alguém analisará seu impacto e descreverá sua função. Por exemplo, esse truque é equivalente à regularização L2 com a qual mais pessoas estão familiarizadas. Podemos decidir se devemos experimentar essa nova técnica ou seguir a regularização L2 que já conhecemos. Muitos desses truques tentam resolver problemas no aprendizado profundo, como o risco de adaptação excessiva, cálculos dispendiosos, parametrização excessiva e pesos altamente redundantes. Vale a pena dedicar um tempo para entender o que esses truques realmente fazem. Ao entender o problema que eles tentam resolver, podemos julgar a aplicabilidade de diferentes truques e escolher o que funciona bem com as restrições que podemos ter (por exemplo, pouco poder de computação, pequeno conjunto de dados)
ypx
fonte
2

Aqui está um livro interessante Redes Neurais: Truques do Comércio , uma versão atualizada de 2012 do livro. Muitos artigos de alguns dos pioneiros das redes neurais.

A ypx abordou muito bem muitas questões práticas com o treinamento, para abordar outras questões levantadas: muitos laboratórios industriais de elite ainda publicam seus resultados. Por exemplo, a equipe da Microsoft Research acabou de ganhar o ImageNet 2015 e eles lançaram um relatório técnico descrevendo seu novo módulo de rede profunda: Deep Residual Learning for Image Reconognition , a equipe do Google publicou sua arquitetura Inception, Going Deeper with Convolutions . Em um nível não trivial, ainda existe uma cultura no aprendizado de máquina (por enquanto) de compartilhar as grandes inovações. Possivelmente porque a chave é o acesso aos dados. Google e Facebook simplesmente têm acesso a dados que não temos. Difícil dizer quanto crédito vai para a inovação algorítmica bruta e quanto vai para grandes quantidades de dados.

Com relação ao que acontecerá no futuro? Difícil de dizer. É uma questão que muitas pessoas levantaram, dada a importância dessas empresas orientadas a dados e a competitividade do mercado. Mas, por enquanto, acho que há um saldo suficientemente bom do que os laboratórios de pesquisa industrial compartilham e não compartilham. Entendo que eles não compartilham sua implementação exata de código. Mas eles compartilham algumas inovações muito novas.

Encontre pesquisadores que publicam resultados importantes e leiam, leiam, leiam. Acredito que na AMA de Yann LeCun no Reddit, ele mencionou que é um leitor voraz. Eu acredito que isso é a coisa mais importante. E, na medida em que for prático, tente recriar seus benchmarks ou aplique o método a um conjunto de dados que esteja dentro do seu orçamento.

Penso que, independentemente de onde você está ou qual é sua posição na vida, esta é a melhor maneira de permanecer afiado e continuar desenvolvendo suas habilidades. Seja um leitor voraz e implemente coisas e construa intuição. Pessoalmente, não tenho recursos para participar de competições ImageNet, mas a leitura de todos os artigos do grupo ImageNet com melhor desempenho me ajudou tremendamente.

Indie AI
fonte