Pensons au décrochage en utilisant l'article ici publié l'autre jour. Cependant, cela se termine par un mot.
Le surapprentissage se produit parfois lorsque l'apprentissage profond est utilisé pour un apprentissage rigoureux. Cela signifie qu'il traite trop de données d'entraînement et devient un discriminateur dédié, ce qui rend impossible le traitement d'autres données.
L'identification est essentiellement un problème de classification, mais cette classification ne fonctionne pas. C'est facile à voir dans le graphique, mais il y a quelques points, et au début cela ne suit pas beaucoup les points, mais finalement une courbe proche des points est créée. Cependant, si vous en apprenez trop, vous vous retrouverez avec une étrange courbe, bien qu'elle soit proche de chaque point. Vous pouvez voir que même si vous classez avec cela, cela ne fonctionnera pas.
Ainsi, après avoir appris dans une certaine mesure, nous ignorerons les parties qui ne sont pas si pertinentes. C'est un «abandon».
Dans le cas du Deep Learning, chaque nœud est connecté dans une hiérarchie, mais je supprimerai le nœud qui semble inutile.
Dans TensorFlow, définissez le pourcentage de ce "nœud d'effacement" pour qu'il reste. La fonction à utiliser est "tensorflow.nn.dropout ()". Le rapport est spécifié par le deuxième argument.
keep_prob = tensorflow.placeholder(tf.float32)
h_fc1_drop = tensorflow.nn.dropout(h_fc1, keep_prob)
Dans le didacticiel, le rapport à conserver lors de l'exécution de l'apprentissage est spécifié comme "0,5". (Laissez la moitié des nœuds et effacez la moitié des nœuds)
train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
Veuillez ne pas abandonner pendant les tests. (Définir "1.0")
accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0})
Il n'y a pas d'autre choix que de faire des essais et des erreurs quant à ce qui est bon comme valeur, mais il semble que non seulement la valeur, mais aussi le lieu et le nombre d'abandons soient sujets à ajustement.
Recommended Posts