Sobes.tech
Middle — Senior

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.