What are the state-of-the-art methods for operator splitting in machine learning optimization?