{"id":973,"date":"2021-05-14T22:22:20","date_gmt":"2021-05-15T04:22:20","guid":{"rendered":"http:\/\/ofeliayorquesta.com\/blog\/?p=973"},"modified":"2021-05-15T11:30:20","modified_gmt":"2021-05-15T17:30:20","slug":"redes-neuronales","status":"publish","type":"post","link":"https:\/\/ofeliayorquesta.com\/blog\/2021\/05\/14\/redes-neuronales\/","title":{"rendered":"Redes Neuronales"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Introducci\u00f3n<\/h3>\n\n\n\n<p>Esta y subsecuentes entradas de blog, bajo la categor\u00eda de &#8220;redes neuronales&#8221;, se ocupar\u00e1n de explicar algo de la teor\u00eda matem\u00e1tica b\u00e1sica de las redes neuronales artificiales; qu\u00e9 es una red neuronal y los componentes que la forman: neurona, sinapsis neuronal, etc. Adem\u00e1s, se cubrir\u00e1n tipos de redes neuronales, partiendo desde el perceptr\u00f3n. Las definiciones y teoremas aqu\u00ed explicados est\u00e1n basados en los libros [1] y [2], adem\u00e1s del art\u00edculo en [3], donde Cybenko demuestra el teorema de aproximaci\u00f3n para cualquier red neuronal de una capa oculta.<\/p>\n\n\n\n<p>Los cursos en l\u00ednea <em>&#8220;Intro to Deep Learning,&#8221;<\/em> del Carnegie Mellon University,<em> &#8220;Convolutional Neural Networks for Visual Recognition,&#8221;<\/em> del Stanford University School of Engineering, <em>&#8220;Neural Networks,&#8221;<\/em>  de 3 blue 1 brown, y <em>&#8220;Machine Learning Reading Group,&#8221;<\/em> del KTH Royal Institute of Technology, tambi\u00e9n fueron de utilidad para esta investigaci\u00f3n.<\/p>\n\n\n\n<p>Este trabajo fue motivado por un inter\u00e9s que tuve en el <em>Machine Learning para las artes visuales<\/em>, por ah\u00ed de septiembre de 2018, y que culmin\u00f3 en una tesis de licenciatura en s\u00edntesis de textura donde el texto figurar\u00eda, pero se tuvo que quitar. Sin embargo, por cuatro primordiales razones me parece apropiado subir este contenido al sitio:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Es un tema de actual relevancia, y que muy seguramente seguir\u00e1 siendo una referencia para m\u00ed, particularmente para m\u00ed. Pero si t\u00fa llegas a emplearlo tambi\u00e9n, me dar\u00e1 gusto saberlo. Y si en algo de ello obtengo cr\u00e9dito, ser\u00e1 a\u00fan mejor.<\/li><li>Es un material que ya fue comentado y parcialmente corregido por mi tutor de tesis y sinodales.<\/li><li>Es una recopilaci\u00f3n de varios libros y cursos, enfocada en dar definiciones precisas, as\u00ed como pretend\u00ed explicar con peras y manzanas c\u00f3mo fueron evolucionando las redes neuronales en el curso de los a\u00f1os, qu\u00e9 problemas resuelven y por qu\u00e9 son \u00fatiles para el procesamiento de im\u00e1genes; as\u00ed que puede servir como tutorial para introducirse en el tema.<\/li><li>El material, m\u00e1s que referirse a problemas abiertos de matem\u00e1ticas, es de uso p\u00fablico, y su belleza radica m\u00e1s en c\u00f3mo se ense\u00f1a o se discute.<\/li><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Definici\u00f3n de red neuronal artificial<\/h3>\n\n\n\n<p>Una red neuronal artificial es un modelo computacional, inspirado en las redes neuronales humanas, que se utiliza para resolver una amplia variedad de tareas que son dif\u00edciles para la denominada &#8220;programaci\u00f3n estructurada&#8221;. Su invenci\u00f3n data del a\u00f1o 1943; la neurona de McCulloch-Pitts fue la primera neurona artificial. A esto le sigui\u00f3 el Perceptr\u00f3n (1958), con un vector de entrada, una capa con una neurona oculta y una salida. Espec\u00edficamente, las redes convolucionales son capaces de reconocer objetos en im\u00e1genes.<\/p>\n\n\n\n<p>Las <strong>neuronas<\/strong> (o unidades de c\u00e1lculo) son los bloques b\u00e1sicos de construcci\u00f3n de una red neuronal. Cada una de estas unidades tiene un n\u00famero $k$ de conexiones de entrada (<em>inputs<\/em>) y puede tomar cierto n\u00famero de estados. Pi\u00e9nsese, por ejemplo, en la red neuronal que reconoce d\u00edgitos del $0$ al $9$ a partir de im\u00e1genes. Entonces, por conexiones de entrada nos referimos a todos los pixeles de una imagen dada, y los posibles estados de la red son im\u00e1genes de d\u00edgitos $0$ al $9$, donde la red admite diversas caligraf\u00edas de los n\u00fameros, as\u00ed como im\u00e1genes rotadas o desplazadas de los d\u00edgitos. Una imagen de un $6$ en la caligraf\u00eda <em>Helvetica<\/em> representar\u00eda un estado diferente al que describir\u00eda la imagen del mismo n\u00famero, pero en caligraf\u00eda <em>Comic Sans<\/em>.<\/p>\n\n\n\n<p>Para cierto estado descrito por un vector de entrada $\\overrightarrow{x} = (x_0, x_1, \\ldots, x_k)$ y por $W \\in \\mathcal{M}_{m\\times n}(\\mathbb{R})$, la neurona produce como salida una <em>activaci\u00f3n<\/em> $g( \\overrightarrow{x} ,W)$, donde $g: \\mathbb{R}^p\\times\\mathbb{R}^{m\\times k} \\longrightarrow \\mathbb{R}$ es una funci\u00f3n fija, y $p = k+1$. Para facilitar la notaci\u00f3n, podemos denotar $g( \\overrightarrow{x} ,W) = g_W( \\overrightarrow{x} )$, donde, para cada $W$, $g_W: \\mathbb{R}^p \\longrightarrow \\mathbb{R}$ es la funci\u00f3n que una neurona eval\u00faa, dados los datos de entrada $ \\overrightarrow{x} $ (esta definici\u00f3n se encuentra en [1], p\u00e1gina 2).<\/p>\n\n\n\n<p>En otras palabras, para una s\u00f3la neurona, el vector $W$ es una matriz de tama\u00f1o $1\\times p$, que se puede visualizar as\u00ed:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/redN_001.png\" alt=\"\" class=\"wp-image-987\" width=\"621\" height=\"314\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/redN_001.png 828w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/redN_001-300x152.png 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/redN_001-768x389.png 768w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/redN_001-450x228.png 450w\" sizes=\"auto, (max-width: 621px) 100vw, 621px\" \/><figcaption><strong>Figura 1.<\/strong> El vector de par\u00e1metros $W = (w_{00}, w_{01}, w_{02}, w_{03}, b_0)$ de la red corresponde a los pesos de las aristas m\u00e1s un bias, y la activaci\u00f3n de la neurona est\u00e1 dado por $\\sigma(   \\overrightarrow{a}^{\\text{ }0}, W)$.<\/figcaption><\/figure><\/div>\n\n\n\n<p>Y si hay $m$ neuronas, entonces $W$ es una matriz de $m \\times k$ entradas, donde la activaci\u00f3n $g( \\overrightarrow{a}^{\\text{ }0}, W)$, para esa capa con $m$ neuronas es:<\/p>\n\n\n\n<p>\\begin{align}<br>g \\begin{pmatrix} \\begin{bmatrix}{w_{0,0}}&amp;{w_{0,1}}&amp;\\cdots &amp; {w_{0,k}} \\\\ {w_{1,0}}&amp;{w_{1,1}}&amp;\\cdots &amp;{w_{1,k}} \\\\ \\vdots &amp;\\vdots &amp;\\ddots &amp;\\vdots \\\\ {w_{m,1}}&amp;{w_{m,2}}&amp;\\cdots &amp;{w_{m,k}}<br>\\end{bmatrix}<br>\\begin{bmatrix} {a_0^{(0)}} \\\\ {a_{1}^{(0)}} \\\\ \\vdots \\\\  {a_{k}^{(0)}} \\end{bmatrix} +<br>\\begin{bmatrix} {b_0^{(0)}} \\\\  {b_{1}^{(0)}} \\\\  \\vdots \\\\  {b_{k}^{(0)}} \\end{bmatrix} \\end{pmatrix}<br>\\text{,} \\qquad \\text{(1)}<br>\\end{align}<\/p>\n\n\n\n<p>donde bien podr\u00eda $g$ ser un vector con $g_0, \\ldots, g_m$ funciones de activaci\u00f3n distintas, evaluando cada una de ellas a alguna de las $m$ neuronas de la capa $1$. Pero muy com\u00fan es que una misma funci\u00f3n de activaci\u00f3n sea utilizada sobre todas las neuronas.<\/p>\n\n\n\n<p>Equivalentemente, se puede escribir<\/p>\n\n\n\n<p>\\begin{align}<br>g \\begin{pmatrix} \\begin{bmatrix}{w_{0,0}}&amp;{w_{0,1}}&amp;\\cdots &amp;{w_{0,k}}&amp;{b_{0, k+1}} \\\\ {w_{1,0}}&amp;{w_{1,1}}&amp;\\cdots &amp;{w_{1,k}}&amp;{b_{1, k+1}}\\\\ \\vdots &amp;\\vdots &amp;\\ddots &amp;\\vdots &amp;\\vdots\\\\ {w_{m,0}}&amp;{w_{m,1}}&amp;\\cdots &amp;{w_{m,k}}&amp;{b_{m,k+1}}<br>\\end{bmatrix}<br>\\begin{bmatrix} {a_0^{(0)}} \\\\ {a_{1}^{(0)}} \\\\ \\vdots \\\\ {a_{k}^{(0)}} \\\\ {1} \\end{bmatrix}<br>\\end{pmatrix}<br>\\text{,}   \\qquad \\text{(2)} <br>\\end{align}<\/p>\n\n\n\n<p>que tal vez llegar\u00eda a facilitar la programaci\u00f3n de los datos.<\/p>\n\n\n\n<p>Existen muchos tipos de redes neuronales: profundas, recurrentes, convolucionales, autoencoders, perceptrones multicapa, etc. Lo m\u00e1s pertinente ser\u00eda encontrar una manera de &#8220;ir construy\u00e9ndolas desde lo m\u00e1s simple posible, e ir entendiendo a ciertas redes como variantes de otras ya estudiadas. Finalmente, poder descartar algunas redes que no conciernen a nuestros objetos de estudio.&#8221; As\u00ed que mis textos s\u00f3lo tomar\u00e1n en cuenta, primero los casos m\u00e1s sencillos de red neuronal (perceptr\u00f3n y perceptr\u00f3n multicapa), y, ya que las redes convolucionales son aqu\u00e9llas aplicables al modelo de s\u00edntesis de textura de inter\u00e9s, y \u00e9stas son un subconjunto de las redes neuronales profundas, lo que m\u00e1s nos interesa llegar a definir matem\u00e1ticamente, es a la red neuronal profunda. As\u00ed,<\/p>\n\n\n\n<p><strong>Definici\u00f3n.<\/strong> Sean $E_i$ y $H_i$, con $i \\in [L+1]$, espacios con producto interior. Una <strong>red neuronal profunda<\/strong> de $L$ capas es la composici\u00f3n de $L$ funciones $f_i: E_i \\times H_i \\longrightarrow E_{i+1}$ (ver (3)). Referiremos a las variables $x_i \\in E_i$ como las <em>variables de estado<\/em>, mientras que las variables $\\theta_i \\in H_i$ son los <em>par\u00e1metros<\/em>. Es decir, si entendemos a $f_i$ como una funci\u00f3n que va de $E_i$ en $E_{i+1}$ y que depende de $\\theta_i \\in H_i$, denotamos, para ciertos datos de entrada $x \\in E_1$ a: $$ F: E_1\\times (H_1 \\times \\ldots \\times H_L) \\longrightarrow E_{L+1}$$ tal que<\/p>\n\n\n\n<p>\\begin{align}<br>F(x, \\theta) = (f_L \\circ \\ldots \\circ f_1)(x)\\text{,}   \\qquad \\quad \\text{(3)} <br>\\end{align} donde cada $f_i$ depende del par\u00e1metro $\\theta_i \\in H_i$ y $\\theta$ representa el conjunto de par\u00e1metros ${\\theta_1, \\ldots , \\theta_{L}}$. \u00a1La funci\u00f3n $F$ representa a la red neuronal completa!<\/p>\n\n\n\n<p>Observamos que la notaci\u00f3n suprimi\u00f3 el hecho de que una dada funci\u00f3n $f_i$ depende del par\u00e1metro $\\theta_i$, simplemente para facilitar la escritura.<\/p>\n\n\n\n<p>En el caso de mis dibujos de redes neuronales (Figuras 1 y 2), as\u00ed como para entender el modelo estudiado, considerar\u00e9 que los estados $ \\overrightarrow{x}^{\\text{ }(0)}, \\ldots ,  \\overrightarrow{x}^{\\text{ }(L)}$ son vectores real-valuados y que cada $\\theta_k$ se conforma de un bias $ \\overrightarrow{b_k}$, adem\u00e1s de las entradas $w_{ij}$ de una matriz $W_k \\in \\mathcal{M}{m\\times n}(\\mathbb{R})$. El bias $  \\overrightarrow{b_k} $ y las entradas $w_{ij} \\in W_k$ son todos los par\u00e1metros de $\\theta_k$ (ver (1)). <\/p>\n\n\n\n<p>Si no se entendi\u00f3 esta explicaci\u00f3n, vuelva a la Figura 1, e intente corroborar la notaci\u00f3n con cada uno de los elementos de la ilustraci\u00f3n. Luego inspeccione la Figura 2. De suma importancia resultar\u00eda hacer corresponder (mentalmente) la ilustraci\u00f3n de una red neuronal profunda con su expresi\u00f3n algebraica. Por favor permanezca estudiando esta entrada de blog hasta que esto quede claro como el agua.<\/p>\n\n\n\n<p>Note que, en la definici\u00f3n de red neuronal profunda, para $E_i$ se tiene que $i \\in \\{0, \\ldots , L+1\\}$ pues la cuenta empieza en cero (a la capa cero a veces ni siquiera se le llama capa) y el contradominio de $F$ siempre es &#8220;la capa que le sigue a $L$.&#8221;<\/p>\n\n\n\n<p>En particular, a un vector de entrada de una red, tambi\u00e9n se le puede denotar por $  \\overrightarrow{x} $. Al escribir $   \\overrightarrow{x}^{\\text{ }(0)}, \\ldots ,    \\overrightarrow{x}^{\\text{ }(L)}$, facilitamos la visualizaci\u00f3n de una red neuronal en un dibujo (ver Figura 2), donde los super\u00edndices indican en qu\u00e9 capa de la red estamos y para la que $   \\overrightarrow{x}^{\\text{ }(k)} = (x_0^{(k)}, x_1^{(k)}, \\ldots , x_n^{(k)})$; pero al escribir $   \\overrightarrow{x} $ (o simplemente $x$), la lectura de las f\u00f3rmulas se vuelve menos engorrosa. Usaremos la notaci\u00f3n $L_i$, con $i \\in \\{0, \\ldots , L+1 \\}$, para esquematizar una capa espec\u00edfica de la red (ver Figura 2). En muchos textos, no se considera que el vector de entrada $x^{(0)}$ sea una capa de neuronas y bajo tal criterio, \u00fanicamente a las capas ocultas se les llama capas. En ese caso bastar\u00eda con especificar que $i \\in \\{1, \\ldots , L+1 \\}$, pero tambi\u00e9n complicar\u00eda un poquito la definici\u00f3n dada, de red neuronal profunda. A continuaci\u00f3n dibujamos una red, donde $L_0$ representa la &#8220;capa&#8221; que tiene al vector de entrada:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/redN_002.png\" alt=\"\" class=\"wp-image-988\" width=\"590\" height=\"492\" srcset=\"https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/redN_002.png 590w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/redN_002-300x250.png 300w, https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/redN_002-450x375.png 450w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><figcaption><strong>Figura 2.<\/strong> Esquema de una red neuronal con una capa oculta $L_1$. La letra L significa Layer.<\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusiones<\/h3>\n\n\n\n<p>La definici\u00f3n matem\u00e1tica de red neuronal profunda es bonita porque encierra nociones de c\u00e1lculo de varias variables, a pesar de que sea simple de entender. Bien pudiera servir como regla mnemot\u00e9cnica para estudiar m\u00e1s c\u00e1lculo o an\u00e1lisis matem\u00e1tico; se ver\u00e1 que el teorema de aproximaci\u00f3n de redes neuronales usa la integral de Lebesgue, el teorema de Hahn Banach y el teorema de Representaci\u00f3n de Riesz para su demostraci\u00f3n.<\/p>\n\n\n\n<p>No importa cu\u00e1n sencilla o complicada sea la implementaci\u00f3n de cierta red neuronal profunda, la definici\u00f3n que hemos dado sirve para representarla.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bibliograf\u00eda<\/h3>\n\n\n\n<p>[1] Martin Anthony. <em>Discrete mathematics of neural networks: selected topics.<\/em> SIAM, 2001.<\/p>\n\n\n\n<p>[2] Anthony L Caterini and Dong Eui Chang. <em>Deep Neural Networks in a Mathematical Framework. <\/em>Springer, 2018.<\/p>\n\n\n\n<p>[3] George Cybenko. Approximation by superpositions of a sigmoidal function. <em>Mathematics of control, signals and systems<\/em>, 2(4):303\u2013314, 1989.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-left is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-100 has-custom-font-size is-style-outline has-small-font-size is-style-outline--1\"><a class=\"wp-block-button__link\" href=\"http:\/\/ofeliayorquesta.com\/articulos\/Redes_Neuronales_001.pdf\" style=\"border-radius:50px\" target=\"_blank\" rel=\"noreferrer noopener\">Descarga el art\u00edculo<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Esta y subsecuentes entradas de blog, bajo la categor\u00eda de &#8220;redes neuronales&#8221;, se ocupar\u00e1n de explicar algo de la teor\u00eda matem\u00e1tica b\u00e1sica de las redes neuronales artificiales; qu\u00e9 es una red neuronal y los componentes que la forman: neurona, sinapsis neuronal, etc. Adem\u00e1s, se cubrir\u00e1n tipos de redes neuronales, partiendo desde el perceptr\u00f3n. Las<\/p>\n","protected":false},"author":1,"featured_media":1012,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[4,76],"tags":[54],"class_list":["post-973","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-matematicas","category-redes-neuronales","tag-redesneuronales"],"uagb_featured_image_src":{"full":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron.jpg",1600,894,false],"thumbnail":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron-150x150.jpg",150,150,true],"medium":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron-300x168.jpg",300,168,true],"medium_large":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron-768x429.jpg",768,429,true],"large":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron-1024x572.jpg",900,503,true],"1536x1536":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron-1536x858.jpg",1536,858,true],"2048x2048":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron.jpg",1600,894,false],"coup-single-post":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron-900x503.jpg",900,503,true],"coup-archive-sticky":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron-1000x559.jpg",1000,559,true],"coup-archive":["https:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/05\/VanGogh_neuron-450x251.jpg",450,251,true]},"uagb_author_info":{"display_name":"Ofelia Negrete","author_link":"https:\/\/ofeliayorquesta.com\/blog\/author\/ofelia-negrete\/"},"uagb_comment_info":0,"uagb_excerpt":"Introducci\u00f3n Esta y subsecuentes entradas de blog, bajo la categor\u00eda de &#8220;redes neuronales&#8221;, se ocupar\u00e1n de explicar algo de la teor\u00eda matem\u00e1tica b\u00e1sica de las redes neuronales artificiales; qu\u00e9 es una red neuronal y los componentes que la forman: neurona, sinapsis neuronal, etc. Adem\u00e1s, se cubrir\u00e1n tipos de redes neuronales, partiendo desde el perceptr\u00f3n. Las","_links":{"self":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/973","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/comments?post=973"}],"version-history":[{"count":32,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/973\/revisions"}],"predecessor-version":[{"id":1025,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/973\/revisions\/1025"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/media\/1012"}],"wp:attachment":[{"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/media?parent=973"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/categories?post=973"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/tags?post=973"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}