Neural networks and deep learning