Document which heads are pretrained and which aren't
## 🚀 Feature

I was going through the documentation and I realised I never thought about the different heads in much detail (I always start from the base model and built on top of that). Now that I did, I wonder whether users (mistakenly?) assume that models such as `BertForQuestionAnswering` have a pretrained head. I am assuming that these heads are _not_ pretrained but that it is a convenience to have an architecture that can be finetuned on downstream tasks. If I am correct, it might be useful to highlight for these kind of models that the heads are not pretrained.

That being said, when I run 

```python
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')
model.eval()
torch.set_grad_enabled(False)

for name, parameters in model.named_parameters():
    if 'classifier' in name:
        print(name)
        print(parameters)
```

I get the notice that "Weights of BertForSequenceClassification not initialized from pretrained model: ['classifier.weight', 'classifier.bias']", but still:

```
classifier.weight
Parameter containing:
tensor([[-0.0098,  0.0137,  0.0275,  ..., -0.0221, -0.0190,  0.0156],
        [ 0.0144,  0.0016,  0.0084,  ...,  0.0055,  0.0221, -0.0145]],
       requires_grad=True)
````

I've been peaking into the rabbit hole, but I can't seem to find where this random initialisation occurs.

If you agree, I can put some time in putting that in the documentation but I might need help or at least a review. Perhaps this can even be automated? That would be awesome.
I'm certain the random initialisation occurs when we instantiate the class (See `BertPreTrainedModel.init_weights()`)<|||||>> I'm certain the random initialisation occurs when we instantiate the class (See `BertPreTrainedModel.init_weights()`)

You're right. It gets a bit complicated to track down though.

PretrainedModel implements `init_weights` which applies `self._init_weights` to all modules **but** there is no reference in that class to that method. You'll have to find it in the subclasses (e.g. BertPreTrainedModel). But for e.g. RoBERTa, it's of course not needed because RoBERTa extends BERT. It's a bit confusing to follow along - or at least it takes some time to get your head around.

It might be useful to implement the methods that are needed in subclasses in PreTrainedModel. Typically you'd see abstract methods for this, but something as simple as the following would also be nice.

```python
def _init_weights(self):
    raise NotImplementedError('Please implement me')
```

(If and only if all subclasses have to implement it.)

This, of course, is not my main question here.<|||||>This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
