3 replies to this topic

###
#1
Members - Reputation: **158**

Posted 14 March 2000 - 01:21 AM

Okay, I know a reasonable amount about neural nets, so don''t be afraid to answer in techno-babble.
There was a long standing difficulty using perceptrons when they were first invented to solve the exor operation. And and or operators were easily solved using two layer nets with no hidden layers but exor need a three layer net consisting of two input neurons (A and B), two neurons in the hidden layer (C and D) and one output neuron (E), each layer having complete connectivity to the next layer.
A is weighted to C at 1.0 and to D at -1.0
B is weighted to D at 1.0 and to C at -1.0
So when only A or B fire but not both, they pass activation to fire C and D respectively which pass activation to E.
When they both fire they also inhibit D and C from firing respectivly so E does not fire, giving the exor function.
Given random starting weights (positive or negative floats) and either a Binary sigmoid or Binary step activation function I don''t see how it is possible to train the net using the Hebb or Delta rules with backpropagation.
If the input vector is (0,0) then neither input neurons fire and there is no backpropagation. If the input vector is (1,0) then neuron A will send activation to both C and D and if either of these neurons fire because of it then their weights will be reinforced. The same goes for B.
When the input vector is (1,1) then both neurons fire activating any exhitory connections, whose weight is then decreased by the backpropagation.
If the initial weights are random then it seems that vector (1,0) will increase weights from A (0,1) will increase weights from B and (1,1) will decrease weights from both A and B resulting in the weights see-sawing up and down during training.
The only way I can see this working is if the initial setup of the net ''knew'' that it required one exhitory connection and one inhibitory connection from each input neuron.
This does not seem right.
Either that or I''m missing the best way of training the net.
Do you only increase exhitory connections when the net fires correctly and inhibitory connections when it doesn''t fire correctly or vice versa perhaps?
Cheers for your time and thoughts,
Mike

###
#2
Members - Reputation: **122**

Posted 18 March 2000 - 11:14 AM

Hi,

sorry for not really answering your question.

But why not use mlff-nets with backpropagation instead?

They will certainly learn XOR and much more advanced types of problems. If you already plan to use perceptrons with backprop, I think it''s better to use mlffs.

But hey, correct me if I''m wrong but isn''t perceptrons with backpropagation the same as mlff-nets with backpropagation?

[mlffs=multilayerfeedforward nets]

Best wishes,

Newbie

sorry for not really answering your question.

But why not use mlff-nets with backpropagation instead?

They will certainly learn XOR and much more advanced types of problems. If you already plan to use perceptrons with backprop, I think it''s better to use mlffs.

But hey, correct me if I''m wrong but isn''t perceptrons with backpropagation the same as mlff-nets with backpropagation?

[mlffs=multilayerfeedforward nets]

Best wishes,

Newbie

###
#3
Members - Reputation: **158**

Posted 19 March 2000 - 01:52 AM

Yep my network is feedforward multilayer and backpropagating.

The xor network described will work with the correct weights.

However, the method described will not train the networks from random weights to complete the task.

My question is why.

Mike

The xor network described will work with the correct weights.

However, the method described will not train the networks from random weights to complete the task.

My question is why.

Mike

###
#4
Members - Reputation: **122**

Posted 20 March 2000 - 08:14 AM

Do you mean that you don''t see how it should be able to learn?

Or do you mean that your net (program) doesn''t learn?

If your program doesn''t learn, then it''s probably because you use binary sigmoid funcs

and not ordinary. Btw, what do you mean by binary sigmoid?

I have used both f(x)=sin(x) and f(x)=1/(1+exp(-beta*x)) which is the usual sigmoid, and

my nets have learned the xor. Try changing your functions.

Are you sure you use mlffs with backprop? I really think you should find out

whether you use the correct mlff-bp algorithm, as your explanation of your net is quite

strange.

Could you please give a short explanation of your algorithm and say what you mean by

binary sigmoid?

Note that I''m just in 6th form (according to the UK-education system) and don''t have

that much experience with lin.algebra, partial derivs... but I know quite well how

the nets work anyway.

Newbie