├── .gitignore ├── .gitmodules ├── README.md ├── defensa ├── Makefile ├── beamer.tex ├── config.tex ├── images │ ├── Rplot.png │ ├── ccbysa.png │ ├── demo │ │ ├── 1.png │ │ ├── 10.png │ │ ├── 11.png │ │ ├── 12.png │ │ ├── 13.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ ├── 8.png │ │ └── 9.png │ ├── gradient_ascent_contour.png │ ├── gradient_ascent_surface.png │ ├── leaky.png │ ├── neurona_biologica.png │ ├── plot_iris_ae1.png │ ├── plot_iris_ae2.png │ ├── relu.png │ ├── responsive_web.png │ ├── rutavis_compare.png │ ├── rutavis_iris.png │ ├── rutavis_params.png │ ├── rutavis_plot.png │ ├── rutavis_plot2.png │ ├── rutavis_welcome.png │ ├── rutaweb_pc.png │ ├── rutaweb_phone.png │ ├── sigmoid.png │ ├── softplus.png │ ├── tanh.png │ └── ugrmarca.png ├── notas.md ├── presentacion.md ├── presentacion.tex └── presentacion2.tex └── memoria ├── COPYING ├── Makefile ├── README.md ├── automake.sh ├── bibliography.bib ├── chapters ├── biblio.tex ├── conclusions.tex ├── deep-learning.tex ├── intro.tex ├── machine-learning.tex ├── manual.tex ├── objetivos.tex ├── probabilidad.tex ├── ruta.tex ├── tensores.tex └── teoria-informacion.tex ├── classicthesis-config.tex ├── code ├── mxnet_example.R └── ruta_example.R ├── config.tex ├── images ├── Rplot.png ├── ccbysa.png ├── gradient_ascent_contour.png ├── gradient_ascent_surface.png ├── leaky.png ├── neurona_biologica.png ├── plot_iris_ae1.png ├── plot_iris_ae2.png ├── relu.png ├── responsive_web.png ├── rutavis_compare.png ├── rutavis_iris.png ├── rutavis_params.png ├── rutavis_plot.png ├── rutavis_plot2.png ├── rutavis_welcome.png ├── sigmoid.png ├── softplus.png ├── tanh.png └── ugrmarca.png ├── memoria-blx.bib ├── memoria.tex └── meta ├── Abstract.tex ├── Acknowledgments.tex ├── AutorizacionBiblioteca.tex ├── AutorizacionTutor.tex ├── Bibliography.tex ├── Colophon.tex ├── Contents.tex ├── Declaration.tex ├── Dedication.tex ├── DirtyTitlepage.tex ├── Publications.tex ├── Titleback.tex └── Titlepage.tex /.gitignore: -------------------------------------------------------------------------------- 1 | *.aux 2 | *.toc 3 | *.xml 4 | *.bbl 5 | *.out 6 | *.log 7 | *.lof 8 | *.blg 9 | *.sty 10 | *.lol 11 | *.lot 12 | plantilla_ugr 13 | *.pdf 14 | *~ 15 | *# 16 | .#* 17 | 18 | memoria/meta/Autorizacion*.tex -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "ruta"] 2 | path = ruta 3 | url = git@github.com:fdavidcl/ruta 4 | [submodule "rutavis"] 5 | path = rutavis 6 | url = git@github.com:fdavidcl/rutavis 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tfg 2 | Reducción de la dimensionalidad en problemas de clasificación con Deep Learning: documentación y software asociado 3 | 4 | [DOI: 10.13140/RG.2.2.16155.57123/1](http://dx.doi.org/10.13140/RG.2.2.16155.57123/1) 5 | 6 | ## Directorios: 7 | 8 | - *memoria* contiene el código fuente de la documentación 9 | - *ruta* lleva al repositorio de la herramienta donde se implementan técnicas de Deep Learning no supervisado 10 | - *rutavis* lleva al software que incluye las visualizaciones y la interfaz gráfica 11 | -------------------------------------------------------------------------------- /defensa/Makefile: -------------------------------------------------------------------------------- 1 | TEX = xelatex 2 | MD = $(wildcard *.md) 3 | # TXSRC = $(wildcard *.tex) 4 | EXE = $(patsubst %.md, %.pdf, $(MD)) 5 | 6 | default: $(EXE) tidy 7 | 8 | %.pdf: %.md beamer.tex 9 | pandoc $< -o $@ -t beamer -s --latex-engine xelatex --template beamer.tex 10 | 11 | 12 | # %.tex: %.md 13 | # pandoc $< -o $@ -t beamer -s --latex-engine xelatex 14 | 15 | # %.pdf: %.tex 16 | # $(TEX) $< 17 | 18 | clean: 19 | rm -rf $(EXE) _minted* *.log *.aux *.toc 20 | 21 | tidy: 22 | rm -rf _minted* *.log *.aux *.toc *.out *.vrb *.snm *.nav 23 | -------------------------------------------------------------------------------- /defensa/beamer.tex: -------------------------------------------------------------------------------- 1 | \documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(handout)$handout,$endif$$if(beamer)$ignorenonframetext,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} 2 | $if(theme)$ 3 | % sectionpage=none probablemente solo sirva para "mtheme" 4 | \usetheme[sectionpage=none]{$theme$} 5 | $endif$ 6 | $if(colortheme)$ 7 | \usecolortheme{$colortheme$} 8 | $endif$ 9 | $if(fonttheme)$ 10 | \usefonttheme{$fonttheme$} 11 | $endif$ 12 | $if(mainfont)$ 13 | \usefonttheme{serif} % use mainfont rather than sansfont for slide text 14 | $endif$ 15 | $if(innertheme)$ 16 | \useinnertheme{$innertheme$} 17 | $endif$ 18 | $if(outertheme)$ 19 | \useoutertheme{$outertheme$} 20 | $endif$ 21 | \setbeamertemplate{caption}[numbered] 22 | \setbeamertemplate{caption label separator}{: } 23 | \setbeamercolor{caption name}{fg=normal text.fg} 24 | $if(fontfamily)$ 25 | \usepackage[$fontfamilyoptions$]{$fontfamily$} 26 | $else$ 27 | \usepackage{lmodern} 28 | $endif$ 29 | \usepackage{amssymb,amsmath} 30 | \usepackage{ifxetex,ifluatex} 31 | \usepackage{fixltx2e} % provides \textsubscript 32 | \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex 33 | \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} 34 | \usepackage[utf8]{inputenc} 35 | $if(euro)$ 36 | \usepackage{eurosym} 37 | $endif$ 38 | \else % if luatex or xelatex 39 | \ifxetex 40 | \usepackage{mathspec} 41 | \else 42 | \usepackage{fontspec} 43 | \fi 44 | \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} 45 | \newcommand{\euro}{€} 46 | $if(mainfont)$ 47 | \setmainfont[$mainfontoptions$]{$mainfont$} 48 | $endif$ 49 | $if(sansfont)$ 50 | \setsansfont[$sansfontoptions$]{$sansfont$} 51 | $endif$ 52 | $if(monofont)$ 53 | \setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$monofontoptions$$endif$]{$monofont$} 54 | $endif$ 55 | $if(mathfont)$ 56 | \setmathfont(Digits,Latin,Greek)[$mathfontoptions$]{$mathfont$} 57 | $endif$ 58 | $if(CJKmainfont)$ 59 | \usepackage{xeCJK} 60 | \setCJKmainfont[$CJKoptions$]{$CJKmainfont$} 61 | $endif$ 62 | \fi 63 | % use upquote if available, for straight quotes in verbatim environments 64 | \IfFileExists{upquote.sty}{\usepackage{upquote}}{} 65 | % use microtype if available 66 | \IfFileExists{microtype.sty}{% 67 | \usepackage{microtype} 68 | \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts 69 | }{} 70 | $if(lang)$ 71 | \ifxetex 72 | \usepackage{polyglossia} 73 | \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} 74 | $for(polyglossia-otherlangs)$ 75 | \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} 76 | $endfor$ 77 | \else 78 | \usepackage[shorthands=off,$babel-lang$]{babel} 79 | \fi 80 | $endif$ 81 | $if(natbib)$ 82 | \usepackage{natbib} 83 | \bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} 84 | $endif$ 85 | $if(biblatex)$ 86 | \usepackage{biblatex} 87 | $for(bibliography)$ 88 | \addbibresource{$bibliography$} 89 | $endfor$ 90 | $endif$ 91 | $if(listings)$ 92 | \usepackage{listings} 93 | $endif$ 94 | $if(lhs)$ 95 | \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} 96 | $endif$ 97 | $if(highlighting-macros)$ 98 | $highlighting-macros$ 99 | $endif$ 100 | $if(verbatim-in-note)$ 101 | \usepackage{fancyvrb} 102 | \VerbatimFootnotes % allows verbatim text in footnotes 103 | $endif$ 104 | $if(tables)$ 105 | \usepackage{longtable,booktabs} 106 | \usepackage{caption} 107 | % These lines are needed to make table captions work with longtable: 108 | \makeatletter 109 | \def\fnum@table{\tablename~\thetable} 110 | \makeatother 111 | $endif$ 112 | $if(graphics)$ 113 | \usepackage{graphicx,grffile} 114 | \makeatletter 115 | \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} 116 | \def\maxheight{\ifdim\Gin@nat@height>\textheight0.8\textheight\else\Gin@nat@height\fi} 117 | \makeatother 118 | % Scale images if necessary, so that they will not overflow the page 119 | % margins by default, and it is still possible to overwrite the defaults 120 | % using explicit options in \includegraphics[width, height, ...]{} 121 | \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} 122 | $endif$ 123 | 124 | % Comment these out if you don't want a slide with just the 125 | % part/section/subsection/subsubsection title: 126 | %\AtBeginPart{ 127 | % \let\insertpartnumber\relax 128 | % \let\partname\relax 129 | % \frame{\partpage} 130 | %} 131 | %\AtBeginSection{ 132 | % \let\insertsectionnumber\relax 133 | % \let\sectionname\relax 134 | % \frame{\sectionpage} 135 | % } 136 | % \AtBeginSubsection{ 137 | % \let\insertsubsectionnumber\relax 138 | % \let\subsectionname\relax 139 | % \frame{\subsectionpage} 140 | % } 141 | 142 | $if(links-as-notes)$ 143 | % Make links footnotes instead of hotlinks: 144 | \renewcommand{\href}[2]{#2\footnote{\url{#1}}} 145 | $endif$ 146 | $if(strikeout)$ 147 | \usepackage[normalem]{ulem} 148 | % avoid problems with \sout in headers with hyperref: 149 | \pdfstringdefDisableCommands{\renewcommand{\sout}{}} 150 | $endif$ 151 | \setlength{\emergencystretch}{3em} % prevent overfull lines 152 | \providecommand{\tightlist}{% 153 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 154 | $if(numbersections)$ 155 | \setcounter{secnumdepth}{5} 156 | $else$ 157 | \setcounter{secnumdepth}{0} 158 | $endif$ 159 | $if(dir)$ 160 | \ifxetex 161 | % load bidi as late as possible as it modifies e.g. graphicx 162 | $if(latex-dir-rtl)$ 163 | \usepackage[RTLdocument]{bidi} 164 | $else$ 165 | \usepackage{bidi} 166 | $endif$ 167 | \fi 168 | \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex 169 | \TeXXeTstate=1 170 | \newcommand{\RL}[1]{\beginR #1\endR} 171 | \newcommand{\LR}[1]{\beginL #1\endL} 172 | \newenvironment{RTL}{\beginR}{\endR} 173 | \newenvironment{LTR}{\beginL}{\endL} 174 | \fi 175 | $endif$ 176 | 177 | $if(title)$ 178 | \title[$if(shorttitle)$$shorttitle$$else$$title$$endif$]{$title$} 179 | $endif$ 180 | $if(subtitle)$ 181 | \subtitle{$subtitle$} 182 | $endif$ 183 | $if(institute)$ 184 | \institute{$institute$} 185 | $endif$ 186 | $if(author)$ 187 | $if(shortauthor)$ 188 | \author[$shortauthor$]{$for(author)$$author$$sep$ \and $endfor$} 189 | $else$ 190 | \author{$for(author)$$author$$sep$ \and $endfor$} 191 | $endif$ 192 | $endif$ 193 | $if(prof)$ 194 | \newcommand{\myProf}{$prof$} 195 | $else$ 196 | \newcommand{\myProf}{} 197 | $endif$ 198 | \date{$date$} 199 | $for(header-includes)$ 200 | $header-includes$ 201 | $endfor$ 202 | %\usepackage[scaled=0.85]{beramono} 203 | \setbeamertemplate{sections/subsections in toc}[sections numbered] 204 | \makeatletter 205 | \setbeamertemplate{title page}{ 206 | \begin{minipage}[b][\paperheight]{\textwidth} 207 | \ifx\inserttitlegraphic\@empty\else\usebeamertemplate*{title graphic}\fi 208 | \vfill% 209 | \ifx\inserttitle\@empty\else\usebeamertemplate*{title}\fi 210 | \ifx\insertsubtitle\@empty\else\usebeamertemplate*{subtitle}\fi 211 | \usebeamertemplate*{title separator} 212 | \vspace*{2em} 213 | \begin{columns}[totalwidth=\textwidth] 214 | \column{0.7\textwidth} 215 | \usebeamerfont{author}\insertauthor\par 216 | \vspace*{0.25em} 217 | \usebeamerfont{author}\myProf\par 218 | \vspace*{1em} 219 | \usebeamerfont{date}\insertdate\par 220 | \column{0.3\textwidth}\raggedleft\vfill 221 | \ifx\insertinstitute\@empty\else\usebeamertemplate*{institute}\fi 222 | \end{columns} 223 | \vfill 224 | \vspace*{1mm} 225 | \end{minipage} 226 | } 227 | \makeatother 228 | \begin{document} 229 | $if(title)$ 230 | \frame[plain,noframenumbering]{\maketitle} 231 | $endif$ 232 | 233 | $for(include-before)$ 234 | $include-before$ 235 | 236 | $endfor$ 237 | $if(toc)$ 238 | { 239 | \begin{frame}{$toc$} 240 | \tableofcontents[] 241 | \end{frame} 242 | } 243 | $endif$ 244 | $body$ 245 | 246 | $if(natbib)$ 247 | $if(bibliography)$ 248 | $if(biblio-title)$ 249 | $if(book-class)$ 250 | \renewcommand\bibname{$biblio-title$} 251 | $else$ 252 | \renewcommand\refname{$biblio-title$} 253 | $endif$ 254 | $endif$ 255 | \begin{frame}[allowframebreaks]{$biblio-title$} 256 | \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} 257 | \end{frame} 258 | 259 | $endif$ 260 | $endif$ 261 | $if(biblatex)$ 262 | \begin{frame}[allowframebreaks]{$biblio-title$} 263 | \printbibliography[heading=none] 264 | \end{frame} 265 | 266 | 267 | $endif$ 268 | 269 | \frame[plain,noframenumbering]{\titlepage} 270 | 271 | $for(include-after)$ 272 | $include-after$ 273 | 274 | $endfor$ 275 | \end{document} 276 | -------------------------------------------------------------------------------- /defensa/config.tex: -------------------------------------------------------------------------------- 1 | %% Stuff from Pandoc 2 | \providecommand{\tightlist}{% 3 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 4 | 5 | \setlength{\parskip}{1mm} 6 | %\setlength{\mathindent}{0mm} 7 | 8 | %% Algorithms 9 | \usepackage{algorithm} 10 | \usepackage{algorithmic} 11 | \renewcommand{\algorithmicrequire}{\textbf{Entrada:}} 12 | \renewcommand{\algorithmicensure}{\textbf{Salida:}} 13 | \makeatletter 14 | \renewcommand{\ALG@name}{Algoritmo} 15 | \renewcommand{\listalgorithmname}{Lista de \ALG@name s} 16 | \makeatother 17 | 18 | %% Tikz for neural network diagrams 19 | \usepackage{tikz} 20 | 21 | %% Theorem environments 22 | \usepackage{aliascnt} 23 | \def\NewTheorem#1#2{% 24 | \newaliascnt{#1}{theorem} 25 | \newtheorem{#1}[#1]{#2} 26 | \aliascntresetthe{#1} 27 | \expandafter\def\csname #1autorefname\endcsname{#2} 28 | } 29 | \usepackage{amsthm} 30 | \NewTheorem{teo}{Teorema} 31 | \NewTheorem{prop}{Proposición} 32 | \NewTheorem{cor}{Corolario} 33 | \NewTheorem{lema}{Lema} 34 | 35 | \theoremstyle{definition} 36 | \newtheorem{definicion}{Definición} 37 | \newtheorem{ex}{Ejemplo} 38 | %\newtheorem{exca}{Ejercicio}[chapter] 39 | 40 | \theoremstyle{remark} 41 | \newtheorem{obvs}{Observación} 42 | 43 | % Autoref commands 44 | %\newcommand{\corollaryautorefname}{corolario} 45 | %\newcommand{\corautorefname}{corolario} 46 | %\newcommand{\propautorefname}{proposición} 47 | %\newcommand{\propositionautorefname}{proposición} 48 | %\newcommand{\lemmaautorefname}{lema} 49 | \newcommand*{\definitionautorefname}{definición} 50 | \newcommand*{\exampleautorefname}{ejemplo} 51 | \newcommand*{\remarkautorefname}{observación} 52 | \newcommand*{\algorithmautorefname}{algoritmo} 53 | \def\theoremautorefname{teorema} 54 | \def\sectionautorefname{sección} 55 | 56 | %\numberwithin{equation}{section} 57 | 58 | % Replacing environments by pairs of commands for use in Markdown 59 | \newcommand{\defineb}{\begin{definition}} 60 | \newcommand{\definee}{\end{definition}} 61 | \newcommand{\theob}{\begin{theorem}} 62 | \newcommand{\theoe}{\end{theorem}} 63 | \newcommand{\lemmab}{\begin{lemma}} 64 | \newcommand{\lemmae}{\end{lemma}} 65 | \newcommand{\propb}{\begin{prop}} 66 | \newcommand{\prope}{\end{prop}} 67 | \newcommand{\remb}{\begin{remark}} 68 | \newcommand{\reme}{\end{remark}} 69 | \newcommand{\proofb}{\begin{proof}} 70 | \newcommand{\proofe}{\end{proof}} 71 | \newcommand{\exampleb}{\begin{example}} 72 | \newcommand{\examplee}{\end{example}} 73 | \newcommand{\corb}{\begin{cor}} 74 | \newcommand{\core}{\end{cor}} 75 | 76 | % hyperref 77 | %\PassOptionsToPackage{xetex,hyperfootnotes=false,pdfpagelabels}{hyperref} 78 | % \usepackage{hyperref} 79 | 80 | %% ATAJOS 81 | \newcommand{\RR}{\mathbb{R}} 82 | \newcommand{\NN}{\mathbb{N}} 83 | \newcommand{\ZZ}{\mathbb{Z}} 84 | \newcommand{\KK}{\mathbb{K}} 85 | \newcommand{\LL}{\mathcal{L}} 86 | 87 | % Distribuciones de probabilidad 88 | \newcommand{\PN}{\mathcal{N}} 89 | 90 | % Traspuesta 91 | \newcommand{\Tr}[1]{#1^{\mathrm{T}}} 92 | % Norma 93 | \newcommand{\norm}[1]{\left\lVert#1\right\rVert} 94 | 95 | %\newcommand{\dim}{\mathrm{dim}} 96 | \newcommand{\E}{\mathrm{E}} 97 | \let\Pr\relax 98 | \newcommand{\Pr}[1]{\mathrm{P}\left[#1\right]} 99 | \newcommand{\Var}{\mathrm{Var}} 100 | \newcommand{\Ker}{\mathrm{Ker}} 101 | \newcommand{\Mid}{\mid\mid} 102 | 103 | \newcommand{\asconv}{\overset{cs}{\rightarrow}} 104 | \newcommand{\pconv}{\overset{P}{\rightarrow}} 105 | \newcommand{\softmax}[1]{\mathrm{softmax}(#1)} 106 | 107 | %\newcommand{\note}[1]{\paragraph{Nota}#1} -------------------------------------------------------------------------------- /defensa/images/Rplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/Rplot.png -------------------------------------------------------------------------------- /defensa/images/ccbysa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/ccbysa.png -------------------------------------------------------------------------------- /defensa/images/demo/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/1.png -------------------------------------------------------------------------------- /defensa/images/demo/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/10.png -------------------------------------------------------------------------------- /defensa/images/demo/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/11.png -------------------------------------------------------------------------------- /defensa/images/demo/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/12.png -------------------------------------------------------------------------------- /defensa/images/demo/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/13.png -------------------------------------------------------------------------------- /defensa/images/demo/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/2.png -------------------------------------------------------------------------------- /defensa/images/demo/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/3.png -------------------------------------------------------------------------------- /defensa/images/demo/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/4.png -------------------------------------------------------------------------------- /defensa/images/demo/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/5.png -------------------------------------------------------------------------------- /defensa/images/demo/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/6.png -------------------------------------------------------------------------------- /defensa/images/demo/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/7.png -------------------------------------------------------------------------------- /defensa/images/demo/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/8.png -------------------------------------------------------------------------------- /defensa/images/demo/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/demo/9.png -------------------------------------------------------------------------------- /defensa/images/gradient_ascent_contour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/gradient_ascent_contour.png -------------------------------------------------------------------------------- /defensa/images/gradient_ascent_surface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/gradient_ascent_surface.png -------------------------------------------------------------------------------- /defensa/images/leaky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/leaky.png -------------------------------------------------------------------------------- /defensa/images/neurona_biologica.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/neurona_biologica.png -------------------------------------------------------------------------------- /defensa/images/plot_iris_ae1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/plot_iris_ae1.png -------------------------------------------------------------------------------- /defensa/images/plot_iris_ae2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/plot_iris_ae2.png -------------------------------------------------------------------------------- /defensa/images/relu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/relu.png -------------------------------------------------------------------------------- /defensa/images/responsive_web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/responsive_web.png -------------------------------------------------------------------------------- /defensa/images/rutavis_compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/rutavis_compare.png -------------------------------------------------------------------------------- /defensa/images/rutavis_iris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/rutavis_iris.png -------------------------------------------------------------------------------- /defensa/images/rutavis_params.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/rutavis_params.png -------------------------------------------------------------------------------- /defensa/images/rutavis_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/rutavis_plot.png -------------------------------------------------------------------------------- /defensa/images/rutavis_plot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/rutavis_plot2.png -------------------------------------------------------------------------------- /defensa/images/rutavis_welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/rutavis_welcome.png -------------------------------------------------------------------------------- /defensa/images/rutaweb_pc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/rutaweb_pc.png -------------------------------------------------------------------------------- /defensa/images/rutaweb_phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/rutaweb_phone.png -------------------------------------------------------------------------------- /defensa/images/sigmoid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/sigmoid.png -------------------------------------------------------------------------------- /defensa/images/softplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/softplus.png -------------------------------------------------------------------------------- /defensa/images/tanh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/tanh.png -------------------------------------------------------------------------------- /defensa/images/ugrmarca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/defensa/images/ugrmarca.png -------------------------------------------------------------------------------- /defensa/notas.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | # Motivación 5 | 6 | El objetivo de este trabajo era construir un software para el uso de estructuras de deep learning no supervisado. Para ello, mi intención era conocer muy bien los fundamentos del deep learning, tanto en la parte matemática como los algoritmos y técnicas que se originan en el aprendizaje automático y lo hacen posible. Así, por una parte nos vamos a centrar en las ramas de las matemáticas que intervienen: probabilidad, teoría de la información, tensores. Y por otra estudiaremos de forma teórica las técnicas de deep learning que nos permiten implementar nuestra herramienta. 7 | 8 | # Índice 9 | 10 | He estructurado esta presentación de la misma forma, hablando primero de las matemáticas involucradas, luego de deep learning y finalmente presentando el software que he desarrollado. 11 | 12 | # Convergencia 13 | 14 | Empezamos con los resultados relevantes de probabilidad. En el trabajo añado además un recordatorio de conceptos, que termina en estos dos resultados bastante básicos sobre convergencia en probabilidad y casi segura. El lema nos dice que si tenemos una sucesión de variables con varianza finita tendiendo a cero, y esperanzas tendiendo a $x$, las propias variables tienden a la constante $x$. Por otro lado, el teorema de la aplicación continua nos dice que si una función es continua casi seguramente, entonces conserva los límites en probabilidad y casi seguros. 15 | 16 | # Maldición 17 | 18 | Estos resultados son los que permiten demostrar este teorema. De forma teórica, el teorema asume una sucesión de distribuciones de probabilidad, y de cada una se tienen $n$ muestras. Además para cada una tenemos una función no negativa de la que tomamos el mínimo y el máximo absolutos. Bajo una condición de convergencia sobre la varianza de esa variable referente a las funciones tomadas, tenemos que la probabilidad de que dichos máximo y mínimo estén todo lo cerca que queramos es uno. 19 | 20 | La interpretación que haremos de este teorema habla de muestras de datos y dimensiones: si $m$ es el número de dimensiones que tiene el conjunto de datos, y $d$ es la distancia de un punto fijo a cualquier otro de la muestra, entonces conforme aumenta el número de dimensiones, el punto más cercano y el más lejano están a una distancia cada vez más similar. Este resultado motiva por tanto nuestro interés por reducir la dimensionalidad de los conjuntos de datos en aprendizaje automático, ya que algunos de los algoritmos más comunes utilizan distancias entre puntos y se ven muy afectados por este fenómeno. 21 | 22 | # Entropía 23 | 24 | Pasamos ahora a la parte de teoría de la información. La entropía nos habla de la cantidad de información que tiene una variable aleatoria, y en concreto se puede interpretar como la longitud de código que necesitamos para representar sus valores. Si tenemos una variable aleatoria X discreta, la entropía se define de esta forma, como, una suma de las probabilidades por los logaritmos de las mismas. Nótese que depende de las probabilidades y no de los valores de la variable, luego dos variables idénticamente distribuidas presentarán la misma entropía. 25 | 26 | Definimos también la entropía condicionada, que se ve como la suma en X de sus probabilidades por la entropía de Y fijado el valor de X, o equivalentemente tiene esta expresión como la esperanza respecto de la distribución conjunta. 27 | 28 | # Entropía cruzada 29 | 30 | El concepto interesante para usarlo posteriormente en el trabajo ha sido la entropía cruzada. Esta surge de la divergencia de Kullback-Leibler o entropía relativa, que se define como vemos, y describe la diferencia en la longitud de código que necesitaríamos para representar los valores de X si asumimos que se distribuyen según q respecto a si usáramos su distribución verdadera, p. Si esta cantidad se la sumamos a la entropía de la variable X, ya tenemos la entropía cruzada. 31 | 32 | Además, la entropía cruzada tiene una versión condicionada, que se puede expresas de estas dos formas. Esta entropía cruzada se utiliza en Deep Learning para construir las funciones de coste o funciones objetivo que trataremos de optimizar. 33 | 34 | # Desigualdad de la información 35 | 36 | Pero otro resultado que también nos interesa de la teoría de la información es la desigualdad de la información. Basándonos en la desigualdad de Jensen podemos probar que la divergencia de Kullback-Leibler es siempre no negativa, y como consecuencia la divergencia condicionada también lo es. Esto nos sirve para decir que siempre que asumimos una distribución sobre unos datos, es decir, un modelo, necesitamos una mayor longitud de código que la óptima para representarlos, o lo que es lo mismo, es más difícil comprimirlos sin perder información. 37 | 38 | Estos dos resultados están demostrados en la memoria del trabajo. 39 | 40 | # Tensor 41 | 42 | Por último en la parte matemática, comentaré el concepto de tensor y cómo se lleva al ámbito del aprendizaje automático. Un tensor se puede definir como un funcional multilineal, que se evalúa en un producto de K-espacios vectoriales y da valores de K. 43 | 44 | Podemos hablar de tensores que son covariantes o contravariantes en cada variable. Esto se refiere a si el espacio vectorial donde toma valores esa variable es el espacio original de referencia, en cuyo caso decimos que es covariante, o bien es el dual del espacio de referencia, en cuyo caso estamos hablando de ser contravariante. 45 | 46 | # Casos particulares 47 | 48 | Para ver que los tensores generalizan múltiples estructuras del álgebra lineal, observamos que un funcional lineal es un tensor 1-covariante, un vector v es un tensor 1-contravariante visto en el doble dual, y una constante del cuerpo K es un tensor de tipo 0,0 es decir, 0-covariante, 0-contravariante. 49 | 50 | # Tensores en aprendizaje 51 | 52 | Para aprovechar esta generalización de estructuras de álgebra lineal, en aprendizaje automático y otras áreas aplicadas se utilizan objetos a los que llamamos también tensores y en realidad son simplemente generalizaciones de los vectores y las matrices, sin aprovechar el resto de propiedades algebraicas que tienen. Sin embargo, sí que existen distintas operaciones y descomposiciones de estos tensores que permiten hacer uso eficiente de la memoria. Por esto es que en las bibliotecas más potentes dedicadas a Deep Learning se implementan, a bajo nivel, operaciones con tensores para construir sobre ellas los algoritmos, y sobre estos las estructuras profundas de aprendizaje. 53 | 54 | # Clasificación 55 | 56 | Con esto paso a la sección sobre aprendizaje automático, y comento uno de los problemas que nos ocupa: el problema de clasificación. Consiste en aprender a asignar una o varias etiquetas a las instancias sin clasificar que nos lleguen, habiendo aprendido anteriormente mediante un conjunto de entrenamiento en el que las instancias estaban clasificadas. 57 | 58 | Más formalmente, el objetivo del problema es, dado un espacio de atributos, un conjunto de etiquetas y un conjunto de instancias etiquetadas, encontrar el clasificador que mejor se adapte al problema, según una o varias métricas de evaluación. 59 | 60 | Además, según la estructura del conjunto de etiquetas L se pueden dar problemas binarios, multiclase, multietiqueta y multidimensional. 61 | 62 | # Reducción de dimensionalidad 63 | 64 | El otro problema al que nos enfrentamos es cómo reducir la dimensionalidad de un conjunto de datos, es decir, el número de dimensiones del espacio de atributos, sin perder mucha información. Esto es necesario ya que hemos visto en la parte de probabilidad que al aumentar el número de dimensiones, la distancia dejaba de ser significativa. Hay dos vías para tratar el problema, la construcción de nuevas características para sustituir a las originales y la selección de características entre la existentes. En nuestro caso, trabajaremos por la primera vía. 65 | 66 | # Gradiente descendente 67 | 68 | Puesto que al final modelaremos el problema como la búsqueda del mínimo de una función de coste, nos interesa conocer los algoritmos de optimización presentes en el aprendizaje automático. Uno de los clásicos, y en el que se basan los utilizados en deep learning, es gradiente descendente. Sabiendo que el gradiente de una función apunta en la dirección y sentido de mayor pendiente, si buscamos el mínimo basta con ir saltando poco a poco y evaluando de nuevo en cada punto el gradiente de la función, para buscar la nueva dirección de salto. Al paso que damos se le llama tasa de aprendizaje. El origen de este algoritmo se debe a Cauchy, que lo publicó en 1847. 69 | 70 | # Grad desc II 71 | 72 | Y aquí podemos ver un ejemplo de cómo avanza el algoritmo: cuando encuentra gradientes grandes avanza a mayores pasos, y conforme se acerca al óptimo, en este caso el máximo, da pasos vada vez más cortos. Esto presenta algunas desventajas, podemos ver que avanza en zigzag y que la convergencia al final es muy lenta. Algunas de las variantes de este algoritmo para deep learning lo solucionan. 73 | 74 | # Neuronas artificiales 75 | 76 | Entro ya en lo que es deep learning, presentando la base de toda red neuronal, la neurona artificial. La similitud con un tipo de neuronas biológicas la vemos aquí: ambas reciben entradas que acumulan, evalúan de alguna forma y esto permite producir un estímulo de salida. La neurona artificial simplemente realiza una suma de las entradas ponderada mediante pesos, y le aplica una función que llamamos de activación. 77 | 78 | # Redes profundas 79 | 80 | Si acumulamos muchas de estas neuronas o unidades, podemos construir redes profundas, es decir, de varias capas. A cada una de las neuronas de la primera capa les llegan todos los datos de entrada, que los transforman y los pasan a la siguiente, y así sucesivamente. La salida de la red puede tener una o más neuronas según el objetivo que tenga. 81 | 82 | Esencialmente, las redes neuronales prealimentadas, es decir, las que no tienen ciclos vistas como grafo, representan una composición de funciones y transformaciones lineales como la que veíamos para una sola neurona. A la derecha vemos un ejemplo de este tipo de redes. 83 | 84 | # Unidades y algoritmos 85 | 86 | Las unidades de una red pueden ser ocultas o de salida. Las de salida forman la última capa y el resto se denominan generalmente ocultas. Las de salida además determinan la función de coste a optimizar. 87 | 88 | Por otro lado, las funciones de activación que pueden tener cada una de estas capas de unidades son diversas: desde ninguna, es decir, simplemente la unidad lineal, pasando por algunas rectificaciones como la ReLU, o funciones como la logística, la tangente hiperbólica, softmax, softplus, etc. que están definidas y explicadas en la memoria. 89 | 90 | En el proceso de entrenamiento de una red neuronal, se intenta optimizar los pesos para que la salida de la red sea lo más similar posible a la salida deseada. Aquí se involucran varios algoritmos. Primero, para evaluar la salida de la red ante valores de entrada se usa la propagación hacia adelante. Para calcular los gradientes necesarios, propagación hacia atrás. Y para optimizar todo el conjunto de parámetros, variantes más eficientes de gradiente descendente como gradiente descendente estocástico, AdaGrad, RMSProp o Adam. Todos estos algoritmos vienen descritos en la memoria, por restricciones de tiempo no me detengo más en ellos. 91 | 92 | # Estructuras profundas no supervisadas 93 | 94 | La estructura profunda no supervisada canónica es el autoencoder, que vemos a la derecha, que puede contar con todas las capas que queramos, siempre se forma simétrica. Lo que aprende el autoencoder es a reconstruir la entrada a la salida, pero de alguna forma se le restringe para que no aprenda simplemente a copiarla. Por ejemplo, en los autoencoders infracompletos como el de la figura, debe construir una codificación de los datos en menos dimensiones para poder reconstruirla. Otros tipos de autoencoder son el disperso, el contractivo y el eliminador de ruido. 95 | 96 | Por otro lado tenemos a la máquina de boltzmann restringida, que es un modelo muy distinto, de sólo dos capas y basado en una función de energía. Aprende algo similar al autoencoder, pero se entrena hacia adelante y hacia atrás, tratando de reconstruir la capa visible v mediante la oculta h. En deep learning se utiliza como base para construir otras estructuras o para la fase de entrenamiento, por ejemplo, hay una propuesta de pre-entrenamiento de autoencoders que utiliza RBMs. 97 | 98 | 99 | # R y MXNet 100 | 101 | Paso ya a contar la herramienta que he implementado en este trabajo, se trata de una herramienta para R basada en MXNet así que comento rápidamente lo que son: R es un lenguaje de programación orientado a datos, que tiene una potente plataforma de paquetes con todo tipo de bibliotecas, y viene de serie con estructuras de datos que representan conjuntos de datos como el data.frame. 102 | 103 | MXNet, por otro lado, es una biblioteca que implementa en C++ los optimizadores y otros algoritmos necesarios para construir redes neuronales, es más rápida que otras bibliotecas competidoras y permite ser usada desde R. 104 | 105 | # Ruta I 106 | 107 | He desarrollado dos paquetes para R, complementarios el uno del otro, que permiten usar y estudiar las estructuras no supervisadas de Deep Learning que acabamos de conocer. Un prototipo muy preliminar lo presenté en el congreso CAEPIA 2016 bajo el nombre "dlvisR". Además, ambas herramientas están liberadas bajo la GPL 3 de GNU. 108 | 109 | Estoy usando también un sistema de integración continua para construir y comprobar las builds a cada cambio del código que suba, y he desarrollado un pequeño sitio web que da acceso al paquete y la documentación, que está disponible en la dirección *ruta punto software*. 110 | 111 | # Ruta II 112 | 113 | La herramienta principal, Ruta, reparte su funcionalidad en tres módulos. El primero es el de tareas. Una tarea de aprendizaje se corresponde con un conjunto de datos y algunos parámetros acerca de dicho conjunto. El usuario las puede generar con la función ruta.makeTask y derivadas como ruta.makeUnsupervisedTask. Aquí vemos un ejemplo 114 | 115 | # Ruta III 116 | 117 | La parte importante de la implementación son las estructuras de aprendizaje; Ruta permite construir autoencoders y RBMs con un sencillo comando ruta.makeLearner. Una vez construidos se pueden entrenar con train, ajustando los parámetros que deseemos. Vemos en el ejemplo que construimos un autoencoder de 3 capas con codificación de 2 unidades, activación de tipo leaky ReLU. Lo pre-entrenamos con el proceso descrito en el trabajo como pila de RBMs, y lo entrenamos ajustando el optimizador, el número de épocas y la tasa de aprendizaje, entre otros parámetros. 118 | 119 | # Ruta IV 120 | 121 | Una vez hemos obtenido un modelo entrenado, podemos utilizarlo de diversas formas, bien para obtener las codificaciones para nuevos datos, o extraer la capa de salida de la red que corresponde a las reconstrucciones, o bien cualquier otra capa intermedia, mediante la función ruta.layerOutputs. Esta utiliza por debajo una funcionalidad bastante avanzada que no estaba presente en la biblioteca MXNet y he implementado yo, interactuando directamente sobre la red y propagando los datos en una función propia. En este ejemplo obtendríamos la codificación generada por el autoencoder para la misma tarea con la que se entrenó. 122 | 123 | # Rutavis I 124 | 125 | La segunda herramienta se denomina Rutavis, y permite realizar visualizaciones sobre los modelos entrenados por un autoencoder. Estos gráficos son interactivos gracias a la biblioteca Plotly, como el ejemplo que vemos a la derecha, realizado sobre el conocido conjunto Iris. 126 | 127 | Además, incluye también una interfaz de usuario web, de forma que el usuario puede crear, entrenar y visualizar modelos sin programar nada. 128 | 129 | # Rutavis II 130 | 131 | Aquí muestro la interfaz gráfica de Rutavis. Cuenta con una barra superior de pestañas y modos de visualización: visualización única, en mosaico o en formato notebook. A la izquierda se muestra el panel de ajustes que permite seleccionar un conjunto de datos, construir y entrenar un modelo y en la parte derecha se visualizará la capa de codificación del autoencoder configurado. 132 | 133 | # Rutavis III 134 | 135 | En estas capturas de pantalla muestro con más detalle el panel de ajustes, donde en este caso se está usando el dataset de diagnóstico de cáncer en Wisconsin, con un autoencoder con activación Leaky, 3 unidades ocultas y 200 épocas, optimizador adagrad y tasa de aprendizaje 0.02. A la derecha muestro el modo mosaico, en el que se pueden comparar fácilmente dos visualizaciones generadas por rutavis. 136 | 137 | # Conclusiones 138 | 139 | En este trabajo hemos estudiado las técnicas no supervisadas de deep learning desde sus orígenes matemáticos, hasta una implementación práctica y con muchas facilidades para el usuario. Así, hemos cumplido nuestros objetivos pero esto nos abre distintas vías de trabajo. Entre ellas puedo mencionar el añadir más variantes de autoencoders a Ruta, o más visualizaciones en Rutavis. También se podrían introducir comparaciones con otras técnicas de reducción de la dimensionalidad no basadas en deep learning, como t-SNE y Locally Linear Embedding. 140 | 141 | # Fin 142 | 143 | Esto es todo por mi parte, muchas gracias por su atención y estoy abierto a cualquier pregunta que tengan. 144 | 145 | # Time tracking 146 | 147 | * Primer ensayo (leyendo): 17:46 148 | -------------------------------------------------------------------------------- /defensa/presentacion.tex: -------------------------------------------------------------------------------- 1 | \documentclass[,ignorenonframetext,compress]{beamer} 2 | \setbeamertemplate{caption}[numbered] 3 | \setbeamertemplate{caption label separator}{: } 4 | \setbeamercolor{caption name}{fg=normal text.fg} 5 | \beamertemplatenavigationsymbolsempty 6 | \usepackage{lmodern} 7 | \usepackage{amssymb,amsmath} 8 | \usepackage{ifxetex,ifluatex} 9 | \usepackage{fixltx2e} % provides \textsubscript 10 | \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex 11 | \usepackage[T1]{fontenc} 12 | \usepackage[utf8]{inputenc} 13 | \else % if luatex or xelatex 14 | \ifxetex 15 | \usepackage{mathspec} 16 | \else 17 | \usepackage{fontspec} 18 | \fi 19 | \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase} 20 | \setmainfont[]{Fira Sans} 21 | \fi 22 | \usetheme[]{metropolis} 23 | \usecolortheme{metropolis} 24 | \usefonttheme{serif} % use mainfont rather than sansfont for slide text 25 | % use upquote if available, for straight quotes in verbatim environments 26 | \IfFileExists{upquote.sty}{\usepackage{upquote}}{} 27 | % use microtype if available 28 | \IfFileExists{microtype.sty}{% 29 | \usepackage{microtype} 30 | \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts 31 | }{} 32 | \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex 33 | \usepackage[shorthands=off,main=]{babel} 34 | \else 35 | \usepackage{polyglossia} 36 | \setmainlanguage[]{} 37 | \fi 38 | \newif\ifbibliography 39 | \hypersetup{ 40 | pdftitle={Reducción de la dimensionalidad en problemas de clasificación con Deep Learning}, 41 | pdfauthor={Francisco David Charte Luque}, 42 | pdfborder={0 0 0}, 43 | breaklinks=true} 44 | \urlstyle{same} % don't use monospace font for urls 45 | \usepackage{graphicx,grffile} 46 | \makeatletter 47 | \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} 48 | \def\maxheight{\ifdim\Gin@nat@height>\textheight0.8\textheight\else\Gin@nat@height\fi} 49 | \makeatother 50 | % Scale images if necessary, so that they will not overflow the page 51 | % margins by default, and it is still possible to overwrite the defaults 52 | % using explicit options in \includegraphics[width, height, ...]{} 53 | \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} 54 | 55 | % Prevent slide breaks in the middle of a paragraph: 56 | \widowpenalties 1 10000 57 | \raggedbottom 58 | 59 | \AtBeginPart{ 60 | \let\insertpartnumber\relax 61 | \let\partname\relax 62 | \frame{\partpage} 63 | } 64 | \AtBeginSection{ 65 | \ifbibliography 66 | \else 67 | \let\insertsectionnumber\relax 68 | \let\sectionname\relax 69 | \frame{\sectionpage} 70 | \fi 71 | } 72 | \AtBeginSubsection{ 73 | \let\insertsubsectionnumber\relax 74 | \let\subsectionname\relax 75 | \frame{\subsectionpage} 76 | } 77 | 78 | \setlength{\parindent}{0pt} 79 | \setlength{\parskip}{6pt plus 2pt minus 1pt} 80 | \setlength{\emergencystretch}{3em} % prevent overfull lines 81 | \providecommand{\tightlist}{% 82 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 83 | \setcounter{secnumdepth}{0} 84 | \newcommand{\columnsbegin}{\begin{columns}} 85 | \newcommand{\columnsend}{\end{columns}} 86 | \definecolor{headbg}{RGB}{61, 96, 103} 87 | \definecolor{headfg}{RGB}{232, 239, 241} 88 | \definecolor{lightgrey}{RGB}{230, 230, 230} 89 | \setbeamercolor{headtitle}{fg=headfg,bg=headbg} 90 | \setbeamercolor{headnav}{fg=headfg,bg=headbg} 91 | \setbeamercolor{section in head/foot}{fg=headfg,bg=headbg} 92 | \defbeamertemplate*{headline}{miniframes theme no subsection}{ \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex, leftskip=.3cm,rightskip=.3cm plus1fil]{headtitle} {\usebeamerfont{title in head/foot}\insertshorttitle} \hfill \leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor} \end{beamercolorbox} \begin{beamercolorbox}[colsep=1.5pt]{upper separation line head} \end{beamercolorbox} \begin{beamercolorbox}{headnav} \vskip2pt\textsc{\insertnavigation{\paperwidth}}\vskip2pt \end{beamercolorbox} \begin{beamercolorbox}[colsep=1.5pt]{lower separation line head} \end{beamercolorbox} } 93 | \makeatletter\renewcommand{\@metropolis@frametitlestrut}{ \vphantom{ÁÉÍÓÚABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz()1234567890} }\makeatother 94 | \defbeamertemplate*{footline}{miniframes theme no subsection}{} 95 | \beamertemplatenavigationsymbolsempty 96 | 97 | \title{Reducción de la dimensionalidad en problemas de clasificación con Deep 98 | Learning} 99 | \subtitle{Análisis y propuesta de herramienta en R} 100 | \author{Francisco David Charte Luque} 101 | \institute{Universidad de Granada} 102 | \date{Trabajo Fin de Grado} 103 | 104 | \begin{document} 105 | \frame{\titlepage} 106 | 107 | \section{Fundamentos matemáticos}\label{fundamentos-matemuxe1ticos} 108 | 109 | \subsection{Probabilidad y 110 | dimensionalidad}\label{probabilidad-y-dimensionalidad} 111 | 112 | \begin{frame}{Maldición de la dimensionalidad} 113 | 114 | x 115 | 116 | \end{frame} 117 | 118 | \section{Deep Learning}\label{deep-learning} 119 | 120 | \subsection{Aprendizaje automático}\label{aprendizaje-automuxe1tico} 121 | 122 | \begin{frame}{Gradiente descendente} 123 | 124 | \end{frame} 125 | 126 | \section{La herramienta Ruta}\label{la-herramienta-ruta} 127 | 128 | \subsection{El lenguaje R}\label{el-lenguaje-r} 129 | 130 | \begin{frame}{R} 131 | 132 | \end{frame} 133 | 134 | \begin{frame}{Referencias} 135 | 136 | \begin{thebibliography}{9} 137 | 138 | \bibitem{gelfand63} 139 | Gelfand, I.M.; Minlos, R.A.; Shapiro, Z.Ya. (1963), 140 | Representations of the Rotation and Lorentz Groups and their Applications, 141 | New York: Pergamon Press. 142 | 143 | \bibitem{vince11} 144 | Vince, John (2011), 145 | Quaternions for Computer Graphics, 146 | Springer-Verlag London. 147 | 148 | \bibitem{aluffi07} 149 | Aluffi, Paolo (2007), 150 | Algebra: Chapter 0, 151 | Graduate Studies in Mathematics. American Mathematical Society 152 | 153 | \bibitem{unity} 154 | Unity Game Engine, 155 | Sitio Oficial, 156 | https://unity3d.com 157 | 158 | \end{thebibliography} 159 | 160 | \end{frame} 161 | 162 | \end{document} 163 | -------------------------------------------------------------------------------- /defensa/presentacion2.tex: -------------------------------------------------------------------------------- 1 | \documentclass[,ignorenonframetext,compress]{beamer} 2 | \setbeamertemplate{caption}[numbered] 3 | \setbeamertemplate{caption label separator}{: } 4 | \setbeamercolor{caption name}{fg=normal text.fg} 5 | \beamertemplatenavigationsymbolsempty 6 | \usepackage{lmodern} 7 | \usepackage{amssymb,amsmath} 8 | \usepackage{ifxetex,ifluatex} 9 | \usepackage{fixltx2e} % provides \textsubscript 10 | \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex 11 | \usepackage[T1]{fontenc} 12 | \usepackage[utf8]{inputenc} 13 | \else % if luatex or xelatex 14 | \ifxetex 15 | \usepackage{mathspec} 16 | \else 17 | \usepackage{fontspec} 18 | \fi 19 | \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase} 20 | \setmainfont[]{Fira Sans} 21 | \fi 22 | \usetheme[]{metropolis} 23 | \usecolortheme{metropolis} 24 | \usefonttheme{serif} % use mainfont rather than sansfont for slide text 25 | % use upquote if available, for straight quotes in verbatim environments 26 | \IfFileExists{upquote.sty}{\usepackage{upquote}}{} 27 | % use microtype if available 28 | \IfFileExists{microtype.sty}{% 29 | \usepackage{microtype} 30 | \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts 31 | }{} 32 | \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex 33 | \usepackage[shorthands=off,main=]{babel} 34 | \else 35 | \usepackage{polyglossia} 36 | \setmainlanguage[]{} 37 | \fi 38 | \newif\ifbibliography 39 | \hypersetup{ 40 | pdftitle={Reducción de la dimensionalidad en problemas de clasificación con Deep Learning}, 41 | pdfauthor={Francisco David Charte Luque}, 42 | pdfborder={0 0 0}, 43 | breaklinks=true} 44 | \urlstyle{same} % don't use monospace font for urls 45 | \usepackage{color} 46 | \usepackage{fancyvrb} 47 | \newcommand{\VerbBar}{|} 48 | \newcommand{\VERB}{\Verb[commandchars=\\\{\}]} 49 | \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} 50 | % Add ',fontsize=\small' for more characters per line 51 | \newenvironment{Shaded}{}{} 52 | \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} 53 | \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}} 54 | \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} 55 | \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} 56 | \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}} 57 | \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}} 58 | \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} 59 | \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} 60 | \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} 61 | \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}} 62 | \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}} 63 | \newcommand{\ImportTok}[1]{#1} 64 | \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}} 65 | \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}} 66 | \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} 67 | \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} 68 | \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}} 69 | \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}} 70 | \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}} 71 | \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}} 72 | \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}} 73 | \newcommand{\BuiltInTok}[1]{#1} 74 | \newcommand{\ExtensionTok}[1]{#1} 75 | \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}} 76 | \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}} 77 | \newcommand{\RegionMarkerTok}[1]{#1} 78 | \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} 79 | \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}} 80 | \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} 81 | \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}} 82 | \newcommand{\NormalTok}[1]{#1} 83 | \usepackage{graphicx,grffile} 84 | \makeatletter 85 | \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} 86 | \def\maxheight{\ifdim\Gin@nat@height>\textheight0.8\textheight\else\Gin@nat@height\fi} 87 | \makeatother 88 | % Scale images if necessary, so that they will not overflow the page 89 | % margins by default, and it is still possible to overwrite the defaults 90 | % using explicit options in \includegraphics[width, height, ...]{} 91 | \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} 92 | 93 | % Prevent slide breaks in the middle of a paragraph: 94 | \widowpenalties 1 10000 95 | \raggedbottom 96 | 97 | \AtBeginPart{ 98 | \let\insertpartnumber\relax 99 | \let\partname\relax 100 | \frame{\partpage} 101 | } 102 | \AtBeginSection{ 103 | \ifbibliography 104 | \else 105 | \let\insertsectionnumber\relax 106 | \let\sectionname\relax 107 | \frame{\sectionpage} 108 | \fi 109 | } 110 | \AtBeginSubsection{ 111 | \let\insertsubsectionnumber\relax 112 | \let\subsectionname\relax 113 | \frame{\subsectionpage} 114 | } 115 | 116 | \setlength{\parindent}{0pt} 117 | \setlength{\parskip}{6pt plus 2pt minus 1pt} 118 | \setlength{\emergencystretch}{3em} % prevent overfull lines 119 | \providecommand{\tightlist}{% 120 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 121 | \setcounter{secnumdepth}{0} 122 | \newcommand{\columnsbegin}{\begin{columns}} 123 | \newcommand{\columnsend}{\end{columns}} 124 | \definecolor{headbg}{RGB}{61, 96, 103} 125 | \definecolor{headfg}{RGB}{232, 239, 241} 126 | \definecolor{lightgrey}{RGB}{230, 230, 230} 127 | \setbeamercolor{headtitle}{fg=headfg,bg=headbg} 128 | \setbeamercolor{headnav}{fg=headfg,bg=headbg} 129 | \setbeamercolor{section in head/foot}{fg=headfg,bg=headbg} 130 | \defbeamertemplate*{headline}{miniframes theme no subsection}{ \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex, leftskip=.3cm,rightskip=.3cm plus1fil]{headtitle} {\usebeamerfont{title in head/foot}\insertshorttitle} \hfill \leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor} \end{beamercolorbox} \begin{beamercolorbox}[colsep=1.5pt]{upper separation line head} \end{beamercolorbox} \begin{beamercolorbox}{headnav} \vskip2pt\textsc{\insertnavigation{\paperwidth}}\vskip2pt \end{beamercolorbox} \begin{beamercolorbox}[colsep=1.5pt]{lower separation line head} \end{beamercolorbox} } 131 | \makeatletter\renewcommand{\@metropolis@frametitlestrut}{ \vphantom{ÁÉÍÓÚABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz()1234567890} }\makeatother 132 | \defbeamertemplate*{footline}{miniframes theme no subsection}{} 133 | \beamertemplatenavigationsymbolsempty 134 | 135 | \title{Reducción de la dimensionalidad en problemas de clasificación con Deep 136 | Learning} 137 | \subtitle{Análisis y propuesta de herramienta en R} 138 | \author{Francisco David Charte Luque} 139 | \institute{Universidad de Granada} 140 | \date{Trabajo Fin de Grado} 141 | 142 | \begin{document} 143 | \frame{\titlepage} 144 | 145 | \section{Fundamentos matemáticos} 146 | 147 | \begin{frame}{SO(3)} 148 | 149 | \begin{exampleblock}{Definición} 150 | Llamamos $O(n)$ al grupo de las \textbf{matrices ortogonales} reales 151 | de dimensiones $n \times n$ con la operación de composición; es 152 | decir, 153 | \[O(n) = \left\{ M \in GL(n) \mid MM^t=M^tM = I_n \right\}.\] 154 | \end{exampleblock} 155 | 156 | \begin{exampleblock}{Definición} 157 | Llamamos $SO(n)$ al \textbf{subgrupo de rotaciones}, definido como 158 | el subgrupo de $O(n)$ formado por aquellas matrices que tienen 159 | determinante $1$. Es decir, 160 | \[SO(n) = \left\{ M \in O(n) \mid \mathrm{det}(M)=1 \right\}.\] 161 | \end{exampleblock} 162 | 163 | \end{frame} 164 | 165 | \begin{frame}{Propiedades topológicas de las rotaciones} 166 | 167 | \begin{exampleblock}{Proposición} 168 | El grupo $SO(3)$, con la topología inducida desde la topología usual 169 | de las matrices, es homeomorfo al espacio proyectivo tridimensional 170 | $\mathbb{RP}^3$. 171 | \end{exampleblock} 172 | 173 | De este resultado se deduce que \(SO(3)\) es \textit{conexo} y que tiene 174 | un grupo fundamental no trivial, no siendo, por tanto, 175 | \textit{simplemente conexo}. 176 | 177 | \end{frame} 178 | 179 | \section{Ángulos de Euler}\label{uxe1ngulos-de-euler} 180 | 181 | \begin{frame}{Definición} 182 | 183 | \begin{exampleblock}{Definición} 184 | Se conoce como sistema de los \textbf{ángulos de Euler} al que 185 | utiliza tres ángulos de rotación sobre los ejes cartesianos para 186 | describir la orientación de un objeto respecto a un sistema de 187 | coordenadas fijo en el espacio. 188 | \end{exampleblock} 189 | 190 | \end{frame} 191 | 192 | \begin{frame}{Descomposición} 193 | 194 | \begin{equation*} 195 | \mathbf{R}_{\psi,z} 196 | \mathbf{R}_{\phi,y} 197 | \mathbf{R}_{\theta,x} = 198 | \end{equation*}\begin{equation*} 199 | \begin{pmatrix} 200 | \cos \psi & -\sin \psi & 0 \\ 201 | \sin \psi & \cos \psi & 0 \\ 202 | 0 & 0 & 1 203 | \end{pmatrix}\begin{pmatrix} 204 | \cos \phi & 0 & \sin \phi \\ 205 | 0 & 1 & 0 \\ 206 | -\sin \phi & 0 & \cos \phi 207 | \end{pmatrix}\begin{pmatrix} 208 | 1 & 0 & 0 \\ 209 | 0 & \cos \theta & -\sin \theta \\ 210 | 0 & \sin \theta & \cos \theta 211 | \end{pmatrix} 212 | \end{equation*} 213 | 214 | \end{frame} 215 | 216 | \section{Cuaternios}\label{cuaternios} 217 | 218 | \begin{frame}{Versores} 219 | 220 | \columnsbegin 221 | \column{0.5\textwidth} 222 | 223 | Esta columna estará a la \textbf{izquierda}. 224 | 225 | \column{0.5\textwidth} 226 | 227 | Esta columna estará a la \textbf{derecha}. 228 | 229 | \columnsend 230 | 231 | \end{frame} 232 | 233 | \begin{frame}{Cuaternios como esfera 4-dimensional} 234 | 235 | Expresando 236 | 237 | \begin{align*} 238 | 1 \mapsto \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix},&\quad 239 | i \mapsto \begin{pmatrix} i & 0 \\ 0 &-i \end{pmatrix},\\ 240 | j \mapsto \begin{pmatrix} 0 & 1 \\-1 & 0 \end{pmatrix},&\quad 241 | k \mapsto \begin{pmatrix} 0 & i \\ i & 0 \end{pmatrix}, 242 | \end{align*} 243 | 244 | podemos ver cualquier elemento de \(SU(2)\) como un cuaternio unitario: 245 | \(a + bi + cj + dk\) para \(a,b,c,d \in \mathbb{R}\) cumpliendo 246 | \(a^2+b^2+c^2+d^2 = 1\), y viceversa. Así, \(SU(2)\cong S^3\) 247 | 248 | \end{frame} 249 | 250 | \begin{frame}{Recubrimiento del grupo de rotaciones} 251 | 252 | \(S^3\) es un recubridor de dos hojas de \(\mathbb{RP}^3\) (de hecho, es 253 | su recubridor universal) \(\Rightarrow\) Los cuaternios unitarios 254 | recubren el espacio de rotaciones \(SO(3)\). 255 | 256 | \end{frame} 257 | 258 | \section{Realización práctica}\label{realizaciuxf3n-pruxe1ctica} 259 | 260 | \begin{frame}{Uso de cuaternios} 261 | 262 | \end{frame} 263 | 264 | \begin{frame}[fragile]{Uso de cuaternios} 265 | 266 | \tiny 267 | 268 | \begin{Shaded} 269 | \begin{Highlighting}[] 270 | \KeywordTok{var}\NormalTok{ t }\OperatorTok{:}\NormalTok{ float}\OperatorTok{;} 271 | \KeywordTok{var}\NormalTok{ capsule }\OperatorTok{:}\NormalTok{ GameObject}\OperatorTok{;} 272 | 273 | \CommentTok{// ...} 274 | 275 | \ControlFlowTok{if}\NormalTok{ (enable_anim) }\OperatorTok{\{} 276 | \CommentTok{// update animation} 277 | \NormalTok{ t }\OperatorTok{+=} \FloatTok{0.025}\OperatorTok{;} 278 | \VariableTok{capsule}\NormalTok{.}\VariableTok{transform}\NormalTok{.}\AttributeTok{rotation} \OperatorTok{=} \VariableTok{Quaternion}\NormalTok{.}\AttributeTok{Slerp}\NormalTok{(initial}\OperatorTok{,}\NormalTok{ end}\OperatorTok{,}\NormalTok{ t)}\OperatorTok{;} 279 | 280 | \CommentTok{// stop animation when finished} 281 | \ControlFlowTok{if}\NormalTok{ (t }\OperatorTok{>=} \DecValTok{1}\NormalTok{) }\OperatorTok{\{} 282 | \NormalTok{ enable_anim }\OperatorTok{=} \KeywordTok{false}\OperatorTok{;} 283 | \NormalTok{ t }\OperatorTok{=} \DecValTok{0}\OperatorTok{;} 284 | \OperatorTok{\}} 285 | \OperatorTok{\}} 286 | \end{Highlighting} 287 | \end{Shaded} 288 | 289 | \normalsize 290 | 291 | \end{frame} 292 | 293 | \section{}\label{section} 294 | 295 | \begin{frame}{Referencias} 296 | 297 | \begin{thebibliography}{9} 298 | 299 | \bibitem{gelfand63} 300 | Gelfand, I.M.; Minlos, R.A.; Shapiro, Z.Ya. (1963), 301 | Representations of the Rotation and Lorentz Groups and their Applications, 302 | New York: Pergamon Press. 303 | 304 | \bibitem{vince11} 305 | Vince, John (2011), 306 | Quaternions for Computer Graphics, 307 | Springer-Verlag London. 308 | 309 | \bibitem{aluffi07} 310 | Aluffi, Paolo (2007), 311 | Algebra: Chapter 0, 312 | Graduate Studies in Mathematics. American Mathematical Society 313 | 314 | \bibitem{unity} 315 | Unity Game Engine, 316 | Sitio Oficial, 317 | https://unity3d.com 318 | 319 | \end{thebibliography} 320 | 321 | \end{frame} 322 | 323 | \end{document} 324 | -------------------------------------------------------------------------------- /memoria/Makefile: -------------------------------------------------------------------------------- 1 | CHAPTERS=$(wildcard chapters/*.tex) 2 | DOC=memoria.pdf 3 | BIB=bibtex 4 | TEX=pdflatex 5 | META=$(wildcard meta/*.tex) 6 | 7 | all: $(DOC) 8 | 9 | clean: 10 | rm -f *.pdf *.aux *.toc *.tmp 11 | 12 | memoria.pdf: $(basename $(DOC)).tex $(CHAPTERS) classicthesis-config.tex $(basename $(DOC)).bbl $(META) 13 | $(BIB) $(basename $(DOC)) 14 | $(TEX) $< 15 | $(TEX) $< 16 | 17 | %.bbl: %.bib $(basename $(DOC)).aux 18 | $(TEX) $(basename $(DOC)).tex -shell-escape 19 | 20 | %.aux: %.tex 21 | $(TEX) $< -shell-escape 22 | -------------------------------------------------------------------------------- /memoria/README.md: -------------------------------------------------------------------------------- 1 | # Reducción de la dimensionalidad en problemas de clasificación con Deep Learning 2 | 3 | Esta es la documentación de mi Trabajo de Fin de Grado, presentado en la Universidad de Granada en junio de 2017. 4 | 5 | ## Resumen 6 | En este trabajo se analizan desde una perspectiva teórica las técnicas basadas en redes neuronales profundas que permiten abordar el problema de reducción de la dimensionalidad y se explica el software desarrollado, que permite el uso de dichas técnicas y la generación de visualizaciones sobre ellas, bien mediante programación o bien a través de una interfaz gráfica de usuario web. 7 | 8 | Primero se introducen conceptos matemáticos que ayudan a comprender los algoritmos y modelos que fundamentan estas redes profundas, haciendo hincapié en resultados teóricos que dan ideas acerca del problema que se va a abordar. Posteriormente, se describen los algoritmos y que realizan el aprendizaje sobre dichas estructuras, y las arquitecturas relevantes que tratan este problema. Por último, se documenta el software implementado y se muestran ejemplos de su uso. 9 | 10 | **Palabras clave:** Deep Learning, redes neuronales, reducción de dimensionalidad, clasificación, aprendizaje no supervisado, probabilidad, teoría de la información. 11 | 12 | 13 | ## Licencias 14 | 15 | El contenido del trabajo se distribuye bajo la licencia Reconocimiento-CompartirIgual 16 | 4.0 Internacional de Creative Commons. El texto completo de la licencia está disponible en 17 | . 18 | 19 | El código de la memoria utiliza [classicthesis](http://www.miede.de/#classicthesis) como 20 | plantilla y por tanto se distribuye bajo la licencia GNU General Public License v3, o una 21 | posterior a tu elección. El texto completo de la licencia está disponible en 22 | . 23 | 24 | ## Gracias 25 | 26 | Para la estructura y el formato de este trabajo me he inspirado en los correspondientes TFGs de [@ranea](https://github.com/ranea/TFG/tree/master/memoria), [@agarciamontoro](https://github.com/agarciamontoro/TFG/tree/master/Documentation/Report) y [@analca3](https://github.com/analca3/TFG/tree/master/Memoria). Mil gracias por liberar vuestros trabajos <3 27 | -------------------------------------------------------------------------------- /memoria/automake.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | while true; do 4 | inotifywait -e close_write,moved_to,create meta 5 | 6 | make 7 | done -------------------------------------------------------------------------------- /memoria/bibliography.bib: -------------------------------------------------------------------------------- 1 | @book{mitchell1997, 2 | title={Machine learning. WCB}, 3 | author={Mitchell, Tom M and others}, 4 | year={1997}, 5 | publisher={McGraw-Hill Boston, MA:} 6 | } 7 | 8 | @book{goodfellow2016, 9 | title={Deep Learning}, 10 | author={Ian Goodfellow and Yoshua Bengio and Aaron Courville}, 11 | publisher={MIT Press}, 12 | note={\url{http://www.deeplearningbook.org}}, 13 | year={2016} 14 | } 15 | @article{hinton2006dbn, 16 | title={A fast learning algorithm for deep belief nets}, 17 | author={Hinton, Geoffrey E and Osindero, Simon and Teh, Yee-Whye}, 18 | journal={Neural computation}, 19 | volume={18}, 20 | number={7}, 21 | pages={1527--1554}, 22 | year={2006}, 23 | publisher={MIT Press} 24 | } 25 | @article{hinton2002cd, 26 | title={Training products of experts by minimizing contrastive divergence}, 27 | author={Hinton, Geoffrey E}, 28 | journal={Neural computation}, 29 | volume={14}, 30 | number={8}, 31 | pages={1771--1800}, 32 | year={2002}, 33 | publisher={MIT Press} 34 | } 35 | @inproceedings{tieleman2008pcd, 36 | title={Training restricted Boltzmann machines using approximations to the likelihood gradient}, 37 | author={Tieleman, Tijmen}, 38 | booktitle={Proceedings of the 25th international conference on Machine learning}, 39 | pages={1064--1071}, 40 | year={2008}, 41 | organization={ACM} 42 | } 43 | 44 | @book{vdvaart, 45 | author = {A. W. van der Vaart}, 46 | title = {Asymptotic statistics}, 47 | series = {Cambridge Series in Statistical and Probabilistic Mathematics}, 48 | publisher = {Cambridge University Press}, 49 | city = {Cambridge}, 50 | year = {1998}, 51 | isbn = {0-521-49603-9} 52 | } 53 | 54 | @book{coverit, 55 | title={Elements of information theory}, 56 | author={Cover, Thomas M and Thomas, Joy A}, 57 | year={2012}, 58 | publisher={John Wiley \& Sons} 59 | } 60 | 61 | @inproceedings{cohen1996, 62 | title={Learning rules that classify e-mail}, 63 | author={Cohen, William W and others}, 64 | booktitle={AAAI spring symposium on machine learning in information access}, 65 | volume={18}, 66 | pages={25}, 67 | year={1996}, 68 | organization={California} 69 | } 70 | @article{lecun1989backprop, 71 | title={Backpropagation applied to handwritten zip code recognition}, 72 | author={LeCun, Yann and Boser, Bernhard and Denker, John S and Henderson, Donnie and Howard, Richard E and Hubbard, Wayne and Jackel, Lawrence D}, 73 | journal={Neural computation}, 74 | volume={1}, 75 | number={4}, 76 | pages={541--551}, 77 | year={1989}, 78 | publisher={MIT Press} 79 | } 80 | @article{hinton2007multiple, 81 | title={Learning multiple layers of representation}, 82 | author={Hinton, Geoffrey E}, 83 | journal={Trends in cognitive sciences}, 84 | volume={11}, 85 | number={10}, 86 | pages={428--434}, 87 | year={2007}, 88 | publisher={Elsevier} 89 | } 90 | 91 | 92 | 93 | @book{treil2013, 94 | title={Linear algebra done wrong}, 95 | author={Treil, Sergei}, 96 | year={2013}, 97 | publisher={MTM} 98 | } 99 | 100 | @inproceedings{beyer1999, 101 | title={When is “nearest neighbor” meaningful?}, 102 | author={Beyer, Kevin and Goldstein, Jonathan and Ramakrishnan, Raghu and Shaft, Uri}, 103 | booktitle={International conference on database theory}, 104 | pages={217--235}, 105 | year={1999}, 106 | organization={Springer} 107 | } 108 | 109 | @inproceedings{aggarwal2001, 110 | title={On the surprising behavior of distance metrics in high dimensional space}, 111 | author={Aggarwal, Charu C and Hinneburg, Alexander and Keim, Daniel A}, 112 | booktitle={International Conference on Database Theory}, 113 | pages={420--434}, 114 | year={2001}, 115 | organization={Springer} 116 | } 117 | @article{fodor2002, 118 | title={A survey of dimension reduction techniques}, 119 | author={Fodor, Imola K}, 120 | journal={Center for Applied Scientific Computing, Lawrence Livermore National Laboratory}, 121 | volume={9}, 122 | pages={1--18}, 123 | year={2002} 124 | } 125 | @misc{kotsiantis2007, 126 | title={Supervised machine learning: A review of classification techniques}, 127 | author={Kotsiantis, Sotiris B and Zaharakis, I and Pintelas, P}, 128 | journal={Informatica}, 129 | volume={31}, 130 | pages={249--268}, 131 | year={2007} 132 | } 133 | 134 | 135 | 136 | @book{shwartz2014, 137 | author = {Shai Shalev-Shwartz and Shai Ben-David}, 138 | title = {Understanding Machine Learning}, 139 | year = {2014}, 140 | publisher = {Cambridge University Press}, 141 | url = {http://www.cs.huji.ac.il/~shais/UnderstandingMachineLearning}, 142 | pages = {nil}, 143 | series = {nil}, 144 | } 145 | 146 | @article{kononenko2001, 147 | title={Machine learning for medical diagnosis: history, state of the art and perspective}, 148 | author={Kononenko, Igor}, 149 | journal={Artificial Intelligence in medicine}, 150 | volume={23}, 151 | number={1}, 152 | pages={89--109}, 153 | year={2001}, 154 | publisher={Elsevier} 155 | } 156 | 157 | @article{phua2010, 158 | title={A comprehensive survey of data mining-based fraud detection research}, 159 | author={Phua, Clifton and Lee, Vincent and Smith, Kate and Gayler, Ross}, 160 | journal={arXiv preprint arXiv:1009.6119}, 161 | year={2010} 162 | } 163 | 164 | @inproceedings{ranzato, 165 | title={Unsupervised learning of invariant feature hierarchies with applications to object recognition}, 166 | author={Ranzato, Marc Aurelio and Huang, Fu Jie and Boureau, Y-Lan and LeCun, Yann}, 167 | booktitle={Computer Vision and Pattern Recognition, 2007. CVPR'07. IEEE Conference on}, 168 | pages={1--8}, 169 | year={2007}, 170 | organization={IEEE} 171 | } 172 | @article{hofmann, 173 | title={Unsupervised learning by probabilistic latent semantic analysis}, 174 | author={Hofmann, Thomas}, 175 | journal={Machine learning}, 176 | volume={42}, 177 | number={1-2}, 178 | pages={177--196}, 179 | year={2001}, 180 | publisher={Springer} 181 | } 182 | @article{brent, 183 | title={From grammar to lexicon: unsupervised learning of lexical syntax}, 184 | author={Brent, Michael R}, 185 | journal={Computational Linguistics}, 186 | volume={19}, 187 | number={2}, 188 | pages={243--262}, 189 | year={1993}, 190 | publisher={MIT Press} 191 | } 192 | @inproceedings{erhan2009, 193 | title={The difficulty of training deep architectures and the effect of unsupervised pre-training}, 194 | author={Erhan, Dumitru and Manzagol, Pierre-Antoine and Bengio, Yoshua and Bengio, Samy and Vincent, Pascal}, 195 | booktitle={International Conference on artificial intelligence and statistics}, 196 | pages={153--160}, 197 | year={2009} 198 | } 199 | @article{hinton06, 200 | title={A fast learning algorithm for deep belief nets}, 201 | author={Hinton, Geoffrey E and Osindero, Simon and Teh, Yee-Whye}, 202 | journal={Neural computation}, 203 | volume={18}, 204 | number={7}, 205 | pages={1527--1554}, 206 | year={2006}, 207 | publisher={MIT Press} 208 | } 209 | @Manual{shiny, 210 | title = {shiny: Web Application Framework for R}, 211 | author = {Winston Chang and Joe Cheng and JJ Allaire and Yihui Xie and Jonathan McPherson}, 212 | year = {2016}, 213 | note = {R package version 0.13.2}, 214 | url = {https://cran.r-project.org/package=shiny}, 215 | } 216 | @MastersThesis{darch, 217 | title = {Implementierung und Analyse von tiefen Architekturen in R}, 218 | author = {Martin Drees}, 219 | year = {2013}, 220 | school = {Fachhochschule Dortmund}, 221 | url = {https://cran.r-project.org/package=darch}, 222 | } 223 | @Manual{deepnet, 224 | title = {deepnet: deep learning toolkit in R}, 225 | author = {Xiao Rong}, 226 | year = {2014}, 227 | note = {R package version 0.2}, 228 | url = {https://CRAN.R-project.org/package=deepnet}, 229 | } 230 | 231 | @Manual{h2o, 232 | title = {h2o: R Interface for H2O}, 233 | author = {Spencer Aiello and Tom Kraljevic and Petr Maj and with contributions from the H2O.ai team}, 234 | year = {2016}, 235 | note = {R package version 3.8.1.3}, 236 | url = {https://CRAN.R-project.org/package=h2o}, 237 | } 238 | @Manual{devtools, 239 | title = {devtools: Tools to Make Developing R Packages Easier}, 240 | author = {Hadley Wickham and Winston Chang}, 241 | note = {R package version 1.11.0.9000}, 242 | url = {https://github.com/hadley/devtools}, 243 | } 244 | @article{mxnet, 245 | title={Mxnet: A flexible and efficient machine learning library for heterogeneous distributed systems}, 246 | author={Chen, Tianqi and Li, Mu and Li, Yutian and Lin, Min and Wang, Naiyan and Wang, Minjie and Xiao, Tianjun and Xu, Bing and Zhang, Chiyuan and Zhang, Zheng}, 247 | journal={arXiv preprint arXiv:1512.01274}, 248 | year={2015} 249 | } 250 | @article{tensorflow, 251 | title={Tensorflow: Large-scale machine learning on heterogeneous distributed systems}, 252 | author={Abadi, Mart{\'\i}n and Agarwal, Ashish and Barham, Paul and Brevdo, Eugene and Chen, Zhifeng and Citro, Craig and Corrado, Greg S and Davis, Andy and Dean, Jeffrey and Devin, Matthieu and others}, 253 | journal={arXiv preprint arXiv:1603.04467}, 254 | year={2016} 255 | } 256 | @article{theano, 257 | title={Theano: new features and speed improvements}, 258 | author={Bastien, Fr{\'e}d{\'e}ric and Lamblin, Pascal and Pascanu, Razvan and Bergstra, James and Goodfellow, Ian and Bergeron, Arnaud and Bouchard, Nicolas and Warde-Farley, David and Bengio, Yoshua}, 259 | journal={arXiv preprint arXiv:1211.5590}, 260 | year={2012} 261 | } 262 | 263 | @inproceedings{caffe, 264 | title={Caffe: Convolutional architecture for fast feature embedding}, 265 | author={Jia, Yangqing and Shelhamer, Evan and Donahue, Jeff and Karayev, Sergey and Long, Jonathan and Girshick, Ross and Guadarrama, Sergio and Darrell, Trevor}, 266 | booktitle={Proceedings of the 22nd ACM international conference on Multimedia}, 267 | pages={675--678}, 268 | year={2014}, 269 | organization={ACM} 270 | } 271 | @article{andrews1972, 272 | title={Plots of high-dimensional data}, 273 | author={Andrews, David F}, 274 | journal={Biometrics}, 275 | pages={125--136}, 276 | year={1972}, 277 | publisher={JSTOR} 278 | } 279 | 280 | 281 | @Manual{rlang, 282 | title = {R: A Language and Environment for Statistical Computing}, 283 | author = {{R Core Team}}, 284 | organization = {R Foundation for Statistical Computing}, 285 | address = {Vienna, Austria}, 286 | year = {2017}, 287 | url = {https://www.R-project.org/}, 288 | } 289 | @Manual{rstudio, 290 | title = {RStudio: Integrated Development Environment for R}, 291 | author = {{RStudio Team}}, 292 | organization = {RStudio, Inc.}, 293 | address = {Boston, MA}, 294 | year = {2016}, 295 | url = {http://www.rstudio.com/}, 296 | } 297 | 298 | @Article{mlr, 299 | title = {{mlr}: Machine Learning in R}, 300 | author = {Bernd Bischl and Michel Lang and Lars Kotthoff and Julia 301 | Schiffner and Jakob Richter and Erich Studerus and Giuseppe 302 | Casalicchio and Zachary M. Jones}, 303 | journal = {Journal of Machine Learning Research}, 304 | year = {2016}, 305 | volume = {17}, 306 | number = {170}, 307 | pages = {1-5}, 308 | url = {http://jmlr.org/papers/v17/15-066.html}, 309 | } 310 | 311 | @online{plotly, 312 | author = {Plotly Technologies Inc.}, 313 | title = {Collaborative data science}, 314 | publisher = {Plotly Technologies Inc.}, 315 | address = {Montréal, QC}, 316 | year = {2015}, 317 | url = {https://plot.ly} 318 | } 319 | 320 | @article{fisher1936iris, 321 | title={The use of multiple measurements in taxonomic problems}, 322 | author={Fisher, Ronald A}, 323 | journal={Annals of eugenics}, 324 | volume={7}, 325 | number={2}, 326 | pages={179--188}, 327 | year={1936}, 328 | publisher={Wiley Online Library} 329 | } 330 | 331 | @inproceedings{coates, 332 | title={An analysis of single-layer networks in unsupervised feature learning}, 333 | author={Coates, Adam and Ng, Andrew Y and Lee, Honglak}, 334 | booktitle={International conference on artificial intelligence and statistics}, 335 | pages={215--223}, 336 | year={2011} 337 | } 338 | @misc{Lichman:2013 , 339 | author = "M. Lichman", 340 | year = "2013", 341 | title = "{UCI} Machine Learning Repository", 342 | url = "http://archive.ics.uci.edu/ml", 343 | institution = "University of California, Irvine, School of Information and Computer Sciences" } 344 | @article{mnistlecun, 345 | author = {Lecun, Yann and Cortes, Corinna}, 346 | citeulike-article-id = {599493}, 347 | citeulike-linkout-0 = {http://yann.lecun.com/exdb/mnist/}, 348 | keywords = {ai, mnist, recognition}, 349 | posted-at = {2009-03-20 17:02:13}, 350 | priority = {2}, 351 | year = "2009", 352 | title = {{The MNIST database of handwritten digits}}, 353 | url = {http://yann.lecun.com/exdb/mnist/} 354 | } 355 | 356 | @inproceedings{bergstra2011algorithms, 357 | title={Algorithms for hyper-parameter optimization}, 358 | author={Bergstra, James S and Bardenet, R{\'e}mi and Bengio, Yoshua and K{\'e}gl, Bal{\'a}zs}, 359 | booktitle={Advances in Neural Information Processing Systems}, 360 | pages={2546--2554}, 361 | year={2011} 362 | } 363 | @article{kolda2009, 364 | title={Tensor decompositions and applications}, 365 | author={Kolda, Tamara G and Bader, Brett W}, 366 | journal={SIAM review}, 367 | volume={51}, 368 | number={3}, 369 | pages={455--500}, 370 | year={2009}, 371 | publisher={SIAM} 372 | } 373 | 374 | @techreport{Rumelhart, 375 | title={Learning internal representations by error propagation}, 376 | author={Rumelhart, David E and Hinton, Geoffrey E and Williams, Ronald J}, 377 | year={1985}, 378 | institution={DTIC Document} 379 | } 380 | @inproceedings{poultney, 381 | title={Efficient learning of sparse representations with an energy-based model}, 382 | author={Poultney, Christopher and Chopra, Sumit and Cun, Yann L and others}, 383 | booktitle={Advances in neural information processing systems}, 384 | pages={1137--1144}, 385 | year={2006} 386 | } 387 | @inproceedings{Vincent, 388 | author = {Vincent, Pascal and Larochelle, Hugo and Bengio, Yoshua and Manzagol, Pierre-Antoine}, 389 | title = {Extracting and Composing Robust Features with Denoising Autoencoders}, 390 | booktitle = {Proceedings of the 25th International Conference on Machine Learning}, 391 | series = {ICML '08}, 392 | year = {2008}, 393 | isbn = {978-1-60558-205-4}, 394 | location = {Helsinki, Finland}, 395 | pages = {1096--1103}, 396 | numpages = {8}, 397 | acmid = {1390294}, 398 | publisher = {ACM}, 399 | } 400 | @inproceedings{rifai, 401 | title={Contractive auto-encoders: Explicit invariance during feature extraction}, 402 | author={Rifai, Salah and Vincent, Pascal and Muller, Xavier and Glorot, Xavier and Bengio, Yoshua}, 403 | booktitle={Proceedings of the 28th international conference on machine learning (ICML-11)}, 404 | pages={833--840}, 405 | year={2011} 406 | } 407 | @ARTICLE{bengio:2013, 408 | author={Y. Bengio and A. Courville and P. Vincent}, 409 | journal={IEEE Transactions on Pattern Analysis and Machine Intelligence}, 410 | title={Representation Learning: A Review and New Perspectives}, 411 | year={2013}, 412 | volume={35}, 413 | number={8}, 414 | pages={1798-1828}, 415 | keywords={artificial intelligence;data structures;probability;unsupervised learning;AI;autoencoders;data representation;density estimation;geometrical connections;machine learning algorithms;manifold learning;probabilistic models;representation learning;unsupervised feature learning;Abstracts;Feature extraction;Learning systems;Machine learning;Manifolds;Neural networks;Speech recognition;Boltzmann machine;Deep learning;autoencoder;feature learning;neural nets;representation learning;unsupervised learning;Algorithms;Artificial Intelligence;Humans;Neural Networks (Computer)}, 416 | doi={10.1109/TPAMI.2013.50}, 417 | ISSN={0162-8828}, 418 | month={Aug}, 419 | } 420 | 421 | @article{peterson2009, 422 | title={K-nearest neighbor}, 423 | author={Peterson, Leif E}, 424 | journal={Scholarpedia}, 425 | volume={4}, 426 | number={2}, 427 | pages={1883}, 428 | year={2009}, 429 | url = {http://scholarpedia.org/article/K-nearest_neighbor} 430 | } 431 | 432 | @article{clarke2008, 433 | title={The properties of high-dimensional data spaces: implications for exploring gene and protein expression data}, 434 | author={Clarke, Robert and Ressom, Habtom W and Wang, Antai and Xuan, Jianhua and Liu, Minetta C and Gehan, Edmund A and Wang, Yue}, 435 | journal={Nature Reviews Cancer}, 436 | volume={8}, 437 | number={1}, 438 | pages={37--49}, 439 | year={2008}, 440 | publisher={Nature Publishing Group} 441 | } 442 | @article{mnist, 443 | title={The MNIST database of handwritten digits}, 444 | author={LeCun, Yann}, 445 | url={http://yann.lecun.com/exdb/mnist/}, 446 | year={1998} 447 | } 448 | 449 | @inproceedings{molina2002, 450 | title={Feature selection algorithms: A survey and experimental evaluation}, 451 | author={Molina, Luis Carlos and Belanche, Llu{\'\i}s and Nebot, {\`A}ngela}, 452 | booktitle={Data Mining, 2002. ICDM 2003. Proceedings. 2002 IEEE International Conference on}, 453 | pages={306--313}, 454 | year={2002}, 455 | organization={IEEE} 456 | } 457 | @incollection{guyon2006, 458 | title={An introduction to feature extraction}, 459 | author={Guyon, Isabelle and Elisseeff, Andr{\'e}}, 460 | booktitle={Feature extraction}, 461 | pages={1--25}, 462 | year={2006}, 463 | publisher={Springer} 464 | } 465 | @article{roweis2000, 466 | title={Nonlinear dimensionality reduction by locally linear embedding}, 467 | author={Roweis, Sam T and Saul, Lawrence K}, 468 | journal={science}, 469 | volume={290}, 470 | number={5500}, 471 | pages={2323--2326}, 472 | year={2000}, 473 | publisher={American Association for the Advancement of Science} 474 | } 475 | 476 | @article{tenenbaum2000, 477 | title={A global geometric framework for nonlinear dimensionality reduction}, 478 | author={Tenenbaum, Joshua B and De Silva, Vin and Langford, John C}, 479 | journal={science}, 480 | volume={290}, 481 | number={5500}, 482 | pages={2319--2323}, 483 | year={2000}, 484 | publisher={American Association for the Advancement of Science} 485 | } 486 | 487 | @article{hinton2006autoencoder, 488 | title={Reducing the dimensionality of data with neural networks}, 489 | author={Hinton, Geoffrey E and Salakhutdinov, Ruslan R}, 490 | journal={science}, 491 | volume={313}, 492 | number={5786}, 493 | pages={504--507}, 494 | year={2006}, 495 | publisher={American Association for the Advancement of Science} 496 | } 497 | @article{cauchy1847, 498 | title={M{\'e}thode g{\'e}n{\'e}rale pour la r{\'e}solution des systemes d’{\'e}quations simultan{\'e}es}, 499 | author={Cauchy, Augustin}, 500 | journal={Comp. Rend. Sci. Paris}, 501 | volume={25}, 502 | number={1847}, 503 | pages={536--538}, 504 | year={1847} 505 | } 506 | 507 | @article{adagrad, 508 | title={Adaptive subgradient methods for online learning and stochastic optimization}, 509 | author={Duchi, John and Hazan, Elad and Singer, Yoram}, 510 | journal={Journal of Machine Learning Research}, 511 | volume={12}, 512 | number={Jul}, 513 | pages={2121--2159}, 514 | year={2011} 515 | } 516 | @book{jaynes2003, 517 | title={Probability theory: The logic of science}, 518 | author={Jaynes, Edwin T}, 519 | year={2003}, 520 | publisher={Cambridge university press} 521 | } 522 | @article{ishak2002, 523 | title={Performance evaluation of short-term time-series traffic prediction model}, 524 | author={Ishak, Sherif and Al-Deek, Haitham}, 525 | journal={Journal of Transportation Engineering}, 526 | volume={128}, 527 | number={6}, 528 | pages={490--498}, 529 | year={2002}, 530 | publisher={American Society of Civil Engineers} 531 | } 532 | @inproceedings{charte2016dlvisr, 533 | title={Análisis visual de técnicas no supervisadas de deep learning con el paquete dlvisR}, 534 | author={Charte, David and Charte, Francisco and Herrera, Francisco}, 535 | booktitle={Actas de la XVII conferencia de la Asociación Española para la Inteligencia Artificial}, 536 | pages={895--904}, 537 | year={2016}, 538 | organization={AEPIA} 539 | } 540 | @article{maaten2008, 541 | title={Visualizing data using t-SNE}, 542 | author={Maaten, Laurens van der and Hinton, Geoffrey}, 543 | journal={Journal of Machine Learning Research}, 544 | volume={9}, 545 | number={Nov}, 546 | pages={2579--2605}, 547 | year={2008} 548 | } 549 | @article{wolpert1997, 550 | title={No free lunch theorems for optimization}, 551 | author={Wolpert, David H and Macready, William G}, 552 | journal={IEEE transactions on evolutionary computation}, 553 | volume={1}, 554 | number={1}, 555 | pages={67--82}, 556 | year={1997}, 557 | publisher={IEEE} 558 | } 559 | -------------------------------------------------------------------------------- /memoria/chapters/biblio.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/chapters/biblio.tex -------------------------------------------------------------------------------- /memoria/chapters/conclusions.tex: -------------------------------------------------------------------------------- 1 | En este trabajo hemos estudiado los fundamentos teóricos de las técnicas de Deep Learning que se aplican al problema de reducción de la dimensionalidad. Desde conceptos básicos de probabilidad a muy abstractos de álgebra, observamos que tiene raíces en áreas diversas de las matemáticas. Los algoritmos que permiten realizar el aprendizaje también son diferentes entre sí y pueden recurrir a su vez a otras teorías, como el análisis matemático. 2 | 3 | En la parte práctica, se ha desarrollado una herramienta software novedosa que proporciona fácil acceso a estas técnicas e incorpora una interfaz de usuario y visualizaciones gráficas, apoyándonos en una biblioteca eficientes de cálculo para redes neuronales. 4 | 5 | Los objetivos iniciales se han cumplido en buena medida, pero el estudio realizado demuestra que aún hay espacio para seguir trabajando en la implementación y la ampliación del software. Algunas vías de trabajo futuras que se pueden plantear son las siguientes: 6 | \begin{itemize} 7 | \item Incorporar más variantes de los autoencoders al paquete. Ya es posible entrenar autoencoders infracompletos y supercompletos, y sería deseable añadir autoencoders dispersos y contractivos. 8 | \item Permitir la elección de otra biblioteca base distinta de MXNet. Puesto que Ruta abstrae el proceso de construcción y entrenamiento de redes, podría mostrar la misma interfaz de programación aun usando diferentes \emph{backends}. 9 | \item Aplicar nuevas técnicas de visualización para puntos en más de tres dimensiones, incluso en espacios de alta dimensionalidad. Por ejemplo, utilizar las componentes de los puntos como coeficientes de series de Fourier, y representar gráficamente las funciones obtenidas en el intervalo $[-\pi,\pi]$ \autocite{andrews1972}. 10 | \item Introducir en el software de visualización acceso a otras herramientas de reducción de la dimensionalidad no basadas en redes neuronales, para permitir comparaciones. Entre los métodos deseables a incorporar estarían t-SNE \autocite{maaten2008} y LLE \autocite{roweis2000}. 11 | \end{itemize} -------------------------------------------------------------------------------- /memoria/chapters/intro.tex: -------------------------------------------------------------------------------- 1 | \section{Contextualización} 2 | 3 | En este trabajo se estudian las principales técnicas orientadas a reducción de la dimensionalidad en el campo del Deep Learning y se presentan dos herramientas software dedicadas al uso de dichas técnicas y al análisis de su comportamiento mediante visualizaciones. 4 | 5 | Las tecnologías utilizadas se enmarcan dentro del ámbito del Deep Learning no supervisado, y permiten tratar el problema de reducción de la dimensionalidad. Las técnicas de Deep Learning se plasman en forma de redes neuronales profundas, un tipo de redes neuronales artificiales, que son a su vez una generalización del perceptrón. Pese a que el desarrollo teórico de las redes profundas se remonta varias décadas atrás en el tiempo \autocite{Rumelhart} \autocite{lecun1989backprop} su utilización era prácticamente inviable debido al coste computacional que implicaba. Sin embargo, el Deep Learning ha experimentado un resurgimiento en los últimos años debido a la creciente capacidad de procesamiento disponible, especialmente en dispositivos GPU, y al desarrollo de algoritmos de entrenamiento mucho más eficientes \autocite{hinton2007multiple} \autocite{hinton06}. 6 | 7 | El problema de reducción de la dimensionalidad surge a su vez como resultado del tratamiento de tareas de minería de datos, especialmente de clasificación, donde el conjunto de datos considerado posee un alto número de dimensiones. Estos dos problemas pertenecen al aprendizaje automático, una rama de la inteligencia artificial. 8 | 9 | Para estudiar los fundamentos de los problemas mencionados y las técnicas con las que los abordamos, son necesarios conocimientos de varias áreas de las matemáticas, concretamente la teoría de la probabilidad, la teoría de la información y el álgebra tensorial. De ellas se extraen conceptos y resultados teóricos que dan fundamento a los algoritmos que se aplican para construir y entrenar las estructuras profundas. 10 | 11 | \section{Descripción del problema} 12 | 13 | En la actualidad, la ingente recolección de datos de distintas fuentes para su posterior procesamiento requiere de potentes algoritmos que reconozcan patrones y extraigan información útil, así como de grandes capacidades de cómputo para su ejecución. En particular, uno de los problemas frecuentemente tratados es el de clasificación, que consiste en la predicción de una o varias etiquetas asociadas a muestras de datos, habiendo aprendido previamente a partir de ejemplos ya etiquetados. Existe una gran variedad de algoritmos disponibles para abordar este problema \autocite{kotsiantis2007}. 14 | 15 | En muchos casos, los datos recogidos presentan una alta dimensionalidad, en el sentido de que cada muestra determina valores sobre un alto número de variables. La reducción de la dimensionalidad es una tarea de preprocesamiento utilizada para mejorar el rendimiento de los algoritmos que tratan problemas de clasificación frente a conjuntos de datos de este tipo, y ha sido tratada desde distintas perspectivas \autocite{fodor2002}. 16 | 17 | El enfoque que se explora en este texto es el basado en estructuras de Deep Learning no supervisado. El aprendizaje profundo o Deep Learning es una rama del aprendizaje automático donde se hace uso de redes compuestas por muchas capas por las que se propagan y transforman los datos. Existen diversas implementaciones que permiten construir y entrenar dichas redes, pero normalmente se dirigen a lenguajes como Python o C++ \autocite{tensorflow} \autocite{theano} \autocite{caffe}. 18 | 19 | En el caso del lenguaje R, algunas de las técnicas más relevantes de Deep Learning no supervisado 20 | están disponibles ya en paquetes como \texttt{h2o} \autocite{h2o}, 21 | \texttt{deepnet} \autocite{deepnet} o \texttt{darch} \autocite{darch}. Sin embargo, hasta ahora ninguna herramienta para R se ha centrado en ser exhaustiva con las estructuras no supervisadas, ni ha incluido mecanismos de visualización que faciliten entender el comportamiento de 22 | estas redes o los modelos generados por ellas. 23 | 24 | El software desarrollado en este TFG, denominado Ruta, trata de llenar este hueco suministrando una serie de funcionalidades para la creación, entrenamiento y evaluación de técnicas de Deep Learning no supervisado de muy fácil uso. Está basado en la biblioteca de operaciones y algoritmos para redes neuronales MXNet \autocite{mxnet}. El proyecto complementario Rutavis, descrito en la sección \ref{sec:rutavis}, se encarga de proporcionar una interfaz gráfica de usuario desde la que entrenar modelos y generar visualizaciones que expliquen su comportamiento. 25 | 26 | Para entender el funcionamiento de las redes profundas, en este trabajo se estudian los conceptos matemáticos que se utilizan para desarrollarlas de forma teórica y para justificar el problema que abordamos. Asimismo, se analizan los algoritmos que optimizan los parámetros de estas redes, y las estructuras que permiten realizar aprendizaje no supervisado sobre los datos. Por último, la herramienta desarrollada permite poner en práctica estos conocimientos y trata de resolver la escasez de utilidades que proporcionan estas funcionalidades. 27 | 28 | \section{Estructura del trabajo} 29 | 30 | Este trabajo se divide en dos partes diferenciadas: 31 | \begin{enumerate} 32 | \item Matemáticas: se exponen los conceptos de probabilidad y teoría de la información que son la base de las redes profundas y se motiva el problema que abordamos de forma teórica. Además, se introducen los conceptos que originan el uso de tensores en las implementaciones existentes. 33 | \item Informática: se explican los conceptos básicos de aprendizaje automático y se desarrollan los problemas de clasificación y de reducción de dimensionalidad, se analizan los algoritmos que buscan soluciones en estructuras profundas y se documenta la herramienta desarrollada, describiéndose su funcionalidad. 34 | \end{enumerate} 35 | 36 | En la parte de matemáticas, el \autoref{ch:probability} recuerda conceptos de probabilidad utilizados a lo largo del texto, enuncia unos resultados esenciales sobre convergencia y deduce un teorema que da fundamento al problema abordado. El \autoref{ch:information} define la entropía y varios conceptos asociados relevantes, y expone un resultado interesante, la desigualdad de la información. Por último, el \autoref{ch:tensors} es una introducción al álgebra de tensores, idea que se aplica en herramientas de Deep Learning. 37 | 38 | Por otro lado, la parte de informática analiza el problema estudiado y las técnicas usadas para tratarlo. El \autoref{ch:learning} es una introducción al aprendizaje automático con énfasis en los problemas de clasificación y reducción de la dimensionalidad. El \autoref{ch:deep} describe los algoritmos y estructuras necesarias para construir y optimizar redes profundas no supervisadas. El \autoref{ch:ruta} muestra las funcionalidades de la herramienta desarrollada y ejemplos de su uso. 39 | 40 | El código fuente asociado al software implementado se puede encontrar en un repositorio público, así como el código fuente asociado a esta documentación\footnote{\url{https://github.com/fdavidcl/tfg}}. 41 | 42 | \section{Bibliografía fundamental} 43 | 44 | Se han consultado muy variadas fuentes a lo largo del estudio realizado. De entre ellas, es preciso destacar algunos libros y artículos fundamentales: 45 | 46 | \begin{itemize} 47 | \item \emph{Deep Learning}, por \textcite{goodfellow2016}, es la referencia principal del texto, especialmente de los contenidos acerca de Deep Learning y aprendizaje automático, y también es donde se ha analizado qué aspectos matemáticos componen los fundamentos teóricos de estas técnicas. 48 | \item El artículo \emph{When is ``nearest neighbor'' meaningful?}, por \textcite{beyer1999}, que motiva el problema de reducción de dimensionalidad. 49 | \item \emph{Elements of information theory}, por \textcite{coverit}, se ha empleado para entender y exponer el capítulo sobre teoría de la información. 50 | \item \emph{Linear algebra done wrong}, por \textcite{treil2013}, es la fuente de la introducción a álgebra tensorial realizada en el \autoref{ch:tensors}. 51 | \end{itemize} -------------------------------------------------------------------------------- /memoria/chapters/machine-learning.tex: -------------------------------------------------------------------------------- 1 | 2 | En este capítulo introducimos conceptos acerca del aprendizaje automático, la rama de la inteligencia artificial que se ocupa de inferir conocimiento sin necesidad de una programación explícita. Además, se estudia el problema de clasificación y cómo es afectado por la dimensionalidad de los datos. Llegamos así a presentar el problema principal que trata este trabajo: la reducción de la dimensionalidad. Por último, se expone un algoritmo clásico de optimización, gradiente descendente, que servirá como base para los utilizados en Deep Learning. 3 | 4 | \section{Introducción}\label{introducciuxf3n} 5 | 6 | 7 | %\textcolor{red}{qué aborda este capítulo y qué estructura: visión general} 8 | 9 | %El aprendizaje profundo o Deep Learning comprende una clase de técnicas 10 | %englobadas dentro del aprendizaje automático. Esta sección introduce los 11 | %conceptos básicos de aprendizaje automático, que son comunes a todas las 12 | %técnicas desarrolladas en el ámbito. 13 | 14 | Un \emph{algoritmo de aprendizaje} es, según \textcite{mitchell1997}, un 15 | programa cuyo rendimiento respecto de un conjunto de tareas \(T\) y una 16 | medida de rendimiento \(P\) mejora tras conocer una experiencia \(E\). 17 | En ese caso, se dice que el algoritmo ha \emph{aprendido} de dicha 18 | experiencia. 19 | 20 | Estas tareas y experiencias pueden ser de muy diversas clases, lo que 21 | propicia la aparición de algoritmos y técnicas de aprendizaje diferentes 22 | que tratan de abordarlas. Estos algoritmos computacionales son 23 | necesarios cuando la complejidad o el tamaño de la tarea impide tratarla 24 | con técnicas manuales. 25 | 26 | Entre las tareas de aprendizaje que se presentan en la literatura se 27 | incluyen: 28 | 29 | \begin{itemize} 30 | \tightlist 31 | \item 32 | clasificación 33 | \item 34 | regresión 35 | \item 36 | detección de anomalías 37 | \item 38 | agrupamiento (\emph{clustering}) 39 | \item 40 | reducción de dimensionalidad 41 | \item 42 | detección y eliminación de ruido 43 | %\item traducción automática 44 | \end{itemize} 45 | 46 | 47 | \section{Tipos de aprendizaje}\label{sec:learning-types} 48 | 49 | La mayoría de \emph{experiencias} de las que puede 50 | aprender un algoritmo permite categorizar el aprendizaje en dos grandes clases: 51 | supervisado y no supervisado. 52 | 53 | % \textcolor{red}{reestructurar} 54 | 55 | \subsection{Aprendizaje supervisado} 56 | 57 | En aprendizaje supervisado, se le proporciona al algoritmo un conjunto 58 | de ejemplos para los cuales la tarea está resuelta. Así, se pretende que 59 | aprenda a realizar la misma tarea para nuevas muestras. 60 | 61 | Algunos problemas concretos en los que se realiza esta clase de aprendizaje son: 62 | \begin{itemize} 63 | \item Clasificación: el programa debe deducir una etiqueta o clase para cada instancia, y para ello el aprendizaje se suele realizar mediante un conjunto de ejemplos que ya tienen asignada su etiqueta. En la \autoref{sec:clasif} se desarrolla este problema en mayor detalle. 64 | \item Regresión: consiste en asignar un valor real a cada nuevo conjunto de valores de entrada, habiendo aprendido de muestras que ya tenían un valor asociado. 65 | \item Predicción de series temporales: se trata de predecir el valor de una variable en el futuro, conociendo su valor en distintos puntos del pasado. 66 | \end{itemize} 67 | 68 | \subsection{Aprendizaje no supervisado}\label{aprendizaje-no-supervisado} 69 | 70 | La modalidad no supervisada involucra a tareas de las que el algoritmo 71 | no tiene ejemplos resueltos. La experiencia que se le 72 | proporciona puede estar basada en otras características de los datos. 73 | 74 | Algunas de las tareas donde se utiliza aprendizaje no supervisado son: 75 | \begin{itemize} 76 | \item Agrupamiento o 77 | \emph{clustering}: se proporcionan al algoritmo datos sin 78 | clasificar que debe subdividir en diferentes conjuntos de forma que los 79 | datos del mismo conjunto sean más similares entre sí que entre elementos 80 | de distintos conjuntos. 81 | \item Reglas de asociación: el programa debe extraer relaciones relevantes entre los 82 | atributos del conjunto de datos que aporten información útil y novedosa acerca de la 83 | situación estudiada. 84 | \item Aprendizaje de características: se aportan datos sin etiquetar, para los que el algoritmo debe extraer características representativas. También se da este problema en el aprendizaje supervisado, cuando los datos están etiquetados. 85 | \end{itemize} 86 | 87 | El aprendizaje no supervisado abarca multitud de problemas ampliamente 88 | estudiados que tienen diversas aplicaciones presentes en distintos 89 | campos, como el tratamiento de imágenes y reconocimiento de objetos 90 | \autocite{ranzato}, análisis semántico \autocite{hofmann} y sintáctico 91 | del lenguaje \autocite{brent} o el preprocesamiento de datos y 92 | pre-entrenamiento para una posterior fase de aprendizaje 93 | \autocite{erhan2009}. 94 | 95 | \section{Problema de clasificación}\label{sec:clasif} 96 | 97 | Un problema clásico en el aprendizaje automático es el de clasificación. Se trata de una tarea de aprendizaje supervisado que consiste en aprender acerca de la etiqueta o clase de una secuencia de muestras clasificadas, para después ser capaz de predecir el valor de dicha etiqueta en nuevas instancias sin clasificar. 98 | 99 | La clasificación tiene multitud de aplicaciones en diversos ámbitos. 100 | Algunos ejemplos son el diagnóstico de enfermedades \autocite{kononenko2001}, la 101 | detección de fraude \autocite{phua2010} y la clasificación de mensajes de correo \autocite{cohen1996}. 102 | 103 | \subsection{Definición} 104 | 105 | Una formulación sencilla del problema es la siguiente: 106 | 107 | \defineb 108 | Sean \(A_1, A_2, \dots A_f\) conjuntos no vacíos llamados 109 | \emph{atributos de entrada}. Llamaremos \emph{espacio de atributos} (o 110 | \emph{espacio de características}) a 111 | \(\mathcal A=A_1\times A_2\times\dots\times A_f\). 112 | 113 | Sea $L$ un conjunto finito al que denominaremos \emph{conjunto de etiquetas}. 114 | 115 | Sea \(D\subset \mathcal A\times L\) un subconjunto finito del espacio de 116 | atributos, lo llamaremos \emph{conjunto de instancias} o \emph{dataset}. 117 | 118 | Decimos que la tripleta \(\mathcal P=\left(\mathcal A, L, D\right)\) es 119 | un \emph{problema de clasificación}. \definee 120 | 121 | \defineb 122 | Dado un problema de clasificación \(\left(\mathcal A, L, D\right)\), un 123 | \emph{clasificador} es una aplicación \(c:\mathcal A\rightarrow L\). 124 | \definee 125 | 126 | Así, el objetivo que se persigue al abordar un problema de clasificación 127 | \(\mathcal P\) es encontrar el clasificador \(c\) que mejor se adapte al 128 | problema, según una o varias métricas de evaluación. Intuitivamente, el 129 | procedimiento por el que se obtenga dicho clasificador debe ser capaz de 130 | utilizar la información de las instancias en el dataset \(D\) para 131 | predecir una clase en nuevas instancias del espacio de atributos. 132 | 133 | Atendiendo a la estructura de $L$, es decir, el número de características que estarán ausentes en los nuevos datos y sus posibles valores, distinguiremos los siguientes tipos de clasificación: 134 | \begin{itemize} 135 | \item Binaria: implica clasificar en 2 clases (generalmente significan que una condición es verdadera o falsa), utilizando una característica que tome únicamente dos valores. Así, $L = \{0,1\}$. 136 | \item Multiclase: en este caso habrá más de dos clases, pero cada instancia pertenecerá a una y solo una de ellas, por lo que se usará una característica que contenga tantos valores como clases: $L=\{0, 1,\dots, l\}$. 137 | \item Multietiqueta: en esta situación, cada instancia puede asociarse a más de una etiqueta, por tanto se usarán tantos atributos como etiquetas, cada uno de ellos conteniendo dos valores: $L=\{0,1\}\times\dots\times\{0,1\}$. 138 | \item Multidimensional: se trata de una generalización del caso multietiqueta donde cada una de las etiquetas toma valores en un conjunto finito arbitrario, esto es, $L=\{0,\dots, \lambda_1\}\times\dots\times\{0,\dots, \lambda_l\}$. 139 | \end{itemize} 140 | 141 | 142 | Las definiciones previas componen una formalización simple del problema 143 | de clasificación. Una modelización más detallada y con consecuencias 144 | teóricas de interés se encuentra en la teoría de aprendizaje PAC 145 | \autocite{shwartz2014}. De esta teoría además se extraen algunos resultados 146 | relevantes. Por un lado, el hecho de que los algoritmos sean capaces de generalizar 147 | un modelo adecuado a partir de una cantidad finita de muestras. Por contraposición, 148 | considerados sobre el conjunto de todas las distribuciones de datos 149 | posibles, todos los algoritmos de clasificación presentan en media la 150 | misma tasa de error en la predicción de clases para nuevos ejemplos 151 | (hecho conocido como el teorema de \textit{No Free Lunch} \autocite{wolpert1997}). 152 | 153 | \subsection{Estructura del espacio de 154 | atributos}\label{estructura-del-espacio-de-atributos} 155 | 156 | En principio no tenemos por qué asumir una estructura algebraica para el 157 | espacio de atributos \(\mathcal A\), pero la mayoría de algoritmos 158 | necesitarán una forma de medir similitud entre instancias. Para ello, 159 | normalmente se puede utilizar una distancia \(d\), de forma que 160 | \((\mathcal A,d)\) sea un espacio métrico. Para el uso de un conjunto de 161 | datos en redes neuronales, sin embargo, convendrá suponer además 162 | \(\mathcal A\subset \mathbb R^f\). 163 | 164 | \section{Problema de reducción de 165 | dimensionalidad}\label{sec:red-dim} 166 | 167 | Es común encontrar problemas de clasificación donde el espacio de 168 | atributos posee una alta dimensionalidad. Por ejemplo: conjuntos de 169 | datos extraídos de texto, donde cada atributo representa la aparición de 170 | una palabra en un documento; conjuntos basados en imágenes donde cada 171 | atributo representa un píxel \autocite{mnist}, o datos que 172 | expresan características genéticas \autocite{clarke2008}. 173 | 174 | Como consecuencia del \autoref{th:dim-curse}, al aumentar la dimensionalidad de los conjuntos de datos se pierde significatividad en las distancias, en el sentido de que, para una instancia de la muestra dada, la instancia más cercana y la instancia más lejana están a distancias muy similares. 175 | 176 | Las distancias entre puntos en el espacio de atributos son utilizadas en 177 | multitud de algoritmos de aprendizaje automático, entre los cuales el 178 | ejemplo más claro es la técnica del Vecino más cercano 179 | \autocite{peterson2009}, aplicada en clasificación en el algoritmo de los k-vecinos más cercanos. 180 | 181 | Ante un conjunto de datos de alta 182 | dimensionalidad, podemos discernir dos vías de acción: 183 | \begin{itemize} 184 | \tightlist 185 | \item 186 | Estudiar y transformar los datos manteniendo la dimensionalidad, para 187 | que las distancias entre puntos sean significativas. 188 | \item 189 | Reducir la dimensionalidad de los datos, manteniendo toda la 190 | información útil que sea posible. 191 | \end{itemize} 192 | En nuestro caso, utilizaremos algunas técnicas de Deep Learning para 193 | operar de la segunda forma, comprimiendo los datos en un espacio de 194 | menor dimensionalidad. 195 | 196 | Con el objetivo de reducir la dimensionalidad de un conjunto de datos, 197 | se alteran las características del mismo en un proceso denominado 198 | \emph{extracción de características}, que comprende dos mecanismos alternativos que en ocasiones se combinan 199 | \autocite{guyon2006}: 200 | 201 | \begin{enumerate} 202 | \def\labelenumi{\arabic{enumi}.} 203 | \tightlist 204 | \item 205 | \textbf{Construcción de características}. Se transforman los datos, 206 | operando entre las características para hallar un nuevo conjunto de 207 | atributos que posiblemente facilite el aprendizaje de los datos. 208 | \item 209 | \textbf{Selección de características}. Se escogen las características 210 | que se consideren más relevantes para obtener información, y se 211 | descartan las que no son útiles. 212 | \end{enumerate} 213 | 214 | En ocasiones, las características construidas en el primer mecanismo se añaden al espacio de características existente para realizar una posterior selección entre todas. 215 | 216 | La selección de características se puede realizar mediante muy distintas 217 | técnicas, desde metaheurísticas hasta basadas en teoría de la 218 | información \autocite{molina2002}. 219 | 220 | Por otro lado, la construcción de características se pone en práctica de 221 | formas de variable complejidad. De entre las más sencillas cabe 222 | mencionar la normalización, la discretización, o tomar combinaciones 223 | lineales de las características existentes. Además, se pueden destacar 224 | técnicas más avanzadas como Isomap \autocite{tenenbaum2000}, Locally 225 | Linear Embedding \autocite{roweis2000}, o los autoencoders 226 | \autocite{hinton2006autoencoder}. Este trabajo se centrará en estudiar 227 | estos últimos. 228 | 229 | \section{Métodos de optimización: gradiente 230 | descendente} 231 | 232 | \label{sec:grad-desc} 233 | 234 | Gran parte del trabajo computacional en aprendizaje automático requiere 235 | optimizar funciones, es decir, encontrar el máximo o el mínimo de una 236 | función \(f:\RR^n\rightarrow \RR\). Dicha función se suele denominar 237 | \emph{función objetivo}, y normalmente corresponde al coste o error de 238 | aprendizaje de un algoritmo. En lo sucesivo, se supondrá que el objetivo 239 | a conseguir es encontrar el mínimo de la función \(f\). Los resultados y 240 | algoritmos son análogos para la búsqueda de un máximo, simplemente 241 | cambiando el signo de \(f\). 242 | 243 | Estudiemos una simplificación del problema de optimización a una 244 | variable. Sea \(f:[a,b]\rightarrow\RR\) continua en \([a,b]\) y 245 | derivable con derivada continua en \(]a,b[\). Por un resultado elemental 246 | de análisis matemático, es conocido que un extremo (máximo o mínimo) 247 | local en una función derivable se encuentra siempre en un punto de 248 | derivada cero. Además, por el teorema del valor medio, para 249 | \(\varepsilon>0\) se tiene que 250 | \[\exists c\in ]a, a+\varepsilon[ :\ f(a+\varepsilon)-f(a)=\varepsilon f'(c)\Rightarrow f(a+\varepsilon)=f(a) + \varepsilon f'(c)\] 251 | y, por continuidad de \(f'\), si \(\varepsilon\) es suficientemente 252 | pequeño el signo de la derivada no cambiará entre \(a\) y \(c\). Así, 253 | \[f'(a)<0\Rightarrow f(a+\varepsilon) < f(a);\ f'(a)>0\Rightarrow f(a+\varepsilon) > f(a).\] 254 | 255 | El método del gradiente descendente, en una variable, consiste en 256 | evaluar \(f\) a pequeños saltos de \(\varepsilon\) y consultar la 257 | derivada para decidir el sentido del próximo salto. 258 | 259 | En el caso de varias variables, el algoritmo es muy similar. Sabiendo 260 | que el gradiente de una función real de varias variables 261 | \(f:\RR^n\rightarrow \RR\) es un vector que apunta en la dirección y 262 | sentido de la mayor pendiente (derivada direccional) ascendente de la 263 | función, el gradiente cambiado de signo estará posicionado en el sentido 264 | de mayor pendiente descendente. 265 | 266 | Así, suponiendo la suficiente regularidad para \(f\) y que se puede 267 | evaluar tanto la función como su derivada en cualquier punto del 268 | dominio, se puede aplicar el algoritmo de gradiente descendente, 269 | originalmente debido a \textcite{cauchy1847}. 270 | 271 | El algoritmo generalizado consiste en, a cada paso determinado por un 272 | punto \(x\) del dominio, consultar el gradiente de \(f\) en \(x\), 273 | \(\nabla f(x)\), y ``saltar'' una cantidad \(\varepsilon>0\) en su 274 | dirección y en el sentido contrario: \[x' = x - \varepsilon\nabla f(x)\] 275 | Al escalar \(\varepsilon\) se le suele llamar \emph{tasa de 276 | aprendizaje}. 277 | 278 | El algoritmo termina cuando \(\nabla f(x)\) es el vector cero o muy 279 | cercano a cero, con una tolerancia dada. 280 | 281 | \begin{figure}[hbtp] 282 | \centering 283 | \includegraphics[width=0.45\textwidth]{images/gradient_ascent_contour.png} 284 | \includegraphics[width=0.45\textwidth]{images/gradient_ascent_surface.png} 285 | \caption{\label{fig:grad-desc}Visualización de la técnica de gradiente descendente, en este caso, buscando un máximo de la función $F(x,y)=\sin\left(\frac{1}{2} x^2 - \frac{1}{4} y^2 + 3 \right) \cos(2 x+1-e^y)$. Imágenes de Wikimedia Commons en dominio público} 286 | \end{figure} 287 | 288 | La técnica de gradiente descendente presenta algunos problemas: como se 289 | puede observar en la \autoref{fig:grad-desc}, cuando el gradiente de 290 | la función es próximo a cero el algoritmo tiende a dar pasos muy cortos, 291 | convergiendo muy lentamente hacia el extremo local encontrado. Asimismo, 292 | en general puede presentar un comportamiento de zigzag para ciertas 293 | funciones, avanzando de forma casi ortogonal al segmento que guarda la 294 | distancia más corta con el extremo. 295 | -------------------------------------------------------------------------------- /memoria/chapters/manual.tex: -------------------------------------------------------------------------------- 1 | \section{Documentación para el paquete Ruta en la versión 0.2.0} 2 | 3 | \subsection{Predecir salidas para modelos entrenados y nuevos datos} 4 | 5 | \paragraph{Descripción} 6 | Se deben entregar al menos un argumento de modelo y uno de tarea. La tarea puede contener los mismos datos de entrada que se utilizaron para entrenar el modelo, o datos nuevos con la misma estructura. El resto de argumentos serán facilitados a la función interna de predicción. 7 | 8 | \paragraph{Uso} 9 | ~ 10 | 11 | \begin{lstlisting} 12 | ## S3 method for class 'rutaModel' 13 | predict(object, ...)\end{lstlisting} 14 | 15 | \paragraph{Argumentos} 16 | \begin{itemize} 17 | \item \emph{object} Un objeto \texttt{``rutaModel''}. 18 | \item \emph{...} Parámetros específicos para la función de predicción interna. 19 | \end{itemize} 20 | 21 | \paragraph{Valor} 22 | Una matriz conteniendo predicciones para cada instancia de la tarea dada. 23 | 24 | \subsection{Obtener las características internas de un modelo de autoencoder entrenado} 25 | 26 | \paragraph{Descripción} 27 | Extrae las características de la capa de codificación de un autoencoder previamente entrenado. 28 | 29 | \paragraph{Uso} 30 | ~ 31 | 32 | \begin{lstlisting} 33 | ruta.deepFeatures(model, task, ...) 34 | \end{lstlisting} 35 | 36 | \paragraph{Argumentos} 37 | \begin{itemize} 38 | \item \emph{model} Un objeto \texttt{``rutaModel''} de un modelo de autoencoder. 39 | \item \emph{task} Un objeto \texttt{``rutaTask''}. 40 | \item \emph{...} Parámetros específicos para la función de predicción interna. 41 | \end{itemize} 42 | 43 | \paragraph{Valor} 44 | Una matriz conteniendo la codificación para cada instancia de la tarea dada. 45 | 46 | 47 | \subsection{Obtener los pesos de cualquier capa de un modelo entrenado} 48 | 49 | \paragraph{Descripción} 50 | Extrae los pesos de los parámetros fijados al entrenar un modelo. 51 | 52 | \paragraph{Uso} 53 | ~ 54 | 55 | \begin{lstlisting} 56 | ruta.getWeights(model, layer) 57 | \end{lstlisting} 58 | 59 | \paragraph{Argumentos} 60 | \begin{itemize} 61 | \item \emph{model} Un objeto \texttt{``rutaModel''} de un modelo de autoencoder. 62 | \item \emph{layer} Un entero indicando el índice de la capa de la que se extraerán los pesos. 63 | \end{itemize} 64 | 65 | \paragraph{Valor} 66 | Una matriz conteniendo los pesos de la capa dada. 67 | 68 | 69 | \subsection{Obtener las salidas de cualquier capa de un modelo entrenado} 70 | 71 | \paragraph{Descripción} 72 | Extrae las salidas de la capa indicada a partir de un modelo entrenado y datos nuevos 73 | 74 | \paragraph{Uso} 75 | ~ 76 | 77 | \begin{lstlisting} 78 | ruta.layerOutputs(model, task, layerInput = 1, layerOutput, ...) 79 | \end{lstlisting} 80 | 81 | \paragraph{Argumentos} 82 | \begin{itemize} 83 | \item \emph{model} Un objeto \texttt{``rutaModel''} de un modelo de autoencoder o RBM. 84 | \item \emph{task} Un objeto \texttt{``rutaTask''} conteniendo los datos que deben propagarse por la red. 85 | \item \emph{layerInput} Un entero indicando el índice de la capa en la que se inyectarán los datos. En autoencoders se inyectan siempre en la primera capa. 86 | \item \emph{layerOutput} Un entero indicando el índice de la capa que se pretende extraer. 87 | \item \emph{...} Parámetros específicos para la función de predicción interna. 88 | \end{itemize} 89 | 90 | \paragraph{Valor} 91 | Una matriz conteniendo salidas para cada instancia de la capa dada. 92 | 93 | 94 | \subsection{Representar un algoritmo de aprendizaje} 95 | 96 | \paragraph{Descripción} 97 | Crea un objeto que representa un algoritmo de aprendizaje. 98 | 99 | \paragraph{Uso} 100 | ~ 101 | 102 | \begin{lstlisting} 103 | ruta.makeLearner(cl, id = cl, ...) 104 | \end{lstlisting} 105 | 106 | \paragraph{Argumentos} 107 | \begin{itemize} 108 | \item \emph{cl} Una cadena de caracteres indicando el tipo de algoritmo (\texttt{``autoencoder''} o \texttt{``rbm''}). 109 | \item \emph{id} Una cadena de caracteres opcional indicando un nombre para el objeto. 110 | \item \emph{...} Parámetros adicionales para el objeto, específicos al algoritmo requerido. 111 | \end{itemize} 112 | 113 | \paragraph{Valor} 114 | Un objeto para el algoritmo de aprendizaje que almacena los parámetros provistos. 115 | 116 | \paragraph{Ejemplos} 117 | ~ 118 | 119 | \begin{lstlisting} 120 | ruta.makeLearner("rbm", hidden = 4, activation = "bin") 121 | ruta.makeLearner("autoencoder", "ae1", 122 | hidden = c(4, 2, 4), 123 | activation = "relu") 124 | \end{lstlisting} 125 | 126 | 127 | \subsection{Representar una tarea de aprendizaje} 128 | 129 | \paragraph{Descripción} 130 | Crea un objeto que representa una tarea de aprendizaje. 131 | 132 | \paragraph{Uso} 133 | ~ 134 | 135 | \begin{lstlisting} 136 | ruta.makeTask(id, data, cl = NULL) 137 | \end{lstlisting} 138 | 139 | \paragraph{Argumentos} 140 | \begin{itemize} 141 | \item \emph{id} Una cadena de caracteres opcional indicando un nombre para el objeto. 142 | \item \emph{data} Un conjunto de datos, será convertido a un \emph{data.frame}. 143 | \item \emph{cl} El índice de la columna correspondiente a la clase, o \texttt{NULL} si el conjunto no incluye clase. 144 | \end{itemize} 145 | 146 | \paragraph{Valor} 147 | Un objeto genérico para la tarea de aprendizaje que almacena los datos dados. 148 | 149 | \subsection{Representar una tarea de aprendizaje no supervisado} 150 | 151 | \paragraph{Descripción} 152 | Crea un objeto que representa una tarea de aprendizaje no supervisado. 153 | 154 | \paragraph{Uso} 155 | ~ 156 | 157 | \begin{lstlisting} 158 | ruta.makeUnsupervisedTask(id, data, cl = NULL) 159 | \end{lstlisting} 160 | 161 | \paragraph{Argumentos} 162 | \begin{itemize} 163 | \item \emph{id} Una cadena de caracteres opcional indicando un nombre para el objeto. 164 | \item \emph{data} Un conjunto de datos, será convertido a un \emph{data.frame}. 165 | \item \emph{cl} El índice de la columna correspondiente a la clase, o \texttt{NULL} si el conjunto no incluye clase. 166 | \end{itemize} 167 | 168 | \paragraph{Valor} 169 | Un objeto para la tarea de aprendizaje no supervisado que almacena los datos dados y los parámetros. 170 | 171 | \paragraph{Ejemplo} 172 | ~ 173 | 174 | \begin{lstlisting} 175 | data(iris) 176 | irisTask <- ruta.makeUnsupervisedTask( 177 | "iris", 178 | data = iris, 179 | cl = 5) 180 | \end{lstlisting} 181 | 182 | \subsection{Pre-entrenamiento de autoencoders} 183 | 184 | \paragraph{Descripción} 185 | Obtener los pesos iniciales para un autoencoder mediante una pila de RBMs. 186 | 187 | \paragraph{Uso} 188 | ~ 189 | 190 | \begin{lstlisting} 191 | ruta.pretrain(x, task, epochs = 10, ...) 192 | \end{lstlisting} 193 | 194 | \paragraph{Argumentos} 195 | \begin{itemize} 196 | \item \emph{x} Un objeto \texttt{``rutaAutoencoder''}. 197 | \item \emph{task} Un objeto \texttt{``rutaTask''}. 198 | \item \emph{epochs} El número de épocas para el proceso de entrenamiento de cada RBM. 199 | \end{itemize} 200 | 201 | \paragraph{Valor} 202 | Una lista de matrices de pesos iniciales para facilitar como el argumento \texttt{initial.args} en una llamada a \texttt{train} con un objeto de clase \texttt{``rutaAutoencoder''}. 203 | 204 | 205 | \subsection{Entrenamiento de modelos} 206 | 207 | \paragraph{Descripción} 208 | Generar un modelo entrenado para un objeto asociado 209 | 210 | \paragraph{Uso} 211 | ~ 212 | 213 | \begin{lstlisting} 214 | train(x, task, ...) 215 | \end{lstlisting} 216 | 217 | \paragraph{Argumentos} 218 | \begin{itemize} 219 | \item \emph{x} Un objeto representando un algoritmo de aprendizaje de clase \texttt{``rutaAutoencoder''} o \texttt{``rutaRBM''}. 220 | \item \emph{task} Un objeto \texttt{``rutaTask''}. 221 | \item \emph{...} Resto de parámetros según tipo de algoritmo. 222 | 223 | En el caso de un autoencoder: 224 | \begin{itemize} 225 | \item \emph{epochs} El número de iteraciones sobre el algoritmo de optimización. 226 | \item \emph{optimizer} El nombre del optimizador a usar (\texttt{``sgd''}, \texttt{``adagrad''}, \texttt{``rmsprop''}, \texttt{``adam''} o \texttt{``adadelta''}). 227 | \item \emph{eval.metric} Medida de evaluación (por defecto, el error cuadrático medio). 228 | \item \emph{initial.args} Lista de argumentos iniciales (pesos obtenidos por \texttt{ruta.pretrain}). 229 | \item \emph{initializer.scale} Escala de la distribución uniforme para inicializar pesos. 230 | \item \emph{...} Parámetros adicionales para el optimizador. 231 | \end{itemize} 232 | 233 | En el caso de una RBM: 234 | \begin{itemize} 235 | \item \emph{numepochs} El número de iteraciones para el entrenamiento. 236 | \end{itemize} 237 | \end{itemize} 238 | 239 | \paragraph{Valor} 240 | Un objeto de clase \texttt{``rutaModel''} que contiene el modelo entrenado. 241 | 242 | \paragraph{Ejemplo} 243 | ~ 244 | 245 | \begin{lstlisting} 246 | data(iris) 247 | irisTask <- ruta.makeUnsupervisedTask( 248 | "iris", 249 | data = iris, 250 | cl = 5) 251 | 252 | ae <- ruta.makeLearner( 253 | "autoencoder", 254 | hidden = c(4, 2, 4), 255 | activation = "leaky") 256 | model <- train( 257 | ae, 258 | task, 259 | epochs = 80, 260 | optimizer = "adagrad", 261 | learning.rate = 0.02, 262 | initializer.scale = 2) 263 | \end{lstlisting} 264 | 265 | \section{Documentación para el paquete Rutavis en la versión 0.2.0} 266 | 267 | \subsection{Representar la codificación de un modelo entrenado} 268 | 269 | \paragraph{Descripción} 270 | Obtener y representar la capa interna de un modelo entrenado con unos datos de entrada. 271 | 272 | \paragraph{Uso} 273 | ~ 274 | 275 | \begin{lstlisting} 276 | ## S3 method for class 'rutaModel' 277 | plot(model, task, ...) 278 | \end{lstlisting} 279 | 280 | \paragraph{Argumentos} 281 | \begin{itemize} 282 | \item \emph{model} Un objeto \texttt{``rutaModel''} entrenado mediante un autoencoder. 283 | \item \emph{task} Un objeto \texttt{``rutaTask''} con los datos de entrada. 284 | \item \emph{...} Parámetros adicionales para la función de representación gráfica. 285 | \end{itemize} 286 | 287 | \paragraph{Valor} 288 | Genera un gráfico de Plotly y lo muestra en un panel interactivo. 289 | 290 | 291 | \subsection{Lanzar la interfaz de usuario web} 292 | 293 | \paragraph{Descripción} 294 | Carga la interfaz gráfica de usuario web y abre una nueva pestaña de navegador para mostrarla. 295 | 296 | \paragraph{Uso} 297 | ~ 298 | 299 | \begin{lstlisting} 300 | ruta.gui() 301 | \end{lstlisting} 302 | 303 | \paragraph{Valor} 304 | No devuelve nada. -------------------------------------------------------------------------------- /memoria/chapters/objetivos.tex: -------------------------------------------------------------------------------- 1 | 2 | Los objetivos que se plantearon al inicio de este trabajo fueron los siguientes: 3 | \begin{enumerate} 4 | \item 5 | Recopilación y estudio bibliográfico de los fundamentos matemáticos 6 | del Deep Learning, con especial enfoque en la teoría de la información 7 | y teoría de la probabilidad. 8 | \item 9 | Desarrollo e implementación de un software que recopile las 10 | técnicas de Deep Learning orientadas a reducción de dimensionalidad 11 | más relevantes e incluya visualizaciones y facilidades para el 12 | análisis. 13 | \item 14 | Análisis de las técnicas utilizadas en relación con los 15 | resultados visuales generados por la herramienta software. 16 | \end{enumerate} 17 | 18 | El primer objetivo se ha cumplido y se ha extendido notablemente. En este trabajo se estudian los conceptos matemáticos que fundamentan el Deep Learning en los capítulos \ref{ch:probability} y \ref{ch:information}, pero también se introducen conceptos que se aplican en las implementaciones concretas (\autoref{ch:tensors}). El \autoref{ch:probability} motiva además de forma teórica el problema de reducción de la dimensionalidad. Asimismo, el estudio teórico se extiende en los capítulos \ref{ch:learning} y \ref{ch:deep} hasta el análisis de los algoritmos utilizados en las técnicas de aprendizaje que se usan en la parte práctica del trabajo. 19 | 20 | El segundo objetivo también se ha cumplido en un grado alto. Como se expone en el \autoref{ch:ruta}, se han desarrollado dos paquetes software responsables de implementar distintas técnicas de Deep Learning que permiten reducir la dimensionalidad y generar visualizaciones sobre los modelos, respectivamente. La herramienta no es totalmente exhaustiva, en el sentido de que no contiene todas las estructuras profundas descritas en este trabajo, pero sí que define además un marco de trabajo sencillo en el que es fácil añadir nuevas técnicas y usarlas. 21 | 22 | El tercer objetivo consistía en conocer de qué forma los gráficos sobre los modelos generados nos podían dar información acerca del comportamiento de una red neuronal entrenada. En la \autoref{sec:rutavis} se muestran algunos ejemplos de estos gráficos e ideas acerca de lo que nos pueden explicar de las redes. Consideramos por tanto, que también se ha cumplido este objetivo en cierto grado. 23 | 24 | A continuación se enumeran las materias del Doble Grado más relacionadas con este trabajo: 25 | \begin{itemize} 26 | \item Geometría I 27 | \item Estadística Descriptiva e Introducción a la Probabilidad 28 | \item Geometría II 29 | \item Análisis Matemático II 30 | \item Probabilidad 31 | \item Fundamentos de Programación 32 | \item Metodología de la Programación 33 | \item Estructuras de datos 34 | \item Algorítmica 35 | \item Inteligencia Artificial 36 | \item Aprendizaje Automático 37 | \item Inteligencia de Negocio 38 | \end{itemize} -------------------------------------------------------------------------------- /memoria/chapters/probabilidad.tex: -------------------------------------------------------------------------------- 1 | A lo largo de este capítulo se definen conceptos básicos de la teoría de la probabilidad, que serán utilizados en el resto del trabajo. También se hace mención a unas propiedades de la convergencia que nos permiten después demostrar un resultado técnico que motiva el problema de reducción de la dimensionalidad, estudiado con más detalle en la \autoref{sec:red-dim}. La fuente principal del capítulo es \textcite[capítulo 3]{goodfellow2016}. 2 | 3 | \section{Recordatorio de conceptos}\label{conceptos} 4 | 5 | El objetivo de la probabilidad es modelar y trabajar con incertidumbre. 6 | Dicha incertidumbre puede provenir de diversas fuentes, entre ellas: 7 | 8 | \begin{itemize} 9 | \tightlist 10 | \item 11 | Estocasticidad del sistema modelado (e.g.~mecánica cuántica, 12 | escenarios hipotéticos con aleatoriedad, etc.). 13 | \item 14 | Falta de observabilidad: los sistemas deterministas se muestran 15 | aparentemente estocásticos cuando no se pueden observar todas las 16 | variables que los afectan. 17 | \item 18 | Modelización incompleta: el uso de un modelo que descarta parte de la 19 | información observada (un modelo simple pero incompleto puede ser más 20 | útil que uno absolutamente preciso). 21 | \end{itemize} 22 | 23 | En el ámbito de estudio de este trabajo, el del aprendizaje automático, la 24 | teoría de la probabilidad nos sirve para estudiar los algoritmos de 25 | aprendizaje desde un punto de vista teórico y construir representaciones de los 26 | modelos que aprenden a partir de los datos. 27 | 28 | En esta sección se realiza un recordatorio de conceptos necesarios para 29 | trabajar con probabilidades en el resto del texto. 30 | 31 | \defineb 32 | Una \emph{variable aleatoria} es una función medible 33 | \(X:\Omega\rightarrow E\) donde \(\Omega\) es un espacio de probabilidad 34 | y \(E\) un espacio medible. \definee 35 | \defineb 36 | El par \((\Omega, \Sigma)\) donde \(\Omega\) es un conjunto y \(\Sigma\) 37 | una \(\sigma\)-álgebra sobre \(\Omega\) es un \emph{espacio medible}. 38 | \definee 39 | \defineb 40 | Si \((\Omega, \mathcal{F})\) es un espacio medible y \(\mu\) es una 41 | medida sobre \(\mathcal{F}\), entonces la terna 42 | \((\Omega, \mathcal{F}, \mu)\) es un \emph{espacio de medida}. Si 43 | además se verifica \(\mu(\Omega)=1\), entonces se trata de un 44 | \emph{espacio de probabilidad}. \definee 45 | 46 | Intuitivamente, una variable aleatoria representa una variable del 47 | problema que puede tomar distintos valores, y la probabilidad con la que 48 | se darán dichos valores puede ser descrita por una distribución de 49 | probabilidad. Cuando notamos \(X:\Omega\rightarrow E\), interpretamos 50 | que \(\Omega\) es el conjunto de todos los sucesos posibles, y los 51 | estados que puede tomar la variable \(X\) vienen dados por su imagen, 52 | \(X(\Omega)\subset E\). Se dice que \(X\) es \emph{discreta} si 53 | \(X(\Omega)\) es numerable (incluyendo el caso finito), y es 54 | \emph{continua} si \(X(\Omega)\) es no numerable. 55 | 56 | 57 | \subsection{Notación de probabilidad} 58 | 59 | En ocasiones preferiremos hablar de la probabilidad de que se dé un suceso, en lugar de la probabilidad de un valor concreto. Dado un espacio de probabilidad $(\Omega, \mathcal F, \mu)$ y una variable aleatoria $X:\Omega\rightarrow E$, notaremos 60 | \[ 61 | \Pr{X=x}=\mu(\{s\in\Omega:X(s)=x\})=\mu(X^{-1}(\{x\}))~. 62 | \] 63 | 64 | En general, podemos expresar de forma similar la probabilidad de una proposición lógica arbitraria sobre los valores de X. Si tenemos una condición $c$, 65 | \[ 66 | \Pr{X\mbox{ verifica }c}=\mu(\{s\in\Omega:X(s)\mbox{ verifica }c\})~. 67 | \] 68 | 69 | 70 | \subsection{Distribuciones de probabilidad} 71 | 72 | \defineb 73 | Una distribución de probabilidad sobre una variable discreta \(X\) se 74 | describe mediante una \emph{función de probabilidad} (\emph{Probability 75 | Mass Function}, PMF) \(p:X(\Omega)\rightarrow [0,1]\), que se define como 76 | \[ 77 | p(x)=\Pr{X=x}~. 78 | \] 79 | \definee 80 | 81 | \defineb 82 | Una distribución de probabilidad sobre una variable continua \(X\) valuada en los números reales se 83 | describe mediante una \emph{función de densidad} (\emph{Probability 84 | Density Function}, PDF) \(p:X(\Omega)\rightarrow [0,1]\), definida como 85 | \[ 86 | p(x)=\frac{d}{dx}\mu([-\infty,x])~, 87 | \] 88 | donde \(x\mapsto \mu([-\infty,x])\) se denomina \emph{función de distribución}. 89 | \definee 90 | 91 | Es común el abuso del lenguaje por el cual se nota a varias funciones de probabilidad de distintas variables aleatorias por la misma letra, pero no hay posibilidad de confusión ya que se evalúan en distintos valores. 92 | 93 | \subsection{Distribuciones marginales}\label{marginal} 94 | 95 | Cuando una distribución describe varias variables, puede interesar 96 | conocer la distribución de un subconjunto de las mismas. Esta se 97 | denomina \emph{distribución marginal}, y se consigue sumando o 98 | integrando a lo largo de todos los valores de las variables que no están 99 | en el subconjunto. Por ejemplo, si \(X\) e \(Y\) son variables 100 | discretas, se tiene \[p(x) = \sum_{y\in Y(\Omega)}p(x, y)~.\] Si son 101 | continuas, entonces se verifica 102 | \[p(x) = \int\limits_{Y(\Omega)}p(x, y)dy~.\] 103 | 104 | \subsection{Probabilidad condicionada}\label{probabilidad-condicionada} 105 | 106 | En ocasiones es útil representar la probabilidad de un suceso 107 | condicionado a la ocurrencia de otro. Para ello se utilizan 108 | \emph{probabilidades condicionadas}, que se notan \(p(y|x)\) (donde 109 | \(y\in Y(\Omega), x\in X(\Omega)\)) y se calculan mediante la siguiente 110 | fórmula, suponiendo que \(p(x) > 0\): 111 | 112 | \begin{equation}p(y|x)=\frac{p(y,x)}{p(x)}~.\label{eq:cond}\end{equation} 113 | 114 | %\subsubsection{Encadenando probabilidades 115 | %condicionadas}\label{encadenando-probabilidades-condicionadas} 116 | 117 | Una distribución de probabilidad conjunta sobre varias variables se 118 | puede descomponer como probabilidades condicionadas sobre una sola 119 | variable: 120 | \[p(x_1, \dots x_n) = p(x_1)\prod\limits_{i=2}^n p(x_i\mid x_1, \dots x_{i-1})~.\] 121 | 122 | Esta expresión se deduce por inducción de la ecuación~\eqref{eq:cond}. 123 | 124 | \subsection{Independencia e independencia 125 | condicionada}\label{independencia-e-independencia-condicionada} 126 | 127 | \defineb 128 | Dos variables aleatorias, \(X\) e \(Y\), son \emph{independientes} si 129 | la su probabilidad conjunta equivale al producto de sus probabilidades: 130 | \[p(x,y)=p(x)p(y)\forall x\in X(\Omega),y\in Y(\Omega)~.\] 131 | \definee 132 | 133 | \defineb 134 | Además, se dice que son \emph{condicionalmente independientes} 135 | respecto a una variable \(Z\) si la distribución de probabilidad 136 | condicionada se factoriza por \(X\) e \(Y\): 137 | \[p(x,y|z)=p(x|z)p(y|z)\forall x\in X(\Omega),y\in Y(\Omega),z\in Z(\Omega)~.\] 138 | \definee 139 | 140 | \subsection{Momentos: esperanza, varianza y 141 | covarianza}\label{momentos-esperanza-varianza-y-covarianza} 142 | 143 | Para hablar de los momentos de variables aleatorias, nos centramos en las valuadas en los números reales. En el caso de una variable con codominio $\RR^{k}$, se pueden estudiar los momentos marginales de forma análoga. 144 | 145 | \defineb 146 | La \emph{esperanza} de una variable aleatoria \(X\) viene dada por las 147 | expresiones siguientes, para variables discretas y continuas 148 | respectivamente: 149 | \[\mathrm E[X]=\sum_{x\in X(\Omega)}xp(x);\quad \mathrm E[X]=\int_{X(\Omega)}xp(x)dx~.\] 150 | \definee 151 | 152 | \note{Todos los momentos se toman respecto de una variable 153 | aleatoria y una distribución de probabilidad asociada, por lo que la 154 | notación correcta sería \(\mathrm E_{X\sim p}[X]\). Sin embargo, se omitirá 155 | excepto para prevenir ambigüedades.} 156 | 157 | Se puede definir la esperanza de una función \(f\) sobre los valores de 158 | una variable aleatoria, del siguiente modo: 159 | \[\mathrm E[f(X)]=\sum_{x\in X(\Omega)}f(x)p(x);\quad \mathrm E[f(X)]=\int_{X(\Omega)}f(x)p(x)dx~.\] 160 | 161 | \defineb 162 | La \emph{varianza} da idea acerca de cómo de diferentes entre sí son 163 | los valores de una variables conforme se muestrean por su distribución 164 | de probabilidad: \[\mathrm{Var}(X)=\mathrm E[(X-\mathrm E[X])^2]~.\] 165 | \definee 166 | 167 | \defineb 168 | La \emph{covarianza} relaciona dos variables aleatorias, indicando la 169 | medida en que están relacionadas linealmente y la escala de dichas 170 | variables: 171 | \[\mathrm{Cov}(X, Y)=\mathrm E[(X-\mathrm E[X])(Y-\mathrm E[Y])]~.\] 172 | \definee 173 | 174 | \defineb 175 | Para un vector de variables aleatorias, \(X=(X_1, \dots X_n)\), la 176 | \emph{matriz de covarianza} se define como una función matriz 177 | \(n\times n\) dada por: 178 | \[\mathrm{Cov}(X)_{i,j}=\mathrm{Cov}(X_i, X_j)~.\] 179 | \definee 180 | 181 | \section{Resultados de convergencia}\label{resultados-de-convergencia} 182 | 183 | Ahora nos situamos en distribuciones de probabilidad sobre espacios vectoriales reales. En concreto, sobre $\RR^k$ para $k\geq 1$. Existen distintos conceptos de convergencia que podemos definir, aquí trabajaremos principalmente con la convergencia en probabilidad. 184 | 185 | Sea \(d\) una distancia en \(\RR^k\) y sea 186 | \(\{X_n:\Omega\rightarrow\RR^k\}\) una sucesión de variables aleatorias, 187 | sea \(X:\Omega \rightarrow \RR^k\) una variable aleatoria. 188 | 189 | \defineb 190 | Se dice que \(X_n\) \emph{converge en probabilidad} a \(X\) si para cada 191 | \(\varepsilon>0\) se tiene \(\Pr{d(X_n, X)>\varepsilon}\rightarrow 0\). Lo 192 | denotamos \(X_n\pconv X\). \definee 193 | 194 | \defineb 195 | Se dice que \(X_n\) \emph{converge casi seguramente} a \(X\) si se da la 196 | convergencia puntual en un conjunto de medida 1: 197 | \[X_n\asconv X\Leftrightarrow \Pr{\lim_{n\rightarrow +\infty} d(X_n, X)=0}=1\] 198 | \definee 199 | 200 | Es un resultado conocido que \(X_n\pconv X\Rightarrow X_n\asconv X\). 201 | 202 | \lemmab 203 | \label{lm:convergencia-va} Si \(\{X_n\}\) es una sucesión de variables 204 | aleatorias con varianza finita y se verifican las siguientes 205 | condiciones: 206 | \[\exists x\in \mathbb R:\lim_{m\rightarrow +\infty} \mathrm{E}[X_m]=x,\quad \lim_{m\rightarrow +\infty} \mathrm{Var}[X_m]=0,\] 207 | entonces se tiene que \(X_m\pconv x\). \lemmae 208 | 209 | \theob[Teorema de la aplicación continua] 210 | \label{th:cont-map-conv} Sea \(\{X_n\}\) una sucesión de variables 211 | aleatorias y \(X\) una variable aleatoria, valuadas en un espacio 212 | medible \(E\). Sea \(g:E\rightarrow F\) con \(F\) otro espacio medible. 213 | Entonces, si \(g\) es continua casi por doquier, se tiene: 214 | 215 | \begin{gather*} 216 | X_n\pconv X \Rightarrow g(X_n)\pconv g(X),\\ 217 | X_n\asconv X \Rightarrow g(X_n)\asconv g(X). 218 | \end{gather*} 219 | 220 | \theoe 221 | 222 | %\section{\textasciitilde{}Herramientas de inferencia estadística 223 | %(?)\textasciitilde{}}\label{herramientas-de-inferencia-estaduxedstica} 224 | 225 | %\subsection{Estimadores 226 | %máximo-verosímiles}\label{estimadores-muxe1ximo-verosuxedmiles} 227 | 228 | \section{La maldición de la 229 | dimensionalidad}\label{sec:dim-curse} 230 | 231 | Vamos a aplicar los resultados teóricos anteriores para estudiar una propiedad interesante que determinará uno de los problemas tratados en el campo del aprendizaje automático (\autoref{sec:red-dim}). Supongamos que contamos con una muestra de datos, en forma de subconjunto finito de $\RR^{n}$. Nos podemos plantear qué efecto tiene el tamaño de $n$, en ocasiones denominado \emph{dimensionalidad}, sobre nuestra capacidad para extraer información útil de los datos. 232 | 233 | Algunos de los algoritmos más usuales utilizan distancias para medir similitudes entre los datos. Veremos que, conforme $n$ crece, las distancias usuales pierden significado, en el 234 | sentido de que el punto más lejano y el más cercano a uno dado están a 235 | distancias similares. Este hecho se suele denominar la maldición de la 236 | alta dimensionalidad (del inglés \emph{curse of high dimensionality}). Una 237 | formalización se encuentra en \textcite{beyer1999}, y se expone a 238 | continuación: 239 | 240 | \theob 241 | \label{th:dim-curse} 242 | Sea \(\{F_{m}\}_{m\in\NN}\) una sucesión de distribuciones de 243 | probabilidad, \(n\in \mathbb N\) y \(p\in\mathbb R^+\) fijos. Para cada 244 | \(m\in\NN\) sean \(X_{m1},\dots,X_{mn}\sim F_m\) muestras independientes 245 | e idénticamente distribuidas. Supongamos que tenemos una función 246 | \(d_m:\mathrm{Dom}(F_m)\rightarrow \mathbb R^+_0\) y llamamos 247 | 248 | \begin{align*} 249 | \mathrm{DMIN}_{m}&=\min\{d_m(X_{mi}):i=1,\dots,n\},\\ 250 | \mathrm{DMAX}_{m}&=\max\{d_m(X_{mi}):i=1,\dots,n\}. 251 | \end{align*} 252 | 253 | Entonces, si 254 | \(\lim_{m\rightarrow +\infty}\Var\left[\frac{d_m(X_{m1})^p}{E[d_m(X_{m1})^p]}\right]=0\) 255 | se tiene que, para cada \(\varepsilon > 0\), 256 | \[\lim_{m\rightarrow +\infty}\Pr{\mathrm{DMAX}_m\leq (1+\varepsilon) \mathrm{DMIN}_m}=1.\] 257 | \proofb 258 | 259 | Puesto que las muestras \(X_{mi}\) son idénticamente distribuidas, 260 | tienen la misma esperanza, y funciones de las mismas también comparten 261 | esperanza. Así, llamamos \(\mu_m = \E[d_m(X_{mi})^p]\) y sea 262 | \(V_m =\frac{d_m(X_{m1})^p}{\mu_m}\). 263 | 264 | Veamos que \(V_m\pconv 1\): primero, tenemos que 265 | \(\E[V_m] = \frac{\mu_m}{\mu_m} = 1\), y como consecuencia 266 | \(\lim_{m\rightarrow +\infty}\E[V_m] = 1\). Por hipótesis, 267 | \(\lim_{m\rightarrow +\infty}\Var[V_m] = 1\), y usando el 268 | \autoref{lm:convergencia-va} deducimos que \(V_m\pconv 1\). 269 | 270 | Ahora, definimos la variable aleatoria 271 | \[Y_m=\left(\frac{d_m(X_{m1})^p}{\mu_m}, \dots, \frac{d_m(X_{mn})^p}{\mu_m}\right).\] 272 | Como cada componente del vector \(Y_m\) es idénticamente distribuida a 273 | \(V_m\), se tiene que \(Y_m\pconv (1, \dots, 1)\). Como \(\min\) y 274 | \(\max\) (que dan la componente mínima y máxima del vector, 275 | respectivamente) son funciones continuas, podemos utilizar el \autoref{th:cont-map-conv} para obtener que 276 | \(\min(Y_m)\pconv \min\{1, \dots, 1\} = 1\) y \(\max(Y_m)\pconv 1\). 277 | 278 | Notemos ahora que 279 | \(\mathrm{DMIN}_m= \min\{\mu_m Y_m(i):i=1,\dots,n\}=\mu_m \min(Y_m)\) y 280 | de igual forma \(\mathrm{DMAX}_m=\mu_m \max(Y_m)\). Así, 281 | \[ \frac{\mathrm{DMAX}_m}{\mathrm{DMIN}_m}=\frac{\mu_m \max(Y_m)}{\mu_m \min(Y_m)}=\frac{\max(Y_m)}{\max(Y_m)}\pconv \frac 1 1= 1.\] 282 | 283 | Por definición de convergencia en probabilidad, para cada 284 | \(\varepsilon>0\) se tiene 285 | 286 | \begin{equation} 287 | \label{eq:conv-dmax-dmin} 288 | \lim_{m\rightarrow +\infty} \Pr{\left\lvert \frac{\mathrm{DMAX}_m}{\mathrm{DMIN}_m} - 1 \right\rvert\leq\varepsilon} = 1, 289 | \end{equation} 290 | y usando que \(\Pr{\mathrm{DMAX}_m \geq \mathrm{DMIN}_m}=1\), 291 | \begin{gather*} 292 | \Pr{\left\lvert \frac{\mathrm{DMAX}_m}{\mathrm{DMIN}_m} - 1 \right\rvert\leq\varepsilon}= 293 | \Pr{\frac{\mathrm{DMAX}_m}{\mathrm{DMIN}_m} - 1 \leq\varepsilon}=\\= 294 | \Pr{\mathrm{DMAX}_m\leq (1+ \varepsilon)\mathrm{DMIN}_m }, 295 | \end{gather*} 296 | luego el límite \eqref{eq:conv-dmax-dmin} es el que queríamos demostrar. 297 | \proofe 298 | \theoe 299 | 300 | Nótese que este resultado es más general de lo que necesitamos, usando 301 | cualquier función valuada no negativa \(d_m\) que podemos interpretar 302 | como la distancia a un punto fijo. Como caso particular, en 303 | \textcite{aggarwal2001} se prueba el resultado para la distancia 304 | asociada a la norma \(L_p\). Además, no menciona realmente la 305 | dimensionalidad, que se puede interpretar como un caso particular de la 306 | cantidad \(m\) del teorema. 307 | 308 | Por otro lado, requiere de una condición que no necesariamente se dará 309 | en todos los escenarios, 310 | \(\lim_{m\rightarrow +\infty}\Var\left[\frac{d_m(X_{m1})^p}{E[d_m(X_{m1})^p]}\right]=0\). 311 | Un análisis de las situaciones en que el resultado es aplicable se 312 | encuentra de nuevo en \textcite{beyer1999}. Esencialmente, es suficiente 313 | que las distribuciones de los datos sean independientes e idénticamente 314 | distribuidas a lo largo de todas las dimensiones, y los momentos 315 | convenientes sean finitos. También se aportan varios ejemplos donde no se 316 | da la independencia y sí se verifican las condiciones del teorema. 317 | -------------------------------------------------------------------------------- /memoria/chapters/tensores.tex: -------------------------------------------------------------------------------- 1 | El álgebra tensorial es una rama del álgebra que extiende los conceptos del álgebra lineal. Además, el concepto de tensor se traslada a la implementación de técnicas de aprendizaje automático, puesto que la aplicación que se realiza de ellos permite hacer más eficientes los cómputos de operaciones respecto al uso exclusivo de matrices. 2 | La fuente principal de este capítulo es \textcite[capítulo 8]{treil2013}. 3 | 4 | \section{Espacios duales}\label{espacios-duales} 5 | 6 | En esta sección introducimos los conceptos esenciales sobre duales de espacios vectoriales, necesarios para llegar a la definición de tensor. 7 | 8 | \subsection{Funcionales lineales y el espacio 9 | dual}\label{funcionales-lineales-y-el-espacio-dual} 10 | 11 | \defineb 12 | Un \emph{funcional lineal} en un espacio vectorial finito dimensional 13 | \(V\) sobre un cuerpo \(\KK\) es una aplicación lineal 14 | \(L:V\rightarrow \KK\). \definee 15 | \defineb 16 | El \emph{espacio dual} de un espacio vectorial finito dimensional 17 | \(V\) es \(V^*=\{L:V\rightarrow \KK\text{ lineal}\}=\mathcal{L}(V, \KK)\). 18 | \definee 19 | 20 | \exampleb 21 | Sea \(V=\mathbb R^n\) y consideramos 22 | \((\mathbb R^n)^*=\left\{L:\mathbb R^n\rightarrow\mathbb R\text{ lineal}\right\}\). 23 | Sabemos que toda aplicación lineal de \(\mathbb{R}^{n}\) en 24 | \(\mathbb{R}^{m}\) se expresa, fijada una base, como una matriz 25 | \(m\times n\), luego identificamos \((\mathbb{R}^{n})^{*}\) con matrices 26 | \(1\times n\) (en la base usual). Evidentemente hay un isomorfismo entre 27 | este conjunto y \(\mathbb{R}^{n}\): 28 | 29 | \begin{align*} 30 | (\mathbb{R}^{n})^{*} \cong \mathcal{M}_{1\times n}(\mathbb{R})&\cong \mathbb{R}^{n} \\ 31 | (m_{1} \dots m_{n}) &\mapsto (m_{1}, \dots m_{n}) 32 | \end{align*} 33 | 34 | Este hecho se generaliza para cualquier cuerpo \(\KK\): 35 | \((\KK^{n})^{*}\cong \KK^{n}\). \examplee 36 | 37 | \subsubsection{Cambio de coordenadas}\label{cambio-de-coordenadas} 38 | 39 | Sea \(V\) \(\KK\)-espacio vectorial, sean 40 | \(A=\left\{a_{1}, \dots a_{n}\right\}, B=\left\{b_{1}, \dots b_{n}\right\}\) 41 | bases de \(V\) donde \(n = \dim_{\KK}V\). 42 | 43 | Introducimos la siguiente notación: dada una base \(B\) de \(V\), \(B'\) 44 | de \(W\), \(L\in\mathcal L(V, W)\), notaremos \([L]_{B', B}\) a la 45 | expresión matricial de \(L\) en las bases \(B, B'\). Si \(L\in V^{*}\) 46 | notamos \([L]_{B}\). 47 | 48 | Sabemos que la expresión de \(L\in V^{*}\) en la base \(B\) viene dada 49 | por su imagen por los vectores de la base, y el cambio de coordenadas es 50 | \([L]_B=[L]_A[I]_{A,B}\). 51 | 52 | Recordamos también que el cambio de base de \(v\in V\) se realiza 53 | mediante \([B]_B=[I]_{B,A}[V]_A\) y que \([I]_{B,A}=[I]_{A,B}^{-1}\). 54 | Así, llamando \(S=[I]_{B,A}\) observamos que el cambio de base de los 55 | vectores asociados a las filas \([L]_B, [L]_A\) es: 56 | 57 | \[ 58 | [L]_{B}^t=(S^{-1})^t[L]_{A}^t 59 | \] 60 | 61 | \begin{prop} 62 | Dado $V$ espacio vectorial, si $S$ es la matriz de cambio de base de $A$ a $B$ entonces la matriz de cambio de base de $V^{*}$ es $(S^{-1})^t$. 63 | \end{prop} 64 | 65 | \begin{lemma} 66 | \label{lemma:vectorcero} 67 | Sea $v\in V$. Si $L(v)=0\forall L\in V^{*}$ entonces $v=0$. Como consecuencia, si $L(v_1)=L(v_2)\forall L\in V^{*}$ entonces $v_1=v_2$. 68 | 69 | \begin{proof} 70 | Sea $B$ base de $V$. Entonces $L(v)=[L]_B[v]_B$. Basta tomar $L_k=[0, \dots 0, \overset{(k)}{1}, 0, \dots 0]$ y comprobar que en ese caso $L_k[v]_B=0$ implica que la $k$-ésima coordenada de $[v]_B$ es 0. Repitiendo el mismo paso para cada $k$ tenemos que $v=0$. 71 | \end{proof} 72 | \end{lemma} 73 | 74 | \subsection{El segundo dual}\label{el-segundo-dual} 75 | 76 | Puesto que \(V^{*}\) es un espacio vectorial, podemos considerar también 77 | su dual, que notaremos \(V^{**}\). Comprobaremos que, de hecho, 78 | \(V^{**}\) es isomorfo a \(V\) de una forma natural. Dado \(v\in V\) 79 | podemos tomar \(L_{v}\in V^{**}\) dado por 80 | \(L_{v}(f) = f(v)\forall f\in V^{*}\). Así, podemos construir una 81 | aplicación del espacio \(V\) en su segundo dual, 82 | \(T:V\rightarrow V^{**}\), dada de forma natural por 83 | \(Tv=L_v\forall v\in V\). 84 | 85 | Para ver que \(T\) es un isomorfismo, observamos que las dimensiones de 86 | los espacios coinciden: \(\dim V^{**}=\dim V^{*}=\dim V\). Por tanto, 87 | bastará con ver que \(T\) es inyectivo: veamos para ello que 88 | \(\Ker T=\{0\}\). Dado \(v\in \Ker T\), tenemos que 89 | \(\forall f\in V^{*} f(v)=L_v(f)=T(v)(f)=0\). Por el 90 | \autoref{lemma:vectorcero}, se tiene que \(v=0\). 91 | 92 | Nótese que el isomorfismo \(T\) no depende de la elección de una base en 93 | \(V\). 94 | 95 | \section{Funciones multilineales. 96 | Tensores}\label{funciones-multilineales.-tensores} 97 | 98 | \defineb 99 | 100 | Sean \(V_1,\dots,V_p,V\) espacios vectoriales sobre un cuerpo \(\KK\). 101 | Una \emph{aplicación multilineal} (\(p\)-lineal) con valores en V es una 102 | función \(F:V_1\times \dots\times V_p\rightarrow V\), lineal en cada 103 | variable. Es decir, para cada \(k\in \{1,\dots, p\}\) y fijado 104 | \((v_1,\dots,v_{k-1},0,v_{k+1},\dots,v_p)\in V_1\times \dots\times V_p\), 105 | se tiene que la aplicación que lleva 106 | \(v_k\mapsto F(v_1,\dots,v_{k-1},v_k,v_{k+1},\dots,v_p)\) es lineal. 107 | 108 | Notamos por \(\LL(V_1,\dots,V_p;V)\) a la familia de todas las 109 | aplicaciones \(p\)-lineales de \(V_1\times \dots\times V_p\) en \(V\). 110 | 111 | \definee 112 | 113 | \defineb 114 | 115 | Un \emph{tensor} o \emph{funcional multilineal} es una aplicación 116 | multilineal con codominio \(\KK\), 117 | \(F:V_1\times \dots\times V_p\rightarrow \KK\). La cantidad \(p\) se 118 | denomina el \emph{rango} o \emph{valencia} del tensor. 119 | 120 | \definee 121 | 122 | En particular, un tensor de rango 1 es un funcional lineal, y un 123 | tensor de rango 2 es una forma bilineal. 124 | 125 | \exampleb 126 | 127 | Sean \(V_1,\dots,V_p\) \(\KK\)-espacios vectoriales y sean 128 | \(f_1\in V_1^{*},\dots f_p\in V_p^{*}\) funcionales lineales. Definimos 129 | el funcional multilineal \(F:V_1\times\dots\times V_p\rightarrow\KK\) 130 | dado por 131 | \[F(v_1,\dots,v_p)=f_1(v_1)f_2(v_2)\dots f_p(v_p),\ v_i\in V_i,\ k=1,2,\dots,p.\] 132 | 133 | El funcional \(F\) se denomina \emph{producto tensorial} de los 134 | funcionales \(f_i\) y lo notamos 135 | \(F=f_1\otimes f_2\otimes\dots\otimes f_p\). 136 | 137 | \examplee 138 | 139 | \remb 140 | 141 | El conjunto de las aplicaciones multilineales es un \(\KK\)-espacio 142 | vectorial, mediante las siguientes operaciones de suma y producto por 143 | escalar: sean \(F_1, F_2\in \LL(V_1,\dots,V_p;V),\alpha\in\KK\) 144 | 145 | \begin{align*} 146 | (F_1+F_2)(v_1,\dots,v_p)&=F_1(v_1,\dots,v_p)+F_2(v_1,\dots,v_p),\\ 147 | (\alpha F_1)(v_1,\dots,v_p)&=\alpha F_1(v_1,\dots,v_p). 148 | \end{align*} 149 | 150 | \reme 151 | 152 | \propb 153 | \label{prop:base-funcionales} Sean \(V_1,\dots,V_p\) \(\KK\)-espacios 154 | vectoriales con bases \(B^{(1)},\dots,B^{(p)}\) respectivamente. Notamos 155 | \(b_i^{(k)}\) al \(i\)-ésimo elemento de la base \(B^{(k)}\). 156 | 157 | Para cada \(k\in\{1,\dots,p\}\) y para cada \(i\in\{1,\dots,\dim V_k\}\) 158 | sea \(f_{i}^{(k)}\) el funcional lineal de \(V_k^{*}\) definido por 159 | 160 | \begin{align*} 161 | f_{i}^{(k)}(b_i^{(k)})&=1\\ 162 | f_{i}^{(k)}(b_j^{(k)})&=0,\ j\neq i. 163 | \end{align*} 164 | 165 | La familia 166 | \[B=\left\{f_{i_1}^{(1)}\otimes\dots\otimes f_{i_p}^{(p)},\ 1\leq i_k\leq\dim{V_k},\ k\in\{1,\dots,p\}\right\}\] 167 | es una base del espacio \(\LL(V_1,\dots, V_p;\KK)\). 168 | 169 | En particular, 170 | \[\dim\LL(V_1,\dots, V_p;\KK)=(\dim V_1)\dots (\dim V_p).\] 171 | 172 | \proofb 173 | 174 | Dada \(F\in \LL(V_1,\dots, V_p;\KK)\) queremos expresarla de forma única 175 | en función de los elementos de la familia \(B\), es decir, buscamos 176 | coeficientes \(\alpha_{i_1,i_2,\dots,i_p}\in\KK\) tales que 177 | 178 | \begin{equation} 179 | \label{eq:basetensor} 180 | F=\sum\limits_{i_k\in\{1,\dots,\dim V_k\}} \alpha_{i_1,i_2,\dots,i_p}f_{i_1}^{(1)}\otimes\dots\otimes f_{i_p}^{(p)}\ . 181 | \end{equation} 182 | 183 | Por la definición de los funcionales, se tiene que 184 | \begin{equation} 185 | \label{eq:evalbasetensor} 186 | f_{i_1}^{(1)}\otimes\dots\otimes f_{i_p}^{(p)}\left(b_{j_1}^{(1)},\dots,b_{j_p}^{(p)}\right)=1\Leftrightarrow i_1=j_1,\dots,i_p=j_p 187 | \end{equation} 188 | y, en otro caso, 189 | \[f_{i_1}^{(1)}\otimes\dots\otimes f_{i_p}^{(p)}\left(b_{j_1}^{(1)},\dots,b_{j_p}^{(p)}\right)=0\ .\] 190 | 191 | Evaluando ahora \(F\) \eqref{eq:basetensor} en 192 | \(b_{i_1}^{(1)},\dots,b_{i_p}^{(p)}\): 193 | 194 | \begin{equation*} 195 | F\left(b_{i_1}^{(1)},\dots,b_{i_p}^{(p)}\right)=\alpha_{i_1,\dots,i_p} 196 | \end{equation*} 197 | lo cual nos da la unicidad de los coeficientes, en caso de que existan. 198 | La existencia se deduce definiendo 199 | 200 | \begin{equation*} 201 | \alpha_{i_1,\dots,i_p}:=F\left(b_{i_1}^{(1)},\dots,b_{i_p}^{(p)}\right), 202 | \end{equation*} 203 | de forma que la condición \eqref{eq:evalbasetensor} se mantiene para 204 | todas las tuplas del tipo \(b_{j_1}^{(1)},\dots,b_{j_p}^{(p)}\). Así, se 205 | tiene la descomposición que buscamos y \(B\) es una base. 206 | 207 | \proofe 208 | 209 | \prope 210 | 211 | \section{Productos tensoriales}\label{productos-tensoriales} 212 | 213 | \defineb 214 | Sean \(V_1,V_2,\dots,V_p\) espacios vectoriales. El producto tensorial 215 | de los espacios es el conjunto de funcionales multilineales 216 | \(\LL(V_1^*,V_2^*,\dots,V_p^*;\KK)\), y lo notamos 217 | \(V_1\otimes V_2\otimes\dots\otimes V_p\). \definee 218 | 219 | \corb\label{cor:base-tensor} 220 | Sean \(V_1,\dots,V_p\) \(\KK\)-espacios vectoriales con bases 221 | \(B^{(1)},\dots,B^{(p)}\) respectivamente. Llamamos \(b_i^{(k)}\) al 222 | \(i\)-ésimo elemento de la base \(B^{(k)}\) y observamos que podemos 223 | definir el producto tensorial de elementos de \(V_1,\dots,V_p\) 224 | viéndolos como funcionales de \(V_1^*,\dots,V_p^*\). Entonces, la 225 | familia 226 | \[B=\left\{b_{i_1}^{(1)}\otimes\dots\otimes b_{i_p}^{(p)},\ 1\leq i_k\leq\dim{V_k},\ k\in\{1,\dots,p\}\right\},\] 227 | es una base del espacio \(V_1\otimes V_2\otimes\dots\otimes V_p\). 228 | \proofb 229 | Consecuencia de la \autoref{prop:base-funcionales} y el 230 | isomorfismo \(V_k^{**}\cong V_k\). \proofe 231 | \core 232 | 233 | \remb 234 | Dados \(v_1\in V_1,\dots v_p\in V_p\), para 235 | \(v'_k\in V_k,\ k\in\{1,\dots,p\},\lambda,\mu\in\KK\) y cualesquiera 236 | \(f_1\in V_1^*,\dots f_p\in V_p^*\) se tiene: 237 | 238 | \begin{align*} 239 | (v_1\otimes v_2\otimes\dots\otimes(\lambda v_k &+ \mu v'_k)\otimes\dots\otimes v_p)(f_1,\dots,f_p)=\\ 240 | f_1(v_1)\dots f_k(\lambda v_k &+ \mu v'_k) \dots f_p(v_p) =\\ 241 | f_1(v_1)\dots (\lambda f_k(v_k) &+ \mu f_k(v'_k)) \dots f_p(v_p) = \\ 242 | \lambda f_1(v_1)\dots f_k(v_k) \dots f_p(v_p) &+ \mu \lambda f_1(v_1)\dots f_k(v'_k) \dots f_p(v_p) =\\ 243 | (\lambda v_1\otimes v_2\otimes\dots\otimes v_k\otimes\dots\otimes v_p &+\mu v_1\otimes v_2\otimes\dots\otimes v'_k\otimes\dots\otimes)(f_1,\dots,f_p) 244 | \end{align*} 245 | 246 | Hemos comprobado que la aplicación 247 | \((v_1,v_2,\dots,v_p)\mapsto v_1\otimes v_2\otimes\dots\otimes v_p\) es 248 | lineal en cada variable. \reme 249 | 250 | \section{Tensores covariantes y 251 | contravariantes}\label{tensores-covariantes-y-contravariantes} 252 | 253 | Sean \(X_1,X_2,\dots X_p,V\) espacios vectoriales y sea \(V_k\) bien 254 | \(X_k\) o bien \(X_k^*\), para cada \(k=1,2,\dots,p\). 255 | 256 | \defineb 257 | Decimos que \(F\in \LL(V_1,V_2,\dots,V_p;V)\) 258 | es una aplicación multilineal \emph{covariante} en la \(k\)-ésima variable si \(V_k=X_k\) y 259 | \emph{contravariante} en dicha variable si \(V_k=X_k^*\). 260 | 261 | Si \(F\) es covariante (resp. contravariante) en todas las variables 262 | decimos simplemente que es covariante (resp. contravariante). Si \(F\) 263 | es covariante en \(r\) variables y contravariante en \(s\) variables, 264 | decimos que es \(r\)-covariante \(s\)-contravariante, o de \emph{tipo} 265 | \((r, s)\).\definee 266 | 267 | \exampleb Algunos casos particulares de tensores, para observar que generalizan los objetos del álgebra lineal: 268 | \begin{itemize} 269 | \item Dado un espacio vectorial \(V\), un funcional \(f\in V^*\) es un 270 | tensor 1-covariante. 271 | \item Un vector \(v\in V\), visto en el doble dual 272 | \(V^{**}\), es un tensor 1-contravariante. 273 | \item Por convención, se dice que una constante $\lambda\in\KK$ es un tensor de tipo \((0,0)\). 274 | \end{itemize} 275 | \examplee 276 | 277 | \section{Los tensores en aprendizaje 278 | automático}\label{los-tensores-en-aprendizaje-automuxe1tico} 279 | 280 | Se ha visto que los tensores generalizan estructuras como los vectores y las aplicaciones lineales. Es importante notar que dichos objetos se pueden representar mediante secuencias finitas de escalares, las componentes, que dependen de la base escogida para los espacios vectoriales donde se esté trabajando. De igual forma, un tensor se puede expresar en componentes del cuerpo $\KK$ respecto de una base. 281 | 282 | La expresión de un tensor en componentes necesitará una representación en tantas dimensiones como su rango. Intuitivamente, podemos decir que el rango de un tensor es el número de índices necesarios para recorrer sus componentes. 283 | 284 | Esta idea se lleva al aprendizaje automático como una generalización de las matrices. Esencialmente, se le llama \emph{tensor} de rango $p$ a un objeto $T\in \KK^{d_1d_2 \dots d_p}$. Aunque este es un caso particular de los tensores estudiados en este capítulo, no se suele hacer uso de sus propiedades algebraicas. Sin embargo, algunas de las operaciones y descomposiciones de cálculo con tensores permiten realizar un uso eficiente de la memoria disponible en la máquina a la hora de entrenar una red neuronal \autocite{kolda2009}. 285 | -------------------------------------------------------------------------------- /memoria/chapters/teoria-informacion.tex: -------------------------------------------------------------------------------- 1 | La teoría de la información estudia y cuantifica la información presente 2 | en una señal. El origen de la misma es la búsqueda de códigos para 3 | compresión de datos y la maximización de la tasa de transmisión en 4 | comunicación. A causa de sus fundamentos y aplicaciones, es un campo de 5 | estudio que se relaciona con muchos otros ámbitos, como la ingeniería 6 | eléctrica, la estadística, la probabilidad, la física, la economía y la 7 | informática. 8 | 9 | A partir de lo estudiado en el capítulo anterior, si queremos añadir una 10 | intuición acerca de la información que aporta un suceso, será razonable 11 | que la cantidad de información sea menor cuanto más probable sea el 12 | suceso dado. En el caso extremo, el suceso seguro no aporta información 13 | alguna. 14 | 15 | Realizaremos dos aplicaciones de esta teoría al problema que ocupa este trabajo. Por un lado, el concepto de entropía cruzada nos permitirá definir en la \autoref{sec:funciones-de-coste} las funciones de coste o funciones objetivo que se tratarán de optimizar mediante las técnicas de Deep Learning. Por otro, la desigualdad de la información nos aportará la intuición de que un modelo muy cercano a la distribución de los datos nos permitirá reducir mejor la dimensionalidad. 16 | 17 | Para formalizar estas intuiciones, definiremos y haremos uso de 18 | conceptos como la entropía. La fuente principal de este capítulo es 19 | \textcite{coverit}. 20 | 21 | \section{Entropía. Propiedades y 22 | magnitudes}\label{entropuxeda.-propiedades-y-magnitudes} 23 | 24 | \subsection{Concepto}\label{concepto} 25 | 26 | \defineb 27 | La \emph{entropía} \(H\) de una variable aleatoria discreta \(X\) con 28 | distribución \(p(x)=\Pr{X=x}\) viene dada por la siguiente expresión: 29 | \[H(X)=-\sum_{x\in X(\Omega)}p(x)\log p(x)~.\] $\log$ denota el logaritmo neperiano. Si se usa otra base 30 | \(b\) para el logaritmo de la definición notaremos \(H_{b}\). \definee 31 | 32 | Observamos que se puede expresar como la esperanza de una función de la 33 | variable \(X\): \[H(X)=\E\left[\frac 1 {\log p(X)}\right]~.\] 34 | 35 | Además, es interesante notar que \(H\) es un funcional de \(p\) en el 36 | sentido de que no depende de los valores que tome la variable aleatoria, 37 | sino únicamente de la probabilidad de los mismos. El significado que 38 | aporta la entropía de una variable es la cantidad de información 39 | esperada en un suceso. Por esto, las distribuciones cercanas a la 40 | uniforme tienen mayor entropía que las que son casi determinísticas. 41 | 42 | \subsection{Propiedades}\label{propiedades} 43 | 44 | \lemmab 45 | La entropía de una variable es siempre positiva o nula. \proofb 46 | Efectivamente, puesto que \(0\leq p(x)\leq 1\) para todo \(x\), se tiene 47 | que \(log(1/p(x))\geq 0\), y como consecuencia la esperanza de dicha 48 | función de \(X\) es no negativa. \proofe 49 | \lemmae 50 | 51 | \lemmab 52 | \(H_b(X)=\left(\log_b a\right)H_a(X)\) \label{lm:entropy-base-change} 53 | \proofb 54 | Es consecuencia del cambio de base de los logaritmos. \proofe 55 | \lemmae 56 | 57 | \subsection{Magnitudes}\label{magnitudes} 58 | 59 | Según la base que se tome para los logaritmos, la escala de la entropía 60 | varía, por lo que se está midiendo en una magnitud distinta. 61 | 62 | \begin{itemize} 63 | \tightlist 64 | \item 65 | Si se toman logaritmos en base 2, entonces se habla de la entropía en 66 | \emph{bits}. 67 | \item 68 | Si se toman en base \(e\), se está midiendo la entropía en 69 | \emph{nats}\footnote{Denominación de la unidad de medida de información análoga al \emph{bit} para base $e$.}. 70 | \end{itemize} 71 | 72 | Además, el cambio de base del 73 | \autoref{lm:entropy-base-change} 74 | nos permite convertir de una magnitud a otra: \[H=(\log 2) H_2~.\] 75 | 76 | \section{Entropía conjunta y entropía 77 | condicional}\label{entropuxeda-conjunta-y-entropuxeda-condicional} 78 | 79 | \defineb 80 | La \emph{entropía conjunta} \(H(X,Y)\) de dos variables aleatorias 81 | discretas con distribución conjunta \(p(x,y)\) se define como 82 | 83 | \begin{equation}H(X,Y)=-\sum_{x}\sum_{y}p(x,y)\log p(x,y)~,\end{equation} 84 | que también se puede expresar como 85 | \begin{equation}H(X,Y)=-\E\left[\log p(x,y)\right]~.\end{equation} 86 | 87 | \definee 88 | 89 | \defineb 90 | Si \((X,Y)\sim p(x,y)\), entonces se define la entropía condicional 91 | \(H(Y\mid X)\) como 92 | 93 | \begin{align} 94 | H(Y\mid X) &= \sum_{x}p(x)H(Y\mid X=x)\\ 95 | &= -\sum_{x}p(x)\sum_{y}p(y\mid x) \log p(y \mid x)\\ 96 | &= -\sum_{x}\sum_{y}p(x,y) \log p(y \mid x)\\ 97 | &= -\E_{p(x,y)} \log p(Y \mid X)~. 98 | \end{align} 99 | 100 | \definee 101 | 102 | Estas dos definiciones están relacionadas por el siguiente teorema. 103 | 104 | \theob[Regla de la cadena de la entropía] 105 | \[H(X,Y)=H(X)+H(Y\mid X)\] 106 | 107 | \proofb 108 | 109 | \begin{align*} 110 | H(X,Y)&=-\sum_{x}\sum_{y}p(x,y)\log p(x,y)\\ 111 | &=-\sum_{x}\sum_{y}p(x,y)\log\left(p(x)p(y\mid x)\right)\\ 112 | &=-\sum_{x}\sum_{y}p(x,y)\log p(x) - \sum_{x}\sum_{y}p(x,y)\log p(y\mid x)\\ 113 | &=-\sum_{x}p(x)\log p(x) - \sum_{x}\sum_{y}p(x,y)\log p(y\mid x)\\ 114 | &=H(X)+H(Y\mid X)~. 115 | \end{align*} 116 | 117 | \proofe 118 | \theoe 119 | 120 | \corb 121 | \[H(X,Y\mid Z)=H(X\mid Z)+H(Y\mid X,Z)\] \proofb 122 | La prueba sigue pasos análogos al teorema anterior. \proofe 123 | \core 124 | 125 | \section{Entropía relativa, información mutua y entropía 126 | cruzada}\label{entropuxeda-relativa-informaciuxf3n-mutua-y-entropuxeda-cruzada} 127 | 128 | Si la entropía de una variable es una medida de la cantidad de 129 | información requerida para explicarla, la entropía relativa de una 130 | función de distribución a otra \(D(p\Vert q)\) mide la ineficiencia de 131 | asumir que la distribución de una variable es \(q\) cuando la 132 | distribución verdadera es \(p\), es decir, la longitud adicional de 133 | código basado en \(q\) necesaria para describir la variable respecto de 134 | un código basado en \(p\). 135 | 136 | \defineb 137 | La \emph{entropía relativa} o \emph{divergencia de Kullback-Leibler} 138 | entre dos funciones de probabilidad \(p\) y \(q\) se define como 139 | \[D(p\Mid q)=\sum_{x}p(x)\log\frac{p(x)}{q(x)}=\E_{p}\left[\log\frac{p(X)}{q(X)}\right]~.\] 140 | \definee 141 | 142 | En la definición anterior usamos la convención de que 143 | \(0\log\frac 0 q=0\) y \(p\log\frac p 0=\infty\), basada en argumentos 144 | de continuidad. 145 | 146 | La entropía relativa adolece de algunas propiedades para ser considerada 147 | una distancia entre distribuciones de probabilidad. En concreto, no es 148 | simétrica y no satisface la desigualdad triangular. 149 | 150 | \defineb 151 | Sean \(X, Y\) dos variables aleatorias con función de probabilidad 152 | conjunta \(p(x,y)\) y funciones de probabilidad marginal \(p(x)\) y 153 | \(p(y)\) respectivamente. La \emph{información mutua} \(I(X;Y)\) es la 154 | entropía relativa entre la distribución conjunta y el producto de las 155 | distribuciones: 156 | 157 | \begin{align*} 158 | I(X;Y)&=\sum_{x}\sum_{y}p(x,y)\log\frac{p(x,y)}{p(x)p(y)}\\ 159 | &=D(p(x,y)\Mid p(x)p(y))\\ 160 | &=\E_{p(x,y)}\left[\log\frac{p(X,Y)}{p(X)p(Y)}\right]~. 161 | \end{align*} 162 | 163 | \definee 164 | 165 | \theob 166 | La información mutua es la reducción en la incertidumbre de \(X\) dado 167 | el conocimiento de \(Y\). Por simetría además \(X\) da tanta información 168 | sobre \(Y\) como \(Y\) sobre \(X\): 169 | \[I(X;Y)=H(X)-H(X\mid Y)=H(Y)-H(Y\mid X)~.\] Además, como consecuencia: 170 | \[I(X;Y)=H(X)+H(Y)-H(X,Y)~,\] en particular, \[I(X;X)=H(X)~.\] \proofb 171 | 172 | \begin{align*} 173 | I(X;Y)&=\sum_{x}\sum_{y}p(x,y)\log\frac{p(x,y)}{p(x)p(y)}\\ 174 | &=\sum_{x}\sum_{y}p(x,y)\log\frac{p(x\mid y)}{p(x)}\\ 175 | &=-\sum_{x}\sum_{y}p(x,y)\log p(x) + \sum_{x}\sum_{y}p(x,y)\log p(x\mid y)\\ 176 | &=-\sum_{x}p(x)\log p(x) -\left(- \sum_{x}\sum_{y}p(x,y)\log p(x\mid y)\right)\\ 177 | &=H(X)-H(X\mid Y)~. 178 | \end{align*} 179 | 180 | La consecuencia se deduce de la igualdad \(H(X,Y)=H(X)+H(Y\mid X)\). 181 | \proofe 182 | 183 | \theoe 184 | 185 | Definimos una versión condicionada de la entropía relativa. 186 | 187 | \defineb 188 | La \emph{entropía relativa condicional} 189 | \(D\left(p(y\mid x)\Mid q(y\mid x)\right)\) se define como 190 | 191 | \begin{gather*}D\left(p(y\mid x)\Mid q(y\mid x)\right)=\\\sum_{x}p(x)\sum_{y}p(y\mid x)\log\frac{p(y\mid x)}{q(y\mid x)}=\E_{p(x,y)}\left[\log\frac{p(Y\mid X)}{q(Y\mid X)}\right] 192 | \end{gather*} 193 | 194 | \definee 195 | 196 | Un concepto similar al de entropía relativa es la entropía cruzada. 197 | Simplemente, se considera la longitud completa de código necesaria para describir la variable en función de un código basado en la distribución $q$ frente a $p$, en lugar de considerar la longitud de código adicional. 198 | 199 | \defineb 200 | La \emph{entropía cruzada} entre dos funciones de probabilidad \(p\) y 201 | \(q\) se define como 202 | \[C(p, q)=H(X) + D(p\mid q)=\E_p\left[\log q(X)\right]~.\] 203 | \definee 204 | 205 | \note{En ocasiones se utiliza la notación \(H(p,q)\) para 206 | hablar de entropía cruzada, pudiendo confundirse con la entropía 207 | conjunta. En este texto se utilizará en su lugar \(C(p,q)\).} 208 | 209 | \remb 210 | Podemos tomar la entropía cruzada sobre una variable condicionada a otra 211 | de forma natural. Consideremos \(X,Y\) variables aleatorias siguiendo 212 | una distribución \(p\), sobre las que asumimos una distribución \(q\). 213 | La entropía cruzada de \(p\) respecto de \(q\) para \(Y\) condicionada a 214 | \(X\) será: 215 | 216 | \begin{align*} 217 | C(p(y\mid x),q(y \mid x))=&H(Y\mid X) + D\left(p(y\mid x)\Mid q(y\mid x)\right)\\ 218 | =&\sum_{x}p(x)\sum_{y}p(y\mid x)\left(-\log p(y\mid x) 219 | +\log\frac{p(y\mid x)}{q(y\mid x)}\right)\\ 220 | =&-\sum_{x}p(x)\sum_{y}p(y\mid x)\log q(y\mid x)\\ 221 | =&-\E_p[\log q(Y\mid X)]~. 222 | \end{align*} 223 | 224 | \reme 225 | 226 | \section{La desigualdad de la 227 | información}\label{la-desigualdad-de-la-informaciuxf3n} 228 | 229 | Vamos a estudiar una de las desigualdades esenciales en Teoría de la 230 | Información, que nos dirá que la distribución que determina los códigos 231 | más cortos para unos datos es la propia distribución de los datos. Para 232 | ello, nos basaremos en una de las desigualdades más usadas en 233 | matemáticas, la desigualdad de Jensen. 234 | 235 | \theob[Desigualdad de Jensen] 236 | Si \(f\) es una función convexa y \(X\) es una variable aleatoria, 237 | entonces \[\E[f(X)]\geq f(\E[X])~.\] 238 | 239 | \proofb 240 | A continuación se expone una demostración para distribuciones discretas 241 | con un número finito de puntos de masa, es decir, puntos donde la 242 | probabilidad no es nula. Llamamos \(x_1, \dots, x_k\) a dichos puntos y 243 | \(p_1, \dots, p_k\) a las respectivas probabilidades. 244 | 245 | Procedemos por inducción en el número de puntos de masa. Para dos puntos 246 | de masa, la desigualdad se expresa 247 | \[p_1f(x_1)+p_2f(x_2)\geq f(p_1x_1+p_2x_2)~,\] que se deduce de la 248 | definición de función convexa. 249 | 250 | Supuesto el teorema cierto para distribuciones de \(k-1\) puntos de 251 | masa, veámoslo para \(k\) puntos. Escribiendo 252 | \(p'_{i}=\frac{p_{i}}{1-p_k}\) para \(i=1,\dots,k-1\), se tiene 253 | 254 | \begin{align*} 255 | \sum_{i=1}^kp_if(x_i)&=p_kf(x_k)+(1-p_k)\sum_{i=1}^{k-1}p'_if(x_i)\\ 256 | &\geq p_kf(x_k)+(1-p_k)f\left(\sum_{i=1}^{k-1}p'_ix_i\right)\\ 257 | &\geq f\left(p_kx_k+(1-p_k) \sum_{i=1}^{k-1}p'_ix_i\right)\\ 258 | &=f\left(\sum_{i=1}^kP_ix_i\right)~, 259 | \end{align*} 260 | donde la primera desigualdad se deduce de la hipótesis de inducción y la 261 | segunda es consecuencia de la convexidad. 262 | 263 | Por argumentos de continuidad se puede extender esta demostración a 264 | distribuciones continuas. \proofe 265 | \theoe 266 | 267 | \theob[Desigualdad de la información]\label{th:information-ineq} 268 | Sean \(p\), \(q\), funciones de probabilidad de una variable aleatoria 269 | \(X\). Entonces, \[D(p\Mid q)\geq 0\] \proofb 270 | Sea \(A=\{x :p(x)>0\}\) el soporte de \(p\). Entonces, notando 271 | que la función \(-\log\) es convexa por concavidad del logaritmo, 272 | 273 | \begin{align*} 274 | D(p\Mid q)&=\E_p\left[-\log\frac{q(X)}{p(X)}\right]\geq -\log\E_p\left[\frac{q(X)}{p(X)}\right]\\ 275 | &=-\log\left(\sum_{x}p(x)\frac{q(x)}{p(x)}\right)=-\log\left(\sum_{x}q(x)\right)\\ 276 | &=-\log 1= 0 277 | \end{align*} 278 | 279 | \proofe 280 | \theoe 281 | 282 | Las siguientes son algunas consecuencias directas de este resultado. 283 | 284 | \corb[No negatividad de la información mutua] 285 | Para cualesquiera dos variables aleatorias \(X, Y\) se tiene 286 | \(I(X;Y)\geq 0\). \proofb 287 | Por definición de información mutua. \proofe 288 | \core 289 | 290 | \corb 291 | Para cualesquiera dos variables aleatorias \(X, Y\) y funciones de 292 | probabilidad \(p\) y \(q\), \[D(p(y\mid x)\Mid q(y\mid x))\geq 0~.\] 293 | \core 294 | 295 | \corb 296 | Para una variable aleatoria \(X\) y funciones de probabilidad \(p\) 297 | (dada por la distribución de X) y \(q\), \[C(p, q)\geq H(X)~.\] De igual 298 | forma, si \(Y\) es otra variable aleatoria con la misma distribución, se 299 | tiene \[C(p(y\mid x), q(y\mid x))\geq H(Y\mid X)~.\] \core 300 | 301 | Lo que nos dicen el \autoref{th:information-ineq} y sus consecuencias es que cada vez que asumimos un modelo sobre unos datos que no coincide con su verdadera distribución, necesitamos una mayor longitud de código que la óptima para representarlos. En nuestro caso, si vamos a tratar de reducir la dimensionalidad de un conjunto de datos, nos aporta la intuición de que un modelo muy ajustado a la distribución verdadera será más beneficioso a la hora de obtener una representación de menor dimensionalidad. -------------------------------------------------------------------------------- /memoria/classicthesis-config.tex: -------------------------------------------------------------------------------- 1 | % **************************************************************************************************** 2 | % classicthesis-config.tex 3 | % formerly known as loadpackages.sty, classicthesis-ldpkg.sty, and classicthesis-preamble.sty 4 | % Use it at the beginning of your ClassicThesis.tex, or as a LaTeX Preamble 5 | % in your ClassicThesis.{tex,lyx} with \input{classicthesis-config} 6 | % **************************************************************************************************** 7 | % If you like the classicthesis, then I would appreciate a postcard. 8 | % My address can be found in the file ClassicThesis.pdf. A collection 9 | % of the postcards I received so far is available online at 10 | % http://postcards.miede.de 11 | % **************************************************************************************************** 12 | 13 | 14 | % **************************************************************************************************** 15 | % 0. Set the encoding of your files. UTF-8 is the only sensible encoding nowadays. If you can't read 16 | % äöüßáéçèê∂åëæƒÏ€ then change the encoding setting in your editor, not the line below. If your editor 17 | % does not support utf8 use another editor! 18 | % **************************************************************************************************** 19 | \PassOptionsToPackage{utf8}{inputenc} 20 | \usepackage{inputenc} 21 | 22 | % **************************************************************************************************** 23 | % 1. Configure classicthesis for your needs here, e.g., remove "drafting" below 24 | % in order to deactivate the time-stamp on the pages 25 | % **************************************************************************************************** 26 | \PassOptionsToPackage{listings,eulerchapternumbers,%eulermath,%drafting,% 27 | pdfspacing,floatperchapter,%linedheaders,% 28 | beramono, 29 | subfig,parts,dottedtoc}{classicthesis} 30 | % ******************************************************************** 31 | % Available options for classicthesis.sty 32 | % (see ClassicThesis.pdf for more information): 33 | % drafting 34 | % parts nochapters linedheaders 35 | % eulerchapternumbers beramono eulermath pdfspacing minionprospacing 36 | % tocaligned dottedtoc manychapters 37 | % listings floatperchapter subfig 38 | % ******************************************************************** 39 | 40 | 41 | % **************************************************************************************************** 42 | % 2. Personal data and user ad-hoc commands 43 | % **************************************************************************************************** 44 | \newcommand{\myTitle}{Reducción de la dimensionalidad en problemas de clasificación con Deep Learning\xspace} 45 | \newcommand{\mySubtitle}{Análisis y propuesta de herramienta en R\xspace} 46 | \newcommand{\myWork}{Trabajo Fin de Grado} 47 | \newcommand{\myDegree}{Doble Grado en Ingeniería Informática y Matemáticas\xspace} 48 | \newcommand{\myName}{Francisco David Charte Luque\xspace} 49 | \newcommand{\myProf}{Francisco Herrera Triguero\xspace} 50 | %\newcommand{\myOtherProf}{Put name here\xspace} 51 | %\newcommand{\mySupervisor}{Put name here\xspace} 52 | \newcommand{\myFaculty}{Facultad de Ciencias\xspace} 53 | \newcommand{\myOtherFaculty}{Escuela Técnica Superior de Ingenierías Informática y de Telecomunicación\xspace} 54 | \newcommand{\myOtherFacultyA}{Escuela Técnica Superior de Ingenierías\xspace} 55 | \newcommand{\myOtherFacultyB}{Informática y de Telecomunicación\xspace} 56 | %\newcommand{\myDepartment}{Put data here\xspace} 57 | \newcommand{\myUni}{Universidad de Granada\xspace} 58 | \newcommand{\myLocation}{Granada\xspace} 59 | \newcommand{\myTime}{Junio de 2017\xspace} 60 | %\newcommand{\myVersion}{version 4.2\xspace} 61 | 62 | % ******************************************************************** 63 | % Setup, finetuning, and useful commands 64 | % ******************************************************************** 65 | \newcounter{dummy} % necessary for correct hyperlinks (to index, bib, etc.) 66 | \newlength{\abcd} % for ab..z string length calculation 67 | \providecommand{\mLyX}{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@} 68 | \newcommand{\ie}{i.\,e.} 69 | \newcommand{\Ie}{I.\,e.} 70 | \newcommand{\eg}{e.\,g.} 71 | \newcommand{\Eg}{E.\,g.} 72 | % **************************************************************************************************** 73 | 74 | 75 | % **************************************************************************************************** 76 | % 3. Loading some handy packages 77 | % **************************************************************************************************** 78 | % ******************************************************************** 79 | % Packages with options that might require adjustments 80 | % ******************************************************************** 81 | %\PassOptionsToPackage{ngerman,american}{babel} % change this to your language(s) 82 | % Spanish languages need extra options in order to work with this template 83 | \PassOptionsToPackage{spanish,es-lcroman}{babel} 84 | \usepackage{babel} 85 | 86 | \usepackage{csquotes} 87 | \PassOptionsToPackage{% 88 | %backend=biber, %instead of bibtex 89 | backend=bibtex8,bibencoding=ascii,% 90 | language=auto,% 91 | style=numeric-comp,% 92 | %style=authoryear, % Author 1999, 2010 93 | %bibstyle=authoryear,dashed=false, % dashed: substitute rep. author with --- 94 | sorting=nyt, % name, year, title 95 | maxbibnames=3, % default: 3, et al. 96 | %backref=true,% 97 | natbib=true % natbib compatibility mode (\citep and \citet still work) 98 | }{biblatex} 99 | \usepackage{biblatex} 100 | 101 | %\PassOptionsToPackage{fleqn}{amsmath} % math environments and more by the AMS 102 | \usepackage{amsmath} 103 | 104 | % ******************************************************************** 105 | % General useful packages 106 | % ******************************************************************** 107 | \PassOptionsToPackage{T1}{fontenc} % T2A for cyrillics 108 | \usepackage{fontenc} 109 | \usepackage{textcomp} % fix warning with missing font shapes 110 | \usepackage{scrhack} % fix warnings when using KOMA with listings package 111 | \usepackage{xspace} % to get the spacing after macros right 112 | \usepackage{mparhack} % get marginpar right 113 | \usepackage{fixltx2e} % fixes some LaTeX stuff --> since 2015 in the LaTeX kernel (see below) 114 | %\usepackage[latest]{latexrelease} % will be used once available in more distributions (ISSUE #107) 115 | \PassOptionsToPackage{printonlyused,smaller}{acronym} 116 | \usepackage{acronym} % nice macros for handling all acronyms in the thesis 117 | %\renewcommand{\bflabel}[1]{{#1}\hfill} % fix the list of acronyms --> no longer working 118 | %\renewcommand*{\acsfont}[1]{\textsc{#1}} 119 | \renewcommand*{\aclabelfont}[1]{\acsfont{#1}} 120 | % **************************************************************************************************** 121 | 122 | 123 | % **************************************************************************************************** 124 | % 4. Setup floats: tables, (sub)figures, and captions 125 | % **************************************************************************************************** 126 | \usepackage{tabularx} % better tables 127 | \setlength{\extrarowheight}{3pt} % increase table row height 128 | \newcommand{\tableheadline}[1]{\multicolumn{1}{c}{\spacedlowsmallcaps{#1}}} 129 | \newcommand{\myfloatalign}{\centering} % to be used with each float for alignment 130 | \usepackage{caption} 131 | % Thanks to cgnieder and Claus Lahiri 132 | % http://tex.stackexchange.com/questions/69349/spacedlowsmallcaps-in-caption-label 133 | % [REMOVED DUE TO OTHER PROBLEMS, SEE ISSUE #82] 134 | %\DeclareCaptionLabelFormat{smallcaps}{\bothIfFirst{#1}{~}\MakeTextLowercase{\textsc{#2}}} 135 | %\captionsetup{font=small,labelformat=smallcaps} % format=hang, 136 | \captionsetup{font=small} % format=hang, 137 | \usepackage{subfig} 138 | % **************************************************************************************************** 139 | 140 | %\PassOptionsToPackage{usenames,dvipsnames}{xcolor} 141 | 142 | % **************************************************************************************************** 143 | % 5. Setup code listings 144 | % **************************************************************************************************** 145 | \usepackage{listings} 146 | %\lstset{emph={trueIndex,root},emphstyle=\color{BlueViolet}}%\underbar} % for special keywords 147 | \lstset{language=R,% 148 | morekeywords={PassOptionsToPackage,selectlanguage}, 149 | keywordstyle=\color{black},%\bfseries, 150 | basicstyle=\small\color{Periwinkle}\ttfamily, 151 | identifierstyle=\color{black}, 152 | commentstyle=\itshape\color{OliveGreen}, 153 | stringstyle=\color{Thistle}, 154 | numbers=left,%none,%left,% 155 | numberstyle=\color{Gray}\scriptsize,%\tiny 156 | stepnumber=1, 157 | numbersep=8pt, 158 | showstringspaces=false, 159 | breaklines=true, 160 | %frameround=ftff, 161 | %frame=single, 162 | belowcaptionskip=.75\baselineskip 163 | %frame=L 164 | } 165 | % **************************************************************************************************** 166 | 167 | 168 | % **************************************************************************************************** 169 | % 6. PDFLaTeX, hyperreferences and citation backreferences 170 | % **************************************************************************************************** 171 | % ******************************************************************** 172 | % Using PDFLaTeX 173 | % ******************************************************************** 174 | \PassOptionsToPackage{pdftex,hyperfootnotes=false,pdfpagelabels}{hyperref} 175 | \usepackage{hyperref} % backref linktocpage pagebackref 176 | \pdfcompresslevel=9 177 | \pdfadjustspacing=1 178 | \PassOptionsToPackage{pdftex}{graphicx} 179 | \usepackage{graphicx} 180 | 181 | 182 | % ******************************************************************** 183 | % Hyperreferences 184 | % ******************************************************************** 185 | \hypersetup{% 186 | %draft, % = no hyperlinking at all (useful in b/w printouts) 187 | colorlinks=true, linktocpage=true, pdfstartpage=3, pdfstartview=FitV,% 188 | % uncomment the following line if you want to have black links (e.g., for printing) 189 | %colorlinks=false, linktocpage=false, pdfstartpage=3, pdfstartview=FitV, pdfborder={0 0 0},% 190 | breaklinks=true, pdfpagemode=UseNone, pageanchor=true, pdfpagemode=UseOutlines,% 191 | plainpages=false, bookmarksnumbered, bookmarksopen=true, bookmarksopenlevel=1,% 192 | hypertexnames=true, pdfhighlight=/O,%nesting=true,%frenchlinks,% 193 | urlcolor=RoyalBlue, linkcolor=TealBlue, citecolor=Plum, %pagecolor=RoyalBlue,% 194 | %urlcolor=Black, linkcolor=Black, citecolor=Black, %pagecolor=Black,% 195 | pdftitle={\myTitle},% 196 | pdfauthor={\textcopyright\ \myName, \myUni, \myFaculty},% 197 | pdfsubject={},% 198 | pdfkeywords={},% 199 | pdfcreator={pdfLaTeX},% 200 | pdfproducer={LaTeX with hyperref and classicthesis}% 201 | } 202 | 203 | % ******************************************************************** 204 | % Setup autoreferences 205 | % ******************************************************************** 206 | % There are some issues regarding autorefnames 207 | % http://www.ureader.de/msg/136221647.aspx 208 | % http://www.tex.ac.uk/cgi-bin/texfaq2html?label=latexwords 209 | % you have to redefine the makros for the 210 | % language you use, e.g., american, ngerman 211 | % (as chosen when loading babel/AtBeginDocument) 212 | % ******************************************************************** 213 | \makeatletter 214 | \@ifpackageloaded{babel}% 215 | {% 216 | \addto\extrasspanish{% 217 | \renewcommand*{\figureautorefname}{Figura}% 218 | \renewcommand*{\tableautorefname}{Tabla}% 219 | \renewcommand*{\partautorefname}{Parte}% 220 | \renewcommand*{\chapterautorefname}{Capítulo}% 221 | \renewcommand*{\sectionautorefname}{Sección}% 222 | \renewcommand*{\subsectionautorefname}{Sección}% 223 | \renewcommand*{\subsubsectionautorefname}{Sección}% 224 | }% 225 | \addto\extrasamerican{% 226 | \renewcommand*{\figureautorefname}{Figure}% 227 | \renewcommand*{\tableautorefname}{Table}% 228 | \renewcommand*{\partautorefname}{Part}% 229 | \renewcommand*{\chapterautorefname}{Chapter}% 230 | \renewcommand*{\sectionautorefname}{Section}% 231 | \renewcommand*{\subsectionautorefname}{Section}% 232 | \renewcommand*{\subsubsectionautorefname}{Section}% 233 | }% 234 | \addto\extrasngerman{% 235 | \renewcommand*{\paragraphautorefname}{Absatz}% 236 | \renewcommand*{\subparagraphautorefname}{Unterabsatz}% 237 | \renewcommand*{\footnoteautorefname}{Fu\"snote}% 238 | \renewcommand*{\FancyVerbLineautorefname}{Zeile}% 239 | \renewcommand*{\theoremautorefname}{Theorem}% 240 | \renewcommand*{\appendixautorefname}{Anhang}% 241 | \renewcommand*{\equationautorefname}{Gleichung}% 242 | \renewcommand*{\itemautorefname}{Punkt}% 243 | }% 244 | % Fix to getting autorefs for subfigures right (thanks to Belinda Vogt for changing the definition) 245 | \providecommand{\subfigureautorefname}{\figureautorefname}% 246 | }{\relax} 247 | \makeatother 248 | 249 | 250 | % **************************************************************************************************** 251 | % 7. Last calls before the bar closes 252 | % **************************************************************************************************** 253 | % ******************************************************************** 254 | % Development Stuff 255 | % ******************************************************************** 256 | \listfiles 257 | %\PassOptionsToPackage{l2tabu,orthodox,abort}{nag} 258 | % \usepackage{nag} 259 | %\PassOptionsToPackage{warning, all}{onlyamsmath} 260 | % \usepackage{onlyamsmath} 261 | 262 | % ******************************************************************** 263 | % Last, but not least... 264 | % ******************************************************************** 265 | \usepackage{classicthesis} 266 | % **************************************************************************************************** 267 | 268 | 269 | % **************************************************************************************************** 270 | % 8. Further adjustments (experimental) 271 | % **************************************************************************************************** 272 | % ******************************************************************** 273 | % Changing the text area 274 | % ******************************************************************** 275 | %\linespread{1.05} % a bit more for Palatino 276 | %\areaset[current]{312pt}{761pt} % 686 (factor 2.2) + 33 head + 42 head \the\footskip 277 | %\setlength{\marginparwidth}{7em}% 278 | %\setlength{\marginparsep}{2em}% 279 | 280 | % ******************************************************************** 281 | % Using different fonts 282 | % ******************************************************************** 283 | %\usepackage[oldstylenums]{kpfonts} % oldstyle notextcomp 284 | %\usepackage[osf]{libertine} 285 | %\usepackage[light,condensed,math]{iwona} 286 | %\renewcommand{\sfdefault}{iwona} 287 | %\usepackage{lmodern} % <-- no osf support :-( 288 | %\usepackage{cfr-lm} % 289 | %\usepackage[urw-garamond]{mathdesign} <-- no osf support :-( 290 | %\usepackage[default,osfigures]{opensans} % scale=0.95 291 | %\usepackage[sfdefault]{FiraSans} 292 | % **************************************************************************************************** 293 | -------------------------------------------------------------------------------- /memoria/code/mxnet_example.R: -------------------------------------------------------------------------------- 1 | library(mxnet) 2 | red <- mx.symbol.Variable("data") 3 | red <- mx.symbol.FullyConnected(data = red, num_hidden = 2) 4 | red <- mx.symbol.Activation(data = red, act_type = "relu") 5 | red <- mx.symbol.FullyConnected(data = red, num_hidden = 10) 6 | red <- mx.symbol.Activation(data = red, act_type = "relu") 7 | red <- mx.symbol.FullyConnected(data = red, num_hidden = 1) 8 | red <- mx.symbol.LinearRegressionOutput(data = red) 9 | 10 | # Establece la semilla aleatoria para asegurar reproducibilidad 11 | set.seed(42) 12 | mx.set.seed(42) 13 | 14 | input <- data.frame( 15 | Cat1 = round(runif(100, min = 1, max = 10)), 16 | Cat2 = round(runif(100, min = 1, max = 10))) 17 | x = t(data.matrix(input)) 18 | label <- sqrt(input$Cat1*input$Cat1 + input$Cat2*input$Cat2) 19 | train_x <- x[,1:74] 20 | train_y <- label[1:74] 21 | test_x <- x[,75:100] 22 | test_y <- label[75:100] 23 | 24 | model <- mx.model.FeedForward.create( 25 | symbol = red, 26 | X = train_x, 27 | y = train_y, 28 | num.round = 240, 29 | array.layout = "colmajor", 30 | optimizer = "sgd", 31 | learning.rate = 0.015, 32 | momentum = 0.2, 33 | eval.metric = mx.metric.rmse 34 | ) 35 | predict(model, test_x) 36 | 37 | -------------------------------------------------------------------------------- /memoria/code/ruta_example.R: -------------------------------------------------------------------------------- 1 | # devtools::install_github("fdavidcl/ruta") 2 | library(ruta) 3 | library(rutavis) 4 | data(iris) 5 | task <- ruta.makeUnsupervisedTask("iris", data = iris, cl = 5) 6 | print(task) 7 | 8 | set.seed(42) 9 | mxnet::mx.set.seed(42) 10 | 11 | ae <- ruta.makeLearner("autoencoder", 12 | hidden = c(4, 2, 4), 13 | activation = "leaky") 14 | # args <- ruta.pretrain(ae, task) 15 | rmodel1 <- train( 16 | ae, 17 | task, 18 | epochs = 80, 19 | optimizer = "adagrad", 20 | learning.rate = 0.02, 21 | initializer.scale = 2 22 | ) 23 | plot(rmodel1, task) 24 | -------------------------------------------------------------------------------- /memoria/config.tex: -------------------------------------------------------------------------------- 1 | %% Stuff from Pandoc 2 | \providecommand{\tightlist}{% 3 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 4 | 5 | \setlength{\parskip}{1mm} 6 | %\setlength{\mathindent}{0mm} 7 | 8 | %% Algorithms 9 | \usepackage{algorithm} 10 | \usepackage{algorithmic} 11 | \renewcommand{\algorithmicrequire}{\textbf{Entrada:}} 12 | \renewcommand{\algorithmicensure}{\textbf{Salida:}} 13 | \makeatletter 14 | \renewcommand{\ALG@name}{Algoritmo} 15 | \renewcommand{\listalgorithmname}{Lista de \ALG@name s} 16 | \makeatother 17 | 18 | %% Tikz for neural network diagrams 19 | \usepackage{tikz} 20 | 21 | %% Theorem environments 22 | \usepackage{aliascnt} 23 | \def\NewTheorem#1#2{% 24 | \newaliascnt{#1}{theorem} 25 | \newtheorem{#1}[#1]{#2} 26 | \aliascntresetthe{#1} 27 | \expandafter\def\csname #1autorefname\endcsname{#2} 28 | } 29 | \usepackage{amsthm} 30 | % \newtheorem{satz}{Satz}[chapter] 31 | % \newtheorem*{satz*}{Satz} 32 | % \newtheorem{lemma}[satz]{Lemma} 33 | % \newtheorem{corollar}[satz]{Korollar} 34 | % \newcommand{\satzautorefname}{Satz} 35 | \newtheorem{theorem}{Teorema}[chapter] 36 | \NewTheorem{lemma}{Lema} 37 | \NewTheorem{prop}{Proposición} 38 | \NewTheorem{cor}{Corolario} 39 | %\newtheorem{lemma}[theorem]{Lema} 40 | %\newtheorem{prop}[theorem]{Proposición} 41 | %\newtheorem{cor}[theorem]{Corolario} 42 | 43 | \theoremstyle{definition} 44 | \newtheorem{definition}{Definición}[chapter] 45 | \newtheorem{example}{Ejemplo}[chapter] 46 | \newtheorem{exca}{Ejercicio}[chapter] 47 | 48 | \theoremstyle{remark} 49 | \newtheorem{remark}{Observación}[chapter] 50 | 51 | % Autoref commands 52 | %\newcommand{\corollaryautorefname}{corolario} 53 | %\newcommand{\corautorefname}{corolario} 54 | %\newcommand{\propautorefname}{proposición} 55 | %\newcommand{\propositionautorefname}{proposición} 56 | %\newcommand{\lemmaautorefname}{lema} 57 | \newcommand*{\definitionautorefname}{definición} 58 | \newcommand*{\exampleautorefname}{ejemplo} 59 | \newcommand*{\remarkautorefname}{observación} 60 | \newcommand*{\algorithmautorefname}{algoritmo} 61 | \def\theoremautorefname{teorema} 62 | \def\sectionautorefname{sección} 63 | 64 | %\numberwithin{equation}{section} 65 | 66 | % Replacing environments by pairs of commands for use in Markdown 67 | \newcommand{\defineb}{\begin{definition}} 68 | \newcommand{\definee}{\end{definition}} 69 | \newcommand{\theob}{\begin{theorem}} 70 | \newcommand{\theoe}{\end{theorem}} 71 | \newcommand{\lemmab}{\begin{lemma}} 72 | \newcommand{\lemmae}{\end{lemma}} 73 | \newcommand{\propb}{\begin{prop}} 74 | \newcommand{\prope}{\end{prop}} 75 | \newcommand{\remb}{\begin{remark}} 76 | \newcommand{\reme}{\end{remark}} 77 | \newcommand{\proofb}{\begin{proof}} 78 | \newcommand{\proofe}{\end{proof}} 79 | \newcommand{\exampleb}{\begin{example}} 80 | \newcommand{\examplee}{\end{example}} 81 | \newcommand{\corb}{\begin{cor}} 82 | \newcommand{\core}{\end{cor}} 83 | 84 | % hyperref 85 | %\PassOptionsToPackage{xetex,hyperfootnotes=false,pdfpagelabels}{hyperref} 86 | % \usepackage{hyperref} 87 | 88 | %% ATAJOS 89 | \newcommand{\RR}{\mathbb{R}} 90 | \newcommand{\NN}{\mathbb{N}} 91 | \newcommand{\ZZ}{\mathbb{Z}} 92 | \newcommand{\KK}{\mathbb{K}} 93 | \newcommand{\LL}{\mathcal{L}} 94 | 95 | % Distribuciones de probabilidad 96 | \newcommand{\PN}{\mathcal{N}} 97 | 98 | % Traspuesta 99 | \newcommand{\Tr}[1]{#1^{\mathrm{T}}} 100 | % Norma 101 | \newcommand{\norm}[1]{\left\lVert#1\right\rVert} 102 | 103 | %\newcommand{\dim}{\mathrm{dim}} 104 | \newcommand{\E}{\mathrm{E}} 105 | \let\Pr\relax 106 | \newcommand{\Pr}[1]{\mathrm{P}\left[#1\right]} 107 | \newcommand{\Var}{\mathrm{Var}} 108 | \newcommand{\Ker}{\mathrm{Ker}} 109 | \newcommand{\Mid}{\mid\mid} 110 | 111 | \newcommand{\asconv}{\overset{cs}{\rightarrow}} 112 | \newcommand{\pconv}{\overset{P}{\rightarrow}} 113 | \newcommand{\softmax}[1]{\mathrm{softmax}(#1)} 114 | 115 | \newcommand{\note}[1]{\paragraph{Nota}#1} -------------------------------------------------------------------------------- /memoria/images/Rplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/Rplot.png -------------------------------------------------------------------------------- /memoria/images/ccbysa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/ccbysa.png -------------------------------------------------------------------------------- /memoria/images/gradient_ascent_contour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/gradient_ascent_contour.png -------------------------------------------------------------------------------- /memoria/images/gradient_ascent_surface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/gradient_ascent_surface.png -------------------------------------------------------------------------------- /memoria/images/leaky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/leaky.png -------------------------------------------------------------------------------- /memoria/images/neurona_biologica.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/neurona_biologica.png -------------------------------------------------------------------------------- /memoria/images/plot_iris_ae1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/plot_iris_ae1.png -------------------------------------------------------------------------------- /memoria/images/plot_iris_ae2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/plot_iris_ae2.png -------------------------------------------------------------------------------- /memoria/images/relu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/relu.png -------------------------------------------------------------------------------- /memoria/images/responsive_web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/responsive_web.png -------------------------------------------------------------------------------- /memoria/images/rutavis_compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/rutavis_compare.png -------------------------------------------------------------------------------- /memoria/images/rutavis_iris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/rutavis_iris.png -------------------------------------------------------------------------------- /memoria/images/rutavis_params.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/rutavis_params.png -------------------------------------------------------------------------------- /memoria/images/rutavis_plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/rutavis_plot.png -------------------------------------------------------------------------------- /memoria/images/rutavis_plot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/rutavis_plot2.png -------------------------------------------------------------------------------- /memoria/images/rutavis_welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/rutavis_welcome.png -------------------------------------------------------------------------------- /memoria/images/sigmoid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/sigmoid.png -------------------------------------------------------------------------------- /memoria/images/softplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/softplus.png -------------------------------------------------------------------------------- /memoria/images/tanh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/tanh.png -------------------------------------------------------------------------------- /memoria/images/ugrmarca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdavidcl/tfg/38b2ee8885747491a8ac20f60cf24ac30fb62759/memoria/images/ugrmarca.png -------------------------------------------------------------------------------- /memoria/memoria-blx.bib: -------------------------------------------------------------------------------- 1 | @Comment{$ biblatex control file $} 2 | @Comment{$ biblatex version 2.8 $} 3 | Do not modify this file! 4 | 5 | This is an auxiliary file used by the 'biblatex' package. 6 | This file may safely be deleted. It will be recreated as 7 | required. 8 | 9 | @Control{biblatex-control, 10 | options = {2.8:0:1:1:0:1:1:0:0:0:0:2:3:1:79:+:nyt}, 11 | } 12 | -------------------------------------------------------------------------------- /memoria/memoria.tex: -------------------------------------------------------------------------------- 1 | % ************************************************************************************************************** 2 | % A Classic Thesis Style 3 | % An Homage to The Elements of Typographic Style 4 | % 5 | % Copyright (C) 2015 André Miede http://www.miede.de 6 | % 7 | % If you like the style then I would appreciate a postcard. My address 8 | % can be found in the file ClassicThesis.pdf. A collection of the 9 | % postcards I received so far is available online at 10 | % http://postcards.miede.de 11 | % 12 | % License: 13 | % This program is free software; you can redistribute it and/or modify 14 | % it under the terms of the GNU General Public License as published by 15 | % the Free Software Foundation; either version 2 of the License, or 16 | % (at your option) any later version. 17 | % 18 | % This program is distributed in the hope that it will be useful, 19 | % but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | % GNU General Public License for more details. 22 | % 23 | % You should have received a copy of the GNU General Public License 24 | % along with this program; see the file COPYING. If not, write to 25 | % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 26 | % Boston, MA 02111-1307, USA. 27 | % 28 | % ************************************************************************************************************** 29 | \RequirePackage{fix-cm} % fix some latex issues see: http://texdoc.net/texmf-dist/doc/latex/base/fixltx2e.pdf 30 | \documentclass[ oneside,openany,titlepage,numbers=noenddot,headinclude,%1headlines,% letterpaper a4paper 31 | footinclude=true,cleardoublepage=empty,abstractoff, % <--- obsolete, remove (todo) 32 | BCOR=5mm,paper=a4,fontsize=11pt,%11pt,a4paper,% 33 | spanish,american% 34 | ]{scrreprt} 35 | 36 | %******************************************************************** 37 | % Note: Make all your adjustments in here 38 | %******************************************************* 39 | \input{classicthesis-config} 40 | \input{config} 41 | 42 | %******************************************************************** 43 | % Bibliographies 44 | %******************************************************* 45 | \addbibresource{bibliography.bib} 46 | 47 | %******************************************************************** 48 | % Hyphenation 49 | %******************************************************* 50 | %\hyphenation{put special hyphenation here} 51 | 52 | % ******************************************************************** 53 | % GO!GO!GO! MOVE IT! 54 | %******************************************************* 55 | \begin{document} 56 | \frenchspacing 57 | \raggedbottom 58 | \selectlanguage{spanish} % american ngerman 59 | %\renewcommand*{\bibname}{new name} 60 | %\setbibpreamble{} 61 | \pagenumbering{roman} 62 | \pagestyle{plain} 63 | %******************************************************************** 64 | % Frontmatter 65 | %******************************************************* 66 | %\include{FrontBackmatter/DirtyTitlepage} 67 | \include{meta/Titlepage} 68 | \include{meta/Titleback} 69 | \cleardoublepage\include{meta/Abstract} 70 | \cleardoublepage\include{meta/AutorizacionBiblioteca} 71 | \cleardoublepage\include{meta/AutorizacionTutor} 72 | %\cleardoublepage\include{FrontBackmatter/Foreword} 73 | %\cleardoublepage\include{FrontBackmatter/Publications} 74 | \cleardoublepage\include{meta/Acknowledgments} 75 | \pagestyle{scrheadings} 76 | \cleardoublepage\include{meta/Contents} 77 | %******************************************************************** 78 | % Mainmatter 79 | %******************************************************* 80 | \cleardoublepage\pagenumbering{arabic} 81 | %\setcounter{page}{90} 82 | % use \cleardoublepage here to avoid problems with pdfbookmark 83 | \cleardoublepage 84 | 85 | \part{Introducción} 86 | 87 | \chapter{Descripción} 88 | \input{chapters/intro.tex} 89 | 90 | \chapter{Objetivos} 91 | \input{chapters/objetivos.tex} 92 | 93 | \part{Matemáticas} 94 | \chapter{Probabilidad y dimensionalidad}\label{ch:probability} 95 | \input{chapters/probabilidad.tex} 96 | 97 | \chapter{Teoría de la Información}\label{ch:information} 98 | \input{chapters/teoria-informacion.tex} 99 | 100 | \chapter{Álgebra Tensorial}\label{ch:tensors} 101 | \input{chapters/tensores.tex} 102 | 103 | \part{Informática} 104 | 105 | \chapter{Aprendizaje automático}\label{ch:learning} 106 | \input{chapters/machine-learning.tex} 107 | 108 | \chapter{Deep Learning}\label{ch:deep} 109 | \input{chapters/deep-learning.tex} 110 | 111 | \chapter{La herramienta Ruta}\label{ch:ruta} 112 | \input{chapters/ruta.tex} 113 | 114 | \part{Conclusiones} 115 | 116 | \chapter{Conclusiones y vías futuras}\label{ch:conclusions} 117 | \input{chapters/conclusions.tex} 118 | 119 | % ******************************************************************** 120 | % Backmatter 121 | %******************************************************* 122 | \appendix 123 | %\renewcommand{\thechapter}{\alph{chapter}} 124 | \cleardoublepage 125 | \part{Apéndice} 126 | \chapter{Manual de usuario de Ruta}\label{ch:manual} 127 | \input{chapters/manual.tex} 128 | %\include{Chapters/Chapter0A} 129 | %******************************************************************** 130 | % Other Stuff in the Back 131 | %******************************************************* 132 | \cleardoublepage\include{meta/Bibliography} 133 | %\cleardoublepage\include{FrontBackmatter/Declaration} 134 | %\cleardoublepage\include{FrontBackmatter/Colophon} 135 | % ******************************************************************** 136 | % Game Over: Restore, Restart, or Quit? 137 | %******************************************************* 138 | \end{document} 139 | % ******************************************************************** 140 | -------------------------------------------------------------------------------- /memoria/meta/Abstract.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Abstract 3 | %******************************************************* 4 | %\renewcommand{\abstractname}{Abstract} 5 | \pdfbookmark[1]{Resumen}{Resumen} 6 | 7 | \chapter*{Resumen} 8 | 9 | En este trabajo se analizan desde una perspectiva teórica las técnicas basadas en redes neuronales profundas que permiten abordar el problema de reducción de la dimensionalidad y se explica el software desarrollado, que permite el uso de dichas técnicas y la generación de visualizaciones sobre ellas, bien mediante programación o bien a través de una interfaz gráfica de usuario web. 10 | 11 | Primero se introducen conceptos matemáticos que ayudan a comprender los algoritmos y modelos que fundamentan estas redes profundas, haciendo hincapié en resultados teóricos que dan ideas acerca del problema que se va a abordar. Posteriormente, se describen los algoritmos y que realizan el aprendizaje sobre dichas estructuras, y las arquitecturas relevantes que tratan este problema. Por último, se documenta el software implementado y se muestran ejemplos de su uso. 12 | 13 | \paragraph{Palabras clave} Deep Learning, redes neuronales, reducción de dimensionalidad, clasificación, aprendizaje no supervisado, probabilidad, teoría de la información. 14 | 15 | 16 | \begin{otherlanguage}{american} 17 | \pdfbookmark[1]{Abstract}{Abstract} 18 | \chapter*{Abstract} 19 | 20 | This work studies, from a theoretical perspective, techniques based on deep neural networks that tackle the high dimensionality problem. It also explains the piece of software developed for this project, which allows the use of said techniques and includes resources for visualization, offering both a programming interface and a web-based graphic user interface. 21 | 22 | \section*{Description of the addressed problem} 23 | 24 | The current trend in data collection from diverse sources for its subsequent processing implies the need for powerful learning algorithms as well as high computation abilities. One of the most common tasks is classification, where an algorithm attempts to predict one or several labels tied to data samples, having previously learned from already classified examples. 25 | 26 | Classification algorithms often suffer some performance loss when trained against high dimensional data sets, a phenomenon known as the \emph{curse of dimensionality}. From the very varied approaches to tackle this problem, this work focuses on dimensionality reduction via unsupervised deep neural networks. Neural networks generalize the perceptron, and deep networks are an extension of this concept. It was defined decades ago but has made a comeback thanks to the progress on high performance computing and efficient training algorithms. 27 | 28 | Techniques of this kind can be found in software for languages such as Python or C++, whereas the data-oriented language R lacks a library offering easy access to unsupervised deep neural networks. The software implemented in this project, Ruta, aims to resolve this absence. Furthermore, a companion tool named Rutavis adds visualization mechanisms and a web-based graphic user interface. 29 | 30 | The documentation is divided into two distinct parts. One offers a mathematical framework which serves as a basis for the concepts needed to describe the Deep Learning techniques related to this work. The areas of mathematics used are probability theory, information theory and tensor algebra. The other main part describes the common machine learning notions, problems and algorithms that also apply to Deep Learning and continues with the specification of the techniques used in unsupervised deep neural networks. It finishes by describing the design and implementation of both pieces of software, Ruta and Rutavis. 31 | 32 | The following sections constitute a summary of this documentation. 33 | 34 | \section*{Mathematical foundations of Deep Learning} 35 | 36 | Deep Learning finds its roots in several areas of mathematics. Especially, there are important concepts to be studied in probability theory, information theory and tensor algebra. 37 | 38 | The needed definitions from probability theory are very basic but essential to the rest of the text, so special attention is given to rigurously compile them. The ideas of probability distribution, conditional distribution, independence and the main moments (expectation and variance) are explained. As a preliminary result, the theorem of the continuous mapping is formulated. It is then used to prove one of the main theoretical results of this work, a theorem describing the \emph{curse of dimensionality} that motivates the task known as dimensionality reduction. As a consequence it is deduced that, as the dimensionality of a data set increases, the difference between the nearest neighbor and the farthest one becomes insignificant. 39 | 40 | The next chapter introduces the convenient notions around entropy. The entropy of a random variable is defined and several properties are deduced. Then, measures of the information involved among two variables are presented as the joint entropy and conditional entropy. These are used to infer the chain rule of entropy. Later, two important concepts are defined: the Kullback-Leibler divergence and cross entropy, which will be applied later to the construction of objective functions in deep neural networks. Some properties and alternative expressions of these concepts are verified. Lastly, Jensen's inequality, which is a well-known result among the mathematical field, is used to prove the information inequality and its consequences. Intuitively, it is deduced that probabilistic models assumed around sampled data need to be as close as the true probability distribution as possible in order to be able to optimize the compression of data. 41 | 42 | After that, a chapter is dedicated to concepts around the notion of tensor. The mathematical foundations of tensors rely on multilinear algebra, which is explained starting from linear functionals and dual spaces, then introducing the mechanics of the change of coordinates within these spaces. The second dual is shown to be trivially isomorphic to the origin vector space. These results allow the definition of multilinear mappings and, in particular, multilinear functionals or tensors. The tensor product of functionals is introduced and later used to define a base for the tensor product of vector spaces. The distinction between covariant and contravariant tensors is explained. Finally, the use of tensors in machine learning is shown to be a distant application of the previous definitions. 43 | 44 | \section*{Algorithms and structures in Deep Learning} 45 | 46 | Deep Learning is considered a branch of machine learning. Thus, a notable amount of theoretical content and algorithms can be applied to the problem studied. However, many of the latest developments on Deep Learning are novel and deserve a thorough study. 47 | 48 | The essential notions of learning and learners are introduced and several common learning tasks are enumerated. The two main types of learning, supervised and unsupervised, are distinguished. Some examples are also provided. Later, the classification problem is presented, and a theoretical formulation with a simple notation is introduced, which relates to the field of PAC learning. Different types of classification problems are enumerated as well. The structure of the space where the data belongs is lightly discussed afterwards. 49 | 50 | The main problem addressed in this work, the dimensionality reduction task, is described and connected to the theoretical results proved before. Several means of action that tackle this problem are explained, and the approach studied in the work is highlighted. There is also a breakdown of the process referred to as feature extraction, and some mechanisms to build new features are mentioned. Lastly, one of the most common optimization algorithms in machine learning, gradient descent, is thoroughly described. It will serve as a basis for the optimization methods in Deep Learning. 51 | 52 | Afterwards, the chapter dedicated to Deep Learning begins by outlining the common structure used in many of its applications, the deep feedforward neural network. A mathematical notation is introduced and the biological inspiration behind the artificial neuron is discussed. Later, an introduction to the way cost functions are derived from the selected probabilistic model is made. Different types of output units or neurons are explained, as well as the cost function they determine. Especially, the most commonly found ones are described: linear, sigmoid and softmax units. This explanation is extended to all hidden units in a feedforward network by adding rectified linear units and their variants, as well as the hyperbolic tangent and other activation functions. 53 | 54 | The training process of a deep neural network requires some special techniques, known as forward propagation and backward propagation. These algorithms are motivated and thoroughly depicted, and a small example on the computation of gradients is made. The algorithms derived from gradient descent, specific for training deep networks, analyzed in this work are stochastic gradient descent and its variants AdaGrad, RMSProp and Adam. These allow to optimize the cost functions via several iterations where a minibatch of data is propagated through the network and gradients are computed. 55 | 56 | Deep neural networks can be designed in a specific means to be trained in an unsupervised fashion. The main architectures that allow this kind of training are restricted Boltzmann machines and autoencoders. These are characterized and illustrated in the present work, paying special attention to some variants of the autoencoder and their properties: undercomplete, sparse, denoising and contractive autoencoders are all specified in quite detail. Finally, a special training procedure for autoencoders involving a stack of restricted Boltzmann machines is explained. 57 | 58 | \section*{Software implementation: the Ruta package} 59 | 60 | During the realization of this project, two pieces of software have been designed and implemented. One of them, named Ruta, gives uncomplicated access to unsupervised deep neural networks, from building their architecture to their training and evaluation. The second one is a complementary project called Rutavis, which allows to generate graphical representations of the models trained with Ruta. 61 | 62 | First, an introduction to the R language is offered, and simple instructions for its installation are provided. There is also a general description of the language and the object orientations it admits. Afterwards, a neural network library called MXNet is introduced. It implements the necessary operations and algorithms needed to build and train deep architectures. Instructions for its installation are provided as well as a specification of the programming mechanic it offers, including a complete example of the training and prediction of a simple neural network oriented to regression. 63 | 64 | The Ruta software is presented and motivated. It is mentioned that an early prototype was previously introduced at a national conference. Later, there is an exhaustive description of its structure and functionality. The main objects used to work with this package abstract the notions of learning tasks, learners and trained models. These objects are defined and exemplified making use of the Iris data set and a simple deep autoencoder. 65 | 66 | The Rutavis package is also outlined via the same main points, its structure and functionality. Some example plots are shown and screenshots of an use case with the web-based graphic user interface are offered as well. 67 | 68 | The document ends with some conclusions and sketches some future work. 69 | 70 | \paragraph{Keywords} Deep Learning, neural networks, dimensionality reduction, classification, unsupervised learning, probability, information theory. 71 | 72 | \end{otherlanguage} 73 | -------------------------------------------------------------------------------- /memoria/meta/Acknowledgments.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Acknowledgments 3 | %******************************************************* 4 | \pdfbookmark[1]{Agradecimientos}{agradecimientos} 5 | 6 | % \begin{flushright}{\slshape 7 | % We have seen that computer programming is an art, \\ 8 | % because it applies accumulated knowledge to the world, \\ 9 | % because it requires skill and ingenuity, and especially \\ 10 | % because it produces objects of beauty.} \\ \medskip 11 | % --- \defcitealias{knuth:1974}{Donald E. Knuth}\citetalias{knuth:1974} \citep{knuth:1974} 12 | % \end{flushright} 13 | 14 | 15 | 16 | % \bigskip 17 | 18 | \begingroup 19 | \let\clearpage\relax 20 | \let\cleardoublepage\relax 21 | \let\cleardoublepage\relax 22 | \chapter*{Agradecimientos} 23 | 24 | Me gustaría agradecer a la Universidad de Granada, a la Facultad y la Escuela y en concreto a sus docentes por brindarme la oportunidad de formarme. Especialmente a mi tutor, Francisco Herrera, por su apoyo a lo largo de este proyecto. 25 | 26 | Muchas gracias a mi familia por su constante ayuda a lo largo de estos años, y a mis amistades que de una u otra forma me han animado a seguir adelante y de las cuales he aprendido tanto. 27 | 28 | \endgroup 29 | -------------------------------------------------------------------------------- /memoria/meta/AutorizacionBiblioteca.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Declaration 3 | %******************************************************* 4 | \refstepcounter{dummy} 5 | \pdfbookmark[1]{Declaraciones}{Declaraciones} 6 | 7 | \chapter*{} 8 | \thispagestyle{empty} 9 | 10 | % TODO: > rellenar DNI 11 | Yo, \textbf{\myName}, alumno de la titulación \myDegree de la \textbf{\myFaculty} y de la \textbf{\myOtherFaculty} de la \textbf{\myUni}, con DNI XXXXXXXXX, autorizo la ubicación de la siguiente copia de mi Trabajo Fin de Grado en la biblioteca de ambos centros para que pueda ser consultada. 12 | 13 | \bigskip 14 | 15 | \noindent\textit{\myLocation, \today} 16 | 17 | \vspace{3cm} 18 | 19 | \begin{flushright} 20 | \begin{tabular}{m{5cm}} 21 | % TODO: poner firma real 22 | %\centering\includegraphics[scale=0.35]{Graficos/firma_Adrian.png} \\ 23 | %\\ \hline 24 | \centering\myName \\ 25 | \end{tabular} 26 | \end{flushright} 27 | -------------------------------------------------------------------------------- /memoria/meta/AutorizacionTutor.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Declaration 3 | %******************************************************* 4 | \refstepcounter{dummy} 5 | %\pdfbookmark[0]{Declaration}{declaration} 6 | \chapter*{} 7 | \thispagestyle{empty} 8 | D. \textbf{\myProf}, Profesor del Departamento de Ciencias de la Computación e Inteligencia Artificial de la Universidad de Granada. 9 | 10 | \vspace{0.5cm} 11 | 12 | \textbf{Informa:} 13 | 14 | \vspace{0.5cm} 15 | 16 | Que el presente trabajo, titulado \textit{\textbf{\myTitle}}, ha sido realizado bajo su supervisión por \textbf{\myName}, y autorizo la defensa de dicho trabajo ante el tribunal que corresponda. 17 | 18 | \vspace{0.5cm} 19 | 20 | Y para que conste, expido y firmo el presente informe en Granada a 26 de junio de 2016. 21 | 22 | \vspace{3cm} 23 | 24 | \begin{flushright} 25 | \begin{tabular}{m{5cm}} 26 | % TODO: poner firma real 27 | %\centering\includegraphics[scale=1]{Graficos/firma_Pascual.png} \\ 28 | % \\ \hline 29 | \centering\myProf \\ 30 | \end{tabular} 31 | \end{flushright} 32 | -------------------------------------------------------------------------------- /memoria/meta/Bibliography.tex: -------------------------------------------------------------------------------- 1 | %******************************************************************** 2 | % Bibliography 3 | %******************************************************* 4 | % work-around to have small caps also here in the headline 5 | \manualmark 6 | \markboth{\spacedlowsmallcaps{\bibname}}{\spacedlowsmallcaps{\bibname}} % work-around to have small caps also 7 | %\phantomsection 8 | \refstepcounter{dummy} 9 | \addtocontents{toc}{\protect\vspace{\beforebibskip}} % to have the bib a bit from the rest in the toc 10 | \addcontentsline{toc}{chapter}{\tocEntry{\bibname}} 11 | \label{app:bibliography} 12 | \printbibliography 13 | -------------------------------------------------------------------------------- /memoria/meta/Colophon.tex: -------------------------------------------------------------------------------- 1 | \pagestyle{empty} 2 | 3 | \hfill 4 | 5 | \vfill 6 | 7 | 8 | \pdfbookmark[0]{Colophon}{colophon} 9 | \section*{Colophon} 10 | This document was typeset using the typographical look-and-feel \texttt{classicthesis} developed by Andr\'e Miede. 11 | The style was inspired by Robert Bringhurst's seminal book on typography ``\emph{The Elements of Typographic Style}''. 12 | \texttt{classicthesis} is available for both \LaTeX\ and \mLyX: 13 | \begin{center} 14 | \url{https://bitbucket.org/amiede/classicthesis/} 15 | \end{center} 16 | Happy users of \texttt{classicthesis} usually send a real postcard to the author, a collection of postcards received so far is featured here: 17 | \begin{center} 18 | \url{http://postcards.miede.de/} 19 | \end{center} 20 | 21 | \bigskip 22 | 23 | \noindent\finalVersionString 24 | 25 | %Hermann Zapf's \emph{Palatino} and \emph{Euler} type faces (Type~1 PostScript fonts \emph{URW 26 | %Palladio L} and \emph{FPL}) are used. The ``typewriter'' text is typeset in \emph{Bera Mono}, 27 | %originally developed by Bitstream, Inc. as ``Bitstream Vera''. (Type~1 PostScript fonts were made 28 | %available by Malte Rosenau and 29 | %Ulrich Dirr.) 30 | 31 | %\paragraph{note:} The custom size of the textblock was calculated 32 | %using the directions given by Mr. Bringhurst (pages 26--29 and 33 | %175/176). 10~pt Palatino needs 133.21~pt for the string 34 | %``abcdefghijklmnopqrstuvwxyz''. This yields a good line length between 35 | %24--26~pc (288--312~pt). Using a ``\emph{double square textblock}'' 36 | %with a 1:2 ratio this results in a textblock of 312:624~pt (which 37 | %includes the headline in this design). A good alternative would be the 38 | %``\emph{golden section textblock}'' with a ratio of 1:1.62, here 39 | %312:505.44~pt. For comparison, \texttt{DIV9} of the \texttt{typearea} 40 | %package results in a line length of 389~pt (32.4~pc), which is by far 41 | %too long. However, this information will only be of interest for 42 | %hardcore pseudo-typographers like me.% 43 | % 44 | %To make your own calculations, use the following commands and look up 45 | %the corresponding lengths in the book: 46 | %\begin{verbatim} 47 | % \settowidth{\abcd}{abcdefghijklmnopqrstuvwxyz} 48 | % \the\abcd\ % prints the value of the length 49 | %\end{verbatim} 50 | %Please see the file \texttt{classicthesis.sty} for some precalculated 51 | %values for Palatino and Minion. 52 | % 53 | % \settowidth{\abcd}{abcdefghijklmnopqrstuvwxyz} 54 | % \the\abcd\ % prints the value of the length 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /memoria/meta/Contents.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Table of Contents 3 | %******************************************************* 4 | %\phantomsection 5 | \refstepcounter{dummy} 6 | \pdfbookmark[1]{\contentsname}{tableofcontents} 7 | \setcounter{tocdepth}{1} % <-- 2 includes up to subsections in the ToC 8 | \setcounter{secnumdepth}{3} % <-- 3 numbers up to subsubsections 9 | \manualmark 10 | \markboth{\spacedlowsmallcaps{\contentsname}}{\spacedlowsmallcaps{\contentsname}} 11 | \tableofcontents 12 | \automark[section]{chapter} 13 | \renewcommand{\chaptermark}[1]{\markboth{\spacedlowsmallcaps{#1}}{\spacedlowsmallcaps{#1}}} 14 | \renewcommand{\sectionmark}[1]{\markright{\thesection\enspace\spacedlowsmallcaps{#1}}} 15 | % %******************************************************* 16 | % % List of Figures and of the Tables 17 | % %******************************************************* 18 | % \clearpage 19 | 20 | % \begingroup 21 | % \let\clearpage\relax 22 | % \let\cleardoublepage\relax 23 | % \let\cleardoublepage\relax 24 | % %******************************************************* 25 | % % List of Figures 26 | % %******************************************************* 27 | % %\phantomsection 28 | % \refstepcounter{dummy} 29 | % %\addcontentsline{toc}{chapter}{\listfigurename} 30 | % \pdfbookmark[1]{\listfigurename}{lof} 31 | % \listoffigures 32 | 33 | % \vspace{8ex} 34 | 35 | % %******************************************************* 36 | % % List of Tables 37 | % %******************************************************* 38 | % %\phantomsection 39 | % \refstepcounter{dummy} 40 | % %\addcontentsline{toc}{chapter}{\listtablename} 41 | % \pdfbookmark[1]{\listtablename}{lot} 42 | % \listoftables 43 | 44 | % \vspace{8ex} 45 | % % \newpage 46 | 47 | % %******************************************************* 48 | % % List of Listings 49 | % %******************************************************* 50 | % %\phantomsection 51 | % \refstepcounter{dummy} 52 | % %\addcontentsline{toc}{chapter}{\lstlistlistingname} 53 | % \pdfbookmark[1]{\lstlistlistingname}{lol} 54 | % \lstlistoflistings 55 | 56 | % \vspace{8ex} 57 | 58 | % %******************************************************* 59 | % % Acronyms 60 | % %******************************************************* 61 | % %\phantomsection 62 | % \refstepcounter{dummy} 63 | % \pdfbookmark[1]{Acronyms}{acronyms} 64 | % \markboth{\spacedlowsmallcaps{Acronyms}}{\spacedlowsmallcaps{Acronyms}} 65 | % \chapter*{Acronyms} 66 | % \begin{acronym}[UMLX] 67 | % \acro{DRY}{Don't Repeat Yourself} 68 | % \acro{API}{Application Programming Interface} 69 | % \acro{UML}{Unified Modeling Language} 70 | % \end{acronym} 71 | % \endgroup 72 | -------------------------------------------------------------------------------- /memoria/meta/Declaration.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Declaration 3 | %******************************************************* 4 | \refstepcounter{dummy} 5 | \pdfbookmark[0]{Declaration}{declaration} 6 | \chapter*{Declaration} 7 | \thispagestyle{empty} 8 | Put your declaration here. 9 | \bigskip 10 | 11 | \noindent\textit{\myLocation, \myTime} 12 | 13 | \smallskip 14 | 15 | \begin{flushright} 16 | \begin{tabular}{m{5cm}} 17 | \\ \hline 18 | \centering\myName \\ 19 | \end{tabular} 20 | \end{flushright} 21 | -------------------------------------------------------------------------------- /memoria/meta/Dedication.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Dedication 3 | %******************************************************* 4 | \thispagestyle{empty} 5 | %\phantomsection 6 | \refstepcounter{dummy} 7 | \pdfbookmark[1]{Dedication}{Dedication} 8 | 9 | \vspace*{3cm} 10 | 11 | \begin{center} 12 | \emph{Ohana} means family. \\ 13 | Family means nobody gets left behind, or forgotten. \\ \medskip 14 | --- Lilo \& Stitch 15 | \end{center} 16 | 17 | \medskip 18 | 19 | \begin{center} 20 | Dedicated to the loving memory of Rudolf Miede. \\ \smallskip 21 | 1939\,--\,2005 22 | \end{center} -------------------------------------------------------------------------------- /memoria/meta/DirtyTitlepage.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Little Dirty Titlepage 3 | %******************************************************* 4 | \thispagestyle{empty} 5 | %\pdfbookmark[1]{Titel}{title} 6 | %******************************************************* 7 | \begin{center} 8 | \spacedlowsmallcaps{\myName} \\ \medskip 9 | 10 | \begingroup 11 | \color{Maroon}\spacedallcaps{\myTitle} 12 | \endgroup 13 | \end{center} 14 | -------------------------------------------------------------------------------- /memoria/meta/Publications.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Publications 3 | %******************************************************* 4 | \pdfbookmark[1]{Publications}{publications} 5 | \chapter*{Publications}\graffito{This is just an early --~and currently ugly~-- test!} 6 | This might come in handy for PhD theses: some ideas and figures have appeared previously in the following publications: 7 | 8 | %\noindent Put your publications from the thesis here. The packages \texttt{multibib} or \texttt{bibtopic} etc. can be used to handle multiple different bibliographies in your document. 9 | 10 | \begin{refsection}[ownpubs] 11 | \small 12 | \nocite{*} % is local to to the enclosing refsection 13 | \printbibliography[heading=none] 14 | \end{refsection} 15 | 16 | \emph{Attention}: This requires a separate run of \texttt{bibtex} for your \texttt{refsection}, \eg, \texttt{ClassicThesis1-blx} for this file. You might also use \texttt{biber} as the backend for \texttt{biblatex}. See also \url{http://tex.stackexchange.com/questions/128196/problem-with-refsection}. -------------------------------------------------------------------------------- /memoria/meta/Titleback.tex: -------------------------------------------------------------------------------- 1 | \thispagestyle{empty} 2 | 3 | \hfill 4 | 5 | \vfill 6 | 7 | \textit{\myTitle} \copyright\ \myTime \myName \\ \bigskip 8 | 9 | \pdfbookmark[1]{Licencia}{Licencia} 10 | \spacedallcaps{Licencia} %\ccbysa 11 | \par\vspace*{\dimexpr-\parskip-\baselineskip+6pt} 12 | \noindent\rule{\textwidth}{0.5pt} 13 | 14 | Esta obra está sujeta a la licencia Reconocimiento-CompartirIgual 4.0 Internacional de Creative Commons\footnote{Texto completo de la licencia disponible en \url{https://creativecommons.org/licenses/by-sa/4.0/legalcode}.}. 15 | 16 | La licencia permite: 17 | \begin{itemize} 18 | \item[] \textbf{Compartir} --- copiar y redistribuir el material en cualquier medio o formato. 19 | \item[] \textbf{Adaptar} --- remezclar, transformar y crear a partir del material 20 | para cualquier finalidad, incluso comercial. 21 | \end{itemize} 22 | 23 | Bajo las condiciones siguientes: 24 | \begin{itemize} 25 | \item[] \textbf{Reconocimiento} --- Debe reconocer adecuadamente la autoría, proporcionar un enlace a la licencia e indicar si se han realizado cambios. Puede hacerlo de cualquier manera razonable, pero no de una manera que sugiera que tiene el apoyo del licenciador o lo recibe por el uso que hace. 26 | \item[] \textbf{CompartirIgual} --- Si remezcla, transforma o crea a partir del material, deberá difundir sus contribuciones bajo la misma licencia que el original. 27 | \item[] \textbf{No hay restricciones adicionales} --- No puede aplicar términos legales o medidas tecnológicas que legalmente restrinjan realizar aquello que la licencia permite. 28 | \end{itemize} 29 | \clearpage 30 | -------------------------------------------------------------------------------- /memoria/meta/Titlepage.tex: -------------------------------------------------------------------------------- 1 | %******************************************************* 2 | % Titlepage 3 | %******************************************************* 4 | \begin{titlepage} 5 | % if you want the titlepage to be centered, uncomment and fine-tune the line below (KOMA classes environment) 6 | \begin{addmargin}[-3.45cm]{-3cm} 7 | \begin{center} 8 | \large 9 | 10 | \hfill 11 | 12 | \includegraphics[width=6cm]{images/ugrmarca} \\ \medskip 13 | 14 | \vfill 15 | 16 | \begingroup 17 | \color{TealBlue}\spacedallcaps{\myTitle} \\ \bigskip 18 | \endgroup 19 | 20 | \spacedlowsmallcaps{\mySubtitle} 21 | 22 | \vfill 23 | 24 | \myWork \\ 25 | \myDegree \\ \bigskip 26 | \textbf{Autor} \\ 27 | \myName \\ \medskip 28 | \textbf{Tutor} \\ 29 | \myProf \\ \bigskip 30 | %\myDepartment \\ 31 | \spacedlowsmallcaps{\myFaculty} \\ \medskip 32 | \spacedlowsmallcaps{\myOtherFacultyA} \\ 33 | \spacedlowsmallcaps{\myOtherFacultyB} \\ \bigskip 34 | %\spacedlowsmallcaps{\myUni} \\ 35 | 36 | \myLocation, \myTime %\ -- \myVersion 37 | 38 | \vfill 39 | 40 | \end{center} 41 | \end{addmargin} 42 | \end{titlepage} --------------------------------------------------------------------------------