Dúvida Treinamento Levenberg-Marquardt (trainlm) no MATLAB

238 views
Skip to first unread message

laerc...@gmail.com

unread,
Dec 17, 2013, 1:46:12 AM12/17/13
to redesn...@googlegroups.com, Laércio -
Já tem algum tempo que essa dúvida tem me tirado o sono!

Alguém sabe se é necessário definir a taxa de aprendizagem ou se tem como definir a taxa de aprendizagem quando se usa a função de treinamento trainlm no MATLAB?

Algumas funções de treinamento apresentam explicitamente o parâmetro de aprendizado, como:  traingd, traingda,  traingdm,  traingdx,  trainrp.

Gradient descent backpropagation (Traingd):
net.trainParam.lr

Gradient descent with adaptive learning rate backpropagation (Traingda):
net.trainParam.lr
net.trainParam.lr_inc
net.trainParam.lr_dec

Gradient descent with momentum backpropagation (Traingdm):
net.trainParam.lr

Gradient descent with momentum and adaptive learning rate backpropagation (Traingdx):
net.trainParam.lr
net.trainParam.lr_inc
net.trainParam.lr_dec

 Resilient backpropagation (trainrp):
net.trainParam.lr


Pelo que eu entendi da pesquisa que fiz, o algoritmo Levenberg-Marquardt fica entre o método Quase_Newton e o método do Gradiente Conjugado tendo o parâmetro μ para realizar o ajuste da taxa de convergência do algoritmo que, assim, teria uma convergência mais rápida (aproximando do método de Newton) quando o erro estivesse muito distante e teria uma convergência mais lenta e sensível (aproximando pelo método do gradiente) quando o erro estiver mais próximo.

Então, veio a dúvida se esse parâmetro
μ representaria a taxa de aprendizagem do algoritmo, implicando em uma taxa variável, ou seria realmente apenas um controle da convergência.
Encontrei na internet algumas pessoas comentando (sem muito fundamento ou explicação) que essa forma de treinamento variava a taxa de aprendizagem, então achei o artigo abaixo :

Improved Computation for Levenberg–Marquardt Training (http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=5451114&queryText%3DImproved+Computation+for+Levenberg%E2%80%93Marquardt)

" Comparing with the constant (or manually adjusted) learning rates in error backpropagation (EBP) algorithms, second-order algorithms can “naturally” estimate the learning rate in each direction of gradient using Hessian matrix. By combining EBP algorithm and Newton algorithm, LM algorithm is ranked as one of the most efficient training algorithms for small and median size patterns. " 

Já estava convencido que, de alguma forma, esse treinamento variava a taxa de aprendizagem e não teria muito porque definir um valor inicial, mas então dando uma olha nos sub objetos do código da rede neural do MATLAB me deparo com:

net.biases{1}

ans =

    Neural Network Bias

 initFcn: (none)
 learn: true
 learnFcn: 'learngdm'
 learnParam: .lr, .mc
 size: 12
 userdata: (your custom info)


net.biases{1}.learnParam.lr

ans =

    0.0100



net.inputWeights{1}

ans =

    Neural Network Weight

delays: 0
initFcn: (none)
initSettings: .range
learn: true
learnFcn: 'learngdm'
learnParam: .lr, .mc
size: [12 16]
weightFcn: 'dotprod'
weightParam: (none)
userdata: (your custom info)


net.inputWeights{1}.learnFcn

ans =

learngdm


Aparece essas funções de aprendizagem e os parametros que não sei como se associam com a função de treinamento ou se eu que não estou entendendo a lógica do MATLAB.
Alguém podia tentar me explicar como funciona o treinamento trainlm e as questões que envolve a definição do aprendizado da rede?


evandro...@gmail.com

unread,
Mar 6, 2018, 5:36:48 PM3/6/18
to Redes Neurais Artificiais Br
Olá Laerc, boa noite. Você trabalha com redes neurais em MAtlab??
Reply all
Reply to author
Forward
0 new messages