diff --git a/img/ccnn.pgf b/img/ccnn.pgf new file mode 100644 index 0000000..bbeb13b --- /dev/null +++ b/img/ccnn.pgf @@ -0,0 +1,96 @@ +%\newlength{\layer} +\newlength{\layerheight} +\newlength{\perspective} +\newlength{\filters} +%\newlength{\unit} + +\setlength{\layer}{3cm} +\setlength{\layerheight}{3cm} +\setlength{\perspective}{1cm} +\setlength{\filters}{0.01cm} +\setlength{\unit}{0.225cm} + +\begin{tikzpicture} + +% first layer +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (\layer, 0cm) -- (\layer + 180 * \filters, 0cm) -- (\layer + 180 * \filters + \perspective, \perspective) -- (\layer + \perspective, \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (\layer + \perspective, \perspective) -- (\layer + 180 * \filters + \perspective, \perspective) -- (\layer + 180 * \filters + \perspective, \perspective + \layerheight) -- (\layer + \perspective, \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (\layer, 0cm) -- (\layer + \perspective, \perspective) -- (\layer + \perspective, \perspective + \layerheight) -- (\layer, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (\layer, 0cm) -- (\layer + 180 * \filters, 0cm) -- (\layer + 180 * \filters, \layerheight) -- (\layer, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (\layer + 180 * \filters, 0cm) -- (\layer + 180 * \filters + \perspective, \perspective) -- (\layer + 180 * \filters + \perspective, \perspective + \layerheight) -- (\layer + 180 * \filters, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (\layer, \layerheight) -- (\layer + 180 * \filters, \layerheight) -- (\layer + 180 * \filters + \perspective, \perspective + \layerheight) -- (\layer + \perspective, \perspective + \layerheight) -- cycle; +\node[anchor=north west, scale=0.65] at (\layer, 0cm) {$180 @ 12 \times 15$}; + +% second layer +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer, 0cm) -- (2 * \layer + 100 * \filters, 0cm) -- (2 * \layer + 100 * \filters + \perspective, \perspective) -- (2 * \layer + \perspective, \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer + \perspective, \perspective) -- (2 * \layer + 100 * \filters + \perspective, \perspective) -- (2 * \layer + 100 * \filters + \perspective, \perspective + \layerheight) -- (2 * \layer + \perspective, \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer, 0cm) -- (2 * \layer + \perspective, \perspective) -- (2 * \layer + \perspective, \perspective + \layerheight) -- (2 * \layer, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer, 0cm) -- (2 * \layer + 100 * \filters, 0cm) -- (2 * \layer + 100 * \filters, \layerheight) -- (2 * \layer, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer + 100 * \filters, 0cm) -- (2 * \layer + 100 * \filters + \perspective, \perspective) -- (2 * \layer + 100 * \filters + \perspective, \perspective + \layerheight) -- (2 * \layer + 100 * \filters, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer, \layerheight) -- (2 * \layer + 100 * \filters, \layerheight) -- (2 * \layer + 100 * \filters + \perspective, \perspective + \layerheight) -- (2 * \layer + \perspective, \perspective + \layerheight) -- cycle; +\node[anchor=north west, scale=0.65] at (2 * \layer, 0cm) {$100 @ 12 \times 15$}; + +% third layer +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, 0cm) -- (3 * \layer + 40 * \filters, 0cm) -- (3 * \layer + 40 * \filters + \perspective, \perspective) -- (3 * \layer + \perspective, \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer + \perspective, \perspective) -- (3 * \layer + 40 * \filters + \perspective, \perspective) -- (3 * \layer + 40 * \filters + \perspective, \perspective + \layerheight) -- (3 * \layer + \perspective, \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, 0cm) -- (3 * \layer + \perspective, \perspective) -- (3 * \layer + \perspective, \perspective + \layerheight) -- (3 * \layer, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, 0cm) -- (3 * \layer + 40 * \filters, 0cm) -- (3 * \layer + 40 * \filters, \layerheight) -- (3 * \layer, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer + 40 * \filters, 0cm) -- (3 * \layer + 40 * \filters + \perspective, \perspective) -- (3 * \layer + 40 * \filters + \perspective, \perspective + \layerheight) -- (3 * \layer + 40 * \filters, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, \layerheight) -- (3 * \layer + 40 * \filters, \layerheight) -- (3 * \layer + 40 * \filters + \perspective, \perspective + \layerheight) -- (3 * \layer + \perspective, \perspective + \layerheight) -- cycle; +\node[anchor=north west, scale=0.65] at (3 * \layer, 0cm) {$40 @ 12 \times 15$}; + +% fourth layer +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer, 0cm) -- (4 * \layer + 20 * \filters, 0cm) -- (4 * \layer + 20 * \filters + \perspective, \perspective) -- (4 * \layer + \perspective, \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer + \perspective, \perspective) -- (4 * \layer + 20 * \filters + \perspective, \perspective) -- (4 * \layer + 20 * \filters + \perspective, \perspective + \layerheight) -- (4 * \layer + \perspective, \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer, 0cm) -- (4 * \layer + \perspective, \perspective) -- (4 * \layer + \perspective, \perspective + \layerheight) -- (4 * \layer, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer, 0cm) -- (4 * \layer + 20 * \filters, 0cm) -- (4 * \layer + 20 * \filters, \layerheight) -- (4 * \layer, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer + 20 * \filters, 0cm) -- (4 * \layer + 20 * \filters + \perspective, \perspective) -- (4 * \layer + 20 * \filters + \perspective, \perspective + \layerheight) -- (4 * \layer + 20 * \filters, \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer, \layerheight) -- (4 * \layer + 20 * \filters, \layerheight) -- (4 * \layer + 20 * \filters + \perspective, \perspective + \layerheight) -- (4 * \layer + \perspective, \perspective + \layerheight) -- cycle; +\node[anchor=north west, scale=0.65] at (4 * \layer, 0cm) {$20 @ 12 \times 15$}; + +% flatten layer +\foreach \x in {2,...,7} { + \filldraw[fill=cyan!10, draw=black] (4 * \layer + 3cm, 0.5cm * \x) circle (\unit); + \draw (4 * \layer + 3cm + \unit, 0.5cm * \x) -- (5 * \layer + 2cm - \unit, 2.5cm); +}; +\node[anchor=north, scale=0.5, below=15pt, align=center] at (4 * \layer + 3cm, 1cm) {flatten}; + +% output layer +\filldraw[fill=cyan!10, draw=black] (5 * \layer + 2cm, 2.5cm - \unit) -- (5 * \layer + 2cm, 2.5cm) circle (\unit) -- (5 * \layer + 2cm, 2.5cm + \unit); +\draw (5 * \layer + 2cm + 0.05cm, 2.5cm) node[anchor=north, below=10pt, text width=2cm, scale=0.35, align=center] {output layer [1 unit]} -- (5 * \layer + 2cm + 0.10cm, 2.5cm) -- (5 * \layer + 2cm + 0.15cm, 2.5cm + 0.05cm); + +% draw first convolution +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (\layer + 180 * \filters, \layerheight) -- (\layer + 180 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- (\layer + 180 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective - 0.3 * \layerheight) -- (\layer + 180 * \filters, \layerheight - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (\layer + 180 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- (2 * \layer, 0.8 * \layerheight) -- (\layer + 180 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (\layer + 180 * \filters, \layerheight - 0.3 * \layerheight) -- (2 * \layer, 0.8 * \layerheight) -- (\layer + 180 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (\layer + 180 * \filters, \layerheight) -- (2 * \layer, 0.8 * \layerheight) -- (\layer + 180 * \filters, \layerheight - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (\layer + 180 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- (2 * \layer, 0.8 * \layerheight) -- (\layer + 180 * \filters, \layerheight) -- cycle; + +% draw second convolution +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (2 * \layer + 100 * \filters, 0.4 * \layerheight) -- (2 * \layer + 100 * \filters + 0.4 * \perspective, 0.4 * \layerheight + 0.4 * \perspective) -- (2 * \layer + 100 * \filters + 0.4 * \perspective, 0.4 * \layerheight + 0.4 * \perspective - 0.3 * \layerheight) -- (2 * \layer + 100 * \filters, 0.4 * \layerheight - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (2 * \layer + 100 * \filters + 0.4 * \perspective, 0.4 * \layerheight + 0.4 * \perspective) -- (3 * \layer, 0.2 * \layerheight) -- (2 * \layer + 100 * \filters + 0.4 * \perspective, 0.4 * \layerheight + 0.4 * \perspective - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (2 * \layer + 100 * \filters, 0.4 * \layerheight - 0.3 * \layerheight) -- (3 * \layer, 0.2 * \layerheight) -- (2 * \layer + 100 * \filters + 0.4 * \perspective, 0.4 * \layerheight + 0.4 * \perspective - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (2 * \layer + 100 * \filters, 0.4 * \layerheight) -- (3 * \layer, 0.2 * \layerheight) -- (2 * \layer + 100 * \filters, 0.4 * \layerheight - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (2 * \layer + 100 * \filters + 0.4 * \perspective, 0.4 * \layerheight + 0.4 * \perspective) -- (3 * \layer, 0.2 * \layerheight) -- (2 * \layer + 100 * \filters, 0.4 * \layerheight) -- cycle; + +% draw third convolution +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (3 * \layer + 40 * \filters, 0.6 * \layerheight) -- (3 * \layer + 40 * \filters + 0.4 * \perspective, 0.6 * \layerheight + 0.4 * \perspective) -- (3 * \layer + 40 * \filters + 0.4 * \perspective, 0.6 * \layerheight + 0.4 * \perspective - 0.3 * \layerheight) -- (3 * \layer + 40 * \filters, 0.6 * \layerheight - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (3 * \layer + 40 * \filters + 0.4 * \perspective, 0.6 * \layerheight + 0.4 * \perspective) -- (4 * \layer, 0.3 * \layerheight) -- (3 * \layer + 40 * \filters + 0.4 * \perspective, 0.6 * \layerheight + 0.4 * \perspective - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (3 * \layer + 40 * \filters, 0.6 * \layerheight - 0.3 * \layerheight) -- (4 * \layer, 0.3 * \layerheight) -- (3 * \layer + 40 * \filters + 0.4 * \perspective, 0.6 * \layerheight + 0.4 * \perspective - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (3 * \layer + 40 * \filters, 0.6 * \layerheight) -- (4 * \layer, 0.3 * \layerheight) -- (3 * \layer + 40 * \filters, 0.6 * \layerheight - 0.3 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.5] (3 * \layer + 40 * \filters + 0.4 * \perspective, 0.6 * \layerheight + 0.4 * \perspective) -- (4 * \layer, 0.3 * \layerheight) -- (3 * \layer + 40 * \filters, 0.6 * \layerheight) -- cycle; + +% draw the "flatenisation" +\draw[dashed] (4 * \layer + 20 * \filters, \layerheight) -- (4 * \layer + 3 cm, 3.5cm + \unit) -- (4 * \layer + 20 * \filters + \perspective, \layerheight + \perspective) -- cycle; +\draw[dashed] (4 * \layer + 20 * \filters, 0cm) -- (4 * \layer + 3 cm, 1cm - \unit) -- (4 * \layer + 20 * \filters + \perspective, \perspective) -- cycle; + +% hidden layer labels +\node[anchor=base, align=center, text width=3.9cm, scale=0.75] (c) at (11cm, 5.5cm) {convolutional layers ($5 \times 5$ kernel, ReLU activation)}; +\draw[->] (c) -- (\layer + 180 * \filters + \perspective, \layerheight + \perspective + \unit); +\draw[->] (c) -- (2 * \layer + 100 * \filters + \perspective, \layerheight + \perspective + \unit); +\draw[->] (c) -- (3 * \layer + 40 * \filters + \perspective, \layerheight + \perspective + \unit); +\draw[->] (c) -- (4 * \layer + 0.5 * \perspective, \layerheight + \perspective + \unit); + +\end{tikzpicture} + +% vim: ft=tex diff --git a/img/cicy_best_plots.pdf b/img/cicy_best_plots.pdf new file mode 100644 index 0000000..7b21b63 Binary files /dev/null and b/img/cicy_best_plots.pdf differ diff --git a/img/cicy_matrix_plots.pdf b/img/cicy_matrix_plots.pdf new file mode 100644 index 0000000..e23ca95 Binary files /dev/null and b/img/cicy_matrix_plots.pdf differ diff --git a/img/corr-matrix_orig.pdf b/img/corr-matrix_orig.pdf new file mode 100644 index 0000000..6c2d163 Binary files /dev/null and b/img/corr-matrix_orig.pdf differ diff --git a/img/fc.pgf b/img/fc.pgf new file mode 100644 index 0000000..e728d86 --- /dev/null +++ b/img/fc.pgf @@ -0,0 +1,160 @@ +\newlength{\unit} +\newlength{\layer} + +\setlength{\unit}{0.225cm} +\setlength{\layer}{1cm} + +\begin{tikzpicture} + +% draw the first layer +\filldraw[fill=cyan!10, draw=black] (\layer, -0.75cm - \unit) -- (\layer, -0.75cm) circle (\unit) -- (\layer, -0.75cm + \unit); +\draw (\layer + 0.05cm, -0.75cm) node[anchor=north, below=10pt, text width=2cm, scale=0.35, align=center] {FC layer [876 units]} -- (\layer + 0.10cm, -0.75cm) -- (\layer + 0.15cm, -0.75cm + 0.05cm); +\node[anchor=base, scale=0.35] at (\layer, -0.75cm + 1.25 * \unit) {$\vdots$}; + +\foreach \x in {0,...,5} { + \filldraw[fill=cyan!10, draw=black] (\layer, 0.5cm * \x - \unit) -- (\layer, 0.5cm * \x) circle (\unit) -- (\layer, 0.5cm * \x + \unit); + \draw (\layer + 0.05cm, 0.5cm * \x) -- (\layer + 0.10cm, 0.5cm * \x) -- (\layer + 0.15cm, 0.5cm * \x + 0.05cm); +}; + +\filldraw[fill=cyan!10, draw=black] (\layer, 3.25cm - \unit) -- (\layer, 3.25cm) circle (\unit) -- (\layer, 3.25cm + \unit); +\draw (\layer + 0.05cm, 3.25cm) -- (\layer + 0.10cm, 3.25cm) -- (\layer + 0.15cm, 3.25cm + 0.05cm); +\node[anchor=base, scale=0.35] at (\layer, 3.25cm - 2\unit) {$\vdots$}; + +% draw the second layer +\filldraw[fill=cyan!10, draw=black] (2 * \layer, -\unit) -- (2 * \layer, 0cm) circle (\unit) -- (2 * \layer, \unit); +\draw (2 * \layer + 0.05cm, 0cm) node[anchor=north, below=10pt, text width=2cm, scale=0.35, align=center] {FC layer [461 units]} -- (2 * \layer + 0.10cm, 0cm) -- (2 * \layer + 0.15cm, 0.05cm); +\node[anchor=base, scale=0.35] at (2 * \layer, 1.25 * \unit) {$\vdots$}; + +\foreach \x in {1.5,...,3.5} { + \filldraw[fill=cyan!10, draw=black] (2 * \layer, 0.5cm * \x - \unit) -- (2 * \layer, 0.5cm * \x) circle (\unit) -- (2 * \layer, 0.5cm * \x + \unit); + \draw (2 * \layer + 0.05cm, 0.5cm * \x) -- (2 * \layer + 0.10cm, 0.5cm * \x) -- (2 * \layer + 0.15cm, 0.5cm * \x + 0.05cm); +}; + +\filldraw[fill=cyan!10, draw=black] (2 * \layer, 2.5cm - \unit) -- (2 * \layer, 2.5cm) circle (\unit) -- (2 * \layer, 2.5cm + \unit); +\draw (2 * \layer + 0.05cm, 2.5cm) -- (2 * \layer + 0.10cm, 2.5cm) -- (2 * \layer + 0.15cm, 2.5cm + 0.05cm); +\node[anchor=base, scale=0.35] at (2 * \layer, 2.5cm - 2\unit) {$\vdots$}; + +% draw the third layer +\filldraw[fill=cyan!10, draw=black] (3 * \layer, -\unit) -- (3 * \layer, 0cm) circle (\unit) -- (3 * \layer, \unit); +\draw (3 * \layer + 0.05cm, 0cm) node[anchor=north, below=10pt, text width=2cm, scale=0.35, align=center] {FC layer [437 units]} -- (3 * \layer + 0.10cm, 0cm) -- (3 * \layer + 0.15cm, 0.05cm); +\node[anchor=base, scale=0.35] at (3 * \layer, 1.25 * \unit) {$\vdots$}; + +\foreach \x in {1.5,...,3.5} { + \filldraw[fill=cyan!10, draw=black] (3 * \layer, 0.5cm * \x - \unit) -- (3 * \layer, 0.5cm * \x) circle (\unit) -- (3 * \layer, 0.5cm * \x + \unit); + \draw (3 * \layer + 0.05cm, 0.5cm * \x) -- (3 * \layer + 0.10cm, 0.5cm * \x) -- (3 * \layer + 0.15cm, 0.5cm * \x + 0.05cm); +}; + +\filldraw[fill=cyan!10, draw=black] (3 * \layer, 2.5cm - \unit) -- (3 * \layer, 2.5cm) circle (\unit) -- (3 * \layer, 2.5cm + \unit); +\draw (3 * \layer + 0.05cm, 2.5cm) -- (3 * \layer + 0.10cm, 2.5cm) -- (3 * \layer + 0.15cm, 2.5cm + 0.05cm); +\node[anchor=base, scale=0.35] at (3 * \layer, 2.5cm - 2\unit) {$\vdots$}; + +% draw the fourth layer +\filldraw[fill=cyan!10, draw=black] (4 * \layer, -0.75cm - \unit) -- (4 * \layer, -0.75cm) circle (\unit) -- (4 * \layer, -0.75cm + \unit); +\draw (4 * \layer + 0.05cm, -0.75cm) node[anchor=north, below=10pt, text width=2cm, scale=0.35, align=center] {FC layer [929 units]} -- (4 * \layer + 0.10cm, -0.75cm) -- (4 * \layer + 0.15cm, -0.75cm + 0.05cm); +\node[anchor=base, scale=0.35] at (4 * \layer, -0.75cm + 1.25 * \unit) {$\vdots$}; + +\foreach \x in {0,...,5} { + \filldraw[fill=cyan!10, draw=black] (4 * \layer, 0.5cm * \x - \unit) -- (4 * \layer, 0.5cm * \x) circle (\unit) -- (4 * \layer, 0.5cm * \x + \unit); + \draw (4 * \layer + 0.05cm, 0.5cm * \x) -- (4 * \layer + 0.10cm, 0.5cm * \x) -- (4 * \layer + 0.15cm, 0.5cm * \x + 0.05cm); +}; + +\filldraw[fill=cyan!10, draw=black] (4 * \layer, 3.25cm - \unit) -- (4 * \layer, 3.25cm) circle (\unit) -- (4 * \layer, 3.25cm + \unit); +\draw (4 * \layer + 0.05cm, 3.25cm) -- (4 * \layer + 0.10cm, 3.25cm) -- (4 * \layer + 0.15cm, 3.25cm + 0.05cm); +\node[anchor=base, scale=0.35] at (4 * \layer, 3.25cm - 2\unit) {$\vdots$}; + +% draw the fifth layer +\filldraw[fill=cyan!10, draw=black] (5 * \layer, -\unit) -- (5 * \layer, 0cm) circle (\unit) -- (5 * \layer, \unit); +\draw (5 * \layer + 0.05cm, 0cm) node[anchor=north, below=10pt, text width=2cm, scale=0.35, align=center] {FC layer [404 units]} -- (5 * \layer + 0.10cm, 0cm) -- (5 * \layer + 0.15cm, 0.05cm); +\node[anchor=base, scale=0.35] at (5 * \layer, 1.25 * \unit) {$\vdots$}; + +\foreach \x in {1.5,...,3.5} { + \filldraw[fill=cyan!10, draw=black] (5 * \layer, 0.5cm * \x - \unit) -- (5 * \layer, 0.5cm * \x) circle (\unit) -- (5 * \layer, 0.5cm * \x + \unit); + \draw (5 * \layer + 0.05cm, 0.5cm * \x) -- (5 * \layer + 0.10cm, 0.5cm * \x) -- (5 * \layer + 0.15cm, 0.5cm * \x + 0.05cm); +}; + +\filldraw[fill=cyan!10, draw=black] (5 * \layer, 2.5cm - \unit) -- (5 * \layer, 2.5cm) circle (\unit) -- (5 * \layer, 2.5cm + \unit); +\draw (5 * \layer + 0.05cm, 2.5cm) -- (5 * \layer + 0.10cm, 2.5cm) -- (5 * \layer + 0.15cm, 2.5cm + 0.05cm); +\node[anchor=base, scale=0.35] at (5 * \layer, 2.5cm - 2\unit) {$\vdots$}; + +% draw the output layer +\filldraw[fill=cyan!10, draw=black] (6 * \layer, 1.25cm - \unit) -- (6 * \layer, 1.25cm) circle (\unit) -- (6 * \layer, 1.25cm + \unit); +\draw (6 * \layer + 0.05cm, 1.25cm) node[anchor=north, below=10pt, text width=2cm, scale=0.35, align=center] {output layer [1 unit]} -- (6 * \layer + 0.10cm, 1.25cm) -- (6 * \layer + 0.15cm, 1.25cm + 0.05cm); + +% draw weights 1 --> 2 and 4 --> 5 +\foreach \x in {\layer, 4 * \layer} { + \foreach \y in {-0.75cm, 3.25cm} { + \foreach \z in {0cm, 2.5cm} { + \draw (\x + \unit, \y) -- (\x + \layer - \unit, \z); + }; + }; + \foreach \y in {0,...,5} { + \foreach \z in {1.5,...,3.5} { + \draw (\x + \unit, 0.5cm * \y) -- (\x + \layer - \unit, 0.5cm * \z); + }; + \foreach \z in {0cm, 2.5cm} { + \draw (\x + \unit, 0.5 * \y) -- (\x + \layer - \unit, \z); + }; + }; + \foreach \y in {1.5,...,3.5} { + \draw (\x + \unit, 3.25cm) -- (\x + \layer - \unit, 0.5cm * \y); + \draw (\x + \unit, -0.75cm) -- (\x + \layer - \unit, 0.5cm * \y); + }; +}; + +% draw weights 2 --> 3 +\foreach \y in {0cm, 2.5cm} { + \foreach \z in {0cm, 2.5cm} { + \draw (2 * \layer + \unit, \y) -- (2 * \layer + \layer - \unit, \z); + }; +}; +\foreach \y in {1.5,...,3.5} { + \foreach \z in {1.5,...,3.5} { + \draw (2 * \layer + \unit, 0.5cm * \y) -- (2 * \layer + \layer - \unit, 0.5cm * \z); + }; + \foreach \z in {0cm, 2.5cm} { + \draw (2 * \layer + \unit, 0.5cm * \y) -- (2 * \layer + \layer - \unit, \z); + }; +}; +\foreach \y in {1.5,...,3.5} { + \draw (2 * \layer + \unit, 2.5cm) -- (2 * \layer + \layer - \unit, 0.5cm * \y); + \draw (2 * \layer + \unit, 0cm) -- (2 * \layer + \layer - \unit, 0.5cm * \y); +}; + +% draw weights 3 --> 4 +\foreach \y in {0cm, 2.5cm} { + \foreach \z in {-0.75cm, 3.25cm} { + \draw (3 * \layer + \unit, \y) -- (3 * \layer + \layer - \unit, \z); + }; +}; +\foreach \y in {1.5,...,3.5} { + \foreach \z in {0,...,5} { + \draw (3 * \layer + \unit, 0.5cm * \y) -- (3 * \layer + \layer - \unit, 0.5cm * \z); + }; + \foreach \z in {0cm, 2.5cm} { + \draw (3 * \layer + \unit, 0.5cm * \y) -- (3 * \layer + \layer - \unit, \z); + }; +}; +\foreach \y in {0,...,5} { + \draw (3 * \layer + \unit, 2.5cm) -- (3 * \layer + \layer - \unit, 0.5cm * \y); + \draw (3 * \layer + \unit, 0cm) -- (3 * \layer + \layer - \unit, 0.5cm * \y); +}; + +% draw weights 5 --> output +\foreach \y in {0cm, 2.5cm} { + \draw (5 * \layer + \unit, \y) -- (5 * \layer + \layer - \unit, 1.25cm); +}; +\foreach \y in {1.5,...,3.5} { + \draw (5 * \layer + \unit, 0.5cm * \y) -- (5 * \layer + \layer - \unit, 1.25cm); +}; + +% draw hidden layers legend +\node[anchor=base, align=center, text width=3.5cm, scale=0.5] (h) at (4cm, 4.5cm) {hidden layers (ReLU activation)}; +\draw[->] (h) -- (\layer + \unit, 3.6cm); +\draw[->] (h) -- (2 * \layer + \unit, 2.85cm); +\draw[->] (h) -- (3 * \layer + 0.5 * \unit, 2.85cm); +\draw[->] (h) -- (4 * \layer, 3.6cm); +\draw[->] (h) -- (5 * \layer - 0.5 * \unit, 2.85cm); + +\end{tikzpicture} + +% vim: ft=tex \ No newline at end of file diff --git a/img/icnn.pgf b/img/icnn.pgf new file mode 100644 index 0000000..62ebb18 --- /dev/null +++ b/img/icnn.pgf @@ -0,0 +1,193 @@ +%\newlength{\layer} +%\newlength{\layerheight} +%\newlength{\perspective} +%\newlength{\filters} +%\newlength{\unit} +\newlength{\upperlevel} +\newlength{\bottomlevel} +\newlength{\concatheight} + +\setlength{\layer}{3cm} +\setlength{\layerheight}{3cm} +\setlength{\perspective}{1cm} +\setlength{\filters}{0.01cm} +\setlength{\unit}{0.225cm} +\setlength{\upperlevel}{2.25cm} +\setlength{\bottomlevel}{-2.25cm} +\setlength{\concatheight}{0cm} + +\usetikzlibrary{decorations.pathreplacing} + +\begin{tikzpicture} + +% input layer +\filldraw[fill=cyan!20, draw=black, fill opacity=0.5] (1cm, 0cm) -- (1cm + \perspective, \perspective) -- (1cm + \perspective, \perspective + \layerheight) -- (1cm, \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (1cm, \layerheight) {$1 @ 12 \times 15$}; +\node[anchor=north west, scale=0.65] at (1cm, 0cm) {input layer}; + +% first layer +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (\layer, \upperlevel) -- (\layer + 32 * \filters, \upperlevel) -- (\layer + 32 * \filters + \perspective, \upperlevel + \perspective) -- (\layer + \perspective, \upperlevel + \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (\layer + \perspective, \upperlevel + \perspective) -- (\layer + 32 * \filters + \perspective, \upperlevel + \perspective) -- (\layer + 32 * \filters + \perspective, \upperlevel + \perspective + \layerheight) -- (\layer + \perspective, \upperlevel + \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (\layer, \upperlevel) -- (\layer + \perspective, \upperlevel + \perspective) -- (\layer + \perspective, \upperlevel + \perspective + \layerheight) -- (\layer, \upperlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (\layer, \upperlevel) -- (\layer + 32 * \filters, \upperlevel) -- (\layer + 32 * \filters, \upperlevel + \layerheight) -- (\layer, \upperlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (\layer + 32 * \filters, \upperlevel) -- (\layer + 32 * \filters + \perspective, \upperlevel + \perspective) -- (\layer + 32 * \filters + \perspective, \upperlevel + \perspective + \layerheight) -- (\layer + 32 * \filters, \upperlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (\layer, \upperlevel + \layerheight) -- (\layer + 32 * \filters, \upperlevel + \layerheight) -- (\layer + 32 * \filters + \perspective, \upperlevel + \perspective + \layerheight) -- (\layer + \perspective, \upperlevel + \perspective + \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (\layer, \upperlevel + \layerheight) {$32 @ 12 \times 15$}; + +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (\layer, \bottomlevel) -- (\layer + 32 * \filters, \bottomlevel) -- (\layer + 32 * \filters + \perspective, \bottomlevel + \perspective) -- (\layer + \perspective, \bottomlevel + \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (\layer + \perspective, \bottomlevel + \perspective) -- (\layer + 32 * \filters + \perspective, \bottomlevel + \perspective) -- (\layer + 32 * \filters + \perspective, \bottomlevel + \perspective + \layerheight) -- (\layer + \perspective, \bottomlevel + \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (\layer, \bottomlevel) -- (\layer + \perspective, \bottomlevel + \perspective) -- (\layer + \perspective, \bottomlevel + \perspective + \layerheight) -- (\layer, \bottomlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (\layer, \bottomlevel) -- (\layer + 32 * \filters, \bottomlevel) -- (\layer + 32 * \filters, \bottomlevel + \layerheight) -- (\layer, \bottomlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (\layer + 32 * \filters, \bottomlevel) -- (\layer + 32 * \filters + \perspective, \bottomlevel + \perspective) -- (\layer + 32 * \filters + \perspective, \bottomlevel + \perspective + \layerheight) -- (\layer + 32 * \filters, \bottomlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (\layer, \bottomlevel + \layerheight) -- (\layer + 32 * \filters, \bottomlevel + \layerheight) -- (\layer + 32 * \filters + \perspective, \bottomlevel + \perspective + \layerheight) -- (\layer + \perspective, \bottomlevel + \perspective + \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (\layer, \bottomlevel + \layerheight) {$32 @ 12 \times 15$}; + +% first concatenation +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer, \concatheight) -- (2 * \layer + 64 * \filters, \concatheight) -- (2 * \layer + 64 * \filters + \perspective, \concatheight + \perspective) -- (2 * \layer + \perspective, \concatheight + \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer + \perspective, \concatheight + \perspective) -- (2 * \layer + 64 * \filters + \perspective, \concatheight + \perspective) -- (2 * \layer + 64 * \filters + \perspective, \concatheight + \perspective + \layerheight) -- (2 * \layer + \perspective, \concatheight + \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer, \concatheight) -- (2 * \layer + \perspective, \concatheight + \perspective) -- (2 * \layer + \perspective, \concatheight + \perspective + \layerheight) -- (2 * \layer, \concatheight + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer, \concatheight) -- (2 * \layer + 64 * \filters, \concatheight) -- (2 * \layer + 64 * \filters, \concatheight + \layerheight) -- (2 * \layer, \concatheight + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer + 64 * \filters, \concatheight) -- (2 * \layer + 64 * \filters + \perspective, \concatheight + \perspective) -- (2 * \layer + 64 * \filters + \perspective, \concatheight + \perspective + \layerheight) -- (2 * \layer + 64 * \filters, \concatheight + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (2 * \layer, \concatheight + \layerheight) -- (2 * \layer + 64 * \filters, \concatheight + \layerheight) -- (2 * \layer + 64 * \filters + \perspective, \concatheight + \perspective + \layerheight) -- (2 * \layer + \perspective, \concatheight + \perspective + \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (2 * \layer, \concatheight + \layerheight) {$64 @ 12 \times 15$}; + +\draw (\layer + 32 * \filters + 1.2 * \perspective, \upperlevel + 0.5 * \layerheight) -- (\layer + 32 * \filters + 1.7 * \perspective, \upperlevel + 0.5 * \layerheight) -- (\layer + 32 * \filters + 1.7 * \perspective, \bottomlevel + 0.5 * \layerheight) -- (\layer + 32 * \filters + 1.2 * \perspective, \bottomlevel + 0.5 * \layerheight); +\filldraw[fill=red!20, draw=black] (\layer + 32 * \filters + 1.7 * \perspective, \concatheight + 0.5 * \layerheight) node[anchor=center, scale=0.8] {$C$} circle (\unit); +\draw[-latex] (\layer + 32 * \filters + 1.7 * \perspective + \unit, \concatheight + 0.5 * \layerheight) -- (\layer + 32 * \filters + 1.7 * \perspective + 3 * \unit, \concatheight + 0.5 * \layerheight); + +% second layer +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, \upperlevel) -- (3 * \layer + 64 * \filters, \upperlevel) -- (3 * \layer + 64 * \filters + \perspective, \upperlevel + \perspective) -- (3 * \layer + \perspective, \upperlevel + \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer + \perspective, \upperlevel + \perspective) -- (3 * \layer + 64 * \filters + \perspective, \upperlevel + \perspective) -- (3 * \layer + 64 * \filters + \perspective, \upperlevel + \perspective + \layerheight) -- (3 * \layer + \perspective, \upperlevel + \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, \upperlevel) -- (3 * \layer + \perspective, \upperlevel + \perspective) -- (3 * \layer + \perspective, \upperlevel + \perspective + \layerheight) -- (3 * \layer, \upperlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, \upperlevel) -- (3 * \layer + 64 * \filters, \upperlevel) -- (3 * \layer + 64 * \filters, \upperlevel + \layerheight) -- (3 * \layer, \upperlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer + 64 * \filters, \upperlevel) -- (3 * \layer + 64 * \filters + \perspective, \upperlevel + \perspective) -- (3 * \layer + 64 * \filters + \perspective, \upperlevel + \perspective + \layerheight) -- (3 * \layer + 64 * \filters, \upperlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, \upperlevel + \layerheight) -- (3 * \layer + 64 * \filters, \upperlevel + \layerheight) -- (3 * \layer + 64 * \filters + \perspective, \upperlevel + \perspective + \layerheight) -- (3 * \layer + \perspective, \upperlevel + \perspective + \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (3 * \layer, \upperlevel + \layerheight) {$64 @ 12 \times 15$}; + +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, \bottomlevel) -- (3 * \layer + 64 * \filters, \bottomlevel) -- (3 * \layer + 64 * \filters + \perspective, \bottomlevel + \perspective) -- (3 * \layer + \perspective, \bottomlevel + \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer + \perspective, \bottomlevel + \perspective) -- (3 * \layer + 64 * \filters + \perspective, \bottomlevel + \perspective) -- (3 * \layer + 64 * \filters + \perspective, \bottomlevel + \perspective + \layerheight) -- (3 * \layer + \perspective, \bottomlevel + \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, \bottomlevel) -- (3 * \layer + \perspective, \bottomlevel + \perspective) -- (3 * \layer + \perspective, \bottomlevel + \perspective + \layerheight) -- (3 * \layer, \bottomlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, \bottomlevel) -- (3 * \layer + 64 * \filters, \bottomlevel) -- (3 * \layer + 64 * \filters, \bottomlevel + \layerheight) -- (3 * \layer, \bottomlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer + 64 * \filters, \bottomlevel) -- (3 * \layer + 64 * \filters + \perspective, \bottomlevel + \perspective) -- (3 * \layer + 64 * \filters + \perspective, \bottomlevel + \perspective + \layerheight) -- (3 * \layer + 64 * \filters, \bottomlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (3 * \layer, \bottomlevel + \layerheight) -- (3 * \layer + 64 * \filters, \bottomlevel + \layerheight) -- (3 * \layer + 64 * \filters + \perspective, \bottomlevel + \perspective + \layerheight) -- (3 * \layer + \perspective, \bottomlevel + \perspective + \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (3 * \layer, \bottomlevel + \layerheight) {$64 @ 12 \times 15$}; + +% second concatenation +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer, \concatheight) -- (4 * \layer + 128 * \filters, \concatheight) -- (4 * \layer + 128 * \filters + \perspective, \concatheight + \perspective) -- (4 * \layer + \perspective, \concatheight + \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer + \perspective, \concatheight + \perspective) -- (4 * \layer + 128 * \filters + \perspective, \concatheight + \perspective) -- (4 * \layer + 128 * \filters + \perspective, \concatheight + \perspective + \layerheight) -- (4 * \layer + \perspective, \concatheight + \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer, \concatheight) -- (4 * \layer + \perspective, \concatheight + \perspective) -- (4 * \layer + \perspective, \concatheight + \perspective + \layerheight) -- (4 * \layer, \concatheight + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer, \concatheight) -- (4 * \layer + 128 * \filters, \concatheight) -- (4 * \layer + 128 * \filters, \concatheight + \layerheight) -- (4 * \layer, \concatheight + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer + 128 * \filters, \concatheight) -- (4 * \layer + 128 * \filters + \perspective, \concatheight + \perspective) -- (4 * \layer + 128 * \filters + \perspective, \concatheight + \perspective + \layerheight) -- (4 * \layer + 128 * \filters, \concatheight + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (4 * \layer, \concatheight + \layerheight) -- (4 * \layer + 128 * \filters, \concatheight + \layerheight) -- (4 * \layer + 128 * \filters + \perspective, \concatheight + \perspective + \layerheight) -- (4 * \layer + \perspective, \concatheight + \perspective + \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (4 * \layer, \concatheight + \layerheight) {$128 @ 12 \times 15$}; + +\draw (3 * \layer + 64 * \filters + 1.1 * \perspective, \upperlevel + 0.5 * \layerheight) -- (3 * \layer + 64 * \filters + 1.6 * \perspective, \upperlevel + 0.5 * \layerheight) -- (3 * \layer + 64 * \filters + 1.6 * \perspective, \bottomlevel + 0.5 * \layerheight) -- (3 * \layer + 64 * \filters + 1.1 * \perspective, \bottomlevel + 0.5 * \layerheight); +\filldraw[fill=red!20, draw=black] (3 * \layer + 64 * \filters + 1.6 * \perspective, \concatheight + 0.5 * \layerheight) node[anchor=center, scale=0.8] {$C$} circle (\unit); +\draw[-latex] (3 * \layer + 64 * \filters + 1.6 * \perspective + \unit, \concatheight + 0.5 * \layerheight) -- (3 * \layer + 64 * \filters + 1.6 * \perspective + 3 * \unit, \concatheight + 0.5 * \layerheight); + +% third layer +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer, \upperlevel) -- (5 * \layer + 32 * \filters, \upperlevel) -- (5 * \layer + 32 * \filters + \perspective, \upperlevel + \perspective) -- (5 * \layer + \perspective, \upperlevel + \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer + \perspective, \upperlevel + \perspective) -- (5 * \layer + 32 * \filters + \perspective, \upperlevel + \perspective) -- (5 * \layer + 32 * \filters + \perspective, \upperlevel + \perspective + \layerheight) -- (5 * \layer + \perspective, \upperlevel + \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer, \upperlevel) -- (5 * \layer + \perspective, \upperlevel + \perspective) -- (5 * \layer + \perspective, \upperlevel + \perspective + \layerheight) -- (5 * \layer, \upperlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer, \upperlevel) -- (5 * \layer + 32 * \filters, \upperlevel) -- (5 * \layer + 32 * \filters, \upperlevel + \layerheight) -- (5 * \layer, \upperlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer + 32 * \filters, \upperlevel) -- (5 * \layer + 32 * \filters + \perspective, \upperlevel + \perspective) -- (5 * \layer + 32 * \filters + \perspective, \upperlevel + \perspective + \layerheight) -- (5 * \layer + 32 * \filters, \upperlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer, \upperlevel + \layerheight) -- (5 * \layer + 32 * \filters, \upperlevel + \layerheight) -- (5 * \layer + 32 * \filters + \perspective, \upperlevel + \perspective + \layerheight) -- (5 * \layer + \perspective, \upperlevel + \perspective + \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (5 * \layer, \upperlevel + \layerheight) {$32 @ 12 \times 15$}; + +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer, \bottomlevel) -- (5 * \layer + 32 * \filters, \bottomlevel) -- (5 * \layer + 32 * \filters + \perspective, \bottomlevel + \perspective) -- (5 * \layer + \perspective, \bottomlevel + \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer + \perspective, \bottomlevel + \perspective) -- (5 * \layer + 32 * \filters + \perspective, \bottomlevel + \perspective) -- (5 * \layer + 32 * \filters + \perspective, \bottomlevel + \perspective + \layerheight) -- (5 * \layer + \perspective, \bottomlevel + \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer, \bottomlevel) -- (5 * \layer + \perspective, \bottomlevel + \perspective) -- (5 * \layer + \perspective, \bottomlevel + \perspective + \layerheight) -- (5 * \layer, \bottomlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer, \bottomlevel) -- (5 * \layer + 32 * \filters, \bottomlevel) -- (5 * \layer + 32 * \filters, \bottomlevel + \layerheight) -- (5 * \layer, \bottomlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer + 32 * \filters, \bottomlevel) -- (5 * \layer + 32 * \filters + \perspective, \bottomlevel + \perspective) -- (5 * \layer + 32 * \filters + \perspective, \bottomlevel + \perspective + \layerheight) -- (5 * \layer + 32 * \filters, \bottomlevel + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (5 * \layer, \bottomlevel + \layerheight) -- (5 * \layer + 32 * \filters, \bottomlevel + \layerheight) -- (5 * \layer + 32 * \filters + \perspective, \bottomlevel + \perspective + \layerheight) -- (5 * \layer + \perspective, \bottomlevel + \perspective + \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (5 * \layer, \bottomlevel + \layerheight) {$32 @ 12 \times 15$}; + +% third concatenation +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (6 * \layer, \concatheight) -- (6 * \layer + 64 * \filters, \concatheight) -- (6 * \layer + 64 * \filters + \perspective, \concatheight + \perspective) -- (6 * \layer + \perspective, \concatheight + \perspective) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (6 * \layer + \perspective, \concatheight + \perspective) -- (6 * \layer + 64 * \filters + \perspective, \concatheight + \perspective) -- (6 * \layer + 64 * \filters + \perspective, \concatheight + \perspective + \layerheight) -- (6 * \layer + \perspective, \concatheight + \perspective + \layerheight) -- cycle; +\filldraw[dashed, fill=orange!20, draw=black, fill opacity=0.5] (6 * \layer, \concatheight) -- (6 * \layer + \perspective, \concatheight + \perspective) -- (6 * \layer + \perspective, \concatheight + \perspective + \layerheight) -- (6 * \layer, \concatheight + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (6 * \layer, \concatheight) -- (6 * \layer + 64 * \filters, \concatheight) -- (6 * \layer + 64 * \filters, \concatheight + \layerheight) -- (6 * \layer, \concatheight + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (6 * \layer + 64 * \filters, \concatheight) -- (6 * \layer + 64 * \filters + \perspective, \concatheight + \perspective) -- (6 * \layer + 64 * \filters + \perspective, \concatheight + \perspective + \layerheight) -- (6 * \layer + 64 * \filters, \concatheight + \layerheight) -- cycle; +\filldraw[thick, fill=orange!20, draw=black, fill opacity=0.5] (6 * \layer, \concatheight + \layerheight) -- (6 * \layer + 64 * \filters, \concatheight + \layerheight) -- (6 * \layer + 64 * \filters + \perspective, \concatheight + \perspective + \layerheight) -- (6 * \layer + \perspective, \concatheight + \perspective + \layerheight) -- cycle; +\node[anchor=south west, scale=0.65, rotate=45] at (6 * \layer, \concatheight + \layerheight) {$64 @ 12 \times 15$}; + +\draw (5 * \layer + 32 * \filters + 1.2 * \perspective, \upperlevel + 0.5 * \layerheight) -- (5 * \layer + 32 * \filters + 1.7 * \perspective, \upperlevel + 0.5 * \layerheight) -- (5 * \layer + 32 * \filters + 1.7 * \perspective, \bottomlevel + 0.5 * \layerheight) -- (5 * \layer + 32 * \filters + 1.2 * \perspective, \bottomlevel + 0.5 * \layerheight); +\filldraw[fill=red!20, draw=black] (5 * \layer + 32 * \filters + 1.7 * \perspective, \concatheight + 0.5 * \layerheight) node[anchor=center, scale=0.8] {$C$} circle (\unit); +\draw[-latex] (5 * \layer + 32 * \filters + 1.7 * \perspective + \unit, \concatheight + 0.5 * \layerheight) -- (5 * \layer + 32 * \filters + 1.7 * \perspective + 3 * \unit, \concatheight + 0.5 * \layerheight); + +% flatten layer +\foreach \x in {0,...,4} { + \filldraw[fill=cyan!10, draw=black] (6 * \layer + 3cm, \concatheight + \unit + 0.75 * \x cm) circle (\unit); + \draw (6 * \layer + 3cm + \unit, \concatheight + \unit + 0.75 * \x cm) -- (7 * \layer + 2cm - \unit, \concatheight + \unit + 0.5 * \layerheight); +}; +\node[anchor=north, scale=0.5, below=15pt, align=center] at (6 * \layer + 3cm, \concatheight + \unit) {flatten}; + +% draw the "flatenisation" +\draw[dashed] (6 * \layer + 64 * \filters, \layerheight) -- (6 * \layer + 3 cm, 3cm + 2 * \unit) -- (6 * \layer + 64 * \filters + \perspective, \layerheight + \perspective) -- cycle; +\draw[dashed] (6 * \layer + 64 * \filters, 0cm) -- (6 * \layer + 3 cm, 0cm) -- (6 * \layer + 64 * \filters + \perspective, \perspective) -- cycle; + +% output layer +\filldraw[fill=cyan!10, draw=black] (7 * \layer + 2cm, \concatheight + \unit + 0.5 * \layerheight - \unit) -- (7 * \layer + 2cm, \concatheight + \unit + 0.5 * \layerheight) circle (\unit) -- (7 * \layer + 2cm, \concatheight + \unit + 0.5 * \layerheight + \unit); +\draw (7 * \layer + 2cm + 0.05cm, \concatheight + \unit + 0.5 * \layerheight) node[anchor=north, below=10pt, text width=2cm, scale=0.35, align=center] {output layer [1 unit]} -- (7 * \layer + 2cm + 0.10cm, \concatheight + \unit + 0.5 * \layerheight) -- (7 * \layer + 2cm + 0.15cm, \concatheight + \unit + 0.5 * \layerheight + 0.05cm); + +% draw the first convolution +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm, 0.9 * \layerheight) -- (1cm + \perspective, 0.9 * \layerheight + \perspective) -- (1cm + \perspective, \layerheight + \perspective) -- (1cm, \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm, 0.9 * \layerheight) -- (\layer, \upperlevel + 0.9 * \layerheight) -- (1cm + \perspective, 0.9 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm, \layerheight) -- (\layer, \upperlevel + 0.9 * \layerheight) -- (1cm + \perspective, \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm + \perspective, 0.9 * \layerheight + \perspective) -- (\layer, \upperlevel + 0.9 * \layerheight) -- (1cm + \perspective, \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm, 0.9 * \layerheight) -- (\layer, \upperlevel + 0.9 * \layerheight) -- (1cm, \layerheight) -- cycle; + +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm, 0cm) -- (1cm + 0.2 * \perspective, 0.2 * \perspective) -- (1cm + 0.2 * \perspective, \layerheight + 0.2 * \perspective) -- (1cm, \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm, 0cm) -- (\layer, \bottomlevel + 0.9 * \layerheight) -- (1cm + 0.2 * \perspective, 0.2 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm + 0.2 * \perspective, 0.2 * \perspective) -- (\layer, \bottomlevel + 0.9 * \layerheight) -- (1cm + 0.2 * \perspective, \layerheight + 0.2 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm + 0.2 * \perspective, \layerheight + 0.2 * \perspective) -- (\layer, \bottomlevel + 0.9 * \layerheight) -- (1cm, \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (1cm, 0cm) -- (\layer, \bottomlevel + 0.9 * \layerheight) -- (1cm, \layerheight) -- cycle; + +% draw the second convolution +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters, 0.4 * \layerheight) -- (2 * \layer + 64 * \filters + \perspective, 0.4 * \layerheight + \perspective) -- (2 * \layer + 64 * \filters + \perspective, 0.5 * \layerheight + \perspective) -- (2 * \layer + 64 * \filters, 0.5 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters, 0.4 * \layerheight) -- (3 * \layer, \upperlevel + 0.6 * \layerheight) -- (2 * \layer + 64 * \filters + \perspective, 0.4 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters, 0.5 * \layerheight) -- (3 * \layer, \upperlevel + 0.6 * \layerheight) -- (2 * \layer + 64 * \filters + \perspective, 0.5 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + \perspective, 0.4 * \layerheight + \perspective) -- (3 * \layer, \upperlevel + 0.6 * \layerheight) -- (2 * \layer + 64 * \filters + \perspective, 0.5 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters, 0.4 * \layerheight) -- (3 * \layer, \upperlevel + 0.6 * \layerheight) -- (2 * \layer + 64 * \filters, 0.5 * \layerheight) -- cycle; + +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.3 * \perspective, 0.3 * \perspective) -- (2 * \layer + 64 * \filters + 0.4 * \perspective, 0.4 * \perspective) -- (2 * \layer + 64 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- (2 * \layer + 64 * \filters + 0.3 * \perspective, \layerheight + 0.3 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.3 * \perspective, 0.3 * \perspective) -- (3 * \layer, \bottomlevel + 0.9 * \layerheight) -- (2 * \layer + 64 * \filters + 0.4 * \perspective, 0.4 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.4 * \perspective, 0.4 * \perspective) -- (3 * \layer, \bottomlevel + 0.9 * \layerheight) -- (2 * \layer + 64 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- (3 * \layer, \bottomlevel + 0.9 * \layerheight) -- (2 * \layer + 64 * \filters + 0.3 * \perspective, \layerheight + 0.3 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.3 * \perspective, 0.3 * \perspective) -- (3 * \layer, \bottomlevel + 0.9 * \layerheight) -- (2 * \layer + 64 * \filters + 0.3 * \perspective, \layerheight + 0.3 * \perspective) -- cycle; + +% draw the second convolution +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters, 0.4 * \layerheight) -- (2 * \layer + 64 * \filters + \perspective, 0.4 * \layerheight + \perspective) -- (2 * \layer + 64 * \filters + \perspective, 0.5 * \layerheight + \perspective) -- (2 * \layer + 64 * \filters, 0.5 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters, 0.4 * \layerheight) -- (3 * \layer, \upperlevel + 0.6 * \layerheight) -- (2 * \layer + 64 * \filters + \perspective, 0.4 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters, 0.5 * \layerheight) -- (3 * \layer, \upperlevel + 0.6 * \layerheight) -- (2 * \layer + 64 * \filters + \perspective, 0.5 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + \perspective, 0.4 * \layerheight + \perspective) -- (3 * \layer, \upperlevel + 0.6 * \layerheight) -- (2 * \layer + 64 * \filters + \perspective, 0.5 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters, 0.4 * \layerheight) -- (3 * \layer, \upperlevel + 0.6 * \layerheight) -- (2 * \layer + 64 * \filters, 0.5 * \layerheight) -- cycle; + +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.3 * \perspective, 0.3 * \perspective) -- (2 * \layer + 64 * \filters + 0.4 * \perspective, 0.4 * \perspective) -- (2 * \layer + 64 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- (2 * \layer + 64 * \filters + 0.3 * \perspective, \layerheight + 0.3 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.3 * \perspective, 0.3 * \perspective) -- (3 * \layer, \bottomlevel + 0.9 * \layerheight) -- (2 * \layer + 64 * \filters + 0.4 * \perspective, 0.4 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.4 * \perspective, 0.4 * \perspective) -- (3 * \layer, \bottomlevel + 0.9 * \layerheight) -- (2 * \layer + 64 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- (3 * \layer, \bottomlevel + 0.9 * \layerheight) -- (2 * \layer + 64 * \filters + 0.3 * \perspective, \layerheight + 0.3 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (2 * \layer + 64 * \filters + 0.3 * \perspective, 0.3 * \perspective) -- (3 * \layer, \bottomlevel + 0.9 * \layerheight) -- (2 * \layer + 64 * \filters + 0.3 * \perspective, \layerheight + 0.3 * \perspective) -- cycle; + +% draw the third convolution +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters, 0.4 * \layerheight) -- (4 * \layer + 128 * \filters + \perspective, 0.4 * \layerheight + \perspective) -- (4 * \layer + 128 * \filters + \perspective, 0.5 * \layerheight + \perspective) -- (4 * \layer + 128 * \filters, 0.5 * \layerheight) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters, 0.4 * \layerheight) -- (5 * \layer, \upperlevel + 0.6 * \layerheight) -- (4 * \layer + 128 * \filters + \perspective, 0.4 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters, 0.5 * \layerheight) -- (5 * \layer, \upperlevel + 0.6 * \layerheight) -- (4 * \layer + 128 * \filters + \perspective, 0.5 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters + \perspective, 0.4 * \layerheight + \perspective) -- (5 * \layer, \upperlevel + 0.6 * \layerheight) -- (4 * \layer + 128 * \filters + \perspective, 0.5 * \layerheight + \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters, 0.4 * \layerheight) -- (5 * \layer, \upperlevel + 0.6 * \layerheight) -- (4 * \layer + 128 * \filters, 0.5 * \layerheight) -- cycle; + +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters + 0.3 * \perspective, 0.3 * \perspective) -- (4 * \layer + 128 * \filters + 0.4 * \perspective, 0.4 * \perspective) -- (4 * \layer + 128 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- (4 * \layer + 128 * \filters + 0.3 * \perspective, \layerheight + 0.3 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters + 0.3 * \perspective, 0.3 * \perspective) -- (5 * \layer, \bottomlevel + 0.9 * \layerheight) -- (4 * \layer + 128 * \filters + 0.4 * \perspective, 0.4 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters + 0.4 * \perspective, 0.4 * \perspective) -- (5 * \layer, \bottomlevel + 0.9 * \layerheight) -- (4 * \layer + 128 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters + 0.4 * \perspective, \layerheight + 0.4 * \perspective) -- (5 * \layer, \bottomlevel + 0.9 * \layerheight) -- (4 * \layer + 128 * \filters + 0.3 * \perspective, \layerheight + 0.3 * \perspective) -- cycle; +\filldraw[fill=red!50, draw=black, fill opacity=0.2] (4 * \layer + 128 * \filters + 0.3 * \perspective, 0.3 * \perspective) -- (5 * \layer, \bottomlevel + 0.9 * \layerheight) -- (4 * \layer + 128 * \filters + 0.3 * \perspective, \layerheight + 0.3 * \perspective) -- cycle; + +% hidden layer labels +\draw[decorate, decoration={brace}] (\layer, \upperlevel + 1.25 * \layerheight + \perspective) -- (2 * \layer + 64 * \filters + \perspective, \upperlevel + 1.25 * \layerheight + \perspective) node[midway, anchor=south, above=2cm, align=center] {concatenation module 1} node[midway, anchor=south, above=0.8cm, align=center, text width=4cm] {hor: $1 \times 15$ kernel ver: $12 \times 1$ kernel} node[midway, anchor=south] {(ReLU activation)}; +\draw[decorate, decoration={brace}] (3 * \layer, \upperlevel + 1.25 * \layerheight + \perspective) -- (4 * \layer + 128 * \filters + \perspective, \upperlevel + 1.25 * \layerheight + \perspective) node[midway, anchor=south, above=2cm, align=center] {concatenation module 2} node[midway, anchor=south, above=0.8cm, align=center, text width=4cm] {hor: $1 \times 15$ kernel ver: $12 \times 1$ kernel} node[midway, anchor=south] {(ReLU activation)}; +\draw[decorate, decoration={brace}] (5 * \layer, \upperlevel + 1.25 * \layerheight + \perspective) -- (6 * \layer + 64 * \filters + \perspective, \upperlevel + 1.25 * \layerheight + \perspective) node[midway, anchor=south, above=2cm, align=center] {concatenation module 3} node[midway, anchor=south, above=0.8cm, align=center, text width=4cm] {hor: $1 \times 15$ kernel ver: $12 \times 1$ kernel} node[midway, anchor=south] {(ReLU activation)}; + + +\end{tikzpicture} + +% vim: ft=tex diff --git a/img/inc_nn_learning_curve.pdf b/img/inc_nn_learning_curve.pdf new file mode 100644 index 0000000..67c8e09 Binary files /dev/null and b/img/inc_nn_learning_curve.pdf differ diff --git a/img/inc_nn_learning_curve_h11.pdf b/img/inc_nn_learning_curve_h11.pdf new file mode 100644 index 0000000..954a633 Binary files /dev/null and b/img/inc_nn_learning_curve_h11.pdf differ diff --git a/img/input_mat.png b/img/input_mat.png new file mode 100644 index 0000000..3185215 Binary files /dev/null and b/img/input_mat.png differ diff --git a/img/label-distribution-compare_orig.pdf b/img/label-distribution-compare_orig.pdf new file mode 100644 index 0000000..c4f28c3 Binary files /dev/null and b/img/label-distribution-compare_orig.pdf differ diff --git a/img/label-distribution_orig.pdf b/img/label-distribution_orig.pdf new file mode 100644 index 0000000..5696c29 Binary files /dev/null and b/img/label-distribution_orig.pdf differ diff --git a/img/marchenko-pastur.nb b/img/marchenko-pastur.nb new file mode 100644 index 0000000..709ea93 --- /dev/null +++ b/img/marchenko-pastur.nb @@ -0,0 +1,422 @@ +(* Content-type: application/vnd.wolfram.mathematica *) + +(*** Wolfram Notebook File ***) +(* http://www.wolfram.com/nb *) + +(* CreatedBy='Mathematica 12.1' *) + +(*CacheID: 234*) +(* Internal cache information: +NotebookFileLineBreakTest +NotebookFileLineBreakTest +NotebookDataPosition[ 158, 7] +NotebookDataLength[ 18991, 414] +NotebookOptionsPosition[ 18069, 390] +NotebookOutlinePosition[ 18498, 407] +CellTagsIndexPosition[ 18455, 404] +WindowFrame->Normal*) + +(* Beginning of Notebook Content *) +Notebook[{ +Cell[BoxData[{ + RowBox[{ + RowBox[{ + RowBox[{"n", "=", "10000"}], ";"}], " ", + RowBox[{"(*", " ", "rows", " ", "*)"}]}], "\[IndentingNewLine]", + RowBox[{ + RowBox[{ + RowBox[{"p", "=", "1000"}], ";"}], " ", + RowBox[{"(*", " ", "columns", " ", "*)"}]}]}], "Input", + CellChangeTimes->{{3.814164590690421*^9, 3.814164608377831*^9}, { + 3.8141648314838877`*^9, 3.8141648430424347`*^9}, {3.814165688469067*^9, + 3.814165694713544*^9}}, + CellLabel->"In[1]:=",ExpressionUUID->"e07ea3b1-6853-427d-a42f-55af95fd957a"], + +Cell[BoxData[{ + RowBox[{ + RowBox[{ + RowBox[{"eig", "=", + RowBox[{"RandomVariate", "[", + RowBox[{"MatrixPropertyDistribution", "[", + RowBox[{ + RowBox[{ + RowBox[{"Eigenvalues", "[", "x", "]"}], "/", "n"}], ",", + RowBox[{"Distributed", "[", + RowBox[{"x", ",", + RowBox[{"WishartMatrixDistribution", "[", + RowBox[{"n", ",", + RowBox[{"IdentityMatrix", "[", "p", "]"}]}], "]"}]}], "]"}]}], + "]"}], "]"}]}], ";"}], " ", + RowBox[{"(*", " ", + RowBox[{"eigenvalues", " ", "distribution"}], " ", + "*)"}]}], "\[IndentingNewLine]", + RowBox[{ + RowBox[{"eighist", "=", + RowBox[{"Histogram", "[", + RowBox[{"eig", ",", + RowBox[{"{", "0.05", "}"}], ",", "\"\\""}], "]"}]}], + ";"}], "\[IndentingNewLine]", + RowBox[{ + RowBox[{ + RowBox[{"marcpast", "=", + RowBox[{"Plot", "[", + RowBox[{ + RowBox[{"PDF", "[", + RowBox[{ + RowBox[{"MarchenkoPasturDistribution", "[", + RowBox[{"p", "/", "n"}], "]"}], ",", "x"}], "]"}], ",", + RowBox[{"{", + RowBox[{"x", ",", "0", ",", "1.8"}], "}"}], ",", + RowBox[{"PlotStyle", "\[Rule]", "Thick"}], ",", + RowBox[{"PlotRange", "\[Rule]", "All"}], ",", + RowBox[{"PlotLegends", "\[Rule]", "None"}], ",", + RowBox[{"Exclusions", "\[Rule]", "None"}]}], "]"}]}], ";"}], " ", + RowBox[{"(*", " ", + RowBox[{"MP", " ", "distribution"}], " ", "*)"}]}]}], "Input", + CellChangeTimes->{{3.81416457947685*^9, 3.814164825544231*^9}, { + 3.814164859931432*^9, 3.8141648687684603`*^9}, {3.814164899060389*^9, + 3.8141649473920717`*^9}, {3.814165059908477*^9, 3.814165064986815*^9}, { + 3.8141652656624937`*^9, 3.814165289294182*^9}, 3.814165482471281*^9, { + 3.814165576485319*^9, 3.814165589899877*^9}, {3.814165670536396*^9, + 3.814165713057708*^9}}, + CellLabel->"In[3]:=",ExpressionUUID->"888d2e13-08b5-4891-9154-b2c963d80b02"], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"mpplot", "=", + RowBox[{"Labeled", "[", + RowBox[{ + RowBox[{"Show", "[", + RowBox[{ + RowBox[{"{", + RowBox[{"eighist", ",", "marcpast"}], "}"}], ",", + RowBox[{"ImageSize", "\[Rule]", "Large"}], ",", + RowBox[{ + "PlotLabel", "\[Rule]", + "\"\\""}]}], "]"}], ",", + "\"\\""}], "]"}]}]], "Input", + CellChangeTimes->{{3.814164924131678*^9, 3.814164957440431*^9}, { + 3.814165071108502*^9, 3.814165168626462*^9}, {3.81416519957753*^9, + 3.8141652259696913`*^9}, 3.814165261963818*^9, {3.8141657313926287`*^9, + 3.81416573420116*^9}, {3.814167350854034*^9, 3.8141673998497458`*^9}}, + CellLabel->"In[6]:=",ExpressionUUID->"8a44eccc-ab0a-4669-9976-f4eef79642cb"], + +Cell[BoxData[ + TemplateBox[{ + GraphicsBox[{{{ + Directive[ + EdgeForm[ + Directive[ + Thickness[Small], + Opacity[0.504]]], + RGBColor[0.987148, 0.8073604000000001, 0.49470040000000004`]], {{}, { + Directive[ + EdgeForm[ + Directive[ + Thickness[Small], + Opacity[0.504]]], + RGBColor[0.987148, 0.8073604000000001, 0.49470040000000004`]], {{{ + + RectangleBox[{0.45, 0}, {0.5, 0.2600000000000001}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.5, 0}, {0.55, 0.7999999999999994}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.55, 0}, {0.6000000000000001, 0.9799999999999992}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.6000000000000001, 0}, {0.65, 1.0600000000000014`}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.65, 0}, {0.7, 1.1000000000000014`}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.7, 0}, {0.75, 1.119999999999999}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.75, 0}, {0.8, 1.119999999999999}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.8, 0}, {0.8500000000000001, 1.119999999999999}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.8500000000000001, 0}, {0.9, 1.0800000000000014`}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.9, 0}, {0.95, 1.0600000000000014`}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{0.95, 0}, {1., 0.9599999999999992}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1., 0}, {1.05, 0.9999999999999991}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.05, 0}, {1.1, 0.9199999999999993}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.1, 0}, {1.1500000000000001`, 0.8599999999999993}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.1500000000000001`, 0}, {1.2, 0.860000000000003}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.2, 0}, {1.25, 0.8199999999999993}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.25, 0}, {1.3, 0.7599999999999993}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.3, 0}, {1.35, 0.6999999999999994}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.35, 0}, {1.4000000000000001`, 0.6399999999999995}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.4000000000000001`, 0}, {1.45, 0.6200000000000022}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.45, 0}, {1.5, 0.5999999999999995}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.5, 0}, {1.55, 0.45999999999999963`}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.55, 0}, {1.6, 0.3999999999999997}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.6, 0}, {1.6500000000000001`, 0.3599999999999997}, + "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.6500000000000001`, 0}, {1.7, + 0.24000000000000082`}, "RoundingRadius" -> 0]}}, {{ + + RectangleBox[{1.7, 0}, {1.75, 0.09999999999999992}, + "RoundingRadius" -> + 0]}}}}, {}, {}}}, {{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, \ +{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}}}, {{{{}, {}, + TagBox[{ + Directive[ + Opacity[1.], + RGBColor[0.368417, 0.506779, 0.709798], + AbsoluteThickness[1.6], + Thickness[Large]], + LineBox[CompressedData[" +1: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 + "]]}, + Annotation[#, "Charting`Private`Tag$2636#1"]& ]}}, {}}}, { + ImageSize -> Large, PlotLabel -> + FormBox["\"Distribution of the Eigenvalues of a Wishart Data Matrix and \ +Marchenko-Pastur Limiting Distribution\"", TraditionalForm], AspectRatio -> + NCache[GoldenRatio^(-1), 0.6180339887498948], Axes -> {True, True}, + AxesLabel -> {None, None}, AxesOrigin -> {0.424, 0}, + FrameLabel -> {{None, None}, {None, None}}, + FrameTicks -> {{Automatic, Automatic}, {Automatic, Automatic}}, + GridLines -> {None, None}, GridLinesStyle -> Directive[ + GrayLevel[0.5, 0.4]], PlotRange -> {{0.45, 1.75}, {All, All}}, + PlotRangePadding -> {{ + Scaled[0.02], + Scaled[0.02]}, { + Scaled[0.02], + Scaled[0.05]}}, Ticks -> {Automatic, Automatic}}], + "\"n = \\!\\(\\*SuperscriptBox[\\(10\\), \\(4\\)]\\), p = \ +\\!\\(\\*SuperscriptBox[\\(10\\), \\(3\\)]\\)\""}, + "Labeled", + DisplayFunction->(GridBox[{{ + TagBox[ + ItemBox[ + PaneBox[ + TagBox[#, "SkipImageSizeLevel"], Alignment -> {Center, Baseline}, + BaselinePosition -> Baseline], DefaultBaseStyle -> "Labeled"], + "SkipImageSizeLevel"]}, { + ItemBox[#2, DefaultBaseStyle -> "LabeledLabel"]}}, + GridBoxAlignment -> {"Columns" -> {{Center}}, "Rows" -> {{Center}}}, + AutoDelete -> False, + GridBoxItemSize -> {"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + BaselinePosition -> {1, 1}]& ), + InterpretationFunction->(RowBox[{"Labeled", "[", + RowBox[{#, ",", #2}], "]"}]& )]], "Output", + CellChangeTimes->{{3.8141649350400352`*^9, 3.814164957792368*^9}, { + 3.814165074474577*^9, 3.814165106326329*^9}, {3.8141651475548*^9, + 3.814165169222849*^9}, {3.8141652623143*^9, 3.814165302492792*^9}, + 3.814165533438848*^9, {3.814165585850946*^9, 3.8141655989169416`*^9}, + 3.814165681040098*^9, 3.814165734914089*^9, 3.8141674097658978`*^9}, + CellLabel->"Out[6]=",ExpressionUUID->"cfd9fe62-75fc-4a7d-a43e-e70326d3e274"] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"Export", "[", + RowBox[{ + RowBox[{"FileNameJoin", "[", + RowBox[{"{", + RowBox[{ + RowBox[{"NotebookDirectory", "[", "]"}], ",", + "\"\\""}], "}"}], "]"}], ",", "mpplot", ",", + "\"\\""}], "]"}]], "Input", + CellChangeTimes->{{3.8141657274690123`*^9, 3.814165866323689*^9}}, + CellLabel->"In[7]:=",ExpressionUUID->"353f095a-0bff-4b63-bbe1-d484dee8f355"], + +Cell[BoxData["\<\"/home/riccardo/documents/thesis_beamer/img/marchenko-pastur.\ +pdf\"\>"], "Output", + CellChangeTimes->{ + 3.814165786375692*^9, {3.8141658293920183`*^9, 3.814165839439434*^9}, + 3.8141658714284563`*^9, 3.814167414286223*^9}, + CellLabel->"Out[7]=",ExpressionUUID->"b0e30f48-ebd4-4574-9684-78b2d9ef9265"] +}, Open ]] +}, +WindowSize->{1097.25, 573.75}, +WindowMargins->{{0, Automatic}, {-0.75, Automatic}}, +Magnification:>0.8 Inherited, +FrontEndVersion->"12.1 for Linux x86 (64-bit) (June 19, 2020)", +StyleDefinitions->"Default.nb", +ExpressionUUID->"330d46d3-10f2-431d-beb3-d05b4008f49d" +] +(* End of Notebook Content *) + +(* Internal cache information *) +(*CellTagsOutline +CellTagsIndex->{} +*) +(*CellTagsIndex +CellTagsIndex->{} +*) +(*NotebookFileOutline +Notebook[{ +Cell[558, 20, 517, 12, 40, "Input",ExpressionUUID->"e07ea3b1-6853-427d-a42f-55af95fd957a"], +Cell[1078, 34, 1919, 47, 75, "Input",ExpressionUUID->"888d2e13-08b5-4891-9154-b2c963d80b02"], +Cell[CellGroupData[{ +Cell[3022, 85, 922, 19, 58, "Input",ExpressionUUID->"8a44eccc-ab0a-4669-9976-f4eef79642cb"], +Cell[3947, 106, 13320, 259, 348, "Output",ExpressionUUID->"cfd9fe62-75fc-4a7d-a43e-e70326d3e274"] +}, Open ]], +Cell[CellGroupData[{ +Cell[17304, 370, 425, 10, 25, "Input",ExpressionUUID->"353f095a-0bff-4b63-bbe1-d484dee8f355"], +Cell[17732, 382, 321, 5, 26, "Output",ExpressionUUID->"b0e30f48-ebd4-4574-9684-78b2d9ef9265"] +}, Open ]] +} +] +*) + diff --git a/img/marchenko-pastur.pdf b/img/marchenko-pastur.pdf new file mode 100644 index 0000000..800a91d Binary files /dev/null and b/img/marchenko-pastur.pdf differ diff --git a/img/ml_map.png b/img/ml_map.png new file mode 100644 index 0000000..388bde1 Binary files /dev/null and b/img/ml_map.png differ diff --git a/img/scalar-features_orig.pdf b/img/scalar-features_orig.pdf new file mode 100644 index 0000000..bbe3ee4 Binary files /dev/null and b/img/scalar-features_orig.pdf differ diff --git a/img/svd_orig.pdf b/img/svd_orig.pdf new file mode 100644 index 0000000..bd53add Binary files /dev/null and b/img/svd_orig.pdf differ diff --git a/thesis.tex b/thesis.tex index 9b5232a..872b9f2 100644 --- a/thesis.tex +++ b/thesis.tex @@ -1,4 +1,4 @@ -\documentclass[10pt, aspectratio=169]{beamer} +\documentclass[10pt, aspectratio=169, compress]{beamer} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} @@ -119,30 +119,30 @@ \end{center} } -% \setbeamertemplate{footline}{% -% \usebeamerfont{footnote} -% \usebeamercolor{footnote} -% \hfill -% \insertframenumber{}~/~\inserttotalframenumber{} -% \hspace{1em} -% \vspace{1em} -% \par -% } +\setbeamertemplate{footline}{% + \usebeamerfont{footnote} + \usebeamercolor{footnote} + \hfill + \insertframenumber{}~/~\inserttotalframenumber{} + \hspace{1em} + \vspace{1em} + \par +} -% \AtBeginSection[] -% {% -% {% -% \setbeamertemplate{footline}{} -% \usebackgroundtemplate{% -% \transparent{0.1} -% \includegraphics[width=\paperwidth]{img/torino.png} -% } -% \addtobeamertemplate{background canvas}{\transfade[duration=0.25]}{} -% \begin{frame}[noframenumbering]{\contentsname} -% \tableofcontents[currentsection] -% \end{frame} -% } -% } +\AtBeginSection[] +{% + {% + \setbeamertemplate{footline}{} + \usebackgroundtemplate{% + \transparent{0.1} + \includegraphics[width=\paperwidth]{img/torino.png} + } + \addtobeamertemplate{background canvas}{\transfade[duration=0.25]}{} + \begin{frame}[noframenumbering]{\contentsname} + \tableofcontents[currentsection] + \end{frame} + } +} \begin{document} @@ -601,7 +601,7 @@ \end{frame} \begin{frame}{Doubling Trick and Spinor Representation} - \begin{block}{Doubling Trick} + \begin{equationblock}{Doubling Trick} \begin{equation*} \partial_z \mathcal{X}( z ) = @@ -628,12 +628,12 @@ } \end{equation*} where $\mathscr{H}_{\gtrless}^{(t)} = \qty{z \in \mathds{C} \mid \Im z \gtrless 0~\text{or}~z \in D_{(t)} }$ and $\updelta_{\pm} = \upeta \pm i 0^+$. - \end{block} + \end{equationblock} \pause \begin{tikzpicture}[remember picture, overlay] - \draw[line width=4pt, red] (31em,6em) ellipse (0.8cm and 1.2cm); + \draw[line width=4pt, red] (31em,6em) ellipse (0.8cm and 1cm); \end{tikzpicture} \pause @@ -700,8 +700,7 @@ \frac{1}{\Upgamma( c_n )}\, \tensor[_2]{F}{_1}( a_n,\, b_n;\, c_n;\, \upomega_z ) \\ - \qty( -\upomega_z )^{1 - c_n}\, - \frac{1}{\Upgamma( 2 - c_n )}\, + \frac{\qty( -\upomega_z )^{1 - c_n}}{\Upgamma( 2 - c_n )}\, \tensor[_2]{F}{_1}( a_n + 1 - c_n,\, b_n + 1 - c_n;\, 2 - c_n;\, \upomega_z ) ) \end{equation*} @@ -1177,13 +1176,586 @@ \subsection[NBO]{Null Boost Orbifold} \begin{frame}{Null Boost Orbifold} + Start from $\qty( x^+,\, x^-,\, x^2,\, \vec{x} ) \in \mathscr{M}^{1,\, D-1}$: + \begin{equation*} + \begin{cases} + u & = x^- + \\ + z & = \frac{x^2}{\Updelta\, x^-} + \\ + v & = x^+ - \frac{1}{2} \frac{\qty( x^2 )^2}{x^-} + \end{cases} + \qquad + \Rightarrow + \qquad + \dd{s}^2 = -2 \dd{u} \dd{v} + \qty( \Updelta\, u )^2\, \dd{z}^2 + \updelta_{ij} \dd{x}^i \dd{x}^j + \end{equation*} + + \pause + + \begin{equationblock}{Killing Vector and Null Boost Oribfold} + \begin{equation*} + \upkappa = -i \qty( 2 \uppi \Updelta ) J_{+2} = 2 \uppi \partial_z + \Rightarrow + z \sim z + 2 \uppi n + \end{equation*} + \end{equationblock} + + \pause + + Consider \highlight{scalar QED:} + \begin{equation*} + \upphi_{\qty{ k_+,\, l,\, \vec{k},\, r}}\qty( u,\, v,\, z,\, \vec{x} ) + = + e^{i \qty( k_+ v + l z + \vec{k} \cdot \vec{x} )}\, + \widetilde{\upphi}_{\qty{ k_+,\, l,\, \vec{k},\, r}}\qty( u ) + = + \frac{e^{i \qty( k_+ v + l z + \vec{k} \cdot \vec{x} )}}{\sqrt{\qty( 2 \uppi )^D\, \abs{2 \Updelta k_+ u}}}\, + e^{-i \frac{l^2}{2 \Updelta^2 k_+} \frac{1}{u} + i \frac{\norm{\vec{k}}^2 + r}{2 k_+} u} + \end{equation*} + \end{frame} + + \begin{frame}{Scalar QED Interactions} + Scalar--photon interactions: + \begin{equation*} + S_{\text{sQED}}^{\text{(int)}} + = + \int\limits_{\Upomega} \dd[D]{x} \sqrt{- g }\, + \qty(% + -i\, e\, g^{\upalpha\upbeta} a_{\upalpha} \qty( \upphi^*\, \partial_{\upbeta} \upphi - \partial_{\upbeta} \upphi^*\, \upphi ) + + e^2\, g^{\upalpha\upbeta} a_{\upalpha} a_{\upbeta} \abs{\upphi}^2 + - \frac{g_4}{4}\, \abs{\upphi}^4 + ) + \end{equation*} + + \pause + + Terms involved: + \begin{equation*} + \begin{split} + \mathcal{I}^{\qty[\upnu]}_{\qty{N}} + & = + \int\limits_{-\infty}^{+\infty} \dd{u} + \abs{\Updelta\, u} u^{\upnu} + \prod\limits_{i = 1}^N + \widetilde{\upphi}_{\qty{ k_{+\, (i)},\, l_{(i)},\, \vec{k}_{(i)},\, r_{(i)}}}\qty( u ) + \\ + \mathcal{J}^{\qty[\upnu]}_{\qty{N}} + & = + \int\limits_{-\infty}^{+\infty} \dd{u} + \abs{\Updelta} \abs{u}^{1 + \upnu} + \prod\limits_{i = 1}^N + \widetilde{\upphi}_{\qty{ k_{+\, (i)},\, l_{(i)},\, \vec{k}_{(i)},\, r_{(i)}}}\qty( u ) + \end{split} + \end{equation*} + + \pause + + \begin{center} + \it + most terms \textbf{do not converge} and cannot be recovered even with a \textbf{distributional interpretions} due to the term $\propto u^{-1}$ in the exponentatial + \end{center} + \end{frame} + + \begin{frame}{String and Field Theory} + So far: + \begin{itemize} + \item field theory presents \textbf{divergences} + + \pause + + \item issues are \textbf{still present} in sQED (eikonal?) + + \pause + + \item divergences are \textbf{not (only) gravitational} + \end{itemize} + + \pause + + \begin{equationblock}{Massive String States} + \begin{equation*} + V_M\qty( x;\, k,\, S,\, \upxi ) + = + \colon + \qty(% + \frac{i}{\sqrt{2 \upalpha'}}\, + \upxi \cdot \partial^2_x X( x,\, x ) + + + \qty( \frac{i}{\sqrt{2 \upalpha'}} )^2\, + S_{\upalpha\upbeta} + \partial_x X^{\upalpha}( x,\, x ) + \partial_x X^{\upbeta}( x,\, x ) + ) + e^{i k \cdot X( x,\, x )} + \colon + \end{equation*} + \end{equationblock} + + \pause + + \begin{center} + \it + string theory cannot do \textbf{better than field theory} (EFT) if the latter \textbf{does not exist} (even a Wilson line around $z$ does not prevent such behaviour) + \end{center} + \end{frame} + + \begin{frame}{Resolution and Motivation} + Introduce the \highlight{generalised NBO:} + \begin{equation*} + \begin{cases} + u & = x^- + \\ + z & = \frac{1}{2 x^-} \qty( \frac{x^2}{\Updelta_2} + \frac{x^3}{\Updelta_3} ) + \\ + w & = \frac{1}{2 x^-} \qty( \frac{x^2}{\Updelta_2} - \frac{x^3}{\Updelta_3} ) + \\ + v & = x^+ - \frac{1}{2 x^-} \qty( \qty( x^2 )^2 + \qty( x^3 )^2 ) + \end{cases} + \qquad + \Rightarrow + \qquad + \upkappa + = + -2 \uppi i \qty( \Updelta_2 J_{+2} + \Updelta_3 J_{+3} ) + = + 2 \uppi \partial_z + \end{equation*} + + \pause + + \begin{equationblock}{Distributional Interpretation} + \begin{equation*} + \widetilde{\upphi}_{\qty{ k_+,\, p,\, l,\, \vec{k},\, r}}\qty( u ) + = + \frac{1}{2 \sqrt{\qty(2 \uppi)^D \abs{\Updelta_2 \Updelta_3 k_+}}} + \frac{1}{\abs{u}} + e^{-i\, \qty( \frac{1}{8 k_+ u} \qty[ \frac{(l + p)^2}{\Updelta_2^2} + \frac{(l - p)^2}{\Updelta_3^2} ] - \frac{\norm{\vec{k}}^2 + r}{2 k_+} u )} + \end{equation*} + \end{equationblock} + \end{frame} + + \begin{frame}{On the Divergences and Their Nature} + \begin{itemize} + \item divergences are present in sQED and \textbf{open string} sector + + \pause + + \item singularities $\Rightarrow$ \textbf{massive states} are no longer spectators + + \pause + + \item vanishing volume (\textbf{compact orbifold directions}) $\Rightarrow$ particles ``cannot escape'' + + \pause + + \item \textbf{non compact} orbifold directions $\Rightarrow$ interpretation of \textbf{amplitudes as distributions} + + \pause + + \item issue not restricted to NBO/GNBO but also BO, null brane, etc. (it is a \textbf{general issues} connected to the geometry of the underlying space) + \end{itemize} + + \pause + + \vspace{2em} + \begin{center} + \it + spacetime singularities are \textbf{hidden into contact terms} and interactions with \textbf{massive states} (the gravitational eikonal deals with massless interactions) + \end{center} + + \begin{tikzpicture}[remember picture, overlay] + \draw[line width=4pt, red] (0em, 4.5em) rectangle (40em, 1em); + \end{tikzpicture} \end{frame} \section[Deep Learning]{Deep Learning the Geometry of String Theory} - \begin{frame}{CCC} - c + + \subsection[Introduction]{Machine Learning and Deep Learning} + + \begin{frame}{The Simplest Calabi--Yau} + Focus on Calabi--Yau \highlight{3-folds:} + \begin{equation*} + h^{r,\, s} = \dim\limits_{\mathds{C}} H_{\overline{\partial}}^{r,\, s}\qty( M,\, \mathds{C} ) + \qquad + \Rightarrow + \qquad + \begin{cases} + h^{0,\, 0} & = h^{3,\, 0} = 1 + \\ + h^{r,\, 0} & = 0 \quad \text{if} \quad r \neq 3 + \\ + h^{r,\, s} & = h^{3 - r,\, 3 - s} + \\ + h^{1,\, 1},\, h^{2,\, 1} \in \mathds{N} + \end{cases} + \end{equation*} + + \pause + + \begin{block}{Complete Intersection Calabi--Yau Manifolds} + Intersection of hypersurfaces in + \begin{equation*} + \mathcal{A} = \mathds{P}^{n_1} \times \dots \times \mathds{P}^{n_m} + \end{equation*} + where + \begin{equation*} + \mathds{P}^n\colon + \qquad + \begin{cases} + p_a\qty( Z^0,\, \dots,\, Z^n ) & = P_{I_1 \dots I_a} Z^{I_1} \dots Z^{I_a} = 0 + \\ + p_a\qty( \uplambda Z^0,\, \dots,\, \uplambda Z^n ) & = \uplambda^a p_a\qty( Z^0,\, \dots,\, Z^n ) + \end{cases} + \end{equation*} + \end{block} \end{frame} + \begin{frame}{Representation of the Output} + CICY can be generalised to \highlight{$m$ projective spaces and $k$ equations.} + The problem is thus mapped to: + \begin{equation*} + \begin{tabular}{@{}lccc@{}} + $\mathscr{R}\colon$ + & + $\mathds{Z}^{m \times k}$ + & + $\longrightarrow$ + & + $\mathds{N}$ + \\[1em] + & + $\qty[% + \begin{tabular}{@{}c|ccc@{}} + $\mathds{P}^{n_1}$ & $a_1^1$ & $\dots$ & $a_k^1$ + \\ + $\vdots$ & $\vdots$ & $\ddots$ & $\vdots$ + \\ + $\mathds{P}^{n_m}$ & $a_1^m$ & $\dots$ & $a_k^m$ + \end{tabular} + ]$ + & + $\longrightarrow$ + & + $h^{1,\, 1} \quad \text{or} \quad h^{2,\, 1}$ + \end{tabular} + \end{equation*} + + \pause + + \begin{block}{Machine Learning Approach} + What is $\mathscr{R}$? + \begin{equation*} + \mathscr{R}( M ) \longrightarrow \mathscr{R}_n( M;\, w ) + \qquad + \text{s.t.} + \qquad + \lim\limits_{n \to \infty} f( M;\, w ) = \lim\limits_{n \to \infty} \abs{\mathscr{R}( M ) - \mathscr{R}_n( M;\, w )} = 0 + \end{equation*} + \end{block} + \end{frame} + + \begin{frame}{Machine Learning} + \begin{itemize} + \item exchange \textbf{analytical solution} with \textbf{optimisation problem} + + \pause + + \item use \textbf{various algorithms} and exploit \textbf{large datasets} + + \pause + + \item learn a \textbf{representation} rather than a \textbf{solution} + + \pause + + \item effectively use knowledge from \textbf{computer science, mathematics and physics} to solve problems + \end{itemize} + + \pause + + \begin{center} + \includegraphics[width=0.7\linewidth]{img/label-distribution_orig} + \end{center} + \end{frame} + + + \subsection[Machine Learning]{Machine Learning for String Theory} + + + \begin{frame}{Exploratory Data Analysis} + Machine Learning \highlight{pipeline:} + \begin{center} + \textbf{exploratory} data analysis + $\rightarrow$ + feature \textbf{selection} + $\rightarrow$ + Hodge numbers + \end{center} + + \pause + + \begin{columns} + \begin{column}{0.5\linewidth} + \centering + \includegraphics[width=0.9\columnwidth]{img/corr-matrix_orig} + \end{column} + \hfill + \begin{column}{0.5\linewidth} + \centering + \includegraphics[width=0.9\columnwidth, trim={0 0 6in 0}, clip]{img/scalar-features_orig} + \end{column} + \end{columns} + \end{frame} + + \begin{frame}{Dataset} + \begin{itemize} + \item $7890$ CICY manifolds (full dataset) + + \pause + + \item \textbf{dataset pruning}: no product spaces, no ``very far'' outliers (reduction of $0.49\%$) + + \pause + + \item $h^{1,\, 1} \in \qty[ 1,\, 16 ]$ and $h^{2,\, 1} \in \qty[ 15,\, 86 ]$ + + \pause + + \item $80\%$ training, $10\%$ validation, $10\%$ test + + \pause + + \item choose \textbf{regression}, but evaluate using \textbf{accuracy} (round the result) + \end{itemize} + + \pause + + \begin{center} + \includegraphics[width=0.7\linewidth]{img/label-distribution-compare_orig} + \end{center} + \end{frame} + + \begin{frame}{Machine Learning} + \centering + \includegraphics[width=0.85\linewidth]{img/ml_map} + + \pause + + \begin{tikzpicture}[remember picture, overlay] + \draw[line width=10pt, red, -latex] (-18em,1em) -- (-14.5em, 6em); + \draw[line width=10pt, red, -latex] (19em, 7em) -- (14em, 4em); + \end{tikzpicture} + + \pause + + \begin{tikzpicture}[remember picture, overlay] + \draw[line width=4pt, red] (12em,12em) ellipse (2cm and 1.5cm); + \end{tikzpicture} + \end{frame} + + \begin{frame}{A Word on PCA} + \begin{columns} + \begin{column}{0.4\linewidth} + What is PCA for a $X \in \mathds{R}^{n \times p}$? + \begin{itemize} + \item find new coordinates to \textbf{``put the variance in order''} + + \item \highlight{equivalently} compute the \textbf{eigenvectors} of $X X^T$ or the \textbf{singular values} of $X$ + + \item isolate \textbf{the signal} from the \textbf{background} + + \item ease the machine learning job of finding a better representation of the input + \end{itemize} + \end{column} + \hfill + \begin{column}{0.6\linewidth} + \centering + \includegraphics[width=0.5\columnwidth]{img/marchenko-pastur} + \includegraphics[width=\columnwidth]{img/svd_orig} + \end{column} + \end{columns} + \end{frame} + + \begin{frame}{Machine Learning Results} + \begin{columns} + \begin{column}{0.5\linewidth} + \centering + \textbf{Configuration Matrix Only} + \includegraphics[width=0.8\columnwidth, trim={0 0 3.3in 0}, clip]{img/cicy_matrix_plots} + \end{column} + \hfill\pause + \begin{column}{0.5\linewidth} + \centering + \textbf{Best Training Set} + \includegraphics[width=0.8\columnwidth, trim={0 0 3.3in 0}, clip]{img/cicy_best_plots} + \end{column} + \end{columns} + \end{frame} + + \subsection[Deep Learning]{AI Implementations for Geometry and Strings} + + \begin{frame}{Artificial Intelligence and Neural Networks} + \begin{columns} + \begin{column}{0.6\linewidth} + \begin{itemize} + \item use \textbf{gradient descent} to optimise \textbf{weights} + + \item learn highly \textbf{non linear} representations of the input + + \item can be \highlight{``large''} to have enough parameters + + \item can be \highlight{``deep''} to to learn \textbf{complicated functions} + \end{itemize} + + \begin{block}{Neural Networks} + \vspace{0.5em} + \begin{tabular}{@{}lc@{}} + fully connected: + & + $a^{\qty(i)\, \qty{l+1}} = \upphi\qty( a^{\qty(i)\, \qty{l}} \cdot W^{\qty{l}} + b^{\qty{l}} \mathds{1} )$ + \\ + convolutional: + & + $a^{\qty(i)\, \qty{l+1}} = \upphi\qty( a^{\qty(i)\, \qty{l}}\, *\, W^{\qty{l}} + b^{\qty{l}} \mathds{1} )$ + \end{tabular} + \end{block} + + Non linearity ensured by: + \begin{equation*} + \upphi( z ) = \mathrm{ReLU}\qty( z ) = \max\qty(0,\, z) + \end{equation*} + \end{column} + \hfill + \begin{column}{0.4\linewidth} + \centering + \resizebox{\columnwidth}{!}{\import{img}{fc.pgf}} + \end{column} + \end{columns} + \end{frame} + + \begin{frame}{Convolutional Neural Networks} + Why convolutional? + \begin{columns} + \begin{column}{0.4\linewidth} + \begin{itemize}[<+->] + \item retain \textbf{spacial awareness} + + \item smaller \textbf{no.\ of parameters} ($\approx 2 \times 10^5$ vs.\ $\approx 2 \times 10^6$) + + \item weights are \textbf{shared} + + \item CNN can isolate \textbf{``defining features''} + + \item find patterns as in \textbf{computer vision} + \end{itemize} + \end{column} + \hfill + \begin{column}{0.6\linewidth} + \centering + \only<1>{\includegraphics[width=0.75\columnwidth, trim={12in 10in 0 0}, clip]{img/input_mat}} + \only<2>{\includegraphics[width=0.75\columnwidth, trim={12in 5in 0 5in}, clip]{img/input_mat}} + \only<3>{\includegraphics[width=0.75\columnwidth, trim={12in 0 0 10in}, clip]{img/input_mat}} + \only<4->{\resizebox{\columnwidth}{!}{\import{img}{ccnn.pgf}}} + \end{column} + \end{columns} + \end{frame} + + \begin{frame}{Inception Neural Networks} + Recent development by Google's deep learning teams led to: + \begin{itemize} + \item neural networks with \textbf{better generalisation properties} + + \item smaller networks (both parameters and depth) + + \item different \textbf{concurrent kernels} (e.g.\ one over \textbf{equations} one over \textbf{coordinates}) + \end{itemize} + + \pause + + \begin{center} + \resizebox{0.75\linewidth}{!}{\import{img}{icnn.pgf}} + \end{center} + \end{frame} + + \begin{frame}{Deep Learning Results and Generalisation Properties} + \begin{columns} + \begin{column}{0.5\linewidth} + \centering + \textbf{Best Training Set} + \includegraphics[width=\columnwidth]{img/cicy_best_plots} + \end{column} + \hfill + \begin{column}{0.5\linewidth} + \centering + \includegraphics[width=0.75\columnwidth]{img/inc_nn_learning_curve_h11} + \includegraphics[width=0.75\columnwidth]{img/inc_nn_learning_curve} + \end{column} + \end{columns} + \end{frame} + + \begin{frame}{A Few Comments and Future Directions} + Why \highlight{deep learning in physics?} + \begin{itemize} + \item reliable \textbf{predictive method} \pause (provided good data analysis) + + \pause + + \item reliable \textbf{source of inspiration} \pause (provided good data analysis) + + \pause + + \item reliable \textbf{generalisation method} \pause (provided good data analysis) + + \pause + + \item \textbf{CNNs are powerful tools} (this is the \emph{first time in physics!}) + + \pause + + \item interdisciplinary approach $=$ win-win situation! + \end{itemize} + + \pause + + What now? + + \begin{itemize} + \item representation learning $\Rightarrow$ what is the best way to represent CICYs? + + \pause + + \item study invariances $\Rightarrow$ invariances should not influence the result (graph representations?) + + \pause + + \item higher dimensions $\Rightarrow$ what about CICY 4-folds? + + \pause + + \item geometric deep learning $\Rightarrow$ explain the geometry of the ``AI'' behind deep learning! + + \pause + + \item reinforcement learning $\Rightarrow$ give the rules, not the result! + \end{itemize} + \end{frame} + + {% + \setbeamertemplate{footline}{} + \usebackgroundtemplate{% + \transparent{0.1} + \includegraphics[width=\paperwidth]{img/torino.png} + } + \addtobeamertemplate{background canvas}{\transfade[duration=0.25]}{} + \begin{frame}[noframenumbering]{The End?} + \begin{center} + \Huge + THANK YOU! + \end{center} + \end{frame} + } + \end{document}