Page 1 of 1

Operator Training (Human Assisted)

PostPosted: Mon Feb 22, 2010 6:04 pm
by karell
First off, Andrew I must thank you for making such an excellent library. The possibilities are endless which is clearly demonstrated by the count of questions in each topic. Folks are using these libraries for so many things most of which I don't begin to understand nor will pretend to.

I have found the framework from looking at the codeplex articles and then googling the assembly name hoping that I would be able to find more information around your work from codeplex and was delighted to find this site with the complete and up to date framework.

That being said,

I find that the samples and examples are a bit dispersed and therefore it may be time better spent to ask my question here. I am looking to build and train (automatically) a neural network. This has been completed and I am quite happy with some of the preliminary results.

I now would like to move onto the next step in my evolution as a programmer and seek to be able to train the neural net from user/external feedback. At the moment, I have a neural net which I saved to a file and would like to know your thoughts on training it further using a winform application with a user clicking "yes" and "no" depending on the outcome.

I have looked at the ISupervisedLearning and IUnsupervisedLearning interfaces but cannot seem to find a class in the .Learning namespace that would point me in the right direction.

What link/material could you quickly suggest to send me in the right direction?

Thank you very much for anyone's time spent answering my question,


Re: Operator Training (Human Assisted)

PostPosted: Wed Feb 24, 2010 10:58 am
by andrew.kirillov

I am not really sure you need to look at unsupervised learning at this point. As you've already mentioned, the network will be trained based on user's feedback, which represents network's desired output. The training patterns are represented by input, which is given also to user, and user's output, which will be desired output of network for the given input. So it is still supervised learning.

The problem here is that you are now going to quite different type of supervised learning. What you did before (training network with Back Propagation algorithm) was an OFF-line learning - the type of learning which is done when you have all training data available for as long as you need it and you can iterate through learning procedure as long as you like. But now you are switching to ON-line learning, when you don't have all the training patterns at hands, but you receive them one by one as you communicate with user. Unfortunately Back Propagation as it is can not be used for on-line learning. If you continuously provide new training patterns to the network without providing older patterns (which were used in initial training), then the network may "forget” initial knowledge.

What you may try is updating network in the end of session with user. In this case you will need to keep all the original training patters and update the database with new patterns during communication with user, so number of training patterns will grow. Then, when network has some spare time, you may start learning procedure of the network. Not from fresh network, but take existing network for additional learning. But in this case training database may grow quite big and some point of time it may take longer and longer for updating network with new “knowledge”.

But, if you would like to do continue investigation, I would suggest googling for ON-line learning of neural networks.

Re: Operator Training (Human Assisted)

PostPosted: Mon Mar 08, 2010 1:51 pm
by karell
Thank Andrew,

This actually makes a lot of sense and explains a significant number of things. Therefore as I translate the information you have just given me I come to the conclusion that if I were to retrain a neural network with a new input it will treat the current weights as "fresh and random" as if it were a new 'net and will train it according to immediate input and not previous learning - therefore the previous patterns have significant less weight (100000 patterns) as opposed to my immediate pattern (1) and will be treated as 1vs1 and not 1000000vs1.

This is also very interesting as it means that we can then have an opportunity to create this database of data where as the training base is refined some data can be moved out and we can then retrain and hopefully have a much better output.

I understand - thank you very much