Prioritize high value data to label (Active learning)

Generally speaking, machine learning teams tend to have a lot of unlabeled data; they typically cannot label all of it. Hence, it is crucial to smartly decide what data to label in priority.

Besides, not all data impacts model performance equally. It is best practice to aim to label the right data - not just more data. Machine learning teams usually end up labeling more data than they need. Many times they could have achieved the same model performance, on a smaller labeling budget.

The key is Active learning. Active learning is a practice where, given a trained model, you identify which data would be most useful to label next in order to be most efficient in improving your model performance.

Labelbox is an intuitive launchpad for data-centric AI development. As you go through training iterations, Labelbox helps you identify (unlabeled) high-value Data Rows that will optimally boost model performance. You should prioritize labeling these Data Rows first, re-train the model on the new dataset, and repeat.

Uncertainty Sampling (Active Learning)

Uncertainty sampling is the practice of getting human feedback when a model is uncertain in its predictions. The intention behind Uncertainty Sampling is to understand which Data Rows your model is likely to be less confident predicting and to target those Data Rows in your next labeling project. If the model is uncertain on some Data Rows, then getting humans to label similar Data Rows will likely help the model improve its predictions.

How to do Uncertainty Sampling in Labelbox

  1. First, create a Model and Model Run to host unlabeled Data Rows. Currently, this can only be done via the SDK. Support in the UI is coming soon.
# Create a Model and Model Run
lb_model = client.create_model(name=model_name,ontology_id=project.ontology().uid) # use the ontology from a Project
lb_model_run = lb_model.create_model_run(model_version)
  1. Use your trained model to generate model predictions and confidence scores on the unlabeled Data Rows.

  2. Upload these unlabeled Data Rows to the Model Run.

# Upload unlabeled data rows to the Model Run. 
lb_model_run.upsert_data_rows(data_row_ids)

Then, upload model predictions and model metrics on these unlabeled Data Rows using the SDK.

  1. In the Labelbox App, navigate to the Model Run that contains these unlabeled Data Rows, and sort them by decreasing confidence. You can click on any thumbnail in order to open the Detailed view and visually inspect predictions (on unlabeled Data Rows) on which the model is least confident.
  1. Now, you can select the top e.g. 1000 unlabeled Data Rows on which the model is least confident, and open them in the Catalog.
  • Click 1000 selected
  • Click View in Catalog

The selected data rows should appear at the top of the Catalog.

  1. Send these Data Rows for labeling using Batches (beta).
  • Click on Add batch to project.
  • Select the destination labeling project.
  • Click on Submit batch.

Once this additional data has been labeled in Labelbox, you can create a new Model Run, include these newly labeled Data Rows in your data splits, and retrain your machine learning model to improve it.

Congratulations, you have done an iteration of Uncertainty Sampling (Active Learning)!


What’s Next
Did this page help you?