[PYTHON] Pensez aux abandons avec MNIST

Pensons au décrochage en utilisant l'article ici publié l'autre jour. Cependant, cela se termine par un mot.

Qu'est-ce qu'un abandon?

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. dc21319e-6fb5-aa76-34b4-b9e18891553d.png

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. 20160714170858.jpg

Description dans TensorFlow

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})

Ajustement de valeur

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

Pensez aux abandons avec MNIST
Remarques sur avec
MNIST (DCNN) avec skflow
Pensez à yaml avec python
À propos de l'importation
Pensez aux abandons avec MNIST
À propos de l'apprentissage avec Google Colab
Implémentez la blockchain avec environ 60 lignes
Essayez TensorFlow MNIST avec RNN
Ce que les débutants pensent de la programmation en 2016
Pensez au problème de changement minimum
Exécuter l'inférence avec l'exemple de Chainer 2.0 MNIST
Pensez grossièrement à la fonction de perte
Penser les menus par l'optimisation des combinaisons