Discussão do artigo "Redes Neurais Profundas (Parte IV). Criação, treinamento e teste de um modelo de rede neural" - página 3

 
elibrarius:

Olá,
outra pergunta.
Por que o treinamento é dividido em dois estágios:
1 pré-treinamento e, em seguida, treinamento apenas da camada superior da DNN
e
2 aprendizado fino de toda a rede?

Não obteríamos o mesmo resultado sem o segundo estágio se estendêssemos o primeiro estágio para
pré-treinamento + aprendizado fino de toda a rede ao mesmo tempo
(ou seja, definir rbm.lastLayer = 0, bp.learnRate = 1, darch.trainLayers = T)?

Atualização. Configurei um experimento:(o vermelho mostra as alterações no código)

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)

Obtido:

Você tem após a segunda etapa.

Ou seja, o erro na seção de validação é o mesmo, ou seja, 30%

Antes disso, tentei com

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

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

como no código da etapa 1, e obtive:

Pensei que não seria possível obter um erro de 30% com uma etapa, mas após a validação com o conjunto de validação da etapa 2, tudo ficou tão bom quanto o seu.
É possível que apenas o conjunto DTcut$val seja melhor que o conjunto DTcut$train, por isso apresentou os mesmos bons resultados na minha etapa e nas suas duas etapas.

Leia. Responderei um pouco mais tarde. Desculpe-me.
 

Outra pergunta apareceu )
No artigo de 2014, você usou diferentes portas de conexão com o R via svSocket para executar o Expert Advisor em diferentes janelas.

É necessário fazer isso agora também?

Isso não é usado nos artigos mais recentes. Executei o Expert Advisor em diferentes janelas (no mesmo símbolo, mas com diferentes parâmetros do EA), ele chama diferentes threads RTerm e, a julgar pelos resultados, parece que cada um se dirige ao seu próprio. Mas há uma dúvida - e se for necessário separar por portas?

 
elibrarius:

Outra pergunta apareceu )
No artigo de 2014, você usou diferentes portas de conexão com o R via svSocket para executar o Expert Advisor em diferentes janelas.

É necessário fazer isso agora também?

Isso não é usado nos artigos mais recentes. Executei o Expert Advisor em diferentes janelas (no mesmo símbolo, mas com diferentes parâmetros do EA), ele chama diferentes threads RTerm e, a julgar pelos resultados, parece que cada um se dirige ao seu próprio. Mas fica uma dúvida - e se for necessário separar por portas?

Boa tarde.

Estou viajando, então vou ser breve.

Nos primeiros artigos, usei a variante cliente-servidor. É uma opção interessante, mas agora há novas soluções. Portanto, não há necessidade de separar nada. Cada processo do Rterm funciona em sua própria caixa de areia.

Boa sorte

 
Vladimir Perervenko:

Boa tarde.

Estou viajando, portanto, serei breve.

Nos primeiros artigos, usei a variante cliente-servidor. É uma opção interessante, mas agora há novas soluções. Portanto, não há necessidade de separar nada. Cada processo do Rterm funciona em sua própria área restrita.

Boa sorte


Caro bom dia, artigo interessante é o seu novo 4, eu tenho uma pergunta, você pode implementar um consultor de acordo com este artigo, que é descrito, é claro que o pagamento será, tarefa técnica tudo vai dar, eu estou procurando treinamento neuronka sob os objetivos, se sim, escreva para LS lá vamos conversar. Se você não está envolvido neste tipo de trabalho, então talvez você possa me dizer a quem recorrer para a implementação de um Expert Advisor sob MT5 precisa

 

Obrigado, Vladimir! A série é excelente, as ferramentas apresentadas são realmente úteis. Tenho feito experimentos com alguns índices, e o resultado é mais ou menos, em geral, um pouco melhor. Tentei a entrada "bin" para o darch, é semelhante a "woe", enquanto o "dum" é ruim. talvez muitas entradas não sejam boas.

O pacote "Tensorflow" parece promissor. Mal posso esperar pelo artigo!

 
isaacctk :

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

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

Oh. As três últimas partes do artigo estão quase prontas. Talvez antes do Ano Novo eu tenha tempo de passar para verificação.

Boa sorte

 

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

 
Obrigado por usar meu pacote OneR. É novamente fascinante ver que mesmo um DNN sofisticado não é muito melhor do que o modelo OneR!
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!

Isso só é verdadeiro para a DNN com parâmetros padrão. Com hiperparâmetros otimizados, a DNN apresenta resultados muito melhores. Consulte a Parte V.

Boa sorte

 
Vladimir Perervenko:

Isso só é verdadeiro para a DNN com parâmetros padrão. Com hiperparâmetros otimizados, a DNN apresenta resultados muito melhores. Consulte a Parte V.

Boa sorte

Quando veremos a Parte V? É muito esperado.