Réglage des paramètres de l'homme de l'auto-culture - ajustement des paramètres d'apprentissage profonds Cheats

Ceci est un nouveau manuel « alchimie scientifique » bourgeonnement écrit

avant-propos

Dans un article récent Nombre de commentaires abonnement zone backstage et examiner un peu d'un problème que nous avons trouvé de nombreux petits partenaires ont maintenant mis apprentissage machine, apprendre à poser la profondeur des fondations théoriques, mais vraiment envie de résoudre des problèmes algorithmiques une réalité lorsque les deux mains sont souvent aveugles , repas test sans but du chaos, ou même que l'ajustement des paramètres du mauvais modèle de performance doit être assez soigneusement.

Le plus gros problème est que la solution de novice logique au problème ne suffit pas clair, préfèrent utiliser la « force brute », il est donc facile de tomber dans un

« Trouver une open source »

« Je lance un peu, ajusté les paramètres »

« Inefficace, le prochain »

« Effet, à prendre pour faire l'intégration. »

La boucle sans fin. Comme le montre l'image

Si l'on arrive à venir à travers le code, de sorte que sa précision sur les deux points, donc il a commencé à se vanter de « ce modèle trop Niubi, en battant et la pendaison XXXX ». Quant à la course un rien de bits pour améliorer l'algorithme, il disait: « papiers définitivement faux, et qui ne sont pas utilisés. »

Puis, après une longue période pour résoudre le problème d'une manière telle violence recherchée, il a commencé à se vanter à d'autres

« Harm, étude approfondie des hommes de cette ligne est en cours d'exécution que les paramètres de tonalité de code, sans concurrence. »

mots autodérision sont considérés comme un modèle peut être la plus grande tragédie de la profondeur de champ d'étude.

Aujourd'hui à partager avec vous ce que je pense le bon sens devrait être au courant d'une certaine alchimie, je l'espère petits amis après avoir lu cet article, peut aider les débutants à améliorer la capacité et l'efficacité de l'alchimie, sans cervelle des paramètres tune du cycle.

Nous voulons en particulier pour aider à atteindre les objectifs suivants:

  • Rapide : l'algorithme le plus rapide pour résoudre un problème

  • Quasi : le nombre minimum d'essais et d' erreurs pour trouver la stratégie optimale

  • Stabilité : au moins manière sujette aux erreurs de gérer des expériences

quasi-

Prenant la parole devant le « rapide », le premier à dire quelque chose au sujet de la tactique « quasi », parce que l'enregistrement est la plus importante question, mais aussi une prémisse rapide.

Faire de la recherche, identifier le point de départ

Après avoir pris un problème d'algorithme, si beaucoup de temps, nous pouvons d'abord localiser à des conférences ou des revues homologues des questions de l'algorithme:

Par exemple, vous voulez résoudre le problème correspondant de la pertinence requête-doc, vous devez donner la priorité à SIGIR, des conférences liées à CIKM et autres forts IR, au lieu d'une réunion de la PNL;

Si vous voulez résoudre le NLI, les questions et les réponses, l'appariement sémantique de ce dialogue, vous devez donner la priorité à l'ACL, EMNLP, NAACL, COLING PNL cette réunion, ne répondant pas à l'IR;

Si vous faites un bon modèle d'appariement de l'emploi, de compresser ce qui est devenu plus petit et plus rapide, il faudrait donner la priorité à l'IPSC, NIPS cette profondeur plus générale de l'apprentissage, la réunion du réseau de neurones.

problème de l'algorithme Le positionnement ne vient pas des homologues de réunion? vous pouvez vous promener AAAI et IJCAI au moins (bien que le problème plus grave de la cohabitation)

Ensuite , selon le titre de l' article, rechercher plusieurs problèmes algorithmiques avec vos plus proches près de deux ans de papier, et lentement la recherche. Ces papier des chapitres liés au travail et la section expérimentale , très facile de retracer les travaux antérieurs, semblable à la figure ci - dessous ce (de @ cerf cerf de papier), il est généralement pas nécessaire à la recherche manuelle du papier plus tôt .

Il est donc logique que vous serez en mesure de trouver l'algorithme de problème compare l'avant-garde de la solution et la comparaison des (simple) code (unique) aborder la question, alors il y a une bonne base, après quelques version itérations est venu peut-être une nouvelle stratégie papier.

Cependant, si le temps est très abondante, le problème à résoudre et relativement simples (telles que la classification de texte est une question typique, un point d'interrogation de séquences, etc.), la recherche sur le savoir trouver presque peut souvent des surprises, il ne demande aussi petit soir Eh bien (∇) bien sûr, le problème est trop complexe, il a également suggéré que l'échange (// ∇ //) connaître presque par coin droit privé supérieur de la lettre \

En bref, n'est pas recommandé d'aller directement à une brute de réglage des paramètres repo github forcer une prise en pension, un grand nombre de méthodes est très difficile de trouver le trésor par les moteurs de recherche généraux (bien que ce comportement dans le jeu lorsque la liste brosse partout).

Construction d'une boucle d'itération de la politique, en essayant de repérer la direction

Évitez procès force brute et l' erreur la deuxième étape consiste à construire une boucle d'itération de la politique complète . En raison de différents problèmes définis différemment, donc il y a un processus absolu peut être exactement adapté à tous les problèmes algorithmiques, un de mes propres est la plus commune boucle d'itération

Analyse de l'ensemble des données - Stratégie Prétraitement - stratégies algorithmiques - Modèle d'évaluation - Étude de cas

Pour blanc, est souvent pris dans une boucle infinie dans la troisième étape et la quatrième étape, les deux premiers ne voient pas le lien et le dernier lien.

Pour blanc, souvent également envisager des stratégies de prétraitement supplémentaires.

Analyse des données 1. Ensemble

Beaucoup dataset blanc ne peut pas attendre pour obtenir après le réglage des paramètres de la route, en fait, avant de commencer à faire une analyse simple des ensembles de données, peut aider à réduire de manière significative le travail manuel après que vous (ne volez pas exclure à l' avance de la politique et hyper-paramètres insensibles), et réduire considérablement la probabilité de commettre une erreur fatale lorsque le premier contact avec la nouvelle tâche .

Par exemple, les statistiques simples sur la répartition de la longueur échantillon, vous pouvez connaître varie généralement une longueur de séquence maximale de ce paramètre est pas nécessaire de penser comme un enfant super positif huit paramètres de petits retroussées, des statistiques simples sur la catégorie de distribution, vous pas dans les échantillons positifs et négatifs de 9: à un taux de précision de 90% dans le cas de complaisance 1, la prise de décision induire en erreur, et des regards plus vastes ensembles de données, vous ne serez pas en contact avec le style de texte initial des tâches liées à unifier le mot anglais minuscule .

2. La stratégie de l'algorithme de pré-traitement et la tactique

Ce lien n'a pas besoin d' aller en trop, la façon la plus directe est de réaliser les résultats d'une enquête sur une partie du document de stratégie plus efficace de se déplacer sur la vérification. Cependant, avec une attention particulière à un véritable problème que je porte cette stratégie, même la conception d' une nouvelle stratégie, quel est le but? Pour résoudre le problème? Après tout, beaucoup de papier dans la stratégie de scénario applicable est très limité, il n'y a pas de transport de fin peut augmenter de manière significative l' exercice futile.

3. Modèle d'évaluation

Modèle d' évaluation est généralement pas un problème rencontré lors de la lecture du jeu, les algorithmes plus matures tâches généralement été résolus. Par exemple, il s'agit de classification de textes, on peut penser acc, f1 et d' autres indicateurs, il s'agit de la traduction automatique, nous pouvons penser bleu et ainsi de suite. Cependant, il y a beaucoup de problèmes algorithmiques est très difficile de trouver un impartiales et automatique des paramètres d'évaluation.

Un exemple typique est le domaine du problème de génération de dialogue ouvert.

Bien que la traduction automatique, c'est un problème de génération, mais si vous suivez l'UEBL comme un indice d'évaluation, il est donc le dialogue UEBL généré une évaluation partiale de votre pinceau, puis il est difficile de refléter vraiment la haute qualité du modèle généré par le dialogue (la traduction automatique de relations d'alignement solides ne sont pas là pour générer des problèmes de dialogue). Pour aggraver les choses, incapable de trouver impartiale index automatiquement, chaque itération d'une stratégie, vous devez laisser un groupe de personnes de marque de notation vigoureuse, mais aussi pour vérifier s'il y a une anomalie marquée par (peut-être il y a un bébé crises de colère Cookin vous donner un laissez-passer), ce qui est très inefficace, même si le code que vous écrivez bientôt, sera tirée vers le bas par l'évaluation.

Affaires est susceptible d'avoir des tâches d'algorithme ambigus, comme « petit soir pour une meilleure représentation de la phrase, » est soigneusement conçu avant alors évaluer la bonne ou mauvaise une représentation impartiale, vous aurez besoin de se livrer à ouvert à grande échelle clair. Pas un objectif, impartial et évaluation automatique, itération de la politique sera sans aucun doute très lent et même de renverser la fin de nouveau.

Etude de 4.case

Comme la précision d'évaluation scalaire, f1, bleu, etc. peut guider la stratégie globale actuelle mauvaise Shanghao, mais il ne peut pas vous aider à trouver un plus problème à grains fins. Beaucoup dans la ligne blanche, comme les cloches et de sifflets d'une variété d'algorithmes et de divers tests de chaos repas idée farfelue, le modèle d'évaluation qui aurait pu facilement juger un algorithme « est pas utile », et peut donc pur alchimie lutte physique.

Mais! Il est! Quand vous faites quelque chose de plus étude de cas plus tard, vous pouvez trouver tout à coup que beaucoup l' essayer vous - même avant tout superflu:

Pensez - vous que le déséquilibre des données est une étude sérieuse problème, le cas a trouvé le modèle est en fait très facile,
vous pensez qu'il est très loin d' être le raisonnement, l' étude de cas a plus de la moitié des cas de mauvais problèmes de raisonnement causés,
pensez-vous que les problèmes n'est pas important, cas l'étude sur le terrain à long terme n'a été trouvée pas vu trop du modèle,
vous pensez que le jeu de données est très propre, étude de cas a un grand nombre de fautes de frappe causées par des mauvaises décisions;

En bref, dans le cas d'un manque d'expérience, par l'étude de cas peut aider beaucoup de tentative inutile de vous exclure, et d'aider à identifier les goulets d'étranglement dans la stratégie actuelle, ciblée pour trouver des stratégies et de l'innovation.

bug d'importance, d'identifier la cause de retournement

Blanc a couru souvent ronde après itérations en boucle fermée sur la frustration: « bon effet ah pauvres. » Ici, il y a souvent une mauvaise compréhension de la pensée: « La précision est pas nécessairement l'algorithme / paramètre n'est pas bon. »

Par exemple, le feutre blanc sur le BERT pour obtenir une précision de 95%, les résultats ont couru une ligne de base et a constaté que seulement 70% selon, puis a commencé à lancer une stratégie itérative un point un point. Des efforts dans la mauvaise direction, le résultat final naturel ne sera pas bon.

En fait , dans le cas de ce processus itératif de priorité de la politique est de bug exist . Par exemple, le modèle pré-formé BERT-tubé, mais nous avons oublié de texte entrée traitement minuscule, utilisé un modèle de base char, coupe le texte donné mot, après tout est prêt, script bash oublié en fait d' effectuer une pré-charge modèle de formation.

Parfois, l'ajustement paramètres et utiliser des stratégies algorithmiques peuvent atténuer l'impact causé par bogue, entraînant blanc erreur continue les paramètres d'ajustement dur et d'essai fou et erreur que nous serons en mesure de combler cette lacune. En fait, par rapport aux algorithmes et ultra-participation, bug et plus souvent fatale. Bien sûr, pour certains problèmes d'algorithmes spéciaux (tels que les problèmes bien connus RL), voire hyper-paramètres sont extrêmement sensibles, analyse des besoins spécifiques de problèmes spécifiques.

rapide

Débarrassez-vous de « over the top » pour améliorer la vitesse de l'écriture de code

l' exploration algorithme est extrêmement incertain , il est vous écrivez probablement du code depuis longtemps parce qu'ils ne travaillent pas le dernier complètement abandonné, donc, du style du code, il doit éviter le code écrit dans le système , une variété de techniques orientées objet un paquet chaos Dayton haine est inutile. Permet la présence d'un « code indésirable « peut grandement améliorer l'efficacité de l' itération expérimentale.

La question est, si vous produisez un tas de « code indésirable extrait », comment les utiliser efficacement? loin de jet direct? Ou copier-coller le refactoring de code?

Le plus simple est d'utiliser directement un adhésif « du script Bash . » Le code de fonction en provenance fragments détachés reliés par l' intermédiaire d' une commande de tuyau bash, de sorte que aussi à travers le « & » + portefeuille mise en œuvre de commande d'attente (multi-processus) pour le traitement parallèle de grands ensembles de données.

De la coquille ne pas vraiment familier avec les petits partenaires peuvent également utiliser ordinateur portable jupyter à coller. Cependant, recommande vivement que chaque ingénieurs de l' algorithme de PNL familiers avec bash et vim , un nombre considérable de traitement et d' analyse des données ne sont pas nécessaire d'utiliser le python, bash ces commandes et l' efficacité vim l' alchimie des compétences aura une amélioration très significative après l' habitude.

Pour petit code plus fragmenté (comme la logique des modifications de bord latéral d'analyse génère un petit dictionnaire), envisagez d' utiliser IPython , après la fin d'une commande de tâche magique %savelaisser ces pièces deviennent disponibles codes multiplexés.

Non seulement peut accélérer considérablement dans le code de production, les paramètres de débogage et syntoniser le problème encore appris.

validation sous-échelle, l'achèvement rapide du pilote

Ce sentiment d'émission très idiot quand écrit, mais d'après mon observation, la plupart des nouveaux arrivants ont ce problème. Si vous lui donnez un jeu de formation millions d'échelle, il prendrait l'ensemble d'apprentissage à déboguer, vous lui donnez un ensemble de formation de 10 millions d'échelle, il a pris l'ensemble d'apprentissage à déboguer, et même n'a pas oublié de se plaindre « trop frais de chargement de données temps, prenez le temps de déboguer une bonne façon ".

Pro façon, le débogage est progressivement ....

La première étape : transférée par le code. A cette époque , la pendaison symbolique de centaines d'échantillons est assez, corriger les erreurs grammaticales et grave erreur logique.

La deuxième étape : vérifier la convergence. Beaucoup bug ne se plaint pas, mais la formation conduira à un effondrement total ou même jamais dans la formation. Nous pouvons former des centaines ou des milliers d'échantillons pour voir si , après la perte de la formation de plusieurs d'époque peut être réduit à près de zéro.

La troisième étape : des expériences à petite échelle. Valider la performance du modèle sur un petit échantillon fixé dix mille ou cent mille niveaux, analyse de sensibilité ultra-paramètre. En fait, cette étape ne constitue pas une option lorsque la taille des données (telles que plusieurs centaines de milliers ou deux millions), lorsque les données de formation est extrêmement importante (un milliard, voire dix milliards de mots) est nécessaire. Il y a un bug très subtile n'affecte pas la convergence bien, mais cela affectera considérablement les performances du modèle final. En outre aide également à trouver certains paramètres super scandaleux.

La quatrième étape : une expérience à grande échelle. Autrement dit, le nombre de données de formation sur la quantité, ou même plus que quelques époque de la formation. Lorsque la quatrième étape, doit absolument veiller à ce que le code est très fiable, et sans réglage des paramètres de base, sinon le coût d'essais et d' erreurs est souvent insupportable.

réglage des paramètres Rational, la puissance de calcul et de temps pour explorer des stratégies

Les débutants aiment penser à quoi que ce soit en tant que paramètres super pour ajuster.

« Comment réglage de la longueur de troncature beaucoup de texte d'incertitude? 10 série d'expériences liées à la mise au point une mélodie «
» le code officiel, il y a un warm - up ne savent pas faible? 10 série d'expériences liées à la mise au point une mélodie. »
«J'ai entendu la taille du lot affecter les performances? Accrocher 10 un ensemble désaccordé tune expériences "
tous dans les paramètres tune dans ╮ (╯ ▽ ╰) ╭

Cette approche est sans doute la plus perte de temps et des ressources informatiques et des ultra-paramètres peuvent élaborer une fourchette raisonnable, en fonction de certains paramètres et autres ultra leur environnement, une partie de la structure du réseau et solide modèle pré-formation de couplage et ainsi de suite. Par conséquent, le premier ajustement des paramètres de l' étape et la plus importante étape est une analyse de sensibilité ultra-paramètre , trouver et puis finalisez le plus grand impact après quelques paramètres ultra performants pour la tâche en cours.

Et pour déterminer la sensibilité de l'individu sur les paramètres, d'une part peut être réglé en fonction de leur propre expérience, d'une part (paramètre de différence ultra grand peut être hyperparametric sensibles, ils ne sont généralement pas sensibles à la valeur du même conformément à la valeur de chaque papier ), il est incertain, deux ou trois est suffisant pour déterminer la sensibilité du groupe expérimental, il n'y a pas besoin d'une « recherche de la grille. »

raisons d'espace, parler de l'approche générale de cet article, quelques-uns des détails de la magie de l'assistant ont beaucoup d'informations sur Internet, où ne se fait pas.

stable

Avoir un « quasi » et problème « rapide », ce qui suit facile pour les débutants aux plus de maux de tête « stable » mot mal avec moi.

Beaucoup de débutants ont eu cette ruée vers la situation:

« Eh? Je me souviens clairement que ce script peut manquer taux de précision de 95 pour cent, puis comment exécuter un 92% jusqu'à? »
« Où est mon modèle ??? »
« comment ce modèle sur la formation .. »
« Quelle stratégie peut - être à la diff »

Les mensonges de problème dans la gestion de version expérimentale et de gestion de code sur.

Un outil pour stabiliser le

Comme son nom l' indique, la gestion de l' expérience est d' enregistrer le nom de la stratégie et les résultats expérimentaux correspondants de chaque expérience , généralement sous la forme d'une table d'enregistrements. Ici , vous pouvez utiliser Excel, éditeur Markdown, record, bien sûr, également suggéré l'utilisation d'outils pour soutenir les dossiers de synchronisation des nuages (tels que les documents de graphite outils connexes, Evernote ou intranet, etc.), dans le cas où l'ordinateur est volé, les fichiers supprimés accidentellement et toute autre cause accidentelle tragédie.

Cependant, parfois l'expérience anxieuse, une description de la politique assez attentivement comment faire? Par exemple, une expérience tout en changeant les politiques spécifiques, mais aussi changé les hyper-paramètres, le modèle pré-formation et donc un tas de choses, ne peut pas utiliser un nom récapituler tout, comment le faire?

La façon la plus simple est l'outil de gestion de version avec, plus besoin de se soucier de la perte de paramètres futurs, le modèle ne peut pas reproduire, le modèle ne peut pas tracer l'environnement et d' autres questions.

Pour parvenir à une gestion de version, il est également très simple, Git est naturellement le meilleur choix.

Meng nouvelle attention, il est GIT, pas GitHub! Vous ne pouvez pas GitHub, mais pas sans Git!

Comment utiliser la gestion des versions Git et itération expérimentale de celui-ci?

Tout d' abord, assurez - vous que les journaux de formation, eval journal est sous forme de fichiers conservés vers le bas, au lieu d'imprimer à l'écran devient une chose du passé, en outre, la nécessité d'assurer les réglages chaque fois que le temps d' exécution (comme la version du jeu de données ultra-paramètres, le stockage ckpt chemins, etc.) peuvent être enregistrés dans un fichier journal, et essayer d'emballer un environnement de démarrage pour maintenir la mission de formation run.sh.

Après tout le monde est de voir leurs propres amis habitudes. Mes habitudes personnelles

  • Chaque stratégie principale a poussé avec succès plus loin, l' appel git tagde faire une étiquette. Cette stratégie ici le nom de l' étiquette et des expériences de gestion de table au nom de l' alignement de la stratégie

  • Si vous essayez d'explorer dans un très délicat sur la base d'une politique, vous pouvez retirer une branche sur la base des politiques actuelles, après l'achèvement de l'arrière chose appropriée dans cette branche coupée à la branche principale. Bien sûr, si le travail politique sur cette branche, il peut être considéré comme positif, co-brandée est entré dans la branche et la balise concernée

commande plus git la gestion des versions de mise en œuvre, voir ici

Donc, à l'avenir lorsque vous souhaitez revoir une politique, il vous suffit de passer à la balise appropriée ci-dessous ou branche des éléments suivants peuvent être des amis, reproduction intégrale de l'ensemble de l'environnement, et peut être tracé directement lié à tous les paramètres de stratégie lors de son exécution, ainsi que dans la politique divers résultats du réglage des paramètres.

Enfin, la « juste » mais aussi tenir compte de la question dernier mot sur un cas extrême, est l'ensemble de l' environnement expérimental déraciné ╮ (¯ ▽ ¯ « ») ╭ ces dommages graves sur le disque dur défectueux et autres. Par conséquent, nous devons nous rappeler de faire un travail de sauvegarde périodiquement des environnements de code critiques telles que pousser à distance au dépôt GitHub. Bien sûr, pour ckpt, des ensembles de données tels fichiers volumineux peuvent être écrits dans .gitignoreun fichier afin de ne pas exploser l'entrepôt, le meilleur accueil pour ces fichiers volumineux, bien sûr, est des amis de cluster Hadoop.

Des travaux de recherche peuvent être évaluées par l'ensemble de données open source, mais doivent encore évaluer l'algorithme d'affaires à la personne concernée d'affaires.

Publié 33 articles originaux · louanges gagnées 0 · Vues 3266

Je suppose que tu aimes

Origine blog.csdn.net/xixiaoyaoww/article/details/105036075
conseillé
Classement