[docs] XLNetLMHeadModel example in documentation does not produce the right probabilities
Author: Futrell
Pull request: no

# 🐛 Bug

## Information

Model I am using (Bert, XLNet ...): XLNet

Language I am using the model on (English, Chinese ...): English

The problem arises when using:
* [ X ] the official example scripts: (give details below)
* [ ] my own modified scripts: (give details below)

The tasks I am working on is:
* [ ] an official GLUE/SQUaD task: (give the name)
* [ X ] my own task or dataset: (give details below)

## To reproduce

Pasting in the example given at https://huggingface.co/transformers/model_doc/xlnet.html#transformers.XLNetLMHeadModel.forward but changing the words, I get nonsensical probabilities:

```{python}
from transformers import XLNetTokenizer, XLNetLMHeadModel
import torch

tokenizer = XLNetTokenizer.from_pretrained('xlnet-large-cased')
model = XLNetLMHeadModel.from_pretrained('xlnet-large-cased')

# The same way can the XLNetLMHeadModel be used to be trained by standard auto-regressive language modeling.
input_ids = torch.tensor(tokenizer.encode("Hit the nail on the <mask>", add_special_tokens=False)).unsqueeze(0)  # We will predict the masked token
labels = torch.tensor(tokenizer.encode("head", add_special_tokens=False)).unsqueeze(0)
assert labels.shape[0] == 1, 'only one word will be predicted'
perm_mask = torch.zeros((1, input_ids.shape[1], input_ids.shape[1]), dtype=torch.float)
perm_mask[:, :, -1] = 1.0  # Previous tokens don't see last token as is done in standard auto-regressive lm training
target_mapping = torch.zeros((1, 1, input_ids.shape[1]), dtype=torch.float)  # Shape [1, 1, seq_length] => let's predict one token
target_mapping[0, 0, -1] = 1.0  # Our first (and only) prediction will be the last token of the sequence (the masked token)

outputs = model(input_ids, perm_mask=perm_mask, target_mapping=target_mapping, labels=labels)
loss, next_token_logits = outputs[:2]  # Output has shape [target_mapping.size(0), target_mapping.size(1), config.vocab_size]
```

I get loss equal to `5.9626` which means the probability P(head | Hit the nail on the __) = 0.003, much too low. Also, looking at `next_token_logits`, the maximum probability word appears to be nonsensical:
```
In [137]: tokenizer.decode([next_token_logits.argmax()])
Out[137]: 'the'
```
So using this code, the most likely word after "Hit the nail on the" would appear to be "the". I don't think these are the real model probabilities, because if so then text generation would be extremely off. More likely the code is not accessing the right probabilities.



<!-- If you have code snippets, error messages, stack traces please provide them here as well.
     Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
     Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.-->

## Expected behavior

True model probabilities for words in context, and in particular the test case:
P(nail | Hit the nail on the ___) = a high number
P(the | Hit the nail on the ___) = a lower number

## Environment info
<!-- You can run the command `transformers-cli env` and copy-and-paste its output below.
     Don't forget to fill out the missing fields in that output! -->
     
- `transformers` version: 2.5.1
- Platform: Linux-4.15.0-88-generic-x86_64-with-debian-buster-sid
- Python version: 3.6.7
- PyTorch version (GPU?): 1.4.0 (True)
- Tensorflow version (GPU?): not installed (NA)
- Using GPU in script?: No
- Using distributed or parallel set-up in script?: No


Comments:
`XLNet` usually requires some padding to work well, see https://huggingface.co/transformers/usage.html#text-generation. 

You could try to use padding as shown here: https://huggingface.co/transformers/usage.html#text-generation and see whether the problem persists?

This resolves the problem.