What are the trade-offs between different activation functions in deep neural networks, and how do they impact gradient flow?