Zbog velikog spektra primena, kao i izuzetno jednostavne definicije i osnovnih svojstava, grafovi su našli i veliku primenu u mnogim matematičkim oblastima poput kombinatorike, operacionih istraživanja, linearne algebre, računarstva itd.
Definicija 1: Graf $G$ predstavlja uređeni par $(V,E)$. Elementi skupa $V$ se nazivaju čvorovi (eng. vertex), a elementi skupa $E$ grane (eng. edge) grafa $G$ gde je $E \subseteq V \times V$. Dva čvora $u,v$ su susedni ako su spojeni granom $e=(u,v)$. Za čvor $u$ i granu $e$ tada kažemo da su incidentni.
Grafovi se prema usmerenosti mogu podeliti na:
Grafovi se grafički predstavljaju na sledeći način:
Na slici su dati primeri 2 grafa:
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from matplotlib import rcParams
rcParams["figure.figsize"] = 15, 10
img_A = mpimg.imread("pictures/da.png")
img_B = mpimg.imread("pictures/ne.png")
fig, ax = plt.subplots(1,2)
ax[0].imshow(img_A)
ax[1].imshow(img_B);
Grafovi su apstraktni pojmovi koji se mogu susresti u svakodnevnom životu i značajni su jer se veliki broj koncepata može modelovati njima. Ako posmatramo neku geografsku mapu sa mnoštvom gradova koji su povezani nekim putevima-dobijamo jedan graf. Strukturna formula nekog molekula ili jedinjenja predstavlja takođe jedan graf . Društvene mreže se prirodno mogu opisati grafom u kojem se svakom korisniku društvene mreže dodeljuje čvor, a grana između dva čvora postoji ukoliko su korisnici 'prijatelji' (facebook, neusmeren graf), ili ako jedan korisnik 'prati' drugog korisnika (Twitter, usmeren graf).
S obzirom da postoji veliki broj podataka u problemima koji se modeluju grafovima, postavlja se pitanje izbora njihove reprezentacije u računarima. Najčešće se za predstavljanje grafova koristi matrična reprezentacija.
Definicija 2: Matrica susedstva $A$ grafa $G=(V,E)$, dimenzija $\vert V \vert \times \vert V \vert$, definiše se na sledeći način:
$$A_{ij}= \begin{cases} 1 & (i, j) \in E \\ 0 & (i, j) \notin E \\ \end{cases} $$Ako je graf neusmeren, onda je matrica A simetrična, pa nije potrebno čuvati sve elemente matrice, već samo njenu gornje-trougaonu reprezentaciju. Čak i ako grafovi nisu neusmereni, oni su često retki, odnosno, nemaju veliki broj grana, pa se matrice susedstava čuvaju u specifičnim strukturama podataka koje se nazivaju retke matrice. One imaju dve značajne pogodnosti za korišćenje u odnosu na ne-retke matrice.
Konvolutivne neuronske mreže (CNNs) su uspešno rešavale probleme klasifikacije slika ili semantičke segmentacije, gde podaci imaju strukturu nalik mreži. Međutim mnogi zanimljivi problemi uključuju podatke koji se ne mogu predstaviti u mrežnoj strukturi i koji se zasnivaju na neregularnom domenu. Ovo je slučaj sa društvenim mrežama, telekomunikacionim mrežama, moždanim konektorima itd. Takvi podaci se obično mogu predstaviti u obliku grafa (kao što je opisano u prethodnim primerima).
Pravilo propagacije kod grafovskih neuronskih mreža je definisano na sledeći način:
$$ H^{(k+1)} = \sigma \bigl(\hat{A}H^{(k)}W^{(k)}\bigr) $$gde je sa $k$ numerisan sloj mreže, $\sigma$ je aktivaciona funkcija, $H^{(0)}=X$, tj. ulazna matrica prediktora, $\hat{A} = \tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}$ simetrična normalizovana matrica susedstva grafa $G$ sa dodatim petljama za svaki čvor, gde je $\tilde{A} = A+I_N$ ($N$ je broj čvorova, $A$ je matrica susedstva) i $\tilde{D}_{ii} = \sum_{j}^{}\tilde{A}_{ij}$, $W^{(k)}$ je matrica parametara modela za sloj $k$.
Matrica susedstva se normalizuje da bi proces optimizacije kroz duboku neuronsku mrežu bio stabilniji. Dakle, arhitektura je slična kao kod potpuno povezanih neuronskih mreža, samo što je dodata i matrica susedstva čvorova grafa.
Primer grafovske neuronske mreže sa dva sloja je:
Gde je $W^{(0)} \in \mathbb{R}^{d \times h^{(0)}}$ matrica parametara za sloj koji spaja ulazne podatke dimenzije $d$ i podatke prvog skrivenog sloja dimenzije $h^{(0)}$, a $W^{(1)} \in \mathbb{R}^{h^{(0)} \times h^{(1)}}$ je matrica parametara za sloj koji spaja skrivene podatke i izlazne podatke. Na izlazu iz ulaznog sloja primenjuje se aktivaciona funkcija LeakyReLU, a na izlazu iz skrivenog sloja primenjuje se aktivaciona funkcija softmax. Ove dve funkcije su definisane sledećim formulama:
$$ \text{LeakyReLU(x)} = \max(\alpha x, x), \alpha >0 $$$$ \text{softmax}(x_j) = \frac{\exp(x_j)}{\sum_{i}^{}\exp(x_i)} $$