Direct way to apply different learning rate for different group of parameters in Trainer.
# 🚀 Feature request

<!-- A clear and concise description of the feature proposal.
     Please provide a link to the paper and code in case they exist. -->

For now, if I want to specify learning rate to different parameter groups, I need to define an AdamW optimizer in my main function like the following:
```
optimizer = AdamW([{'params': model.classifier.parameters(), 'lr': 0.03 }], 
                 model.bert.parameters(), lr=5e-5
)
```
and new a lr_schedule like the following:
```
lr_scheduler = get_linear_schedule_with_warmup(
                self.optimizer, num_warmup_steps=self.args.warmup_steps, num_training_steps=num_training_steps
            )
```

I believe that adding the feature of specifying different learning rates to `Trainer` for networks is quite convenient for fine-tuning processing.

Like the following:

```
trainer = Trainer(
    ...
    grouped_parameters={
                    "params": ..,
                },
                {
                    "params": ..,
                },
            ]
```


## Your contribution

<!-- Is there any way that you could help, e.g. by submitting a PR?
     Make sure to read the CONTRIBUTING.MD readme:
     https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md -->

I am not a professional Github user, but I think a can make a PR if necessary.

What if instead you derive from `Trainer` and override `create_optimizer_and_scheduler()` and have that function set your different learning rates?