Repository: pykeen/pykeen
Issue: Early stopper not stopping although results don´t change
Root cause: Validation Gap

### Describe the bug

The early stopper doesn´t stop although the result values don´t change. This is the output of my early stopper in the results.json:

```
"stopper": {
    "best_epoch": 1000,
    "best_metric": -0.14316711716027508,
    "frequency": 50,
    "larger_is_better": true,
    "metric": "both.realistic.adjusted_arithmetic_mean_rank_index",
    "patience": 2,
    "relative_delta": 0.001,
    "remaining_patience": 2,
    "results": [
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508,
      -0.14316711716027508
    ],
    "stopped": false
```
As can be seen, the result value is the same for all evaluations, but the stopper doesn´t stop.

### How to reproduce

pipeline_result = pipeline(
                dataset="Kinships",
                dataset_kwargs={"create_inverse_triples": True},
                model=UM,
                loss=pykeen.losses.MarginRankingLoss,
                optimizer=torch.optim.adadelta.Adadelta,
                lr_scheduler=torch.optim.lr_scheduler.PolynomialLR,
                negative_sampler=pykeen.sampling.basic_negative_sampler.BasicNegativeSampler,
                random_seed=42,
                device="gpu",
                epochs=1000,
                stopper='early',
                stopper_kwargs={
                                     "patience": 2,
                                     "frequency": 50,
                                     "relative_delta":0.001,
                                     "metric": "both.realistic.adjusted_arithmetic_mean_rank_index",
                                       },
                evaluation_fallback=True,
            )

### Environment

| Key             | Value                    |
|-----------------|--------------------------|
| OS              | posix                    |
| Platform        | Linux                    |
| Release         | 5.10.0-21-amd64          |
| Time            | Tue May 16 11:10:46 2023 |
| Python          | 3.10.9                   |
| PyKEEN          | 1.10.1                   |
| PyKEEN Hash     | UNHASHED                 |
| PyKEEN Branch   |                          |
| PyTorch         | 1.13.1+cu117             |
| CUDA Available? | false                    |
| CUDA Version    | 11.7                     |
| cuDNN Version   | 8500                     |


### Additional information

_No response_

### Issue Template Checks

- [X] This is not a feature request (use a different issue template if it is)
- [X] This is not a question (use the [discussions](https://github.com/pykeen/pykeen/discussions/new) forum instead)
- [X] I've read the text explaining why including environment information is important and understand if I omit this information that my issue will be dismissed

The frequency of your check is every 50, it looks like there are far fewer than 50 results here, so early stopping was never evaluated.