Learning and generalization in neural networks