[en] The capacity to discover and learn patterns from different data sets is one of the main objetives of Machine Learning. Within this huge knowledge area, Gaussian Processes (GPs) are a powerful instrument to address two problems: classification and regression. Due to the fact that GPs are a non-parametric model based on kernels, they allow learning every kind of pattern in very different data sets with propieties that are similar to those that has the choosen kernel. In this particular case, we will use the Gaussian Processes to extrapolate images that are incomplete in order to reconstruct them. One of the main characteristics of a GP is the kernel chosen for its implementation because the results that we get will inherit propierties from these kernels that are very relevant. In order to learn correctly the structure of the images, we will need to use kernels that have an enormous capacity of learning a wide variety of patterns, and because of this, we will use for this particular aplication the "Superexpressive Kernels" which originate from combinations of simpler kernel and that allow our model to learn complex patterns. One of the problems of Gaussian Processes is their high computational cost, that makes them impossible to use in those problems where the amount of data that we have to analyse is relatively large, as it happens in the case of images. Nevertheless, in the case of images, as it happens in others similar problems, the data set has some structure (we can see an image as a set of values on a grid), and here we study how can we use this particular structure in the data set to reduce the computational cost of GPs and make it possible to use them in such big data sets. In addition to an exposition of the theoretical model that is used under a GP, we will show some tests that we have done with GPs and some reconstruction of images using the algorithm described, where we will be able to see it results. We will compare the performance that we get using our model in compare with that of general GPs. For the implementation of the models that are presented int this bachelor work, we have used the programming language Julia, which is a new language with an easy syntax, designed to solve problems in the areas of numerical analysis and machine learning.

[es] Resumen La capacidad de descubrir y aprender patrones de diferentes conjuntos de datos es uno de los objetivos fundamentales del Aprendizaje Automático. Dentro de esta inmensa área de conocimiento, los Procesos Gaussianos (GPs) suponen una potente herramienta para tratar tanto para problemas de regresión como de clasificación. Al tratarse de un método no paramétrico basado en kernels, permite el aprendizaje de todo tipo de patrones en diferentes conjuntos de datos siempre y cuando compartan ciertas propiedades con los kernel escogidos. En este caso utilizaremos dichos Procesos Gaussianos para la extrapolación de imágenes incompletas permitiendo así su reconstrucción. Una de las principales características de un GP es el kernel escogido para su implementación, ya que los resultados obtenidos heredarán propiedades muy relevantes de estos kernel. Para poder aprender de forma correcta la estructura de las imágenes necesitaremos utilizar kernels con una capacidad muy grande de aprender patrones muy variados, es por ello que utilizamos para esta aplicación concreta los conocidos como "Kernel Superexpresivos" que nacen como combinaciones de kernels más simples y que permiten al modelo aprender patrones muy dispares y complejos. Uno de los principales problemas de los Procesos Gaussianos son sus grandes exigencias computacionales, lo que los hace inviables en problemas donde los conjuntos de datos son relativamente grandes, como pasa en el caso de las imágenes. Sin embargo en este caso, al igual que ocurre en otros problemas similares, los conjuntos de datos están estructurados (las imágenes pueden verse como valores en una rejilla). Aquí estudiamos cómo podemos aprovechar dicha estructura subyacente en los datos para poder reducir drásticamente sus costes operacionales y hacer viable el uso de procesos Gaussianos en dichos conjuntos de datos. Además de una exposición del modelo teórico utilizado en los GPs, también se muestran varias pruebas realizadas y reconstrucciones de imágenes completas a través del algoritmo, donde podrán verse los resultados del mismo para la tarea llevada a cabo. Del mismo modo mostraremos una comparación realizada con problemas en los que no se explota la estructura de los conjuntos de datos, para poder diferir las mejoras computacionales conseguidas por nuestro modelo. Para la implementación de los modelos estudiados se ha utilizado el lenguaje de programación Julia, un lenguaje de programación relativamente nuevo con una sintaxis sencilla, diseñado para la utilización en programas con aplicaciones de cálculo numérico y aprendizaje automático.