2010-09-22 5 views
4

À quelle vitesse un réseau neuronal devrait-il approcher la fonction z = y^2 + x^2? La mine semble avoir du mal quand je rends les entrées négatives aussi et tous les poids deviennent vraiment petits (* 10^-16! Si j'utilise 2x40x1) ou tous deviennent du même nombre (comme -0.16 et 0.16 si j'utilise 2x20x1). J'utilise 2000 exemples d'entrée par époque. Cependant, il semble que tout va bien si toutes les entrées sont positives. Qu'est-ce que cela pourrait signifier?Approximation de z = y^2 + x^2 avec le réseau neuronal

Quel nombre de paires d'entrées par époque, architecture et nombre d'époques dois-je utiliser pour résoudre cela, pensez-vous? J'utilise backprop, réseau de neurones sans biais avec 1 couche cachée (et mes entrées sont toutes entre -1 et +1 et les sorties désirées [0, 1]).

Merci,

+0

La première chose que je voudrais faire est d'ajouter un autre 1 ou 2 couches cachées, mais pas plus. Quelle fonction d'activation utilisez-vous? –

+0

Salut David, J'utilise Tanh. Hmmm je n'ai pas programmé pour plus d'une couche, mais je vais le faire maintenant et jeter un oeil. Je prévois d'utiliser ce réseau pour la prévision des marchés financiers, si peu soucieux que s'il ne peut pas apprendre une fonction 2D, comment va-t-il cartographier une fonction complexe comme celle d'un marché financier? Oui va programmer dans une autre couche. Quelle architecture conseilleriez-vous pour cela? Il a bien fonctionné pour l'apprentissage XOR en 280 époques. Je n'utilise pas un biais cependant (serait-ce un problème majeur?). Merci – Katya

+0

@Katya, avez-vous résolu cela à la fin? Si oui, quelle était la réponse? – Chogg

Répondre

0

Avec les entrées positives, la fonction est monotone. Dès que vous traversez l'origine ce n'est plus le cas.

Je pense que vous devrez peut-être autoriser un biais non nul afin de développer un réseau de neurones avec une sortie non monotone.

De même, assurez-vous que votre implémentation ne fait pas l'optimisation bornée, de nombreux algorithmes d'optimisation intègrent une hypothèse de non-négativité.

+0

Salut Ben, c'est le code que j'ai conçu, donc il n'y a pas d '«optimisations bornées ou d'hypothèses de non-négativité» (qui étaient prévues au moins! Lol). Je vais coder dans le biais, car jusqu'à présent je ne l'ai pas inclus car je ne sais pas comment mettre à jour le biais à travers la rétropropagation. Comment ferais-je cela? Donc, je voudrais inclure une entrée supplémentaire de 1 dans chaque neurone avec un poids aléatoire attaché à cette entrée (c'est à dire le biais) - mais je suis censé mettre à jour ce poids non? Tout comme les autres poids? Ce sera difficile de le coder comme je l'ai fait jusqu'ici. Je vais devoir réfléchir. – Katya

+0

@Katya: Je voudrais d'abord essayer d'avoir des neurones avec un biais nul, certains avec +1, d'autres avec -1. –

+0

Juste pour vérifier s'il vous plaît: ce code est en fait conçu pour tester la prédiction du marché financier (j'essayais juste de le tester sur la fonction 2D d'abord). Pensez-vous que j'aurai besoin du biais pour faire les prédictions voulues? (Monotonic signifie que lorsque x augmente y augmente, donc je suppose qu'une fonction complexe comme ça n'est pas monotone droite?). Dans le cas idéal, comment le biais devrait-il être ajusté tout au long de la rétropropagation s'il vous plaît? – Katya

Questions connexes