Mi az a Snorkel és a gyenge felügyelet?
sobes.tech MI
Válasz az MI-től
A Snorkel egy gyenge felügyeleti keretrendszer, amely segít az edzésadatok készítésében programozott szabályok segítségével, ahelyett, hogy kézzel címkézett adatokat használnánk. A gyenge felügyelet egy olyan megközelítés, amelyben pontatlan, zajos vagy közvetett címkézési forrásokat használnak a modellek tanításához, ami jelentősen csökkenti az annotálási költségeket.
A Snorkel fő ötlete, hogy több gyenge jelet (például szabályokat, külső tudásbázisokat, modelleket) egyesít egy valószínűségi modellbe, amely magas minőségű címkéket generál a tanításhoz.
A Snorkel használatának példája:
from snorkel.labeling import labeling_function, LabelModel, PandasLFApplier
import pandas as pd
# Címkék meghatározása
POSITIVE = 1
NEGATIVE = 0
ABSTAIN = -1
# Példa adatok
data = pd.DataFrame({'text': ['Imádom ezt a terméket', 'Ez rossz', 'Nem vagyok benne biztos']})
# Egyszerű címkézési függvények létrehozása
@labeling_function()
def positive_words(x):
return POSITIVE if 'Imádom' in x.text else ABSTAIN
@labeling_function()
def negative_words(x):
return NEGATIVE if 'rossz' in x.text else ABSTAIN
lfs = [positive_words, negative_words]
applier = PandasLFApplier(lfs)
labeled_matrix = applier.apply(data)
# Modell tanítása a címkék összekapcsolására
label_model = LabelModel(cardinality=2, verbose=True)
label_model.fit(labeled_matrix=labeled_matrix, n_epochs=500, log_freq=100)
# Végső címkék lekérése
data['label'] = label_model.predict(labeled_matrix)
print(data)
Így a Snorkel lehetővé teszi, hogy gyorsan létrehozzunk tanító adatokat gyenge jelek segítségével, ami különösen hasznos, ha korlátozott mennyiségű címkézett adat áll rendelkezésre.