El aprendizaje activo tiene como objetivo seleccionar las muestras sin etiquetar que son más informativas y solicitar etiquetas solo para esas muestras. Al consultar interactivamente a un usuario (o alguna otra fuente de información) para etiquetar nuevos puntos de datos, podemos entrenar modelos usando menos etiquetas. Este tutorial/tutorial lo guía a través del flujo de trabajo de aprendizaje activo y le muestra cómo implementar tres estrategias de consulta comúnmente utilizadas: muestreo de incertidumbre, muestreo basado en la diversidad y consulta por comité. Proporcionamos explicaciones intuitivas de estos métodos junto con implementaciones de Python. Finalmente, discutiremos los pros y los contras de cada método y cómo se pueden usar juntos para crear poderosos sistemas humanos en el circuito cuando la anotación es costosa o escasamente disponible.
de contenidos
¿Qué es el aprendizaje activo? Técnicas de aprendizaje activo Pros y contras del aprendizaje activo Conclusión
1. ¿Qué es el aprendizaje activo?
El aprendizaje activo es un enfoque del aprendizaje automático en el que un algoritmo de aprendizaje puede consultar interactivamente a un usuario (o alguna otra fuente de información) para obtener los resultados deseados en nuevos puntos de datos. En el aprendizaje activo, en lugar de alimentar un algoritmo de aprendizaje con un conjunto masivo de ejemplos etiquetados, se permite que el modelo observe primero los puntos de datos sin etiquetar. Seleccionará los puntos de datos de los que desea aprender y los enviará solo al humano para que los etiquete. Repites este proceso en ciclos. Al utilizar el aprendizaje activo, a menudo se puede lograr un rendimiento comparable al del aprendizaje supervisado normal con muchos menos ejemplos de entrenamiento anotados. Consulte la figura 1 para conocer el ciclo de aprendizaje activo.
Especialmente cuando los humanos están al tanto, esta técnica brilla. En lugar de que el anotador etiquete miles de muestras simples/redundantes, el modelo muestra de qué ejemplos está menos seguro o qué ejemplos parecen extraños/atípicos, y luego hace que el anotador los etiquete.
Para comprender la importancia del aprendizaje activo, piense en una tarea de clasificación de imágenes con 500.000 imágenes. A 20 segundos por imagen, se necesitarán más de 2700 horas para etiquetar este conjunto de datos. Con el aprendizaje activo, solo solicita atención humana para algunas de estas imágenes que realmente necesitan ayuda para mejorar sustancialmente su modelo. Esto reduce drásticamente los costes y el esfuerzo necesario para etiquetar.
1.1. Aprender de muestras inciertas o de casos extremos
Uno de los principales beneficios del aprendizaje activo es que su modelo puede centrarse en aprender de los ejemplos más difíciles. Normalmente, estos ejemplos se encuentran alrededor del límite de decisión donde su modelo es más incierto y tiene el mayor potencial para mejorarlo.
Efectivamente, esto permite que su conjunto de datos se enriquezca con muestras específicas. El tamaño del conjunto de datos no aumentará con las transformaciones sintéticas, pero obtendrá información valiosa con la adición de nuevas muestras.
Imagínese entrenar un modelo para vehículos autónomos. Hay algunos eventos raros que pueden no estar presentes con suficiente frecuencia como para capturarlos mientras se recopilan datos sin procesar. Un ciclista que sale de detrás de un coche aparcado es un gran ejemplo. Con el aprendizaje activo, estos casos raros se pueden presentar desde el principio y entregarse a anotadores humanos para su revisión. Lo mismo podría decirse de un modelo de detección de fraude en el que es posible que desee que su modelo dirija a revisores humanos a actividades sospechosas en lugar de transacciones que son claramente legítimas o claramente fraudulentas.
Si desea seguir el código de cada paso, puede ejecutar y descargar el cuaderno complementario aquí: https://github. es/lucasbraga461/active-learning/blob/main/active-learning/notebook.ipynb
Si desea obtener más información sobre la teoría detrás de esta implementación, puede acceder a mi artículo de investigación aquí, es de acceso gratuito: https://doi.org/10.1109/ACCESS.2025.3624650
2. Técnicas de aprendizaje activo
La intuición detrás del aprendizaje activo es utilizar una estrategia de consulta para determinar qué muestras sin etiquetar deben etiquetarse primero. En lugar de seleccionar muestras al azar de nuestro grupo, consultamos al modelo qué muestras le gustaría mirar. Normalmente se trata de muestras que ayudarán al modelo a realizar mejores predicciones. El aprendizaje activo tiende a ser útil cuando las etiquetas tardan en adquirirse, requieren conocimiento experto o son costosas.
Hay muchas estrategias que generalmente compensan la exploración y la explotación de las regiones donde el modelo tiene las mayores incertidumbres. Estos métodos se han aplicado en tareas basadas en la visión, clasificación de documentos, detección de anomalías e incluso medicina.
A continuación, repasaremos tres de las estrategias de consulta más comunes de forma intuitiva: muestreo de incertidumbre, muestreo basado en la diversidad y consulta por comité.
Nota sobre el conjunto de datos: los ejemplos de este artículo utilizan un conjunto de datos sintético creado únicamente con fines de demostración.
2.1. Muestreo de incertidumbre
El muestreo de incertidumbre es a menudo el primer enfoque que intentan los profesionales porque requiere muy poco esfuerzo y a menudo conduce a buenos beneficios iniciales.
El muestreo de incertidumbre es conceptualmente simple. Comienza etiquetando solo las muestras suficientes para crear su conjunto de entrenamiento inicial. Entrene su modelo inicial con estas muestras. ¡Este modelo inicial no tiene por qué ser genial! Todo lo que necesitamos que haga es hacer estimaciones aproximadas de las probabilidades de nuestras muestras sin etiquetar. Una vez que hemos entrenado el modelo, identificamos las muestras sobre las cuales el modelo tiene menos certeza. Estos suelen ser aquellos para los que predice probabilidades cercanas al umbral de decisión. Luego, un humano etiqueta estas muestras inciertas y volvemos a entrenar nuestro modelo con estos nuevos datos.
Si repetimos este proceso, nuestro modelo mejora gradualmente su comprensión en los puntos en los que tiene menos confianza. Debería ver ganancias más rápidas que si etiquetara muchos ejemplos fáciles/redundantes.
2.1.1. Entrene el primer modelo con validación cruzada
Antes de consultar muestras inciertas, primero necesitamos un modelo que funcione razonablemente bien incluso cuando no haya muchos datos etiquetados disponibles. Una forma sencilla de lograr esto es dividir los datos etiquetados en pliegues de entrenamiento y validación y luego ejecutar una pequeña búsqueda de hiperparámetros mediante validación cruzada para evitar el sobreajuste. El resultado de dividir el conjunto de datos en el Bloque de código 1 se puede ver en la Figura 2.
Bloque de código 1. Dividir X e y
X = df_i1.drop(columnas=['etiqueta']) y = df_i1['etiqueta'] X
En la práctica, los equipos suelen realizar búsquedas de cuadrículas más ligeras con 3 o 5 pliegues, así que no sienta que necesita tantos pliegues al aplicar este proceso a sus proyectos.
Bloque de código 2. Entrene un modelo mediante validación cruzada anidada.
# Configuración de CV y cuadrícula de hiperparámetros param_grid = {"C": [0.001, 0.01, 0.1, 1, 10, 100]} internal_cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) outside_cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=7) plegar_métricas =[]best_params_each_fold =[]para train_idx, test_idx en outside_cv.split(X, y): X_train, X_test = X.iloc[train_idx], X.iloc[test_idx] y_train, y_test = y.iloc[train_idx], y.iloc[test_idx] grid = GridSearchCV( LogisticRegression(max_iter=500), param_grid, cv=inner_cv, scoring="f1", n_jobs=-1 ) grid.fit(X_train, y_train) best_model = grid.best_estimator_ best_params_each_fold.append(grid.best_params_) preds = best_model.predict(X_test) fold_metrics.append({ "precision": precision_score(y_test, preds), "recall": recordar_score(y_test, preds), "f1": f1_score(y_test, preds) }) # Utilice los mejores parámetros más frecuentes para entrenar el modelo final final_params = pd.DataFrame(best_params_each_fold).mode().iloc[0].to_dict() final_model = LogisticRegression(**final_params, max_iter=500) final_model.fit(X, y)
Ahora que tenemos nuestro modelo con validación cruzada, podemos aplicarlo a nuestro conjunto sin etiquetar para obtener una medida de incertidumbre. La Figura 3 a continuación muestra cómo se ve el conjunto de datos fold_metrics en el bloque de código 2.
2.1.2. Califique los datos sin etiquetar e inspeccione las probabilidades
Ahora queremos calcular las probabilidades previstas para cada muestra de nuestro grupo sin etiquetar. Trazar estos puntajes puede ayudarnos a ver dónde nuestro modelo tiene menos confianza.
Bloque de código 3. Visualice la distribución de las puntuaciones previstas
importar seaborn como sns def plot_prediction_distribution(df, column_name): si column_name no está en df.columns: aumente ValueError(f"Columna '{column_name}' no se encuentra en el marco de datos.") si "Prediction_Probability" no se encuentra en df.columns: aumente ValueError("La columna 'Prediction_Probability' no se encontró en el marco de datos. Asegúrese de que las predicciones se hayan realizado agregado.") # Asegúrese de que Predicted_Label esté asignado correctamente (1 = válido, 0 = no válido) plt.figure(figsize=(10, 6)) sns.histplot(df, x=column_name, hue="Predicted_Label", bins=30, kde=True, Palette="coolwarm") plt.title(f"Distribución de {column_name} por probabilidad de predicción") plt.xlabel(column_name) plt.ylabel("Densidad") # Orden de leyenda corregido (1 = válido, 0 = no válido) plt.legend(title="Etiqueta prevista", etiquetas=["Válido", "No válido"]) plt.show() de los ayudantes import predict_plots # Obtener puntuaciones de probabilidad new_probabilities = final_model.predict_proba(X_unlabeled)[:, 1] X_unlabeled["Prediction_Probability"] = nuevas_probabilidades predict_plots.plot_prediction_distribution(X_unlabeled, "Prediction_Probability")
Debido a que se trata de un problema de clasificación binaria, nuestro modelo a menudo será menos seguro con probabilidades cercanas a 0,5. Esto representa dónde AL puede ser más valioso. La Figura 4 a continuación muestra cómo se ve el gráfico al ejecutar el Bloque de Código 3.
2.1.3. Elija muestras dentro de la ventana de incertidumbre
Para etiquetar nuestro próximo lote, nos centraremos en un área alrededor del umbral de decisión. Podemos definir una pequeña banda alrededor de 0,5 y luego tomar muestras de esa región. La Figura 5 a continuación muestra el gráfico resultante de la ejecución del Bloque de código 4.
centro = 0,50 inferior = centro – 0,05 superior = centro + 0,05 máscara = (X_unlabeled["Prediction_Probability"] > inferior) & (X_unlabeled["Prediction_Probability"] <= superior) tamaño_lote = 60 lote_seleccionado = X_unlabeled[máscara].sample(tamaño_lote, estado_aleatorio=42)
Estas muestras deberían representar dónde nuestro modelo tiene menos confianza.
2.1.4. Iterar
Ahora repite el ciclo:
Entrene el modelo Prediga problemas en un conjunto sin etiquetar Seleccione las muestras más cercanas a la región incierta Etiquételas, enjuáguelas y repita
A medida que este ciclo continúe, el modelo debería volverse más confiable y la región incierta se hará más pequeña. Cuando este proceso comience a estabilizarse, puede agregar técnicas más exploratorias como el muestreo de diversidad o el muestreo basado en comités.
2.1.5. Fortalezas y debilidades del muestreo de incertidumbre
Fortalezas
Fácil de implementar y bajo coste computacional. Puede utilizar cualquier modelo que genere estimaciones de probabilidad. Extremadamente útil cuando el etiquetado es costoso o cuando se tienen cantidades limitadas de datos.
Debilidades
Puede centrarse excesivamente en una pequeña región del espacio característico. Se basa en la capacidad del modelo para estimar probabilidades con precisión. Puede seleccionar casos extremos muy similares una y otra vez sin explorar el conjunto de datos en su totalidad.
Resumen: muestreo de incertidumbre
Es más eficaz cuando se utiliza en las primeras iteraciones del modelado, cuando el modelo no ha definido del todo el límite. Ultraeficiente ya que solo requiere estimaciones de probabilidad del modelo. Puede centrarse demasiado si se utiliza en demasiadas iteraciones sin otras formas de exploración.
2.2. Muestreo basado en la diversidad
El muestreo basado en la diversidad puede considerarse otra extensión del aprendizaje activo en el que las opciones de etiquetado se realizan en función de cuán diversa/poco común es cada muestra sin etiquetar en comparación con todas las demás muestras dentro del espacio de características. En lugar de simplemente elegir dónde su modelo es más incierto, intente elegir ejemplos que cubran más terreno. Esto puede permitir que su modelo etiquete ejemplos más expresivos y obtenga una mejor visión general de los datos con los que está trabajando.
El muestreo basado en la diversidad puede ser beneficioso si su modelo comienza a converger y se encuentra consultando repetidamente los mismos tipos de casos extremos con muestreo de incertidumbre. Al tomar muestras de forma más dispersa, creará un conjunto de entrenamiento más representativo que puede generar mayores ganancias en futuras iteraciones.
2.2.1. Ejemplo práctico
Digamos que ya ha realizado algunas iteraciones de muestreo de incertidumbre y ya tiene un par de cientos de muestras etiquetadas. Es probable que esté comenzando a ver una fuerte caída a cambio porque seguramente seguirá consultando muestras similares. Ahora sería un buen momento para dar un paso basado en la diversidad.
Para hacer esto, consideraremos cada muestra de nuestro grupo sin etiquetar e intentaremos estimar cuántos vecinos más cercanos tiene. Las muestras que se encuentran dentro de grupos muy densos probablemente serán muy similares a las muestras con las que ya ha entrenado. Alternativamente, las muestras que tienen muy pocos vecinos son muestras que pueden existir en regiones menos pobladas.
Una forma rápida y sencilla de aproximar esto es utilizar el algoritmo KNN de sklearn y encontrar la distancia promedio a sus vecinos más cercanos. Recuerde escalar sus características antes de calcular distancias con Euclidean. Consulte la Figura 6 para ver una ilustración de KNN.
El bloque de código 5 muestra un flujo de trabajo de ejemplo. La Figura 7 ilustra el conjunto de datos resultante most_diverse del bloque de código 5.
Bloque de código 5. Seleccionar muestras utilizando diversas estrategias de muestreo
from sklearn.neighbors import NearestNeighbors # Ajustar el modelo KNN a las características de los datos sin etiquetar knn = NearestNeighbors(n_neighbors=k, metric="euclidean") knn.fit(X_unlabeled[feature_cols]) # Calcular la distancia promedio entre vecinos como proxy para distancias dispersas, _ = knn.kneighbors(X_unlabeled[feature_cols]) X_unlabeled["Density"] = Distances.mean(axis=1) # Selecciona las muestras más diversas most_diverse = X_unlabeled.nlargest(n_samples, "Density") most_diverse.head()
Los puntos seleccionados suelen formar un lote de entre 50 y 60 muestras. Los etiqueta, los agrega a su conjunto de entrenamiento en constante crecimiento y vuelve a entrenar su modelo. A partir de este punto, puede ver cómo evolucionan las predicciones de su modelo, trazar la distribución de probabilidad una vez más o determinar si otra ronda de selección de diversidad es beneficiosa antes de continuar con el aprendizaje activo mediante otra estrategia de consulta.
2.2.2. Ventajas y desventajas del muestreo por diversidad
Ventajas
le ayuda a crear un conjunto de capacitación más representativo al explorar regiones de los datos que anteriormente estaban subrepresentadas. menos muestras redundantes en comparación con consultas repetidas únicamente por incertidumbre.
Desventajas
más difícil de implementar que el muestreo de incertidumbre “vainilla”. métricas de distancia, métodos de agrupamiento o diagnósticos visuales necesarios para seleccionar muestras de forma inteligente.
Resumen
Diversity Sampling promueve la exploración de regiones en sus datos que no están cubiertas por su conjunto de capacitación. Reduce la redundancia en comparación con el uso exclusivo de la incertidumbre para la selección de muestras. Depende de las métricas de distancia o de la agrupación, por lo que puede resultar un poco más caro.
2.3. Consulta por comité (QBC)
Consulta por comité mantiene un comité de modelos en lugar de un modelo único. Cada uno de los miembros del comité recibe capacitación sobre los datos etiquetados actualmente. Dado que diferentes modelos pueden depender de diferentes algoritmos de aprendizaje o tener diferentes valores predeterminados internos, pueden dar respuestas ligeramente diferentes. Podemos usar esto.
Cuando el comité vota salvajemente entre sus miembros, sabemos que hemos encontrado una muestra difícil/ambigua que sería bueno etiquetarla manualmente.
Básicamente, buscamos puntos en los que los miembros del comité no están de acuerdo y consultamos esos puntos para etiquetarlos. De esa manera, el bucle AL se centrará en aquellas muestras que tienen más probabilidades de ofrecer el mayor rendimiento a su inversión en modelado.
2.3.1. Formación de un comité de modelos
Para nuestro comité queremos modelos que razonen sobre los datos de manera diferente. Como tal, entrenemos tres tipos diferentes de modelos: un modelo lineal, un modelo basado en árboles y un modelo de núcleo.
A continuación se muestra una función que entrenará cuatro modelos con los datos actualmente etiquetados.
Bloque de Código 6. Capacitar a un comité de modelos
def train_qbc_committee(X_train, y_train): """ Entrena un pequeño comité de diversos modelos para QBC. Devuelve un diccionario de modelos ajustados. """ models = { "Regresión logística": LogisticRegression(C=0.1, max_iter=500), "Random Forest": RandomForestClassifier(n_estimators=50, max_ Depth=5, min_samples_leaf=5), "Extra Trees": ExtraTreesClassifier(n_estimators=50, max_profundidad=5, min_samples_leaf=5), "SVM": SVC(kernel="rbf", C=0.1, probabilidad=True) } entrenado = {} para nombre, modelo en models.items(): print(f"Entrenamiento {nombre}…") model.fit(X_train, y_train) entrenado[nombre] = retorno del modelo entrenado X = df_i6.drop(columnas=["label"]) y = df_i6["label"] X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, estratify=y, random_state=42 ) comité = query_by_committee.train_qbc_committee(X_train, y_train)
Una vez que se ha ejecutado este código, tenemos un grupo de modelos a los que podemos solicitar predicciones/estimaciones de probabilidad individuales para usar en el siguiente paso del proceso.
2.3.2. Evaluación del comité y construcción de un modelo apilado
Cada miembro del comité generará una probabilidad para la clase positiva. Podemos tomar todas esas probabilidades, para cada elemento de nuestro grupo, y crear un nuevo conjunto de características sobre el que podamos entrenar trivialmente un metamodelo. Este proceso se llama apilamiento.
Dado que la regresión logística es trivial de interpretar y funciona bien con esta pequeña cantidad de entradas de apilamiento, la usaremos para nuestra capa de apilamiento.
Tabla 1. Rendimiento del modelo después de QBC
El bloque de código 7 a continuación muestra cómo crear estas funciones apiladas. La Figura 8 es el conjunto de datos resultante de ejecutar el código.
Bloque de código 7. Cree un tren y un conjunto de pruebas utilizando las puntuaciones de los modelos entrenados.
X_train_scores = query_by_committee.stacking_models(X_train, comité) X_test_scores = query_by_committee.stacking_models(X_test, comité) X_train_scores[[ "Logistic Regression_score", "Random Forest_score", "Extra Trees_score", "SVM_score" ]].head()
Entrenando la capa de apilamiento
Bloque de código 8. Entrene diferentes modelos además de las puntuaciones de los modelos entrenados anteriormente.
models_stacking = query_by_committee.train_qbc_committee( X_train_scores[[ "Logistic Regression_score", "Random Forest_score", "Extra Trees_score", "SVM_score" ]], y_train, cv_folds=5 ) stacked_results = model_evaluación.evaluate_model( models_stacking["Logístico Regresión"], X_test_scores[[ "Logistic Regression_score", "Random Forest_score", "Extra Trees_score", "SVM_score" ]], y_test, umbral=0,50)
Por qué ayuda apilar
Una vez realizado el apilamiento, es común que aumente el rendimiento general. Un modelo podría tener una gran precisión en una región de los datos y otro podría sobresalir en otra parte. Un árbol podría capturar regiones no lineales y una SVM podría haber clasificado límites difíciles. Al apilar estos modelos, se utilizan cada una de sus fortalezas y se limitan las debilidades de cada alumno individual.
Tabla 2. Rendimiento del modelo, incluido el apilamiento de modelos
La comparación de métricas antes y después del apilamiento generalmente muestra que su modelo apilado tiene una mayor recuperación con solo una ligera pérdida de precisión. Para muchas aplicaciones, esta compensación vale la pena si significa que su modelo rara vez omite muestras positivas.
En conjunto, el apilamiento le permite crear un alumno sólido y equilibrado que se beneficia de la diversidad en su comité y mejora su ciclo de aprendizaje activo.
2.3.3. Selección de muestras cuando el comité no está de acuerdo
Una vez que haya capacitado a su comité, puede comenzar a evaluar en qué medida los modelos de su comité difieren en la predicción de cada muestra sin etiquetar. El razonamiento detrás de este método es bastante sencillo. Si varios modelos que normalmente no concuerdan hacen la misma predicción para una muestra, es poco probable que esa muestra contenga mucha información. Sin embargo, si los modelos no están de acuerdo, eso indica que la muestra probablemente existe en una región que el comité considera incierta o poco clara.
Una forma de medir esto es calcular la varianza de las probabilidades predichas entre los modelos del comité. Una variación más alta indica un mayor desacuerdo, lo que por extensión significa que esas muestras probablemente sean muy útiles si se anotan.
El bloque de código 9 incluye una función de ejemplo para calcular estas puntuaciones de desacuerdo.
Bloque de código 9. Función para crear la columna desacuerdo_scores
def select_qbc_samples(X_unlabeled, models): """ Calcula el desacuerdo de predicción para cada punto sin etiquetar en función de los resultados de probabilidad de todos los modelos del comité. """ X_scores = X_unlabeled.copy() base_features = X_unlabeled.iloc[:, :models["Regresión logística"].n_features_in_] preds_matrix = np.zeros((base_features.forma[0], len(models))) for i, (name, model) in enumerate(models.items()): score_column = f"{name}_score" X_scores[score_column] = model.predict_proba(base_features)[:, 1] preds_matrix[:, i] = X_scores[score_column] # Varianza entre las predicciones del comité X_scores["disagreement_score"] = np.var(preds_matrix, axis=1) devuelve X_scores
Una vez que haya creado estas puntuaciones de desacuerdo, puede ordenar sus datos sin etiquetar según esta métrica y seleccionar las mejores muestras para etiquetar, como se muestra en el Bloque de código 10 y la Figura 9.
Bloque de código 10. Seleccione las muestras con el valor de puntuación de desacuerdo más grande
X_unlabeled = query_by_committee.select_qbc_samples(X_unlabeled, modelos) num_samples = 60 most_uncertain = X_unlabeled.nlargest(num_samples, "disagreement_score") most_uncertain.head()
Tenga en cuenta que este último lote de puntos debe contener las muestras en las que los miembros de su comité no estuvieron de acuerdo entre sí. Estos puntos deben cubrir las áreas del límite de decisión que causaron los mayores desacuerdos entre sus modelos. Al identificar estas muestras y etiquetarlas, su modelo podrá mejorar algunas de estas regiones límite cuando se vuelva a entrenar.
La consulta del Comité en pocas palabras
Utiliza el desacuerdo del modelo como medida para identificar muestras informativas. Funciona mejor cuando diferentes modelos aprenden cosas diferentes de los datos. Se necesita tiempo y recursos para entrenar y mantener múltiples modelos.
3. Pros y contras del aprendizaje activo
El aprendizaje activo puede convertirse en un componente vital de su flujo de trabajo de aprendizaje automático al permitirle desviar sus esfuerzos de anotación de todo a solo lo que importa. Como cualquier tecnología, existen numerosas ventajas y algunas limitaciones del mundo real. Las secciones siguientes describen cada una brevemente para que pueda determinar si el aprendizaje activo se adaptará a su caso de uso.
3.1. Beneficios del aprendizaje activo
3.1.1. Reducir los costos de anotación
Para la mayoría de los problemas, etiquetar datos es una de las mayores inversiones de tiempo y dinero. El aprendizaje activo alivia este problema al permitirle centrar sus esfuerzos de anotación solo en muestras que brindan la mayor cantidad de información nueva a su modelo. Etiquete solo estos puntos y su equipo podrá lograr un rendimiento sólido del modelo sin tener que asignar recursos para realizar anotaciones a escala.
3.1.2. Menos etiquetas para modelos de alta calidad
El aprendizaje activo intenta consultar las etiquetas de los ejemplos más difíciles/informativos. Esto significa que cada nueva etiqueta que agregue a su conjunto de entrenamiento proporciona más valor que si se tomara una muestra aleatoria. Debería esperar ver ganancias mucho más rápidas en precisión/recuperación/F1 con un marco de aprendizaje activo, incluso con un pequeño conjunto de datos etiquetados.
3.1.3. Ideal si los datos etiquetados son limitados
Las empresas y los equipos de investigación a menudo se enfrentan a problemas en los que los datos etiquetados siempre serán limitados. El aprendizaje activo le permite crear un marco para expandir iterativamente ese conjunto de datos etiquetados. Se usa comúnmente en cualquier sistema de aprendizaje automático que se ocupe de la percepción, recomendaciones, detección de anomalías u otras señales generadas por el usuario.
3.1.4. Funciona con cualquier problema de ML
No existe un único modelo o tipo de datos con el que haya funcionado el aprendizaje activo. Los clientes lo han utilizado para la detección de fraudes, problemas de PNL, clasificación de imágenes, modelado de series temporales y más. Si está buscando una manera de aprovechar datos sin etiquetar que de otro modo se desperdiciarían, considere utilizar el aprendizaje activo.
3.2. Limitaciones del aprendizaje activo
3.2.1. La estrategia de muestreo es crucial
El aprendizaje activo es tan bueno como las muestras que utiliza para entrenar su modelo. Si su estrategia de muestreo arroja consistentemente muestras ruidosas, engañosas o poco informativas, es posible que su modelo nunca converja. Se requiere una importante experiencia en el dominio para elegir una estrategia adecuada. Una vez elegido, tendrás que experimentar para asegurarte de que funciona bien en la práctica.
3.2.2. El sesgo de muestreo es posible
Las estrategias basadas en la incertidumbre tienden a centrarse demasiado en regiones más pequeñas de su espacio de características. Sin intervención, tu conjunto de entrenamiento se desequilibrará, limitando tu capacidad de generalizar. El muestreo de incertidumbre debe combinarse con algún tipo de verificación de la diversidad para evitar este problema.
3.2.3. Pero todavía necesitamos expertos humanos
Un punto a tener en cuenta sobre el aprendizaje activo es que, aunque la selección de muestras está automatizada, todavía se necesitan humanos en el circuito para realizar el etiquetado. Todavía hay algunos dominios que dependen más de la anotación humana, como la ciberseguridad, la anotación clínica, la revisión de textos legales o ciertas tareas de visión.
3.3. Cómo elegir la estrategia adecuada en la práctica
Puede comenzar con un muestreo de incertidumbre, especialmente si tiene un pequeño conjunto de datos etiquetados y/o necesita resultados tempranos. Luego agregue muestreo de diversidad si ya tomó todo el muestreo de incertidumbre y comenzó a no brindar resultados mucho mejores. Utilice la consulta por comité si se espera que los límites de decisión sean ruidosos O si ya tiene un comité de modelos razonables que le gustaría explotar.
4. Conclusión
El aprendizaje activo es un concepto sencillo. En lugar de etiquetar todo el contenido de su conjunto de datos, etiqueta solo las muestras que su modelo necesita aprender. Cuando trabaja en organizaciones donde la producción de muestras etiquetadas es costosa o requiere mucho tiempo, esta diferencia tiene un impacto significativo. Verá que su modelo mejora a un ritmo más rápido y su equipo solo dedica tiempo a etiquetar muestras que han sido examinadas por su ciclo de aprendizaje activo.
Como ocurre con todas las decisiones de diseño, existen compensaciones. El bucle introduce cálculo adicional y sus resultados cambiarán mucho según su estrategia de consulta. Conjuntos de datos preparados de manera similar terminarán con modelos muy diferentes si su estrategia de consulta produce muestras redundantes.
Por lo tanto, es una buena práctica mezclar estrategias. El muestreo de incertidumbre funciona bien al comienzo de un proyecto para aprender rápidamente, mientras que el muestreo de diversidad le ayuda a cubrir más espacio de funciones. El muestreo basado en comités le permite centrarse en muestras difíciles de delimitar.
Combinarlos le permite desarrollar una solución más sólida. En conclusión, Active Learning le ayuda a priorizar qué muestras solicitar anotación humana y es especialmente útil cuando tiene muchas muestras sin etiquetar y recursos de anotación limitados.
Nota de imagen: todas las imágenes de este artículo fueron creadas por el autor a menos que se indique lo contrario.