The GLC model is described over a directed weighted graph $G = (V, \Theta)$.
Denoting by $k=|V|$ the number of nodes in the graph, $\Theta\in\R_{+}^{k\times
k}$ is the matrix of edge weights. Note that $\Theta$ implicitly defines the
edge set $E$ of the graph through the following equivalence:
\begin{displaymath}
    (u,v)\in E\Leftrightarrow \Theta_{u,v} > 0,\quad
    (u,v)\in V^2
\end{displaymath}

The time is discretized and indexed by a variable $t\in\N$. The nodes can be in
one of three states: \emph{susceptible}, \emph{infected} or \emph{immune}.
Let us denote by $S_t$ the set of nodes susceptible at the beginning of time
step $t\in\N$ and by $I_t$ the set of nodes who become infected at this time
step. The following dynamics:
\begin{displaymath}
    S_0 = V,\quad S_{t+1} = S_t \setminus I_t
\end{displaymath}
expresses that the nodes infected at a time step are no longer susceptible
starting from the next time step (they become part of the immune nodes).

The dynamics of $I_t$ are described by a random Markovian process. Let us
denote by $x_t$ the indicator vector of $I_t$ at time step $t\in\N$. $x_0$ is
drawn from a \emph{source distribution} $p_s:\{0,1\}^n\to[0,1]$. For $t\geq 1$,
we have:
\begin{equation}
    \label{eq:markov}
    \forall i\in S_t,\quad
    \P\big(x_{i}^{t} = 1\,|\, x^{t-1}\big) = f(\bt_i\cdot x^{t-1})
\end{equation}
where $\bt_i$ is the $i$th column of $\Theta$. The function $f:\R\to[0,1]$ can
be interpreted as the inverse link function of the model. Finally, the
transitions in \cref{eq:markov} occur independently for each $i$. A cascade
continues until no infected nodes remains.

As noted in \cite{pouget} many commonly studied contagion models can be cast as
specific instances of the GLC model. In particular the Independent Cascade
model of \cite{Kempe:03} which we will use as a running example corresponds to
the specific case where $f(z) = 1 - e^{-z}$.

\Cref{eq:markov} and a source distribution $p_s$ together completely specify
the probability distribution of a cascade $\mathbf{x} = (x_t)_{t\geq 0}$ given
$\Theta$ and allow us to write the log-likelihood of the model:
\begin{equation}
    \label{eq:dist}
    \begin{split}
        \mathcal{L}(\Theta\,|\, \mathbf{x}) = &\log p_s(x^0)\\
    & + \sum_{t\geq 1}\sum_{i\in S_t}\Big(x_i^t\log f(\bt_i\cdot x^{t-1})\\
    &+ (1-x_i^t)\log\big(1-f(\bt_i\cdot x^{t-1})\big)\Big)
    \end{split}
\end{equation}

\paragraph{MLE estimation.}
It follows from the form of \cref{eq:dist} that the log-likelihood of $\Theta$
given cascade data can be written as the sum of $k$ terms, each term $i$ only
depending on $\bt_i$. Hence, each $\bt_i$ can be learnt separately by solving
a node-specific optimization problem. Specifically, for a given node $i$, if we
concatenate together all the time steps $t$ where this node was susceptible and
write $y^t = x^{t+1}_i$, \emph{i.e} whether or not the node became infected at
the next time step, the MLE estimator for $\bt_i$ is obtained by solving the
following optimization problem:
\begin{equation}
    \label{eq:mle}
    \begin{split}
        \hat{\bt}_i\in \argmax_\theta \sum_{t} &y^t\log f(\theta\cdot x^t)\\
        &+ (1-y^t) \log \big(1 - f(\theta\cdot x^t)\big)
    \end{split}
\end{equation}
It is interesting to note that at the node-level, doing MLE inference for the
GLC model is exactly amounts to fitting a Generalized Linear Model. When $f$ is
log-concave as is the case in most examples of GLC models, then the above
optimization problem becomes a convex optimization problem which can be solved
exactly and efficiently. 
