# spans.correct --update

**URL:** <https://support.prodi.gy/t/spans-correct-update/5910>\
**Category:** Uncategorized\
**Tags:** usage, spancat\
**Created:** [August 31, 2022, 3:18pm UTC](https://support.prodi.gy/t/spans-correct-update/5910 "2022-08-31T15:18:34Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![ryanwesslen](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/ryanwesslen/32/2969_2.png) [@ryanwesslen](https://support.prodi.gy/u/ryanwesslen)\
**Post date:** [August 31, 2022, 4:53pm UTC](https://support.prodi.gy/t/spans-correct-update/5910/2 "2022-08-31T16:53:48Z")

</div>

hi @dsr2021!

Great question! I think the confusing aspect is that we can use "update" for different types of learning: incremental and batch learning.

The `--update` in model-in-the-loop recipes (e.g., `ner.correct`, `ner.teach`) is using spaCy's `nlp.update` which is _[incremental learning](https://en.wikipedia.org/wiki/Incremental_learning)_ (which is like online learning). This is not the same thing as fully (batch) training your model. While `update` is helpful to slightly modify your predictions while you are correcting your model, it does not to replace the need to fully retrain your model afterwards.

This post helps explain that even if you use `--update`, you should still retrain your model after you've completed your annotation session:

> [@how to use ner.correct --update](https://support.prodi.gy/t/how-to-use-ner-correct-update/4836/2):
>
> Hi @pkras! Your approach sounds reasonable. If it's a new label scheme, definitely start off with some manual annotation and train your model on the new data as you intend to do. +1 Now, ner.correct becomes handy if you already have a model the predicts something, and you just need to correct its predictions. You can use the --update parameter so that it updates the model in the loop with the collected annotations, so that the predictions adjust as you annotate, easing you in the process. …

We also cover it briefly in the [NER Prodigy docs](https://prodi.gy/docs/named-entity-recognition#active-learning):

> When you annotate with a model in the loop, the model is also updated in the background. So why do you still need to train your model on the annotations afterwards, and can’t just export the model that was updated in the loop? The main reason is that the model in the loop is only updated once each new annotation. This is never going to be **as effective as batch training** a model on the whole dataset, making multiple passes over the data, shuffling on each epoch and using other deep learning tricks like dropout rates, compounding batch sizes and so on. If you batch train your model with the collected annotations _afterwards_ , you should receive the same model you had in the loop, just **better**.

I could see the `--update` could help when you have a model-in-the-loop (like active learning) and you're passing in very different unlabeled examples than the model was trained on. Incremental learning via `update` may give you slightly more accurate model predictions after it has seen several examples that can maybe improve active learning (aka, the order unlabeled examples appear to be labeled) than if you weren't updating the model via incremental learning.

Let me know if you have any further questions!

---

_[View the full topic](https://support.prodi.gy/t/spans-correct-update/5910)._
