aprendizado profundo para tarefas sem imagem e sem PNL?

12

Até o momento, existem muitas aplicações interessantes para aprendizado profundo em visão computacional ou processamento de linguagem natural.

Como é em outros campos mais tradicionais? Por exemplo, tenho variáveis ​​sociodemográficas tradicionais e talvez muitas medições de laboratório e quero prever uma determinada doença. Isso seria um aplicativo de aprendizado profundo se eu tiver muitas observações? Como eu construiria uma rede aqui, acho que todas as camadas sofisticadas (convolucionais etc.) não são realmente necessárias ?! Apenas faça isso profundo?

No meu conjunto de dados específico, tentei alguns algoritmos comuns de aprendizado de máquina, como florestas aleatórias, gbm etc. com resultados variados em relação à precisão. Tenho uma experiência limitada de aprendizado profundo com reconhecimento de imagem.

spore234
fonte
11
Você pode estar melhor olhando para uma abordagem diferente, por exemplo, XGBoost, dependendo de quanto é "muitas observações". Você pode esclarecer se seu objetivo é tentar especificamente abordagens de aprendizado profundo ou obter a melhor precisão?
Neil Slater
@NeilSlater meu objetivo seria alcançar maior precisão do que os métodos estabelecidos como xgboost, se isso é possível, nesse caso, um
spore234
11
É possível, mas na minha experiência não é provável, a menos que você realmente tenha muitos dados.
Neil Slater
O Matlab fornece documentação sobre "Dicas e truques de aprendizado profundo". Eu tive a mesma pergunta e a página forneceu um guia muito útil ao longo de bons exemplos. por exemplo, você pode precisar de sequência para sequência / classificação / regressão de séries temporais usando aprendizado profundo.
Sami Navesi 25/09

Respostas:

10

Sim, você pode usar técnicas de aprendizado profundo para processar dados sem imagem. No entanto, outras classes de modelos ainda são muito competitivas com redes neurais fora do processamento de sinais e tarefas relacionadas.

Para usar abordagens de aprendizado profundo em dados sem sinal / sem sequência, normalmente você usa uma rede multicamada feed-forward simples. Não há necessidade de camadas convolucionais ou camadas de pool. A melhor arquitetura diferente dessa precisa ser explorada com a validação cruzada e pode ser demorada para descobrir, pois as NNs profundas exigem muita computação para serem treinadas.

Na minha experiência, tentando usar redes neurais profundas (-ish, normalmente ~ 5 camadas) nas competições do Kaggle:

  • O abandono ainda é altamente eficaz para regularizar e melhorar a precisão

  • Normalização de entrada - geralmente com o valor 0, desvio padrão 1, é importante

  • As funções de ativação da camada oculta podem fazer a diferença. Embora o ReLU reduz alguns problemas com gradientes de fuga, na minha experiência, ele é menos robusto com dados sem sinal e você desejará alguma outra forma. Se você tiver apenas algumas camadas, sigmoid ou tanh ainda funcionam bem. Caso contrário, observe ReLU, PReLU, ELU e outras variantes de ReLU que tentam corrigir seus problemas com neurônios "mortos".

  • Utilize otimizadores projetados para aprendizado profundo, como Adam, Adagrad ou RMSProp

  • Use uma abordagem de inicialização de peso que funcione com aprendizado profundo, como Glorot.

  • Considere usar camadas de Normalização em lote. Não é algo com o qual tenho muita experiência, mas vi outras pessoas se saindo bem com essa abordagem.

Apesar de tudo isso, o XGBoost pode vencer rotineiramente e facilmente NNs profundos com esforço mínimo de ajuste e treinamento em comparação (dependendo do curso do problema e dos dados que você possui). Se a precisão é tudo para você, é possível - embora não seja garantido - que um conjunto de NNs profundos e outro modelo como o XGBoost tenham um desempenho melhor do que individualmente.

Neil Slater
fonte
1

Uma rede pode ser apropriada para fins de classificação. Para isso, é necessário definir um conjunto de treinamento e um conjunto de testes de seus dados que representam os dados que a rede será solicitada a classificar na produção. Isso determina se você pode obter uma rede ruim, razoável ou boa de trabalho.

Considero termos como "aprendizado profundo" enganosos: uma rede não aprende, você só pode treiná-la.

Supondo que você possa criar um conjunto de treinamento e teste, em alto nível, você pode usar um

  • Multicamada: se seus dados não tiverem ordem e as estruturas tiverem uma posição fixa.

  • Redes recursivas: se a ordem dos dados é importante para a classificação

  • Convolução: se seus dados tiverem estruturas semelhantes às imagens, mas não houver posição fixa.

Obter uma boa configuração, como o número de camadas, requer tentativa e erro; é um tipo de magia negra.

Johan van Breda
fonte