Ce este Snorkel și supravegherea slabă?
sobes.tech AI
Răspuns de la AI
Snorkel este un cadru pentru supraveghere slabă, care ajută la crearea seturilor de date de antrenament folosind reguli programate, în loc de date etichetate manual. Supravegherea slabă este o abordare în care se utilizează surse de etichetare imprecise, zgomotoase sau indirecte pentru a antrena modele, ceea ce reduce semnificativ costurile de adnotare.
Ideea principală a Snorkel este de a combina multiple semnale slabe (de exemplu, reguli, baze de cunoștințe externe, modele) într-un singur model probabilistic care generează etichete de calitate pentru antrenament.
Exemplu de utilizare a Snorkel:
from snorkel.labeling import labeling_function, LabelModel, PandasLFApplier
import pandas as pd
# Definirea etichetelor
POSITIVE = 1
NEGATIVE = 0
ABSTAIN = -1
# Date de exemplu
data = pd.DataFrame({'text': ['Îmi place acest produs', 'Este rău', 'Nu sunt sigur despre asta']})
# Crearea funcțiilor simple de etichetare
@labeling_function()
def positive_words(x):
return POSITIVE if 'place' in x.text else ABSTAIN
@labeling_function()
def negative_words(x):
return NEGATIVE if 'rău' in x.text else ABSTAIN
lfs = [positive_words, negative_words]
applier = PandasLFApplier(lfs)
labeled_matrix = applier.apply(data)
# Antrenarea unui model pentru combinarea etichetelor
label_model = LabelModel(cardinality=2, verbose=True)
label_model.fit(labeled_matrix=labeled_matrix, n_epochs=500, log_freq=100)
# Obținerea etichetelor finale
data['label'] = label_model.predict(labeled_matrix)
print(data)
Astfel, Snorkel permite crearea rapidă a seturilor de date de antrenament folosind semnale slabe, ceea ce este deosebit de util atunci când există o cantitate limitată de date etichetate.