====== 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