Metriky vyhodnocení pro modely pro porozumění konverzačnímu jazyku

Datová sada je rozdělená na dvě části: sadu pro trénování a sadu pro testování. Trénovací sada se používá k trénování modelu, zatímco testovací sada se používá jako test modelu po trénování k výpočtu výkonu a vyhodnocení modelu. Testovací sada se do modelu nezavádí prostřednictvím trénovacího procesu, aby se zajistilo, že se model testuje na nových datech.

Vyhodnocení modelu se aktivuje automaticky po úspěšném dokončení trénování. Proces vyhodnocení začíná použitím natrénovaného modelu k predikci uživatelem definovaných záměrů a entit pro promluvy v testovací sadě a jejich porovnání s poskytnutými značkami (které stanoví základní hodnoty pravdivosti). Výsledky se vrátí, abyste mohli zkontrolovat výkon modelu. Při vyhodnocování se při porozumění konverzačnímu jazyku používají následující metriky:

  • Přesnost: Měří přesnost a přesnost modelu. Jedná se o poměr mezi správně identifikovanými pozitivními výsledky (pravdivě pozitivními výsledky) a všemi identifikovanými pozitivními výsledky. Metrika přesnosti ukazuje, kolik predikovaných tříd je správně označeno.

    Precision = #True_Positive / (#True_Positive + #False_Positive)

  • Vzpomeňte si: Měří schopnost modelu předpovědět skutečné pozitivní třídy. Je to poměr mezi predikovanými pravdivě pozitivními výsledky a tím, co bylo skutečně označeno. Metrika úplnosti odhalí, kolik predikovaných tříd je správných.

    Recall = #True_Positive / (#True_Positive + #False_Negatives)

  • Skóre F1: Skóre F1 je funkcí přesnosti a úplnosti. Je potřeba, když hledáte rovnováhu mezi přesností a úplností.

    F1 Score = 2 * Precision * Recall / (Precision + Recall)

Přesnost, úplnost a skóre F1 se počítají pro:

  • Každá entita zvlášť (vyhodnocení na úrovni entity)
  • Každý záměr zvlášť (vyhodnocení na úrovni záměru)
  • Pro model souhrnně (vyhodnocení na úrovni modelu).

Definice přesnosti, úplnosti a vyhodnocení jsou stejné pro vyhodnocení na úrovni entity, záměru a modelu. Počty pravdivě pozitivních, falešně pozitivních a falešně negativních výsledků se ale můžou lišit. Podívejte se například na následující text.

Příklad

  • Odpovědět s poděkováním.
  • odpovězte ano.
  • Podívejte se prosím na můj e-mail.
  • E-mail cynthii, že večeře minulý týden byla nádherná.
  • poslat e-mail Michalu

Použité záměry: Reply,sendEmail,readEmail. Jedná se o entity: contactName, message.

Model může provádět následující předpovědi:

Výrok Predikovaný záměr Skutečný záměr Předpovězená entita Skutečná entita
Odpovědět s poděkováním Odpovědět Odpovědět thank you very much Jako message thank you very much Jako message
odpovědět s vyslovením ano odeslat E-mail Odpovědět -- yes Jako message
Zkontrolujte můj e-mail, prosím readEmail readEmail -- --
e-mail cynthii, že večeře minulý týden byla nádherná Odpovědět odeslat E-mail dinner last week was splendid Jako message cynthia as contactName, dinner last week was splendid as message
poslat e-mail Michalu odeslat E-mail odeslat E-mail mike Jako message mike Jako contactName

Vyhodnocení úrovně záměru pro záměr Odpovědět

Klíč Počet Vysvětlení
Pravdivě pozitivní 1 Výrok 1 byl správně predikován jako Odpovědět.
Falešně pozitivní 1 Výrok 4 byl omylem předpovězen jako Odpověď.
Falešně negativní 1 Výrok 2 byl omylem předpovězen jako sendEmail.

Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

Připomenout = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

Skóre F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

Vyhodnocení úrovně záměru sendEmail

Klíč Počet Vysvětlení
Pravdivě pozitivní 1 Výrok 5 byl správně predikován jako sendEmail.
Falešně pozitivní 1 Výrok 2 byl omylem předpovězen jako sendEmail.
Falešně negativní 1 Výrok 4 byl omylem předpovězen jako Odpověď.

Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 1) = 0.5

Připomenout = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

Skóre F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5

Vyhodnocení úrovně záměru readEmail

Klíč Počet Vysvětlení
Pravdivě pozitivní 1 Výrok 3 byl správně predikován jako readEmail.
Falešně pozitivní 0 --
Falešně negativní 0 --

Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

Připomenout = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 0) = 1

Skóre F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 1) / (1 + 1) = 1

Vyhodnocení na úrovni entity pro entitu contactName

Klíč Počet Vysvětlení
Pravdivě pozitivní 1 cynthia byla správně predikována jako contactName v promluvě 4.
Falešně pozitivní 0 --
Falešně negativní 1 mike byla chybně predikována jako message v promluvě 5

Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 1 / (1 + 0) = 1

Připomenout = #True_Positive / (#True_Positive + #False_Negatives) = 1 / (1 + 1) = 0.5

Skóre F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 1 * 0.5) / (1 + 0.5) = 0.67

Vyhodnocení na úrovni entity pro entitu zprávy

Klíč Počet Vysvětlení
Pravdivě pozitivní 2 thank you very much byla správně predikována jako message v promluvě 1 a dinner last week was splendid byla správně predikována jako message v promluvě 4.
Falešně pozitivní 1 mike byla chybně predikována jako message v promluvě 5
Falešně negativní 1 yes nebyl predikován jako message v promluvě 2

Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 2 / (2 + 1) = 0.67

Připomenout = #True_Positive / (#True_Positive + #False_Negatives) = 2 / (2 + 1) = 0.67

Skóre F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67

Vyhodnocení na úrovni modelu pro kolektivní model

Klíč Počet Vysvětlení
Pravdivě pozitivní 6 Součet tp pro všechny záměry a entity
Falešně pozitivní 3 Součet FP pro všechny záměry a entity
Falešně negativní 4 Součet FN pro všechny záměry a entity

Přesnost = #True_Positive / (#True_Positive + #False_Positive) = 6 / (6 + 3) = 0.67

Připomenout = #True_Positive / (#True_Positive + #False_Negatives) = 6 / (6 + 4) = 0.60

Skóre F1 = 2 * Precision * Recall / (Precision + Recall) = (2 * 0.67 * 0.60) / (0.67 + 0.60) = 0.63

Konfuzní matice

Konfuzní matice je matice N x N sloužící k vyhodnocení výkonu modelu, kde N je počet entit nebo záměrů. Matice porovnává očekávané popisky s popisky predikovanými modelem. Získáte tak ucelený přehled o tom, jak dobře model funguje a jaké druhy chyb dělá.

Pomocí konfuzní matice můžete identifikovat záměry nebo entity, které jsou příliš blízko sebe a často se mýlí (nejednoznačnost). V takovém případě zvažte sloučení těchto záměrů nebo entit dohromady. Pokud to není možné, zvažte přidání dalších označených příkladů záměrů nebo entit, které modelu pomůžou je odlišit.

Zvýrazněná úhlopříčka na obrázku níže jsou správně předpovězené entity, kde předpovězená značka je stejná jako skutečná značka.

Snímek obrazovky s ukázkovou konfuzní maticí

Metriky vyhodnocení na úrovni záměru nebo entity a modelu můžete vypočítat z konfuzní matice:

  • Hodnoty v diagonále jsou pravdivě pozitivní hodnoty každého záměru nebo entity.
  • Součet hodnot v řádcích záměru nebo entit (s výjimkou diagonály) je falešně pozitivní výsledek modelu.
  • Součet hodnot ve sloupcích záměru nebo entit (s výjimkou diagonály) je falešně negativní hodnota modelu.

Podobně platí:

  • Pravdivě pozitivním modelem je součet pravdivě pozitivních hodnot pro všechny záměry nebo entity.
  • Falešně pozitivní výsledek modelu je součet falešně pozitivních výsledků pro všechny záměry nebo entity.
  • Falešně negativní hodnota modelu je součet falešně negativních výsledků pro všechny záměry nebo entity.

Pokyny

Po vytrénování modelu se zobrazí několik pokynů a doporučení, jak model vylepšit. Doporučujeme mít model pokrývající všechny body v části s pokyny.

  • Trénovací sada obsahuje dostatek dat: Pokud má záměr nebo entita v trénovacích datech méně než 15 označených instancí, může to vést k nižší přesnosti kvůli tomu, že model není odpovídajícím způsobem natrénován pro daný záměr. V takovém případě zvažte přidání dalších označených dat do trénovací sady. Přidání dalších označených dat do entity byste měli zvážit pouze v případě, že entita obsahuje naučenou komponentu. Pokud je entita definovaná pouze komponentami list, prebuilt a regex, pak se toto doporučení nevztahuje.

  • V testovací sadě se nacházejí všechny záměry nebo entity: Pokud testovacím datům chybí označené instance pro záměr nebo entitu, je vyhodnocení modelu kvůli neotestovaným scénářům méně komplexní. Zvažte testovací data pro každý záměr a entitu v modelu, abyste měli jistotu, že se všechno testuje.

  • Nejasné rozlišení mezi záměry nebo entitami: Pokud jsou data pro různé záměry nebo entity podobná, může to vést k nižší přesnosti, protože mohou být často chybně klasifikovány jako navzájem. Projděte si následující záměry a entity a zvažte jejich sloučení, pokud jsou podobné. V opačném případě přidejte další příklady, abyste je od sebe lépe odlišili. Další pokyny najdete na kartě konfuzní matice . Pokud vidíte, že se stále predikují dvě entity pro stejné rozsahy, protože sdílejí stejný seznam, předem připravené komponenty nebo komponenty regulárního výrazu, nezapomeňte pro každou entitu přidat naučenou komponentu a nastavit ji jako povinnou. Přečtěte si další informace o komponentách entit.

Další kroky

Trénování modelu v sadě Language Studio