{"id":2035,"date":"2021-10-30T10:07:36","date_gmt":"2021-10-30T08:07:36","guid":{"rendered":"https:\/\/dbdmg.polito.it\/dbdmg_web\/?p=2035"},"modified":"2021-10-30T10:07:36","modified_gmt":"2021-10-30T08:07:36","slug":"reading-group-4-perceiver-general-perception-with-iterative-attention","status":"publish","type":"post","link":"https:\/\/dbdmg.polito.it\/dbdmg_web\/2021\/reading-group-4-perceiver-general-perception-with-iterative-attention\/","title":{"rendered":"Reading Group 4: Perceiver: General Perception with Iterative Attention"},"content":{"rendered":"\n<p class=\"eplus-iTKSA6 wp-block-paragraph\">\ud83d\udd17 Paper: <a href=\"https:\/\/arxiv.org\/abs\/2103.03206\">https:\/\/arxiv.org\/abs\/2103.03206<\/a> (ICML 2021)<\/p>\n\n\n\n<p class=\"eplus-goslP7 wp-block-paragraph\">\ud83d\udc65 Autori: <a href=\"https:\/\/arxiv.org\/search\/cs?searchtype=author&amp;query=Jaegle%2C+A\">Andrew Jaegle<\/a>, <a href=\"https:\/\/arxiv.org\/search\/cs?searchtype=author&amp;query=Gimeno%2C+F\">Felix Gimeno<\/a>, <a href=\"https:\/\/arxiv.org\/search\/cs?searchtype=author&amp;query=Brock%2C+A\">Andrew Brock<\/a>, <a href=\"https:\/\/arxiv.org\/search\/cs?searchtype=author&amp;query=Zisserman%2C+A\">Andrew Zisserman<\/a>, <a href=\"https:\/\/arxiv.org\/search\/cs?searchtype=author&amp;query=Vinyals%2C+O\">Oriol Vinyals<\/a>, <a href=\"https:\/\/arxiv.org\/search\/cs?searchtype=author&amp;query=Carreira%2C+J\">Joao Carreira<\/a><\/p>\n\n\n\n<p class=\"eplus-1kkOFO wp-block-paragraph\">\ud83d\udcc5 Data di pubblicazione: 4 Mar 2021 (v1),  <strong>23 Jun 2021(v2) <\/strong><\/p>\n\n\n\n<h4 class=\"eplus-UjD6UM wp-block-heading\">\u203c\ufe0f Cose da sapere<\/h4>\n\n\n<ul class=\"eplus-LzXew1 wp-block-list eplus-styles-uid-36df33\"><li>Le ConvNets (CNNs) sono delle architetture specifiche introdotte nel <a href=\"http:\/\/yann.lecun.com\/exdb\/publis\/pdf\/lecun-bengio-95a.pdf\">1995<\/a> da Yann LeCun. La loro applicazione dal <a href=\"https:\/\/papers.nips.cc\/paper\/2012\/file\/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf\">2012<\/a> in poi ha permesso alla Computer Vision di raggiungere risultati imparagonabili ad altre tecniche (esistenti al momento).<\/li><li>Le CNNs sfruttano degli &#8220;inductive bias&#8221;: una conoscenza apriori del dominio in cui saranno applicate. Per esempio le ConvNets, sfruttano la <strong>localit\u00e0<\/strong> dei pixel. Nel contesto della computer vision, ha senso avere una finestra di analisi NxN che analizza una porzione di spazio alla volta. Viceversa, questo ha poco senso nel contesto NLP, dove \u00e8 pi\u00f9 sensato avere una struttura che tiene conto della sequenza (anche in maniera bidirezionale).<\/li><li>L&#8217;architettura <strong>transformers<\/strong> \u00e8 un particolare caso di rete neurale che introduce un meccanismo di &#8220;attenzione&#8221;. Proposta inizialmente nel <a href=\"https:\/\/arxiv.org\/abs\/1706.03762\">2017<\/a>, arrivata nei &#8220;nostri lab&#8221; nel <a href=\"https:\/\/arxiv.org\/abs\/1810.04805\">2018<\/a> e sfruttata in lungo e in largo in questi anni soprattutto in ambito NLP.<\/li><li>I transformers sono stati applicati in Computer Vision da circa 2 anni, e hanno raggiunto ottimi risultati. In questo caso per\u00f2, vista la complessit\u00e0 quadratica, sono riusciti a scalare solamente usando delle &#8220;patch&#8221;. In altri termini, le &#8220;parole&#8221; del transformer sono regioni dell&#8217;immagine di input (e non i singoli pixel).<\/li><li>https:\/\/towardsdatascience.com\/recent-developments-and-views-on-computer-vision-x-transformer-ed32a2c72654<\/li><\/ul>\n\n\n<div class=\"wp-block-image eplus-vsaHzO\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*86_dMWwYgVXlBDbKXEydsw.png\" alt=\"Recent Developments and Views on Computer Vision x Transformer | by Akihiro  FUJII | Towards Data Science\" width=\"878\" height=\"319\"\/><figcaption>Source: <a href=\"https:\/\/towardsdatascience.com\/recent-developments-and-views-on-computer-vision-x-transformer-ed32a2c72654\">https:\/\/towardsdatascience.com\/recent-developments-and-views-on-computer-vision-x-transformer-ed32a2c72654<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<h4 class=\"eplus-jeEvYX wp-block-heading\">\ud83d\udce2 Un nuovo modello, senza inductive bias<\/h4>\n\n\n\n<p class=\"eplus-1YCSFU wp-block-paragraph\">Questo \u00e8 l&#8217;obiettivo di Perceiver, proporre una rete neurale, il pi\u00f9 possibile agnostica ai dati di input. In questo modo:<\/p>\n\n\n<ol class=\"eplus-9osWVd wp-block-list eplus-styles-uid-3aa448\"><li>Pu\u00f2 essere applicata indipendentemente alle immagini, ai testi, agli audio&#8230; (you name it!)<\/li><li>Pu\u00f2 teoricamente processare pi\u00f9 modalit\u00e0 alla volta (immagini e suono ad esempio)<\/li><\/ol>\n\n\n<div class=\"wp-block-image eplus-Z7mCOA\"><figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/arxiv.org\/pdf\/2103.03206.pdf\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-26-alle-19.48.45-1024x321.png\" alt=\"\" class=\"wp-image-2042\" width=\"954\" height=\"299\" srcset=\"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-26-alle-19.48.45-1024x321.png 1024w, https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-26-alle-19.48.45-300x94.png 300w, https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-26-alle-19.48.45-768x241.png 768w, https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-26-alle-19.48.45-615x193.png 615w, https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-26-alle-19.48.45-640x200.png 640w, https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-26-alle-19.48.45.png 1437w\" sizes=\"auto, (max-width: 954px) 100vw, 954px\" \/><\/a><figcaption>Architettura di base (source: <a href=\"https:\/\/arxiv.org\/pdf\/2103.03206.pdf\">https:\/\/arxiv.org\/pdf\/2103.03206.pdf<\/a>)<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"eplus-87JOy8 wp-block-paragraph\">Perceiver si compone di 2 blocchi principali:<\/p>\n\n\n<ul class=\"eplus-26F98k wp-block-list eplus-styles-uid-b944c7\"><li>Cross Attention: ha 2 input, un vettore (latent array) Q e il dato grezzo (byte array) proiettato in K e V. Ha come output un vettore latente della dimensionalit\u00e0 di Q.<\/li><li>Self-attention (Transformer): riceve in input il vettore in uscita dalla cross attention (dimensione |Q|) e restituisce un&#8217;altro vettore (dimensione |Q|)<\/li><\/ul>\n\n\n<p class=\"eplus-CIIaxT wp-block-paragraph\">Q pu\u00f2 essere settato per avere una dimensione agnostica all&#8217;input (<strong>iperparametro<\/strong> (?)). K e V invece sono dipendenti dall&#8217;input.<\/p>\n\n\n\n<p class=\"eplus-5pK9f0 wp-block-paragraph\"><strong>A cosa servono questi vettori?<\/strong> Mentre K, V sono componenti cardine dell&#8217;architettura di &#8220;attention&#8221;, Q viene modificato rispetto alle architetture BERT-like per introdurre dei &#8220;colli di bottiglia&#8221;. Il collo di bottiglia \u00e8 il layer di cross attention, l&#8217;unico che processa direttamente l&#8217;input e ne crea una rappresentazione latente (di dimensione |Q|&lt;&lt;|K|) prima di processarlo con il blocco di transformer.<\/p>\n\n\n\n<p class=\"eplus-wfSDvB wp-block-paragraph\"><strong>Perch\u00e8 tutto ci\u00f2?<\/strong> <\/p>\n\n\n<ol class=\"eplus-3Leb6b wp-block-list eplus-styles-uid-c0f373\"><li>Il transformer (che ha una complessit\u00e0 che scala quadraticamente con la dimensione di input) processer\u00e0 vettori indipendenti dalla dimensione dell&#8217;input. \ud83c\udfaf<\/li><li>La cross attention potr\u00e0 avere in input una &#8220;query&#8221; che viene usata per sapere quali parti dell&#8217;input attenzionare ad ogni layer.<\/li><\/ol>\n\n\n<h4 class=\"eplus-MX7SvD wp-block-heading\">\u26a0\ufe0f Attenzione!<\/h4>\n\n\n\n<div class=\"wp-block-image eplus-aNio4u\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pic2.zhimg.com\/v2-bab1dc8eab6e4ea03adad85f1dd024c1_1440w.jpg?source=172ae18b\" alt=\"\u52a8\u624b\u63a8\u5bfcSelf-attention - \u77e5\u4e4e\" width=\"672\" height=\"370\"\/><figcaption>Visualizzazione dei passi per la self-attention (source: <a href=\"https:\/\/towardsdatascience.com\/illustrated-self-attention-2d627e33b20a\">https:\/\/towardsdatascience.com\/illustrated-self-attention-2d627e33b20a<\/a>)<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"eplus-ffxiAK wp-block-paragraph\">In alto la figura che illustra la self-attention, dove \u00e8 possibile vedere come la complessit\u00e0 sia &#8220;quadratica&#8221; a causa dell&#8217;attenzione distribuita, per ciascun elemento di input verso se stesso <strong>tutti<\/strong> gli altri. Chiedo, per ciascun elemento (pixel, parola) quanta attenzione porre a ciascun elemento della sequenza a cui appartiene.<\/p>\n\n\n\n<p class=\"eplus-nbUuN8 wp-block-paragraph\">Nella cross attention (proposta originariamente nel paper di &#8220;Attention is all you need&#8221;, sezione decoder), l&#8217;attenzione viene &#8220;guidata&#8221; da un query vector che non sar\u00e0 pi\u00f9 della dimensione di K e V (che dipendono dagli input) ma avr\u00e0 una dimensione agnostica all&#8217;input. <\/p>\n\n\n\n<p class=\"eplus-UDTGqA wp-block-paragraph\">Per questo motivo, Q introduce un collo di bottiglia che (1) limita la complessit\u00e0 quadratica del meccanismo di attenzione e (2) permette al blocco di transformers di processare dimensioni &#8220;contenute&#8221; (la self-attention sar\u00e0 calcolata sulla dimensionalit\u00e0 di Q).<\/p>\n\n\n\n<p class=\"eplus-r3hZqh wp-block-paragraph\"><strong>So?<\/strong> Avendo risolto il problema della complessit\u00e0 quadratica della self-attention, si possono fare stack di transformers che sono indipendenti dalla dimensionalit\u00e0 dell&#8217;input (<strong>deeper and deeper<\/strong>). In aggiunta a questo, l&#8217;input che viene ricorrentemente analizzato dalla cross-attention permette di dedurre features sempre pi\u00f9 di alto livello all&#8217;aumentare della profondit\u00e0.<\/p>\n\n\n\n<p class=\"eplus-0vsCrl wp-block-paragraph\"><strong>RNNs<\/strong>: gli autori spiegano come sia possibile condividere i parametri per ciascuno dei singoli blocchi dell&#8217;architettura (eccetto il primo layer). In questo caso la rete diventa molto simile a una rete ricorrente dove, la stessa cella, analizza pi\u00f9 volte l&#8217;input.<\/p>\n\n\n<div class=\"wp-block-columns eplus-5rJeqB is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex eplus-styles-uid-152fe8\">\n<div class=\"wp-block-column eplus-sEFJyR is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-image eplus-f3sr1I\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/erdem.pl\/static\/3dbeb6eb036c37502841a6a0238b0ebd\/14e05\/position-values-45k.png\" alt=\"Understanding Positional Encoding in Transformers - Blog by Kemal Erdem\" width=\"563\" height=\"271\"><figcaption>Illustrazione del &#8220;positional encoding&#8221; (source: <a href=\"https:\/\/erdem.pl\/2021\/05\/understanding-positional-encoding-in-transformers\">https:\/\/erdem.pl\/2021\/05\/understanding-positional-encoding-in-transformers<\/a>)<\/figcaption><\/figure><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column eplus-6zYFcB is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large is-resized eplus-0UE4Uf\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nlp.seas.harvard.edu\/images\/the-annotated-transformer_49_0.png\" alt=\"\" width=\"550\" height=\"191\"><figcaption>Esempio di sinusoidi usate dal positional encoding (source: <a href=\"https:\/\/nlp.seas.harvard.edu\/2018\/04\/03\/attention.html\">https:\/\/nlp.seas.harvard.edu\/2018\/04\/03\/attention.html<\/a>)<\/figcaption><\/figure>\n\n\n\n<p class=\"eplus-TtSbB2 wp-block-paragraph\"><\/p>\n<\/div>\n<\/div>\n\n\n<p class=\"eplus-DQXlcg wp-block-paragraph\">Cos\u00ec come presentata, l&#8217;architettura \u00e8 invariante al cambio di &#8220;posizioni&#8221; nell&#8217;input. Ma un po&#8217; di informazioni a riguardo farebbero comodo no?<\/p>\n\n\n\n<p class=\"eplus-cmGLVS wp-block-paragraph\"><strong>Positional Encodings:<\/strong> Per dare alla rete le informazioni riguardo la posizione di un elemento nel suo insieme (parola nel testo o pixel nell&#8217;immagine), i modelli basati su transformers usano i positional encodings. La sua formulazione \u00e8 elegante e (a mio parere) geniale allo stesso tempo. Si usano delle &#8220;sinusoidi&#8221; di diverse frequenze per dare al modello informazioni locali e globali. Ogni elemento avr\u00e0 un vettore univoco che determiner\u00e0 la sua posizione ma anche &#8220;quanto&#8221; vicino si trova rispetto agli altri elementi. Gli autori ammettono che questo potrebbe essere un controsenso (introdurre un&#8217;informazione sulla posizione potrebbe essere visto come un inductive bias) <strong>MA<\/strong> l&#8217;idea \u00e8 che, la rete avr\u00e0 questa informazione, e sar\u00e0 il training a decidere se e come usarla o ignorarla. <\/p>\n\n\n\n<p class=\"eplus-nGK90C wp-block-paragraph\"> <strong>Nota:<\/strong> la rete non \u00e8 completamente indipendente dalla dimensionalit\u00e0 dell&#8217;input, la cross attention ha una complessit\u00e0 comunque dipendente dalla dimensione dell&#8217;input (K,V).<\/p>\n\n\n\n<h4 class=\"eplus-GddZNM wp-block-heading\">\ud83d\udd2c Esperimenti<\/h4>\n\n\n\n<p class=\"eplus-BpH8ul wp-block-paragraph\">Per chi interessato possono essere analizzati nel dettaglio sfogliando la sezione 4. <\/p>\n\n\n\n<p class=\"eplus-5X26az wp-block-paragraph\"><strong>TLDR<\/strong>: raggiungono ottimi risultati se consideriamo architetture generaliste e non specializzate (con forti inductive bias). Quando si confrontano con architetture molto specializzate (sia in contesto audio e vision) non riescono a raggiungere tali performance. Credo che sia anche normale visto che l&#8217;architettura proposta ha lo scopo di essere generalizzabile su pi\u00f9 domini d&#8217;applicazione.<\/p>\n\n\n\n<h4 class=\"eplus-6YRaCi wp-block-heading\">\ud83d\udcca Analisi<\/h4>\n\n\n\n<div class=\"wp-block-image eplus-g6Zuiz\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-28-alle-12.11.55-1-1024x314.png\" alt=\"\" class=\"wp-image-2060\" width=\"915\" height=\"281\" srcset=\"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-28-alle-12.11.55-1-1024x314.png 1024w, https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-28-alle-12.11.55-1-300x92.png 300w, https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-28-alle-12.11.55-1-768x235.png 768w, https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-28-alle-12.11.55-1-615x189.png 615w, https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Schermata-2021-10-28-alle-12.11.55-1.png 1435w\" sizes=\"auto, (max-width: 915px) 100vw, 915px\" \/><figcaption>Analisi dei parametri (dal paper originale)<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"eplus-cokqQD wp-block-paragraph\">Gli autori hanno analizzato l&#8217;effetto dei parametri nell&#8217;architettura:<\/p>\n\n\n<ul class=\"eplus-XQCEuq wp-block-list eplus-styles-uid-30775a\"><li>\ud83d\ude12 Aumentando la dimensione della rete si hanno risultati migliori.<\/li><li>\ud83e\udd14 Aumentando la dimensione del bottleneck (Q) migliorano le performance <strong>ma<\/strong> aumentandola troppo si peggiora (overfitting ?) <\/li><li>\ud83e\udd14 Aumentare la profondit\u00e0 dei singoli blocchi di transformer porta benefici alle performance finali <\/li><\/ul>\n\n\n<h4 class=\"eplus-XO4E2G wp-block-heading\"><strong>Domande?<\/strong> Per esempio&#8230;<\/h4>\n\n\n<ul class=\"eplus-733jH9 wp-block-list eplus-styles-uid-48a68a\"><li>Come fanno a analizzare i video (solo immagini) che hanno comunque dimensionalit\u00e0 &#8220;enormi&#8221;?<\/li><li>Come fanno ad analizzare video sfruttando la multimodalit\u00e0?<\/li><\/ul>\n\n\n<p class=\"eplus-6n0CBt wp-block-paragraph\">Per i curiosi:<\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file eplus-UsCIxn\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Perceiver_ann_v1.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Incorporamento di Incorporamento di Perceiver_ann_v1..\"><\/object><a href=\"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Perceiver_ann_v1.pdf\">Perceiver_ann_v1<\/a><a href=\"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-content\/uploads\/2021\/10\/Perceiver_ann_v1.pdf\" class=\"wp-block-file__button\" download><\/a><\/div>\n\n\n\n<p class=\"eplus-vx9MAz wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"eplus-FOF2sg wp-block-paragraph\"><\/p>\n\n\n\n<div style=\"height:500px\" aria-hidden=\"true\" class=\"wp-block-spacer eplus-fma8Xg\"><\/div>\n\n\n\n<div style=\"height:500px\" aria-hidden=\"true\" class=\"wp-block-spacer eplus-a8L4W9\"><\/div>\n\n\n\n<p class=\"eplus-NmVEEI wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd17 Paper: https:\/\/arxiv.org\/abs\/2103.03206 (ICML 2021) \ud83d\udc65 Autori: Andrew Jaegle, Felix Gimeno, Andrew Brock, Andrew Zisserman, Oriol Vinyals, Joao Carreira \ud83d\udcc5 Data di pubblicazione: 4 Mar 2021 (v1), 23 Jun 2021(v2) \u203c\ufe0f Cose da sapere Le ConvNets (CNNs) sono delle architetture specifiche introdotte nel 1995 da Yann LeCun. La loro applicazione &hellip;<\/p>\n","protected":false},"author":16,"featured_media":2042,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"editor_plus_copied_stylings":"{}","footnotes":""},"categories":[22],"tags":[],"class_list":["post-2035","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-research"],"_links":{"self":[{"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/posts\/2035","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/comments?post=2035"}],"version-history":[{"count":27,"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/posts\/2035\/revisions"}],"predecessor-version":[{"id":2113,"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/posts\/2035\/revisions\/2113"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/media\/2042"}],"wp:attachment":[{"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/media?parent=2035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/categories?post=2035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dbdmg.polito.it\/dbdmg_web\/wp-json\/wp\/v2\/tags?post=2035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}