Aidemy 2020/10/1
Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Je vous remercie! Ceci est le deuxième article de Deep Running. Ravi de vous rencontrer.
Quoi apprendre cette fois ・ À propos des hyper paramètres de l'apprentissage profond
・ Ajouter un hyper paramètre ・ __ Taux d'abandon : Abandon (taux =) - Nombre d'unités de calque caché __: Dense () ・ __Fonction d'activation __: Activation () ・ Hyper paramètres de compilation ・ Fonction __Loss : perte - Fonction d'optimisation __: optimiseur ・ __ Taux d'apprentissage __: optimiseurs.SGD (lr =) ・ Ajuster les hyper paramètres ・ __ Taille du lot __: batch_size ・ __ Nombre d'époques __: époques
-Bien que le nombre de couches cachées et le nombre d'unités puissent être déterminés librement, il y a un risque que l'apprentissage soit ralenti et que le surapprentissage se produise facilement si le nombre est trop grand, donc la prudence est de mise. -Si __Dropout (rate = ratio d'unités à supprimer) __ mentionné ci-dessus est spécifié comme hyper paramètre, l'apprentissage sera effectué en supprimant un rapport fixe d'unités (neurones). Les abandons permettent un apprentissage indépendant de neurones spécifiques, évitant le surapprentissage et améliorant la précision du modèle.
-L'activation est une fonction appliquée pour __ la sortie de couche entièrement connectée (déclenchement de neurones) __. Si la fonction d'activation n'est pas spécifiée, les données ne peuvent pas être séparées par une ligne droite et les données ne peuvent pas être classées. -Inversement, si la fonction d'activation est spécifiée, même un modèle qui ne peut pas être séparé linéairement peut être classé sans faute s'il peut être correctement formé.
-Pour la fonction d'activation, __ "fonction sigmoïde (sigmoïde)" qui sort la valeur d'entrée dans la plage de "0 à 1", ou 0 si la valeur d'entrée est inférieure à 0, et entrée si elle est égale ou supérieure à 0. Il y a __ "fonction ReLU (relu)" __ qui renvoie la valeur telle quelle.
-La fonction qui montre la différence entre les données de sortie et les données de l'enseignant est appelée la fonction __loss (perte) __. -Les fonctions de perte utilisées dans l'apprentissage automatique incluent __ "erreur quadratique moyenne" __ et __ "erreur d'entropie croisée" __. Les détails seront décrits plus tard. ・ (Review) En deep learning, le poids de chaque couche est mis à jour afin de minimiser cette fonction de perte (méthode de propagation de retour d'erreur).
-Une fonction de perte qui met au carré et fait la moyenne de la différence entre chaque donnée de sortie et les données de l'enseignant. -Comme l'erreur quadratique moyenne convient à l'évaluation de valeurs continues, __ principalement appliquée aux modèles de régression __.
-Une fonction de perte qui exprime l'erreur entre les données de l'enseignant de l'étiquette de réponse correcte et les données de sortie de 0 à 1 en utilisant le fait que la sortie de l'étiquette de réponse correcte est 1. (Plus il est proche de 0, plus l'erreur est petite) -L'erreur d'entropie croisée est __ principalement appliquée au modèle de classification (classification binaire) __.
・ Comme mentionné ci-dessus, les poids sont mis à jour et appris afin que la fonction de perte soit minimisée. À ce stade, comment mettre à jour les poids tels que le taux d'apprentissage, le nombre d'époques et le montant de mise à jour du poids passé. L'optimiseur est utilisé pour déterminer s'il faut refléter ou __. Ce qui est défini dans l'optimiseur, ce sont des "optimiseurs" qui définissent le taux d'apprentissage décrit plus loin.
-Le taux d'apprentissage (lr) est un hyper paramètre qui détermine à quel point le poids de chaque couche est modifié à la fois. -Si le taux d'apprentissage est trop faible, la mise à jour se déroulera à peine, et si elle est trop élevée, la valeur sera dispersée et la mise à jour sera gaspillée, ou dans certains cas, elle ne convergera pas, il est donc nécessaire de la définir sur une valeur appropriée.
-La taille du lot est le nombre de données à entrer dans le modèle __ à la fois __. Si vous transmettez plusieurs données à la fois, le poids est mis à jour en prenant la valeur moyenne de la perte de chaque donnée et le gradient de la fonction de perte, afin que vous puissiez réduire l'influence de __ données biaisées __ et d'autres calculs parallèles pour chaque donnée. Comme cela peut être fait, __ le temps de calcul peut être raccourci . -D'un autre côté, si plusieurs données sont transmises, il est difficile de mettre à jour des poids importants, et il existe une possibilité de générer une __ solution locale optimisée pour certaines données seulement. -Pour cette raison, lorsqu'il y a beaucoup de données irrégulières, la taille du lot est souvent augmentée pour réduire l'influence des données biaisées, et quand il y en a peu, la taille du lot est souvent réduite pour éviter les solutions locales. ・ Définissez la taille du lot sur 1, c'est-à-dire, apprenez à saisir les données une par une __ apprentissage en ligne __, apprenez à définir la taille du lot sur le nombre total de données __batch learning (batch_size) __, et ainsi de suite. Le réglage sur s'appelle mini-batch learning.
・ Généralement, dans l'apprentissage profond, l'apprentissage est répété plusieurs fois avec les mêmes données d'entraînement pour améliorer la précision. Le nombre d'apprentissage à ce moment est appelé epochs. Même si le nombre d'apprentissages est important, la précision n'augmentera pas après un certain temps, mais si l'apprentissage est plus que nécessaire, un surapprentissage se produira, il est donc nécessaire de définir le nombre d'époques sur une valeur appropriée.
-Pour les hyper paramètres du deep learning, __Dropout (rate =) __ indiquant le taux de décrochage, __Dense () __ indiquant le nombre d'unités de couche cachées, et __Activation indiquant la fonction d'activation sont définis dans add. () __ · Il y a. -Le nombre d'unités dans les couches d'exclusion et masquées est lié à l'occurrence du surapprentissage, et si la fonction d'activation n'est pas définie, les données ne peuvent pas être classées elles-mêmes, il est donc nécessaire de définir une valeur appropriée. -Il y a loss indiquant la fonction de perte et optimizer indiquant la fonction d'optimisation à définir lors de la compilation. -Pour la fonction de perte, __ "categorical_crossentropy" __ est utilisé dans le modèle de classification. La fonction d'optimisation est liée à la manière dont les poids sont mis à jour et définit __optimizers.SGD (lr =) __ indiquant le taux d'apprentissage. -Le taux d'apprentissage est la quantité de poids qui peut être modifiée à la fois, et si cela n'est pas réglé correctement, l'apprentissage sera gaspillé ou les progrès seront ralentis. -Il y a batch_size indiquant la taille du lot et epochs indiquant le nombre d'époques à régler. La taille du lot représente le nombre de données entrées dans le modèle à un moment donné et le nombre d'époques représente le nombre de formations. Ces valeurs varient d'un modèle à l'autre.
Cette fois, c'est fini. Merci d'avoir lu jusqu'au bout.
Recommended Posts