A neural network typically starts out with random coefficients (weights); hence, it produce essentially random predictions when presented with its first case. What is the key ingredients by which the net(neural network) evolves to produce a more accurate predication?