l'éventail des applications est large, la façon dont il sera utilisé exactement est une autre question.
La ligne de fond de la partie 2 de l'article :
Le décrochage peut être considéré comme une version bon marché du bayésianisme, qui est très simple. L'idée est basée sur la même analogie avec les ensembles que j'ai mentionnée à la fin du dernier billet : imaginez que vous avez un réseau neuronal. Imaginez maintenant que vous le prenez, que vous en arrachez quelques neurones au hasard et que vous le mettez de côté. Après ~1000 opérations de ce type, vous obtenez un ensemble de mille réseaux, où chacun est légèrement différent des autres au hasard. Nous faisons la moyenne de leurs prédictions, et nous obtenons que les écarts aléatoires se compensent par endroits et donnent des prédictions réelles. Imaginez maintenant que vous avez un réseau bayésien, et que vous prenez mille fois un ensemble de ses poids hors de l'incertitude, et vous obtenez le même ensemble de réseaux légèrement différents.
Ce qu'il y a de mieux dans l'approche bayésienne, c'est qu'elle permet d'utiliser ce caractère aléatoire de manière contrôlée.
....
Dans la pratique, cela se traduit par le fait qu'un réseau dimensionnel donne de meilleurs résultats qu'un réseau d'abandon, mais pas de beaucoup.
Ce qui rend le décrochage plus cool, c'est qu'il est très simple, bien sûr.
C'est-à-dire qu'un NS profond avec dropout est l'équivalent d'un réseau bayésien. Et le dropout est dans de nombreux paquets, vous pouvez d'abord l'utiliser pour rechercher des poissons sur vos prédicteurs/cibles. Et ensuite essayer d'améliorer les résultats avec Bayes. Dans les articles de Vladimir Perervenko, le décrochage a été utilisé, il est possible d'expérimenter sur leur base.
J'ai fait des expériences, mais je n'ai pas trouvé de percée dans mes prédicteurs. Mais je n'ai pas créé de réseaux si profonds que je doive en retirer 1000 neurones. Je n'ai pas essayé plus de N-100-100-100-100-100-1 (401 neurones). C'est-à-dire que 100 peuvent avoir été supprimés, mais pas 1000. Pour en supprimer 1000, il faudrait un réseau de 4 à 10 000 neurones et le décompte prendrait probablement beaucoup de temps. Il est possible que des forêts de 1000 arbres obtiennent des résultats similaires et comptent beaucoup plus vite que NS.
elibrarius: La ligne de fond de la partie 2 de l'article :
C'est-à-dire qu'un NS profond avec un décrochage est analogue à un réseau bayésien. Et le décrochage est dans de nombreux paquets, vous pouvez d'abord les utiliser pour rechercher des poissons sur leurs prédicteurs/cibles. Et ensuite essayer d'améliorer les résultats avec Bayes. Dans les articles de Vladimir Perervenko dropout a été utilisé, vous pouvez expérimenter sur leur base.
J'ai expérimenté, mais je n'ai trouvé aucune avancée sur mes prédicteurs. Mais je n'ai pas créé de réseaux si profonds que je doive en retirer 1000 neurones. Je n'ai pas essayé plus de N-100-100-100-100-100-1 (401 neurones). C'est-à-dire que 100 peuvent avoir été supprimés, mais pas 1000. Pour en supprimer 1000, il faudrait un réseau de 4 à 10 000 neurones et le décompte prendrait probablement beaucoup de temps. Il est possible que des forêts de 1000 arbres obtiennent des résultats similaires, et comptent beaucoup plus vite que NS.
Oh je ne sais pas, avec n'importe quel nombre d'arbres/bois, l'akurasi arrête de grandir et ils restent là, en lest, sans rien améliorer. Les laisser tomber ou ne pas les laisser tomber est un signe évident.
Une comparaison grossière entre les bayésiens et les décrocheurs à mon avis, mais je ne suis pas encore très calé sur le sujet et je ne vais pas argumenter, peut-être ainsi
Une comparaison grossière entre Bayes et les décrocheurs à mon avis, mais je ne suis pas encore très calé sur le sujet et je ne discuterai pas, peut-être ainsi
C'est l'auteur de cet article qui a fait la comparaison, pas moi. Il a écrit son article à partir d'un autre, plus grand, sur lequel il a fait ses expériences. C'est-à-dire que cette comparaison provient apparemment des développeurs de la méthode.
Oh je ne sais pas, avec n'importe quel nombre d'arbres/bois l'akurasi arrête de grandir et ils restent là, en lest, sans rien améliorer. Qu'on les laisse tomber ou non, c'est un mouchoir de poche mort.
si vous allez construire une forêt avec 1000 arbres, vous devriez probablement fournir 1% des données à chaque forêt, c'est-à-dire r=0.01, et non 0.1 ... 0,6 comme recommandé pour les forêts de 100 arbres recommandés.
J'ai trouvé un code obscur dans la forêt d'Alglib. Code complet de la fonction de calcul de l'étropie croisée de dataanalysis.mqh :
//+------------------------------------------------------------------+ //| Average cross-entropy (in bits per element) on the test set | //| INPUT PARAMETERS: | //| DF - decision forest model | //| XY - test set | //| NPoints - test set size | //| RESULT: | //| CrossEntropy/(NPoints*LN(2)). | //| Zero if model solves regression task. | //+------------------------------------------------------------------+ static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy, const int npoints) { //--- create variables double result=0; int i=0; int j=0; int k=0; int tmpi=0; int i_=0; //--- creating arrays double x[]; double y[]; //--- allocation ArrayResizeAL(x,df.m_nvars); ArrayResizeAL(y,df.m_nclasses); //--- initialization result=0; for(i=0;i<=npoints-1;i++) { for(i_=0;i_<=df.m_nvars-1;i_++) x[i_]=xy[i][i_]; //--- function call DFProcess(df,x,y); //--- check if(df.m_nclasses>1) { //--- classification-specific code k=(int)MathRound(xy[i][df.m_nvars]); tmpi=0; for(j=1;j<=df.m_nclasses-1;j++) { //--- check if(y[j]>(double)(y[tmpi])) tmpi=j; } //--- check if(y[k]!=0.0) result=result-MathLog(y[k]); else result=result-MathLog(CMath::m_minrealnumber); } } //--- return result return(result/npoints); }
Le fragment de code marqué en rouge considère quelque chose(tmpi) qui n'est pas utilisé de quelque manière que ce soit. Pourquoi est-elle incluse alors ? Soit il manque quelque chose, soit le code n'est pas complètement nettoyé. En général, j'ai commencé à m'intéresser à cette fonction parce que je voulais rechercher 1 arbre. Et lorsque j'ai défini le nombre d'arbres dans la forêt = 1, j'ai vu que toutes les erreurs se situent entre 0 et 1, et que celle de 100 à 300 + se produit. Quelqu'un comprend-il l'entropie croisée - le code est-il même correct, ou quelque chose est-il défait ?
Je l'ai comparé avec catbust - il retourne bien, habituellement > 0.5 sur le test... bien, comme d'habitude
Je regarderai le calcul demain, peut-être que le code de débogage est toujours là.
en général, cette métrique n'est d'aucune utilité ici car elle n'est pas utilisée pour une pause précoce ou autre... et peu informative par conséquent. Une erreur de classification est prise et c'est tout.
pas tout à fait, cela devrait être plus clair ici
https://habr.com/ru/post/276355/
l'éventail des applications est large, la façon dont il sera utilisé exactement est une autre question.
Je le lirai dans la soirée.
Vous et moi n'avons rien à nous dire, parce que je peux dire par votre psycho-type que vous êtes soit un enfant ou juste... oubliez ça.
"Nous" comme dans vous ? Trouvez un emploi pour commencer, c'est une honte de s'asseoir sur les épaules de vos parents à cet âge.
pas tout à fait, cela devrait être plus clair ici
https://habr.com/ru/post/276355/
l'éventail des applications est large, la façon dont il sera utilisé exactement est une autre question.
Ce qu'il y a de mieux dans l'approche bayésienne, c'est qu'elle permet d'utiliser ce caractère aléatoire de manière contrôlée.
....
Dans la pratique, cela se traduit par le fait qu'un réseau dimensionnel donne de meilleurs résultats qu'un réseau d'abandon, mais pas de beaucoup.
Ce qui rend le décrochage plus cool, c'est qu'il est très simple, bien sûr.
C'est-à-dire qu'un NS profond avec dropout est l'équivalent d'un réseau bayésien. Et le dropout est dans de nombreux paquets, vous pouvez d'abord l'utiliser pour rechercher des poissons sur vos prédicteurs/cibles. Et ensuite essayer d'améliorer les résultats avec Bayes. Dans les articles de Vladimir Perervenko, le décrochage a été utilisé, il est possible d'expérimenter sur leur base.
J'ai fait des expériences, mais je n'ai pas trouvé de percée dans mes prédicteurs.Mais je n'ai pas créé de réseaux si profonds que je doive en retirer 1000 neurones. Je n'ai pas essayé plus de N-100-100-100-100-100-1 (401 neurones). C'est-à-dire que 100 peuvent avoir été supprimés, mais pas 1000. Pour en supprimer 1000, il faudrait un réseau de 4 à 10 000 neurones et le décompte prendrait probablement beaucoup de temps.
Il est possible que des forêts de 1000 arbres obtiennent des résultats similaires et comptent beaucoup plus vite que NS.
Je n'ai pas essayé plus de N-100-100-100-1 (401 neurones).
On ne peut pas entraîner des monstres comme ça correctement. Je pense que nous avons besoin d'un NS plus simple. Quelque part, jusqu'à 100 neurones.
La ligne de fond de la partie 2 de l'article :
C'est-à-dire qu'un NS profond avec un décrochage est analogue à un réseau bayésien. Et le décrochage est dans de nombreux paquets, vous pouvez d'abord les utiliser pour rechercher des poissons sur leurs prédicteurs/cibles. Et ensuite essayer d'améliorer les résultats avec Bayes. Dans les articles de Vladimir Perervenko dropout a été utilisé, vous pouvez expérimenter sur leur base.
J'ai expérimenté, mais je n'ai trouvé aucune avancée sur mes prédicteurs.Mais je n'ai pas créé de réseaux si profonds que je doive en retirer 1000 neurones. Je n'ai pas essayé plus de N-100-100-100-100-100-1 (401 neurones). C'est-à-dire que 100 peuvent avoir été supprimés, mais pas 1000. Pour en supprimer 1000, il faudrait un réseau de 4 à 10 000 neurones et le décompte prendrait probablement beaucoup de temps.
Il est possible que des forêts de 1000 arbres obtiennent des résultats similaires, et comptent beaucoup plus vite que NS.
Oh je ne sais pas, avec n'importe quel nombre d'arbres/bois, l'akurasi arrête de grandir et ils restent là, en lest, sans rien améliorer. Les laisser tomber ou ne pas les laisser tomber est un signe évident.
Une comparaison grossière entre les bayésiens et les décrocheurs à mon avis, mais je ne suis pas encore très calé sur le sujet et je ne vais pas argumenter, peut-être ainsi
Une comparaison grossière entre Bayes et les décrocheurs à mon avis, mais je ne suis pas encore très calé sur le sujet et je ne discuterai pas, peut-être ainsi
C'est l'auteur de cet article qui a fait la comparaison, pas moi. Il a écrit son article à partir d'un autre, plus grand, sur lequel il a fait ses expériences. C'est-à-dire que cette comparaison provient apparemment des développeurs de la méthode.
Oh je ne sais pas, avec n'importe quel nombre d'arbres/bois l'akurasi arrête de grandir et ils restent là, en lest, sans rien améliorer. Qu'on les laisse tomber ou non, c'est un mouchoir de poche mort.
J'ai trouvé un code obscur dans la forêt d'Alglib. Code complet de la fonction de calcul de l'étropie croisée de dataanalysis.mqh :
//+------------------------------------------------------------------+
//| Average cross-entropy (in bits per element) on the test set |
//| INPUT PARAMETERS: |
//| DF - decision forest model |
//| XY - test set |
//| NPoints - test set size |
//| RESULT: |
//| CrossEntropy/(NPoints*LN(2)). |
//| Zero if model solves regression task. |
//+------------------------------------------------------------------+
static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy,
const int npoints)
{
//--- create variables
double result=0;
int i=0;
int j=0;
int k=0;
int tmpi=0;
int i_=0;
//--- creating arrays
double x[];
double y[];
//--- allocation
ArrayResizeAL(x,df.m_nvars);
ArrayResizeAL(y,df.m_nclasses);
//--- initialization
result=0;
for(i=0;i<=npoints-1;i++)
{
for(i_=0;i_<=df.m_nvars-1;i_++)
x[i_]=xy[i][i_];
//--- function call
DFProcess(df,x,y);
//--- check
if(df.m_nclasses>1)
{
//--- classification-specific code
k=(int)MathRound(xy[i][df.m_nvars]);
tmpi=0;
for(j=1;j<=df.m_nclasses-1;j++)
{
//--- check
if(y[j]>(double)(y[tmpi]))
tmpi=j;
}
//--- check
if(y[k]!=0.0)
result=result-MathLog(y[k]);
else
result=result-MathLog(CMath::m_minrealnumber);
}
}
//--- return result
return(result/npoints);
}
Le fragment de code marqué en rouge considère quelque chose(tmpi) qui n'est pas utilisé de quelque manière que ce soit. Pourquoi est-elle incluse alors ?
Selon wikipedia , il devrait êtreSoit il manque quelque chose, soit le code n'est pas complètement nettoyé.
En général, j'ai commencé à m'intéresser à cette fonction parce que je voulais rechercher 1 arbre. Et lorsque j'ai défini le nombre d'arbres dans la forêt = 1, j'ai vu que toutes les erreurs se situent entre 0 et 1, et que celle de 100 à 300 + se produit.
Quelqu'un comprend-il l'entropie croisée - le code est-il même correct, ou quelque chose est-il défait ?
Je l'ai comparé avec catbust - il retourne bien, habituellement > 0.5 sur le test... bien, comme d'habitude
Je regarderai le calcul demain, peut-être que le code de débogage est toujours là.
en général, cette métrique n'est d'aucune utilité ici car elle n'est pas utilisée pour une pause précoce ou autre... et peu informative par conséquent. Une erreur de classification est prise et c'est tout.