Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Förlustfunktion | Neuronnätverk Från Grunden
Introduktion till neurala nätverk

bookFörlustfunktion

Vid träning av ett neuralt nätverk är det nödvändigt att mäta hur exakt modellen förutsäger de korrekta resultaten. Detta görs med hjälp av en förlustfunktion, som beräknar skillnaden mellan modellens förutsägelser och de faktiska mål­värdena. Målet med träningen är att minimera denna förlust, så att förutsägelserna blir så nära de sanna utdata som möjligt.

För binär klassificering är en av de mest använda förlustfunktionerna korsentropiförlusten, som är särskilt effektiv för modeller som ger sannolikheter som utdata.

Härledning av korsentropiförlust

För att förstå korsentropiförlusten kan man utgå från maximum likelihood-principen. I ett problem med binär klassificering är målet att träna en modell som uppskattar sannolikheten y^\hat{y} att en given indata tillhör klass 1. Den sanna etiketten yy kan anta ett av två värden: 0 eller 1.

En effektiv modell bör tilldela höga sannolikheter till korrekta förutsägelser. Denna idé formaliseras genom likelihoodfunktionen, som representerar sannolikheten att observera de faktiska data givet modellens förutsägelser.

För ett enskilt tränings­exempel, under antagande om oberoende, kan likelihood uttryckas som:

P(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1 - y}

Detta uttryck betyder följande:

  • Om y=1y = 1, då P(yx)=y^P(y|x) = \hat{y} — modellen bör tilldela en hög sannolikhet till klass 1;
  • Om y=0y = 0, då P(yx)=1y^P(y|x) = 1 - \hat{y} — modellen bör tilldela en hög sannolikhet till klass 0.

I båda fallen är målet att maximera sannolikheten som modellen tilldelar den korrekta klassen.

Note
Not

P(yx)P(y|x) betyder sannolikheten att observera den faktiska klassetiketten yy givet indata xx.

För att förenkla optimeringen används log-likelihood istället för sannolikhetsfunktionen eftersom logaritmering omvandlar produkter till summor, vilket gör derivering enklare:

logP(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y \log(\hat{y}) + (1 - y) \log(1 - \hat{y})

Eftersom träningen syftar till att maximera log-likelihood definieras förlustfunktionen som dess negativa värde så att optimeringsprocessen blir ett minimeringsproblem:

L=(ylog(y^)+(1y)log(1y^))L = -\big(y \log(\hat{y}) + (1 - y) \log(1 - \hat{y})\big)

Detta är binär korsentropiförlustfunktion, som ofta används för klassificeringsproblem.

Givet att variabeln output representerar y^\hat{y} för ett visst tränings-exempel, och variabeln target representerar yy för detta tränings-exempel, kan denna förlustfunktion implementeras enligt följande:

import numpy as np

loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))

Varför denna formel?

Korsentropiförlust har en tydlig intuitiv tolkning:

  • Om y=1y = 1 förenklas förlusten till log(y^)-\log(\hat{y}), vilket innebär att förlusten är låg när y^\hat{y} är nära 1 och mycket hög när y^\hat{y} är nära 0;
  • Om y=0y = 0 förenklas förlusten till log(1y^)-\log(1 - \hat{y}), vilket innebär att förlusten är låg när y^\hat{y} är nära 0 och mycket hög när den är nära 1.

Eftersom logaritmer växer negativt stort när deras indata närmar sig noll, straffas felaktiga förutsägelser kraftigt, vilket uppmuntrar modellen att göra säkra och korrekta förutsägelser.

Om flera exempel skickas under framåtriktad propagiering beräknas den totala förlusten som medelförlusten över alla exempel:

L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i))

där NN är antalet träningsprover.

question mark

Vilket av följande beskriver bäst syftet med korsentropiförlustfunktionen vid binär klassificering?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 4

bookFörlustfunktion

Svep för att visa menyn

Vid träning av ett neuralt nätverk är det nödvändigt att mäta hur exakt modellen förutsäger de korrekta resultaten. Detta görs med hjälp av en förlustfunktion, som beräknar skillnaden mellan modellens förutsägelser och de faktiska mål­värdena. Målet med träningen är att minimera denna förlust, så att förutsägelserna blir så nära de sanna utdata som möjligt.

För binär klassificering är en av de mest använda förlustfunktionerna korsentropiförlusten, som är särskilt effektiv för modeller som ger sannolikheter som utdata.

Härledning av korsentropiförlust

För att förstå korsentropiförlusten kan man utgå från maximum likelihood-principen. I ett problem med binär klassificering är målet att träna en modell som uppskattar sannolikheten y^\hat{y} att en given indata tillhör klass 1. Den sanna etiketten yy kan anta ett av två värden: 0 eller 1.

En effektiv modell bör tilldela höga sannolikheter till korrekta förutsägelser. Denna idé formaliseras genom likelihoodfunktionen, som representerar sannolikheten att observera de faktiska data givet modellens förutsägelser.

För ett enskilt tränings­exempel, under antagande om oberoende, kan likelihood uttryckas som:

P(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1 - y}

Detta uttryck betyder följande:

  • Om y=1y = 1, då P(yx)=y^P(y|x) = \hat{y} — modellen bör tilldela en hög sannolikhet till klass 1;
  • Om y=0y = 0, då P(yx)=1y^P(y|x) = 1 - \hat{y} — modellen bör tilldela en hög sannolikhet till klass 0.

I båda fallen är målet att maximera sannolikheten som modellen tilldelar den korrekta klassen.

Note
Not

P(yx)P(y|x) betyder sannolikheten att observera den faktiska klassetiketten yy givet indata xx.

För att förenkla optimeringen används log-likelihood istället för sannolikhetsfunktionen eftersom logaritmering omvandlar produkter till summor, vilket gör derivering enklare:

logP(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y \log(\hat{y}) + (1 - y) \log(1 - \hat{y})

Eftersom träningen syftar till att maximera log-likelihood definieras förlustfunktionen som dess negativa värde så att optimeringsprocessen blir ett minimeringsproblem:

L=(ylog(y^)+(1y)log(1y^))L = -\big(y \log(\hat{y}) + (1 - y) \log(1 - \hat{y})\big)

Detta är binär korsentropiförlustfunktion, som ofta används för klassificeringsproblem.

Givet att variabeln output representerar y^\hat{y} för ett visst tränings-exempel, och variabeln target representerar yy för detta tränings-exempel, kan denna förlustfunktion implementeras enligt följande:

import numpy as np

loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))

Varför denna formel?

Korsentropiförlust har en tydlig intuitiv tolkning:

  • Om y=1y = 1 förenklas förlusten till log(y^)-\log(\hat{y}), vilket innebär att förlusten är låg när y^\hat{y} är nära 1 och mycket hög när y^\hat{y} är nära 0;
  • Om y=0y = 0 förenklas förlusten till log(1y^)-\log(1 - \hat{y}), vilket innebär att förlusten är låg när y^\hat{y} är nära 0 och mycket hög när den är nära 1.

Eftersom logaritmer växer negativt stort när deras indata närmar sig noll, straffas felaktiga förutsägelser kraftigt, vilket uppmuntrar modellen att göra säkra och korrekta förutsägelser.

Om flera exempel skickas under framåtriktad propagiering beräknas den totala förlusten som medelförlusten över alla exempel:

L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i))

där NN är antalet träningsprover.

question mark

Vilket av följande beskriver bäst syftet med korsentropiförlustfunktionen vid binär klassificering?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 6
some-alt