Granada primera mitad 2022
Alumna: Blanca Cano Camarero
Tutores:
- Juan Julián Merelo Guervós
- Francisco Javier Merí de la Maza
A lo largo de este proyecto se ha revindicado un nuevo modelo de red neuronal, un criterio de selección de funciones de activación y un método de inicialización aprendida de los peso de una red neuronal basado en los datos de entrenamiento.
Se ha implementado además la biblioteca OptimizedNeuralNetwork.jl que implementa el modelo de red neuronal descrito así como el método de inicialización aprendida.
Puede descargar la memoria aquí, así como ver un ejemplo de uso de la biblioteca en el siguiente notebook.
- Generación de la memoria
make
. - Pasar test a la implementación
make test
. - Para ejecutar los experimentos
make experimentos
(los experimentos generan datos cuya localización pude configurar enExperimentos/.config.toml
).
La biblioteca OptimizedNeuralNetwork.jl implementa el modelo de red neuronal descrito en la memoria del proyecto (puede descargar una versión pdf en release) y que pretende ser una optimización de las redes neuronales convencionales, así como otros algoritmo que tengan como objetivo también la mejora en algún aspecto.
Contiene las siguientes funciones que mostramos con algunos ejemplos puede ver un ejemplo completo de uso en el siguiente notebook
include("OptimizedNeuralNetwork.jl/src/OptimizedNeuralNetwork.jl")
using Main.OptimizedNeuronalNetwork
Red neuronal con pesos aleatorios:
entry_dimension = 2
number_of_hidden_units = 3
output_dimension = 2
RandomWeightsNN(
entry_dimension,
number_of_hidden_units,
output_dimension
)
S = [1,2,3] # sesgos entrada
A = [3 4 1; 4 6 3; 1 1 1] # coeficientes entrada
B = [1 2 3; 3 2 3] # coeficientes salida
FromMatrixNN(S, A, B)
Inicialización de la matriz a partir de datos de entrenamiento
nn_from_data(X_train, Y_train, n, M)
Donde
CosineSquasher(10)
RampFunction(1)
ReLU(-1)
Sigmoid(9999999)
HardTanh(9999999)
Existen funciones de activación que depende de parámetros, podemos definirlas eficientemente a partir de macros:
# Concretamos los parámetros de los que dependen
# de macros
umbral = @ThresholdFunction(x->x,0)
indicadora = @IndicatorFunction(0)
lRelu = @LReLU(0.01)
# Evaluamos en puntos concretos
umbral(-2.9)
indicadora(3.9)
lRelu(0.2)
forward_propagation(h,RampFunction,x)
backpropagation!(h, X_train, Y_train, RampFunction, derivativeRampFunction, n)
Partiendo de las premisas de que la ciencia que no es replicable dudosamente es ciencias [1] y cómo los avances tecnológicos se están construyendo actualmente fundamentalmente gracias al aumento de la potencia de cómputo [2][3].
Es necesaria una democratización de la situación, un acercamiento a los nuevos resultados y aplicaciones para organizaciones y usuarios con capacidades de cómputo más modestas. Se pretende por tanto, realizar un estudio de la posible optimización de redes neuronales a raíz de: (1) el análisis detallados de la construcción y resultados matemáticos de éstas (como puede ser el teorema de aproximación universal) (2) Un estudio empírico de la velocidad o precisión de los resultados.
Tanto (1) como (2) se desarrollarán ligados y se retroalimentarán entre ellos.
De esta manera se tratará de buscar algoritmos de redes neuronales que no requieran de una potencia masiva.
Bibliografía: [1] Título: Agile (data) science: a (draft) manifesto. Autores: Juan Julián Merelo Guervós y Mario García Valdez. Última fecha consulta: 13-02-21. URL: https://arxiv.org/abs/2104.12545 . Abstract: Science has a data management as well as a project management problem. While industrial grade data science teams have embraced the agile mindset, and adopted or created all kind of tools to manage reproducible workflows, academia-based science is still (mostly) mired in a mindset that's focused on a single final product (a paper), without focusing on incremental improvement and, over all, reproducibility. In this report we argue towards the adoption of the agile mindset and agile data science tools in academia, to make a more responsible, sustainable, and above all, reproducible science.
[2] Título: The bitter Lesson. Autor: Rich Sutton. URL: http://www.incompleteideas.net/IncIdeas/BitterLesson.html Última fecha consulta: 13-02-21. Abstract: Aporta una visión negativa de la evolución del machine learning basada en enfoques antropocéntricos y alaba el uso de métodos de propósitos generales y cómo ello conlleva que al aumentar la potencia cómputo los resultados mejoren.
[3] Título: A Universal Law of Robustness via Isoperimetry autres: Sebastien Bubeck and Mark Sellke, libro: Advances in Neural Information Processing Systems, editor=A. Beygelzimer and Y. Dauphin and P. Liang and J. Wortman Vaughan, año: 2021, URL: https://openreview.net/forum?id=z71OSKqTFh7 abstract: Classically, data interpolation with a parametrized model class is possible as long as the number of parameters is larger than the number of equations to be satisfied. A puzzling phenomenon in the current practice of deep learning is that models are trained with many more parameters than what this classical theory would suggest. We propose a theoretical explanation for this phenomenon. We prove that for a broad class of data distributions and model classes, overparametrization is {\em necessary} if one wants to interpolate the data {\em smoothly}. Namely we show that {\em smooth} interpolation requires times more parameters than mere interpolation, where is the ambient data dimension. We prove this universal law of robustness for any smoothly parametrized function class with polynomial size weights, and any covariate distribution verifying isoperimetry. In the case of two-layers neural networks and Gaussian covariates, this law was conjectured in prior work by Bubeck, Li and Nagaraj. We also give an interpretation of our result as an improved generalization bound for model classes consisting of smooth functions.