input: Write a python function to optimize updates using Theano.
  assert optimize_updates(params=[], gradients=[], config=None) == ([], [])
  assert optimize_updates(params=[1, 2], gradients=[0.1, 0.2], config={"method": "SGD"}) != ([], [])
  assert isinstance(optimize_function(params=[], config=None), theano.compile.function_module.Function)
output: import theano
  import theano.tensor as T
  
  def optimize_updates(params=[], gradients=[], config=None):
      if not params or not gradients or not config:
          return ([], [])
  
      updates = []
      if config["method"] == "SGD":
          learning_rate = config.get("learning_rate", 0.01)
          for param, grad in zip(params, gradients):
              updates.append((param, param - learning_rate * grad))
      
      return updates
  
  def optimize_function(params=[], config=None):
      if not params or not config:
          return None
  
      gradients = [T.grad(cost=T.sum(param**2), wrt=param) for param in params]
      updates = optimize_updates(params, gradients, config)
      return theano.function(inputs=[], updates=updates)