Una red neuronal gráfica ( GNN ) pertenece a una clase de redes neuronales artificiales para procesar datos que pueden representarse como gráficos . [1] [2] [3] [4] [5]
El elemento clave del diseño de las GNN es el uso del paso de mensajes por pares , de modo que los nodos de los gráficos actualicen iterativamente sus representaciones intercambiando información con sus vecinos. Se han propuesto varias arquitecturas de GNN, [2] [3] [7] [8] [9] que implementan diferentes tipos de paso de mensajes, [6] [10] comenzando por enfoques recursivos [2] o constructivos convolucionales [3] . A partir de 2022 [update], es una pregunta abierta si es posible definir arquitecturas de GNN que "vayan más allá" del paso de mensajes, o en cambio cada GNN puede construirse sobre el paso de mensajes sobre gráficos adecuadamente definidos. [11]
Las bibliotecas de código abierto que implementan GNN incluyen PyTorch Geometric [20] ( PyTorch ), TensorFlow GNN [21] ( TensorFlow ), Deep Graph Library [22] (agnóstico del marco), jraph [23] ( Google JAX ) y GraphNeuralNetworks.jl [24] /GeometricFlux.jl [25] ( Julia , Flux ).
Arquitectura
La arquitectura de una GNN genérica implementa las siguientes capas fundamentales : [6]
Equivariante de permutación : una capa de equivariante de permutación asigna una representación de un gráfico a una representación actualizada del mismo gráfico. En la literatura, las capas de equivariante de permutación se implementan mediante el paso de mensajes por pares entre nodos de gráficos. [6] [11] Intuitivamente, en una capa de paso de mensajes, los nodos actualizan sus representaciones agregando los mensajes recibidos de sus vecinos inmediatos. Como tal, cada capa de paso de mensajes aumenta el campo receptivo de la GNN en un salto.
Agrupamiento global : una capa de agrupamiento global, también conocida como capa de lectura , proporciona una representación de tamaño fijo de todo el gráfico. La capa de agrupamiento global debe ser invariante a la permutación, de modo que las permutaciones en el orden de los nodos y los bordes del gráfico no alteren el resultado final. [28] Algunos ejemplos incluyen la suma, la media o el máximo de cada elemento.
Se ha demostrado que las GNN no pueden ser más expresivas que la prueba de isomorfismo de grafos de Weisfeiler-Leman . [29] [30] En la práctica, esto significa que existen diferentes estructuras de grafos (por ejemplo, moléculas con los mismos átomos pero diferentes enlaces ) que no se pueden distinguir mediante las GNN. Se pueden diseñar GNN más potentes que operen en geometrías de mayor dimensión, como complejos simpliciales . [31] [32] [10] A partir de 2022 [update], si las arquitecturas futuras superarán o no la primitiva de paso de mensajes es una pregunta de investigación abierta. [11]
Capas de paso de mensajes
Las capas de paso de mensajes son capas de permutación equivalente que mapean un gráfico a una representación actualizada del mismo gráfico. Formalmente, se pueden expresar como redes neuronales de paso de mensajes (MPNN). [6]
Sea un grafo , donde es el conjunto de nodos y es el conjunto de aristas. Sea la vecindad de algún nodo . Además, sean las características del nodo , y sean las características de la arista . Una capa MPNN se puede expresar de la siguiente manera: [6]
donde y son funciones diferenciables (por ejemplo, redes neuronales artificiales ), y es un operador de agregación invariante de permutación que puede aceptar una cantidad arbitraria de entradas (por ejemplo, suma de elementos, media o máximo). En particular, y se conocen como funciones de actualización y mensaje , respectivamente. Intuitivamente, en un bloque computacional MPNN, los nodos del gráfico actualizan sus representaciones agregando los mensajes recibidos de sus vecinos.
Los resultados de una o más capas de MPNN son representaciones de nodos para cada nodo del gráfico. Las representaciones de nodos se pueden emplear para cualquier tarea posterior, como la clasificación de nodos/gráficos o la predicción de bordes.
Los nodos de grafos en una MPNN actualizan su representación agregando información de sus vecinos inmediatos. Como tal, apilar capas MPNN significa que un nodo podrá comunicarse con nodos que están como máximo a "saltos" de distancia. En principio, para garantizar que cada nodo reciba información de todos los demás nodos, uno necesitaría apilar una cantidad de capas MPNN igual al diámetro del grafo . Sin embargo, apilar muchas capas MPNN puede causar problemas como suavizado excesivo [33] y aplastamiento excesivo [34] . El suavizado excesivo se refiere al problema de que las representaciones de los nodos se vuelvan indistinguibles. El aplastamiento excesivo se refiere al cuello de botella que se crea al comprimir dependencias de largo alcance en representaciones de tamaño fijo. Las contramedidas como las conexiones de salto [8] [35] (como en las redes neuronales residuales ), las reglas de actualización controladas [36] y el conocimiento de salto [37] pueden mitigar el suavizado excesivo. Modificar la capa final para que sea una capa completamente adyacente, es decir, considerar el gráfico como un gráfico completo , puede mitigar el aplastamiento excesivo en problemas donde se requieren dependencias de largo alcance. [34]
Se han desarrollado otros "tipos" de MPNN en la literatura, [6] como las redes convolucionales de gráficos [7] y las redes de atención de gráficos, [9] cuyas definiciones pueden expresarse en términos del formalismo MPNN.
Red convolucional gráfica
La red convolucional de gráficos (GCN) fue introducida por primera vez por Thomas Kipf y Max Welling en 2017. [7]
La expresión formal de una capa GCN se lee de la siguiente manera:
donde es la matriz de representaciones de nodos , es la matriz de características de nodos , es una función de activación (por ejemplo, ReLU ), es la matriz de adyacencia del gráfico con la adición de bucles propios, es la matriz de grado del gráfico con la adición de bucles propios, y es una matriz de parámetros entrenables.
Una limitación de los GCN es que no permiten características de borde multidimensionales . [7] Sin embargo, es posible asociar pesos escalares a cada borde imponiendo , es decir, estableciendo cada entrada distinta de cero en la matriz de adyacencia igual al peso del borde correspondiente.
Red de atención gráfica
La red de atención gráfica (GAT) fue introducida por Petar Veličković et al. en 2018. [9]
La red de atención gráfica es una combinación de una red neuronal gráfica y una capa de atención. La implementación de la capa de atención en redes neuronales gráficas ayuda a prestar atención o centrarse en la información importante de los datos en lugar de centrarse en todos los datos.
Una capa GAT de múltiples cabezales se puede expresar de la siguiente manera:
donde es el número de cabezas de atención , denota concatenación de vectores , es una función de activación (por ejemplo, ReLU ), son coeficientes de atención y es una matriz de parámetros entrenables para la -ésima cabeza de atención.
Para la capa final del GAT, se promedian las salidas de cada cabeza de atención antes de la aplicación de la función de activación. Formalmente, la capa final del GAT se puede escribir como:
La atención en el aprendizaje automático es una técnica que imita la atención cognitiva . En el contexto del aprendizaje en gráficos, el coeficiente de atención mide la importancia de un nodo con respecto a otro .
Los coeficientes de atención normalizados se calculan de la siguiente manera:
donde es un vector de pesos que se pueden aprender, indica la transposición , son las características de los bordes (si están presentes) y es una función de activación ReLU modificada . Los coeficientes de atención se normalizan para que sean fácilmente comparables entre diferentes nodos. [9]
Un GCN puede verse como un caso especial de un GAT donde los coeficientes de atención no se pueden aprender, sino que son fijos e iguales a los pesos de los bordes .
Red neuronal de secuencia de grafos cerrados
La red neuronal de secuencia de grafos con compuertas (GGS-NN) fue introducida por Yujia Li et al. en 2015. [36] La GGS-NN extiende la formulación GNN de Scarselli et al. [2] a las secuencias de salida. El marco de paso de mensajes se implementa como una regla de actualización para una celda de unidad recurrente con compuertas (GRU).
Un GGS-NN se puede expresar de la siguiente manera:
donde denota concatenación de vectores , es un vector de ceros, es una matriz de parámetros que se pueden aprender, es una celda GRU y denota el índice de secuencia. En una GGS-NN, las representaciones de nodos se consideran los estados ocultos de una celda GRU. Las características iniciales de los nodos se rellenan con ceros hasta la dimensión de estado oculto de la celda GRU. La misma celda GRU se utiliza para actualizar las representaciones de cada nodo.
Capas de agrupación local
Las capas de agrupamiento local hacen que el gráfico sea más grueso mediante un muestreo descendente. Aquí presentamos varias estrategias de agrupamiento local que se pueden aprender y que se han propuesto. [28] Para cada caso, la entrada es el gráfico inicial representado por una matriz de características de nodo y la matriz de adyacencia del gráfico . La salida es la nueva matriz de características de nodo y la nueva matriz de adyacencia del gráfico .
Agrupación de los mejores k
Primero nos pusimos
donde es un vector de proyección que se puede aprender. El vector de proyección calcula un valor de proyección escalar para cada nodo del gráfico.
La capa de agrupación top-k [26] se puede formalizar de la siguiente manera:
donde es el subconjunto de nodos con los k puntajes de proyección más altos, denota la multiplicación de matrices elemento por elemento y es la función sigmoidea . En otras palabras, los nodos con los k puntajes de proyección más altos se conservan en la nueva matriz de adyacencia . La operación hace que el vector de proyección sea entrenable por retropropagación , que de otra manera produciría salidas discretas. [26]
Puesta en común de la autoatención
Primero nos pusimos
donde es una capa GNN equivariante de permutación genérica (por ejemplo, GCN, GAT, MPNN).
La capa de agrupación de autoatención [27] puede formalizarse de la siguiente manera:
donde es el subconjunto de nodos con los k puntajes de proyección más altos, denota la multiplicación de matrices elemento por elemento .
La capa de agrupación de autoatención puede considerarse una extensión de la capa de agrupación top-k. A diferencia de la agrupación top-k, los puntajes de autoatención calculados en la agrupación de autoatención tienen en cuenta tanto las características del gráfico como la topología del mismo.
Aplicaciones
Plegamiento de proteínas
Las redes neuronales gráficas son uno de los componentes principales de AlphaFold , un programa de inteligencia artificial desarrollado por DeepMind de Google para resolver el problema del plegamiento de proteínas en biología . AlphaFold logró el primer puesto en varias competiciones CASP . [38] [39] [37]
Redes sociales
Las redes sociales son un importante dominio de aplicación para las GNN debido a su representación natural como gráficos sociales . Las GNN se utilizan para desarrollar sistemas de recomendación basados tanto en relaciones sociales como en relaciones entre elementos. [40] [13]
Optimización combinatoria
Las GNN se utilizan como bloques de construcción fundamentales para varios algoritmos de optimización combinatoria. [41] Los ejemplos incluyen el cálculo de rutas más cortas o circuitos eulerianos para un gráfico determinado, [36] la derivación de ubicaciones de chips superiores o competitivas a las soluciones humanas hechas a mano, [42] y la mejora de las reglas de ramificación diseñadas por expertos en ramificación y acotación . [43]
Seguridad cibernética
Cuando se ve como un gráfico, una red de computadoras se puede analizar con GNN para detectar anomalías. Las anomalías dentro de los gráficos de procedencia a menudo se correlacionan con actividad maliciosa dentro de la red. Las GNN se han utilizado para identificar estas anomalías en nodos individuales [44] y dentro de rutas [45] para detectar procesos maliciosos, o en el nivel de borde [46] para detectar movimiento lateral .
Redes de distribución de agua
Los sistemas de distribución de agua pueden ser modelados como grafos, siendo entonces una aplicación directa de GNN. Este tipo de algoritmo se ha aplicado a la previsión de la demanda de agua, [47] interconectando Áreas de Medición Distrital para mejorar la capacidad de previsión. Otra aplicación de este algoritmo en la modelización de la distribución de agua es el desarrollo de metamodelos. [48]
^ abcd Scarselli, Franco; Gori, Marco; Tsoi, Ah Chung; Hagenbuchner, Markus; Monfardini, Gabriele (2009). "El modelo de red neuronal gráfica". IEEE Transactions on Neural Networks . 20 (1): 61–80. doi :10.1109/TNN.2008.2005605. ISSN 1941-0093. PMID 19068426. S2CID 206756462.
^ abc Micheli, Alessio (2009). "Redes neuronales para grafos: un enfoque constructivo contextual". IEEE Transactions on Neural Networks . 20 (3): 498–511. doi :10.1109/TNN.2008.2010350. ISSN 1045-9227. PMID 19193509. S2CID 17486263.
^ Sanchez-Lengeling, Benjamin; Reif, Emily; Pearce, Adam; Wiltschko, Alex (2021-09-02). "Una introducción sencilla a las redes neuronales gráficas". Distill . 6 (9): e33. doi : 10.23915/distill.00033 . ISSN 2476-0757.
^ Daigavane, Ameya; Ravindran, Balaraman; Aggarwal, Gaurav (2 de septiembre de 2021). "Comprensión de las convoluciones en gráficos". Distill . 6 (9): e32. doi : 10.23915/distill.00032 . ISSN 2476-0757. S2CID 239678898.
^ abcdefg Bronstein, Michael M.; Bruna, Joan; Cohen, Taco; Veličković, Petar (4 de mayo de 2021). "Aprendizaje profundo geométrico: cuadrículas, grupos, gráficos, geodésicas y calibres". arXiv : 2104.13478 [cs.LG].
^ abcd Kipf, Thomas N; Welling, Max (2016). "Clasificación semisupervisada con redes convolucionales de grafos". IEEE Transactions on Neural Networks . 5 (1): 61–80. arXiv : 1609.02907 . doi :10.1109/TNN.2008.2005605. PMID 19068426. S2CID 206756462.
^ ab Hamilton, William; Ying, Rex; Leskovec, Jure (2017). "Aprendizaje de representación inductiva en gráficos grandes" (PDF) . Sistemas de procesamiento de información neuronal . 31 . arXiv : 1706.02216 – vía Stanford.
^ abcd Veličković, Petar; Cucurull, Guillem; Casanova, Arantxa; Romero, Adriana; Liò, Pietro; Bengio, Yoshua (4 de febrero de 2018). "Graficar redes de atención". arXiv : 1710.10903 [estad.ML].
^ ab Hajij, M.; Zamzmi, G.; Papamarkou, T.; Miolane, N.; Guzmán-Sáenz, A.; Ramamurthy, KN; Schaub, MT (2022). "Aprendizaje profundo topológico: ir más allá de los datos gráficos". arXiv : 2206.00606 .
^ abc Veličković, Petar (2022). "El mensaje pasa hasta arriba". arXiv : 2202.11097 [cs.LG].
^ Wu, Lingfei; Chen, Yu; Shen, Kai; Guo, Xiaojie; Gao, Hanning; Li, Shucheng; Pei, Jian; Long, Bo (2023). "Redes neuronales gráficas para el procesamiento del lenguaje natural: una encuesta". Fundamentos y tendencias en aprendizaje automático . 16 (2): 119–328. arXiv : 2106.06090 . doi :10.1561/2200000096. ISSN 1941-0093. PMID 19068426. S2CID 206756462.
^ ab Ying, Rex; He, Ruining; Chen, Kaifeng; Eksombatchai, Pong; Hamilton, William L.; Leskovec, Jure (2018). Redes neuronales convolucionales de gráficos para sistemas de recomendación a escala web . págs. 974–983. arXiv : 1806.01973 . doi :10.1145/3219819.3219890. ISBN .9781450355520.S2CID46949657 .
^ "Colección de conjuntos de datos de redes grandes de Stanford". snap.stanford.edu . Consultado el 5 de julio de 2021 .
^ Zhang, Weihang; Cui, Yang; Liu, Bowen; Loza, Martin; Park, Sung-Joon; Nakai, Kenta (5 de abril de 2024). "HyGAnno: anotación de tipo celular basada en red neuronal de grafos híbridos para datos de secuenciación ATAC de células individuales". Briefings in Bioinformatics . 25 (3). doi :10.1093/bib/bbae152. PMC 10998639 .
^ Gilmer, Justin; Schoenholz, Samuel S.; Riley, Patrick F.; Vinyals, Oriol; Dahl, George E. (17 de julio de 2017). "Transmisión de mensajes neuronales para la química cuántica". Actas de investigación sobre aprendizaje automático : 1263–1272. arXiv : 1704.01212 .
^ Coley, Connor W.; Jin, Wengong; Rogers, Luke; Jamison, Timothy F.; Jaakkola, Tommi S.; Green, William H.; Barzilay, Regina; Jensen, Klavs F. (2 de enero de 2019). "Un modelo de red neuronal convolucional gráfica para la predicción de la reactividad química". Chemical Science . 10 (2): 370–377. doi : 10.1039/C8SC04228D . ISSN 2041-6539. PMC 6335848 . PMID 30746086.
^ Qasim, Shah Rukh; Kieseler, enero; Iiyama, Yutaro; Pierini, Maurizio Pierini (2019). "Aprendizaje de representaciones de la geometría del detector de partículas irregulares con redes de gráficos ponderados por distancia". La revista física europea C. 79 (7): 608. arXiv : 1902.07987 . Código Bib : 2019EPJC...79..608Q. doi : 10.1140/epjc/s10052-019-7113-9 . S2CID 88518244.
^ Li, Zhuwen; Chen, Qifeng; Koltun, Vladlen (2018). "Optimización combinatoria con redes convolucionales de grafos y búsqueda guiada de árboles". Sistemas de procesamiento de información neuronal . 31 : 537–546. arXiv : 1810.10659 . doi :10.1007/978-3-030-04221-9_48.
^ Matthias, Fey; Lenssen, Jan E. (2019). "Aprendizaje rápido de representación gráfica con PyTorch Geometric". arXiv : 1903.02428 [cs.LG].
^ "Tensorflow GNN". GitHub . Consultado el 30 de junio de 2022 .
^ "Biblioteca de grafos profundos (DGL)" . Consultado el 12 de septiembre de 2024 .
^ "jraph". GitHub . Consultado el 30 de junio de 2022 .
^ Lucibello, Carlo (2021). "GraphNeuralNetworks.jl". GitHub . Consultado el 21 de septiembre de 2023 .
^ FluxML/GeometricFlux.jl, FluxML, 31 de enero de 2024 , consultado el 3 de febrero de 2024
^ abc Gao, Hongyang; Ji, Shuiwang Ji (2019). "Graficar U-Nets". arXiv : 1905.05178 [cs.LG].
^ ab Lee, Junhyun; Lee, Inyeop; Kang, Jaewoo (2019). "Gráficos de autoatención en conjunto". arXiv : 1904.08082 [cs.LG].
^ ab Liu, Chuang; Zhan, Yibing; Li, Chang; Du, Bo; Wu, Jia; Hu, Wenbin; Liu, Tongliang; Tao, Dacheng (2022). "Agrupamiento de grafos para redes neuronales de grafos: progreso, desafíos y oportunidades". arXiv : 2204.07321 [cs.LG].
^ Douglas, BL (27 de enero de 2011). "El método Weisfeiler-Lehman y la prueba de isomorfismo de grafos". arXiv : 1101.5211 [math.CO].
^ Xu, Keyulu; Hu, Weihua; Leskovec, Jure; Jegelka, Stefanie (22 de febrero de 2019). "¿Qué tan poderosas son las redes neuronales gráficas?". arXiv : 1810.00826 [cs.LG].
^ Bodnar, cristiano; Frasca, Fabricio; Guang Wang, Yu; Nutria, Nina; Montúfar, Guido; Liò, Pietro; Bronstein, Michael (2021). "Weisfeiler y Lehman se vuelven topológicos: mensajes que pasan por redes simples". arXiv : 2103.03212 [cs.LG].
^ Grady, Leo; Polimeni, Jonathan (2011). Cálculo discreto: análisis aplicado a gráficos para la ciencia computacional (PDF) . Springer.
^ Chen, Deli; Lin, Yankai; Li, Wei; Li, Peng; Zhou, Jie; Sun, Xu (2020). "Medición y alivio del problema de sobresuavizado para redes neuronales de grafos desde el punto de vista topológico". Actas de la Conferencia AAAI sobre Inteligencia Artificial . 34 (4): 3438–3445. arXiv : 1909.03211 . doi :10.1609/aaai.v34i04.5747. S2CID 202539008.
^ ab Alon, Uri; Yahav, Eran (2021). "Sobre el cuello de botella de las redes neuronales gráficas y sus implicaciones prácticas". arXiv : 2006.05205 [cs.LG].
^ Xu, Keyulu; Zhang, Mozhi; Jegelka, Stephanie ; Kawaguchi, Kenji (2021). "Optimización de redes neuronales gráficas: aceleración implícita mediante conexiones de salto y mayor profundidad". arXiv : 2105.04550 [cs.LG].
^ abc Li, Yujia; Tarlow, Daniel; Brockschmidt, Mark; Zemel, Richard (2016). "Redes neuronales de secuencias de grafos con compuertas". arXiv : 1511.05493 [cs.LG].
^ ab Xu, Keyulu; Li, Chengtao; Tian, Yonglong; Sonobe, Tomohiro; Kawarabayashi, Ken-ichi; Jegelka, Stefanie (2018). "Aprendizaje de representación en gráficos con redes de conocimiento saltantes". arXiv : 1806.03536 [cs.LG].
^ Sample, Ian (2 de diciembre de 2018). «DeepMind de Google predice formas 3D de proteínas». The Guardian . Consultado el 30 de noviembre de 2020 .
^ "La inteligencia artificial de DeepMind que plega proteínas ha resuelto un gran desafío de la biología que existía hace 50 años". MIT Technology Review . Consultado el 30 de noviembre de 2020 .
^ Fanático, Wenqi; Mamá, Yao; Li, Qing; Él, Yuan; Zhao, Eric; Tang, Jiliang; Yin, Dawei (2019). Graficar redes neuronales para recomendación social . págs. 417–426. arXiv : 1902.07243 . doi :10.1145/3308558.3313488. hdl :10397/81232. ISBN9781450366748.S2CID67769538 .
^ Cappart, Quentin; Chételat, Didier; Khalil, Elias; Lodi, Andrea; Morris, Christopher; Veličković, Petar (2021). "Optimización combinatoria y razonamiento con redes neuronales de grafos". arXiv : 2102.09544 [cs.LG].
^ Mirhoseini, Azalia; Goldie, Anna; Yazgan, Mustafa; Jiang, Joe Wenjie; Songhori, Ebrahim; Wang, Shen; Lee, Young-Joon; Johnson, Eric; Pathak, Omkar; Nazi, Azade; Pak, Jiwoo; Tong, Andy; Srinivasa, Kavya; Hang, William; Tuncer, Emre; Le, Quoc V.; Laudon, James; Ho, Richard; Carpenter, Roger; Dean, Jeff (2021). "Una metodología de colocación de grafos para el diseño rápido de chips". Nature . 594 (7862): 207–212. Código Bibliográfico :2021Natur.594..207M. doi :10.1038/s41586-021-03544-w. PMID 34108699. S2CID 235395490.
^ Gasse, Maxime; Chételat, Didier; Ferroni, Nicola; Charlin, Laurent; Lodi, Andrea (2019). "Optimización combinatoria exacta con redes neuronales convolucionales de grafos". arXiv : 1906.01629 [cs.LG].
^ Wang, Su; Wang, Zhiliang; Zhou, Tao; Sun, Hongbin; Yin, Xia; Han, Dongqi; Zhang, Han; Shi, Xingang; Yang, Jiahai (2022). "Threatrace: detección y rastreo de amenazas basadas en host en el nivel de nodo mediante aprendizaje de gráficos de procedencia". Transacciones IEEE sobre seguridad y análisis forense de la información . 17 : 3972–3987. arXiv : 2111.04333 . doi :10.1109/TIFS.2022.3208815. ISSN 1556-6021. S2CID 243847506.
^ Wang, Qi; Hassan, Wajih Ul; Li, Ding; Jee, Kangkook; Yu, Xiao (2020). "Eres lo que haces: cómo cazar malware oculto mediante análisis de procedencia de datos". Simposio sobre seguridad de sistemas distribuidos y redes (NDSS) . doi : 10.14722/ndss.2020.24167 . ISBN978-1-891562-61-7. Número de identificación del sujeto 211267791.
^ King, Isaiah J.; Huang, H. Howie (2022). "Euler: detección de movimiento lateral de red mediante predicción de enlaces temporales escalables" (PDF) . En Actas del 29.º Simposio sobre seguridad de redes y sistemas distribuidos (NDSS) . doi :10.14722/ndss.2022.24107. S2CID 248221601.
^ Zanfei, Ariele; et al. (2022). "Redes neuronales recurrentes convolucionales gráficas para la previsión de la demanda de agua". Investigación de recursos hídricos . AGU . Consultado el 11 de junio de 2024 .
^ Zanfei, Ariele; et al. (2023). "¿Siempre debemos utilizar modelos hidráulicos? Un metamodelo de red neuronal gráfica para la calibración del sistema de agua y la evaluación de la incertidumbre" . Consultado el 11 de junio de 2024 .