Diskussion zum Artikel "Tiefe neuronale Netzwerke (Teil IV). Erstellen, trainieren und testen eines Modells des neuronalen Netzes" - Seite 3

 
elibrarius:

Hallo,
eine weitere Frage.
Warum ist das Training in 2 Stufen aufgeteilt:
1 Pretrain und dann nur die oberste DNN-Schicht
und
2 Feinlernen des gesamten Netzes?

Würden wir nicht das gleiche Ergebnis ohne die 2. Stufe erhalten, wenn wir die 1. Stufe auf
pretrain + fine learning des gesamten Netzwerks zur gleichen Zeit
erweitern (d.h. rbm.lastLayer = 0, bp.learnRate = 1, darch.trainLayers = T setzen)

Aktualisieren. Ich habe ein Experiment eingerichtet:(rot zeigt Änderungen im Code)

evalq({
  require(darch)
  require(dplyr)
  require(magrittr)
  Ln <- c(0, 16, 8, 0)
  nEp_0 <- 25
  #------------------
  par_0 <- list(
    layers = Ln,
    seed = 54321,
    logLevel = 5,
    # params RBM========================
    rbm.consecutive = F, # each RBM is trained one epoch at a time
    rbm.numEpochs = nEp_0,
    rbm.batchSize = 50,
    rbm.allData = TRUE,
    rbm.lastLayer = 0,
    rbm.learnRate = 0.3,
    rbm.unitFunction = "tanhUnitRbm",
    # params NN ========================
    darch.batchSize = 50,
    darch.numEpochs = nEp_0,
    darch.trainLayers = T,
    darch.unitFunction = c("tanhUnit","maxoutUnit", "softmaxUnit"),
    bp.learnRate = 1,
    bp.learnRateScale = 1,
    darch.weightDecay = 0.0002,
    darch.dither = F,
    darch.dropout = c(0.1,0.2,0.1),
    darch.fineTuneFunction = backpropagation, #rpropagation
    normalizeWeights = T,
    normalizeWeightsBound = 1,
    darch.weightUpdateFunction = c("weightDecayWeightUpdate",
                                   "maxoutWeightUpdate",
                                   "weightDecayWeightUpdate"),
    darch.dropout.oneMaskPerEpoch = T,
    darch.maxout.poolSize = 2,
    darch.maxout.unitFunction = "linearUnit")
  #---------------------------
 
  DNN_default <- darch(darch = NULL,
                       paramsList = par_0,
                       x = DTcut$pretrain$woe %>% as.data.frame(),
                       y = DTcut$pretrain$raw$Class %>% as.data.frame(),
                        xValid = DTcut$val$woe %>% as.data.frame(),
                        yValid = DTcut$val$raw$Class %>% as.data.frame()
  )
}, env)

erhalten:

Sie haben nach dem zweiten Schritt.

D.h. der Fehler auf dem Validierungsabschnitt ist derselbe, nämlich 30%

Vorher habe ich versucht mit

xValid = DTcut$train$woe %>% as.data.frame(),

yValid = DTcut$train$raw$Class %>% as.data.frame()

wie im Code von Schritt 1, und bekam:

Ich dachte, dass man mit einem Schritt keine 30% Fehler bekommen kann, aber nach der Validierung mit dem Validierungsset aus Schritt 2 wurde alles so gut wie bei Ihnen.
Es ist möglich, dass nur das DTcut$val Set besser ist als das DTcut$train Set, deshalb zeigte es die gleichen guten Ergebnisse in meinem einen Schritt wie in Ihren 2 Schritten.

Lesen. Ich werde ein wenig später antworten. Entschuldigung.
 

Eine weitere Frage ist aufgetaucht )
In dem Artikel von 2014 haben Sie verschiedene Ports für die Verbindung zu R über svSocket verwendet, um den Expert Advisor auf verschiedenen Fenstern auszuführen.

Ist es notwendig, dies auch jetzt zu tun?

In den aktuellen Artikeln wird dies nicht verwendet. Ich habe den Expert Advisor auf verschiedenen Fenstern laufen lassen (auf demselben Symbol, aber mit verschiedenen EA-Parametern), er ruft verschiedene RTerm-Threads auf, nach den Ergebnissen zu urteilen - es scheint, dass er jeden für sich selbst anspricht. Aber es gibt einen Zweifel - was, wenn es notwendig ist, um durch Ports zu trennen?

 
elibrarius:

Eine weitere Frage ist aufgetaucht )
In dem Artikel von 2014 haben Sie verschiedene Ports für die Verbindung zu R über svSocket verwendet, um den Expert Advisor auf verschiedenen Fenstern auszuführen.

Ist es notwendig, dies auch jetzt zu tun?

In den aktuellen Artikeln wird dies nicht verwendet. Ich habe den Expert Advisor auf verschiedenen Fenstern laufen lassen (auf demselben Symbol, aber mit verschiedenen EA-Parametern), er ruft verschiedene RTerm-Threads auf, nach den Ergebnissen zu urteilen - es scheint, dass er jeden für sich selbst anspricht. Aber es gibt einen Zweifel - was ist, wenn es notwendig ist, nach Ports zu trennen?

Schönen guten Tag.

Ich bin unterwegs, also werde ich mich kurz fassen.

In den ersten Artikeln habe ich die Client-Server-Variante verwendet. Das ist eine interessante Option, aber jetzt gibt es neue Lösungen. Es besteht also keine Notwendigkeit, irgendetwas zu trennen. Jeder Rterm-Prozess arbeitet in seiner eigenen Sandbox.

Viel Erfolg!

 
Vladimir Perervenko:

Guten Tag.

Ich bin gerade unterwegs, also werde ich mich kurz fassen.

In den ersten Artikeln habe ich die Client-Server-Variante verwendet. Das ist eine interessante Option, aber jetzt gibt es neue Lösungen. Es besteht also keine Notwendigkeit, irgendetwas zu trennen. Jeder Rterm-Prozess arbeitet in seiner eigenen Sandbox.

Viel Glück


Lieber guten Tag, interessanter Artikel ist Ihre neue 4, ich habe eine Frage, können Sie einen Berater nach diesem Artikel, der beschrieben wird, natürlich die Zahlung wird, technische Aufgabe alle geben, ich bin für neuronka Ausbildung unter den Zielen suchen, wenn ja, schreiben Sie an LS dort werden wir reden. Wenn Sie nicht in dieser Art von Arbeit beschäftigt sind, dann vielleicht können Sie mir sagen, wer für die Umsetzung eines Expert Advisor unter MT5 wenden müssen

 

Danke Vladimir! Die Serie ist großartig, die vorgestellten Tools sind wirklich hilfreich. Ich habe an einigen Indizes experimentiert, das Ergebnis ist mehr oder weniger, insgesamt etwas besser. Ich habe versucht, die "bin"-Eingabe für darch, es ist ähnlich wie "woe", während die "dum" ist schlecht. vielleicht zu viele Eingabe ist nicht eine gute Sache.

"Tensorflow" Paket klingt vielversprechend. kann nicht für den Artikel warten!

 
isaacctk :

Спасибо, Владимир! серия отличная, инструменты, представленные, действительно полезны. Я экспериментировал по некоторым показателям, результат более или менее, в целом немного лучше. Я попробовал вход "bin" для darch, он похож на "горький", в то время как "dum" плохой. возможно, слишком много ввода не очень хорошо.

Пакет "Tensorflow" звучит многообещающе. не могу дождаться статьи!

Aha. Die letzten drei Teile des Artikels sind fast fertig. Vielleicht habe ich vor dem neuen Jahr Zeit, sie zur Überprüfung weiterzugeben.

Viel Glück!

 

非常感谢你的系列文章,我一直在跟踪学习,可是因为我知识结构的局限,理解这些文章不是件容易的事情。即使这样,还是希望能不断看到您的新文章,期待您发表新文章!谢谢!

 
Vielen Dank, dass Sie mein OneR-Paket verwenden. Es ist wieder faszinierend zu sehen, dass selbst ein ausgeklügeltes DNN nicht viel besser ist als das OneR-Modell!
OneR - Establishing a New Baseline for Machine Learning Classification Models
  • An R package by Holger K. von Jouanne-Diedrich
  • cran.r-project.org
OneR is the main function of the package. It builds a model according to the One Rule machine learning algorithm for categorical data. All numerical data is automatically converted into five categorical bins of equal length. When verbose is TRUE it gives the predictive accuracy of the attributes in decreasing order. bin bin discretizes all...
 
vonjd :
Благодарим вас за использование моего пакета OneR. Еще раз увлекательно видеть, что даже сложный DNN не намного лучше, чем модель OneR!

Dies gilt nur für DNN mit Standardparametern. Mit optimierten Hyperparametern zeigt DNN viel bessere Ergebnisse. Siehe Teil V.

Viel Erfolg

 
Vladimir Perervenko:

Dies gilt nur für DNN mit Standardparametern. Mit optimierten Hyperparametern zeigt DNN wesentlich bessere Ergebnisse. Siehe Teil V.

Viel Glück

Wann werden wir Teil V sehen ? Erwarte es sehr.