@SymbolicFrank
Good questions. I'll reply based on my experience. It means that if you look at a computer science book, you might find other points of view.
Most processes are multi-step (flowchart): they require multiple actions in sequence (probably all a neural network as well) to get a result. How do you calculate a score for the learning from that?
In my opinion, the 2 main drivers in supervised learning are:
* The sometimes called error or distance or delta from the result to the expected result. In modern times, this is called Loss.
* With the delta/error/distance/loss associated to the slope/derivative/gradient, you know where to apply more correction/learning/descent. For each step of the process, the derivative is calculated for each neuron.
CAI implements the Stochastic Gradient Descent algorithm. CAI calculates an error in the last NN layer and then backpropagates through all layers layer by layer. The backpropagation is done recursively.
But how do you pinpoint the exact step that was weakest and should be tweaked most? Or would you need a kind of unit test for each step?
This is done via derivatives/slope/gradient and delta/error/distance/loss. If you have a big slope with a big delta on any given neuron/weight, there will be big learning/correction.
Is the learning always a separate pass to create a file with biases and weights, or can the network keep on learning as it goes? It would need some feedback for that, which is probably generated by a different process and so might have a different format, and might have to be processed itself before it becomes useful. How would you do that? Use another neural network to process the feedback? But that should have learning feedback as well
In the supervised learning, you can keep training for as long as you want. Unfortunately, the learning ability for any computational device (biological or artificial) is always limited in space, energy and information (bits).
As an example, when you are happy with the quality of a "face detection" NN, you can freeze your NN, save your NN to file, compile the code to an Android device (resource limited) and run just the forward pass in your mobile device.
To be continued...