# Motivating the cross-entropy loss

## Introduction

In machine learning, the cross-entropy loss is frequently introduced without explicitly emphasizing its underlying connection to the likelihood of a categorical distribution. Understanding this link can greatly enhance one’s grasp of the loss and is the topic of this short post.

## Prerequisites

## Categorical distribution likelihood

Consider an experiment in which we roll a (not necessarily fair) $K$-sided die. The result of this roll is an integer between $1$ and $K$ (inclusive) corresponding to the faces of the die. Let $q(k)$ be the probability of seeing the $k$-th face. What we have described here, in general, is a categorical random variable: a random variable which takes one of a finite number of values. Repeating this experiment multiple times yields IID random variables $X_{1},\ldots,X_{N}\sim\operatorname{Categorical}(q)$.

Performing this experiment a finite number of times $N$ does not allow us to introspect $q$ precisely, but it does allow us to estimate it. One way to approximate $q(k)$ is by counting the number of times the die face $k$ was observed and normalizing the result:

\[\begin{equation}\tag{1}\label{eq:empirical_pmf} p(k)=\frac{1}{N}\sum_{n}[X_{n}=k] \end{equation}\]where $[\cdot]$ is the Iverson bracket. Since $Y_{n}=[X_{n}=k]$ is itself a random variable (an indicator random variable), the law of large numbers tells us that $p(k)$ converges (a.s.) to $\mathbb{E}Y_{1}=\mathbb{P}(X_{n}=k)=q(k)$.

The likelihood of $q$ is

\[\mathcal{L}(q)=\prod_{n}\prod_{k}q(k)^{[X_{n}=k]}=\prod_{k}q(k)^{\sum_{n}[X_{n}=k]}=\prod_{k}q(k)^{Np(k)}\]and hence its log-likelihood is

\[\ell(q)=\log\mathcal{L}(q)=\sum_{k}Np(k)\log q(k)\propto\sum_{k}p(k)\log q(k).\]**Proposition**. The MLE for the parameter of the categorical distribution is the empirical probability mass function \eqref{eq:empirical_pmf}.

*Proof*. Consider the program

The Karush–Kuhn–Tucker stationarity condition is

\[-\frac{p(k)}{q(k)}+\lambda=0\text{ for }k=1,\ldots,K.\]In other words, the MLE $\hat{q}$ is a multiple of $p$. Since the MLE needs to be a probability vector, $\hat{q} = p$.

## Cross-entropy

The cross-entropy between $q$ relative to $p$ is

\[H(p, q) = - \mathbb{E}_{X \sim p} [ \log q(X) ].\]The choice of logarithm base yields different units:

When $p$ and $q$ are probability mass functions (PMFs), the cross-entropy reduces to

\[H(p, q) = - \sum_x p(x) \log q(x)\]which is exactly the (negation of the) log-likelihood we encountered above.
As such, one can intuit that minimizing $q$ in the cross-entropy yields a distribution that is similar to $p$.
In other words, **the cross-entropy is an asymmetric measure of dissimilarity between $q$ and $p$.**

The Kullback–Leibler (KL) divergence is another such measure:

\[D_{\mathrm{KL}}(p\Vert q) =\mathbb{E}_{p}\left[\log\frac{p(X)}{q(X)}\right] =H(p,q) - H(p,p).\]Minimizing the KL divergence is the same as minimizing the cross-entropy, but the KL divergence satisfies some nice properties that one would expect of a measure of dissimilarity. In particular,

- $D_{\mathrm{KL}}(p\Vert q) \geq 0$
- $D_{\mathrm{KL}}(p\Vert p) = 0$

We proved the first inequality for PMFs by showing that the choice of $q = p$ maximizes the cross-entropy. The second inequality is trivial.

## Cross-entropy loss

Statistical classification is the problem of mapping each input datum $x \in \mathcal{X}$ to a class label $y = 1, \ldots, K$. For example, in the CIFAR-10 classification task, each $x$ is a 32x32 color image and each $K = 10$ corresponding to ten distinct classes (e.g., airplanes, cats, trucks).

A common parametric estimator for image classification tasks such as CIFAR-10 is a neural network: a differentiable map $f: \mathcal{X} \rightarrow \mathbb{R}^K$. Note, in particular, that the network outputs a vector of real numbers. These are typically transformed to probabilities by way of the softmax function $\sigma$. In other words, for input $x$, $\hat{y} = \sigma(f(x))$ is a probability vector of size $K$. The $k$-th element of this vector is the “belief” that the network assigns to $x$ being a member of class $k$.

Given a set of observations $\mathcal{D} = {(x_1, y_1), \ldots, (x_N, y_N)}$, the cross-entropy loss for this task is

\[L(\mathcal{D}) = \frac{1}{N}\sum_{n}H(p_{n},q_{n})\]where $q_{n}=\sigma(f(x_{n}))$ and $p_{n}$ is the probability mass function which places all of its mass on $y_{n}$. Expanding this, we obtain what is to some the more familiar representation

\[L(\mathcal{D}) = -\frac{1}{N}\sum_{n}[\log\sigma(f(x_{n}))]_{y_{n}}.\]## See also

- PyTorch CrossEntropyLoss
- Keras CategoricalCrossentropy