Issue in Cost Function
## 🐛 Bug

<!-- Important information -->

Model I am using (Bert, XLNet....): GPT2

Language I am using the model on (English, Chinese....): English

The problem arise when using:
* [X] the official example scripts: (give details)
* [ ] my own modified scripts: (give details)

The tasks I am working on is:
* [ ] an official GLUE/SQUaD task: (give the name)
* [X] my own task or dataset: (give details)

## To Reproduce

And in cost function, in logits we are ignoring the last element, why is that? though we're not using any padding
```
shift_logits = lm_logits[..., :-1, :].contiguous() 
shift_labels = labels[..., 1:].contiguous()
```
 
and for labels we're dropping the first token why is that  ?

<!-- If you have a code sample, error messages, stack traces, please provide it here as well. -->

## Expected behavior
Loss function shouldn't drop the last and first element in logits and labels unless it is padded, correct me if I'm wrong.


Hi @anandhperumal. Remember that you train GPT-2 by doing next-token prediction, therefore you need to compare the i-th input label--the truth--with what the model predicted: the (i-1)th output. Hence the indices shift.<|||||>@rlouf oh yeah. Thanks for the input.
if you don't mind can you answer this question as well [transformers](https://github.com/huggingface/transfer-learning-conv-ai/issues/43) it's not directly related to transformers.
Thanks again.<|||||>You're welcome. I haven't worked on the other codebase, but I'll try to help if I can.