Thanks a lot for your answers. I can try to implement backpropagation myself
with that information.
But there isnt a function or method of backpropagation of error for new
examples of training only to change the already created neural net?
I want to implemennt reinforcement learning...
Thanks in advance

Filipe Rocha

2009/5/29 <jude.r...@ubs.com>

>  You can figure out which weights go with which connections with the
> function summary(nnet.object) and nnet.object$wts. Sample code from Venables
> and Ripley is below:
>
>
>
> # Neural Network model in Modern Applied Statistics with S, Venables and
> Ripley, pages 246 and 247
>
> > library(nnet)
>
> > attach(rock)
>
> > dim(rock)
>
> [1] 48  4
>
> > area1 <- area/10000; peri1 <- peri/10000
>
> > rock1 <- data.frame(perm, area = area1, peri = peri1, shape)
>
> > dim(rock1)
>
> [1] 48  4
>
> > head(rock1)
>
>   perm   area     peri     shape
>
> 1  6.3 0.4990 0.279190 0.0903296
>
> 2  6.3 0.7002 0.389260 0.1486220
>
> 3  6.3 0.7558 0.393066 0.1833120
>
> 4  6.3 0.7352 0.386932 0.1170630
>
> 5 17.1 0.7943 0.394854 0.1224170
>
> 6 17.1 0.7979 0.401015 0.1670450
>
> > rock.nn <- nnet(log(perm) ~ area + peri + shape, rock1, size=3,
> decay=1e-3, linout=T, skip=T, maxit=1000, Hess=T)
>
> # weights:  19
>
> initial  value 1196.787489
>
> iter  10 value 32.400984
>
> iter  20 value 31.664545
>
> …
>
> iter 280 value 14.230077
>
> iter 290 value 14.229809
>
> final  value 14.229785
>
> converged
>
> > summary(rock.nn)
>
> a 3-3-1 network with 19 weights
>
> options were - skip-layer connections  linear output units  decay=0.001
>
>  b->h1 i1->h1 i2->h1 i3->h1
>
>  -0.51  -9.33  14.59   3.85
>
>  b->h2 i1->h2 i2->h2 i3->h2
>
>   0.93   3.35   6.09  -5.86
>
>  b->h3 i1->h3 i2->h3 i3->h3
>
>   0.80 -10.93  -4.58   9.53
>
>   b->o  h1->o  h2->o  h3->o  i1->o  i2->o  i3->o
>
>   1.89 -14.62   7.35   8.77  -3.00  -4.25   4.44
>
> > sum((log(perm) - predict(rock.nn))^2)
>
> [1] 13.20451
>
> > rock.nn$wts
>
>  [1]  -0.5064848  -9.3288410  14.5859255   3.8521844   0.9266730
> 3.3524267   6.0900909  -5.8628448   0.8026366 -10.9345352  -4.5783516
> 9.5311123
>
> [13]   1.8866734 -14.6181959   7.3466236   8.7655882  -2.9988287
> -4.2508948   4.4397158
>
> >
>
>
>
> In the output from summary(rock.nn), b is the bias or intercept, h1 is the
> 1st hidden neuron, i1 is the first input (peri) and o is the (linear)
> output. So b->h1 is the bias or intercept to the first hidden neuron, i1->h1
> is the 1st input (peri) to the first hidden neuron (there are 3 hidden
> neurons in this example), h1->o is the 1st hidden neuron to the first
> output, and i1->o is the first input to the output (since skip=T – this is a
> skip layer network). The weights are below (b->h1 ..) but are rounded. But
> rock.nn$wts gives you the un-rounded weights. If you compare the output from
> summary(rock.nn) and rock.nn$wts you will see that the first row of weights
> from summary() is listed first in rock.nn$wts, followed by the 2nd row of
> weights from summary() and so on.
>
>
>
> You can construct the neural network equations manually (this is not in the
> Venables Ripley book) and check the results against the predict() function
> to verify that the weights are listed in the order I described. The code to
> do this is:
>
>
>
> # manually calculate the neural network predictions based on the neural
> network equations
>
> rock1$h1 <- -0.5064848 -9.3288410 * rock1$area + 14.5859255 * rock1$peri +
> 3.8521844 * rock1$shape
>
> rock1$logistic_h1 <- exp(rock1$h1) / (1 + exp(rock1$h1))
>
> rock1$h2 <- 0.9266730 + 3.3524267 * rock1$area + 6.0900909 * rock1$peri
> -5.8628448 * rock1$shape
>
> rock1$logistic_h2 <- exp(rock1$h2) / (1 + exp(rock1$h2))
>
> rock1$h3 <- 0.8026366 - 10.9345352 * rock1$area - 4.5783516 * rock1$peri +
> 9.5311123 * rock1$shape
>
> rock1$logistic_h3 <- exp(rock1$h3) / (1 + exp(rock1$h3))
>
> rock1$pred1 <- (1.8866734 - 14.6181959 * rock1$logistic_h1 + 7.3466236 *
> rock1$logistic_h2 +
>
>                 8.7655882 * rock1$logistic_h3 - 2.9988287 * rock1$area -
> 4.2508948 * rock1$peri +
>
>                 4.4397158 * rock1$shape)
>
> rock1$nn.pred <- predict(rock.nn)
>
> head(rock1)
>
>
>
>   perm   area     peri     shape         h1 logistic_h1       h2
> logistic_h2        h3  logistic_h3    pred1  nn.pred
>
> 1  6.3 0.4990 0.279190 0.0903296 -0.7413656   0.3227056 3.770238
> 0.9774726 -5.070985 0.0062370903 2.122910 2.122910
>
> 2  6.3 0.7002 0.389260 0.1486220 -0.7883026   0.3125333 4.773323
> 0.9916186 -7.219361 0.0007317343 1.514820 1.514820
>
> 3  6.3 0.7558 0.393066 0.1833120 -1.1178398   0.2464122 4.779515
> 0.9916699 -7.514112 0.0005450367 2.451231 2.451231
>
> 4  6.3 0.7352 0.386932 0.1170630 -1.2703391   0.2191992 5.061506
> 0.9937039 -7.892204 0.0003735057 2.656199 2.656199
>
> 5 17.1 0.7943 0.394854 0.1224170 -1.6854993   0.1563686 5.276490
> 0.9949156 -8.523675 0.0001986684 3.394902 3.394902
>
> 6 17.1 0.7979 0.401015 0.1670450 -1.4573040   0.1888800 5.064433
> 0.9937222 -8.165892 0.0002841023 3.072776 3.072776
>
>
>
> The first 6 records show that the numbers from the manual equations and the
> predict() function are the same (the last 2 columns). As VR point out in
> their book, there are several solutions and a random starting point and if
> you run the same example your results may differ.
>
>
>
> Hope this helps.
>
>
>
> Jude Ryan
>
>
>
> Filipe Rocha wrote:
>
>
>
> I want to create a neural network, and then everytime it receives new data,
>
> instead of  creating a new nnet, i want to use a backpropagation algorithm
>
> to adjust the weights in the already created nn.
>
> I'm using nnet package, I know that nn$wts gives the weights,  but I cant
>
> find out which weights belong to which conections so I could implement the
>
> backpropagation algorithm myself.
>
> But if anyone knows some function to  do this, it would be even better.
>
> In anycase, thank you!
>
>
>
> Filipe Rocha
>
>
>
> ___________________________________________
> Jude Ryan
> Director, Client Analytical Services
> Strategy & Business Development
> UBS Financial Services Inc.
> 1200 Harbor Boulevard, 4th Floor
> Weehawken, NJ 07086-6791
> Tel. 201-352-1935
> Fax 201-272-2914
> Email: jude.r...@ubs.com
>
>
>
> Please do not transmit orders or instructions regarding a UBS
> account electronically, including but not limited to e-mail,
> fax, text or instant messaging. The information provided in
> this e-mail or any attachments is not an official transaction
> confirmation or account statement. For your protection, do not
> include account numbers, Social Security numbers, credit card
> numbers, passwords or other non-public information in your e-mail.
> Because the information contained in this message may be privileged,
> confidential, proprietary or otherwise protected from disclosure,
> please notify us immediately by replying to this message and
> deleting it from your computer if you have received this
> communication in error. Thank you.
>
> UBS Financial Services Inc.
> UBS International Inc.
> UBS Financial Services Incorporated of Puerto Rico
> UBS AG\ >\ >\ > UBS reserves the right to retain all m...{{dropped:10}}

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to