apprentissage en profondeur pour les tâches non-image non-PNL?


12

Jusqu'à présent, il existe de nombreuses applications intéressantes pour l'apprentissage en profondeur en vision par ordinateur ou en traitement du langage naturel.

Comment est-ce dans d'autres domaines plus traditionnels? Par exemple, j'ai des variables sociodémographiques traditionnelles et peut-être beaucoup de mesures de laboratoire et je veux prédire une certaine maladie. Serait-ce une application d'apprentissage en profondeur si j'ai beaucoup d'observations? Comment pourrais-je construire un réseau ici, je pense que toutes les couches fantaisies (convolutionnelles etc.) ne sont pas vraiment nécessaires?! Rendez-vous juste profond?

Sur mon ensemble de données spécifique, j'ai essayé quelques algorithmes d'apprentissage machine courants comme les forêts aléatoires, gbm, etc. avec des résultats mitigés en termes de précision. J'ai une expérience d'apprentissage en profondeur limitée avec la reconnaissance d'image.


1
Il vaut peut-être mieux regarder une approche différente, par exemple XGBoost, en fonction de la quantité de "beaucoup d'observations". Pouvez-vous préciser si votre objectif est spécifiquement d'essayer des approches d'apprentissage approfondi ou d'obtenir la meilleure précision?
Neil Slater,

@NeilSlater mon objectif serait d'atteindre une précision plus élevée que les méthodes établies comme xgboost, si cela est possible dans un tel cas
spore234

1
C'est possible, mais d'après mon expérience, peu probable à moins que vous ayez vraiment beaucoup de données.
Neil Slater

Matlab fournit de la documentation sur les "Trucs et astuces pour le Deep Learning". J'ai eu la même question et la page a fourni un guide très utile avec de bons exemples. par exemple, vous pourriez avoir besoin d'une séquence pour classer / classer / régresser des séries chronologiques en utilisant l'apprentissage en profondeur.
Sami Navesi

Réponses:


10

Oui, vous pouvez utiliser des techniques d'apprentissage approfondi pour traiter des données non liées à l'image. Cependant, d'autres classes de modèles sont encore très compétitives avec les réseaux de neurones en dehors du traitement du signal et des tâches connexes.

Pour utiliser des approches d'apprentissage approfondi sur des données sans signal / sans séquence, vous utilisez généralement un réseau multicouche simple à action directe. Pas besoin de couches convolutives ou de couches de mise en commun. La meilleure architecture autre que celle doit être explorée avec une validation croisée, et peut être longue à découvrir car les NN profonds nécessitent beaucoup de calculs pour s'entraîner.

D'après mon expérience, j'essaie d'utiliser des réseaux de neurones profonds (-ish, généralement ~ 5 couches) dans les compétitions Kaggle:

  • Le décrochage est toujours très efficace pour la régularisation et l'amélioration de la précision

  • La normalisation des entrées - généralement égale à 0, écart-type 1, est importante

  • Les fonctions d'activation des couches cachées peuvent faire la différence. Bien que ReLU réduit certains problèmes avec les gradients de fuite, d'après mon expérience, il est moins robuste avec des données non-signal et vous voudrez une autre forme. Si vous n'avez que quelques couches, alors sigmoïde ou tanh fonctionnent toujours bien. Sinon, examinez les ReLU, PReLU, ELU qui fuient et d'autres variantes de ReLU qui tentent de corriger ses problèmes avec des neurones "morts".

  • Utilisez des optimiseurs conçus pour l'apprentissage en profondeur, tels qu'Adam, Adagrad ou RMSProp

  • Utilisez une approche d'initialisation du poids qui fonctionne avec l'apprentissage en profondeur, comme Glorot.

  • Pensez à utiliser des couches de normalisation par lots. Ce n'est pas quelque chose que j'ai beaucoup d'expérience, mais j'ai vu d'autres personnes bien faire avec cette approche.

Malgré tout cela, XGBoost peut régulièrement et facilement battre des NN profonds avec un effort de réglage et d'entraînement minimal en comparaison (en fonction bien sûr du problème et des données dont vous disposez). Si la précision est tout pour vous, il est possible - bien que cela ne soit pas garanti - qu'un ensemble de NN profonds et d'autres modèles tels que XGBoost fonctionneront mieux que l'un ou l'autre.


1

Un réseau peut être approprié à des fins de classification. Pour cela, vous devez être en mesure de définir un ensemble de formation et un ensemble de test de vos données qui représentent les données que le réseau sera invité à classer en production. Cela détermine si vous pouvez obtenir un réseau fonctionnel mauvais, raisonnable ou bon.

Je considère les termes comme «deep learning» comme trompeurs: un réseau n'apprend pas, vous ne pouvez que le former.

En supposant que vous pouvez créer un ensemble de formation et de test, à un niveau élevé, vous pouvez utiliser un

  • Multi-couche: si vos données n'ont pas d'ordre et que les structures ont une position fixe.

  • Réseaux récursifs: si l'ordre des données est important pour la classification

  • Convolution: si vos données ont des structures comme dans les images mais qu'il n'y a pas de position fixe.

Obtenir une bonne configuration, comme le nombre de couches, nécessite des essais et des erreurs; c'est une sorte de magie noire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.