# Loss functions

## Binary cross entropy

Difference between two probability distributions

$-(y log(\hat{y}) + (1-y) log(1-\hat{y})$

or

$-1/N \sum_{i=1}^N (y_i log(\hat{y_i}) + (1-y_i) log(1-\hat{y_i})$

(Negative log, since log in [0,1] is < 0)

Recap entropy:

In bin classification entropy for distribution q(y) with 50:50 classes is: $H(q) = log(2)$

For other distrubition (and in general) with C classes, entropy of distribution is $H(q) = - \sum_{c=1}^C q(y_c) * log(q(y_c))$

Small value of $q(y_c)$ leads to large negative log (multiple times of q): math.log(0.01) = -4.6

Large value of $q(y_c)$ leads to small negative log: math.log(0.99) = -0.01

More classes, higher entropy

Recap cross-entropy:

$H_p(q) = - \sum_{c=1}^C q(y_c) * log(p(y_c))$ where p is other distribution

When $p == q$, then $H_p(q) == H(q)$, so cross-entropy >= entropy.

Recap KL-Divergence:

Is difference between cross-entropy and entropy.

$D_{KL}(q||p) = H_p(q) - H(q) = \sum_{c=1}^C q(y_c) (log(q(y_c) - log(p(y_c)))$

For an algo we need to find closes $p$ for $q$ by minimizing cross-entropy.

In training we have $N$ samples. For one particular example the distribution is known to which class it belongs. The loss function should minimize the average cross-entropy.

Outcome: Scalar [0,1] using sigmoid

## Cross-entropy

$-\sum_{i}^C(y_i log(\hat{y_i})$ $C$ is number of classes

Outcome: Vector [0,1] using softmax

## Binary cross entropy with multi labels

$-\sum_{i}^C(y_i log(\hat{y_i}) + (1-y_i) log(1-\hat{y_i})$

Ouctome: Vector [0,1] using sigmoid