Quali sono i principali teoremi dell'apprendimento automatico (profondo)?


45

Al Rahimi ha recentemente tenuto un discorso molto provocatorio in NIPS 2017 confrontando l'attuale Machine Learning con l'alchimia. Una delle sue affermazioni è che dobbiamo tornare agli sviluppi teorici, per avere teoremi semplici che dimostrino risultati fondamentali.

Quando lo ha detto, ho iniziato a cercare i principali teoremi per ML, ma non sono riuscito a trovare un buon riferimento dando un senso ai risultati principali. Quindi, ecco la mia domanda: quali sono i principali teoremi matematici attuali (teoria) in ML / DL e cosa dimostrano? Immagino che il lavoro di Vapnik andrebbe da qualche parte qui. Come extra, quali sono i principali problemi teorici aperti?


3
@Tim Questo thead è del tipo con stats.stackexchange.com/questions/2379/… ("Quali sono i grandi problemi nelle statistiche?").
whuber

2
È un po 'ampio. Potresti almeno specificare un sottoinsieme di Machine Learning? Se ci limitiamo al Deep Learning, o almeno all'apprendimento supervisionato, si potrebbe tentare una risposta. Ma se insisti su qualcosa come "Matematica dell'apprendimento automatico", una risposta richiederà anni per scrivere.
DeltaIV

3
Alla luce dell'analogo dell'esempio di @ whuber, sono propenso a dire che dovrebbe rimanere aperto come CW, specialmente se questo può essere limitato a un sottoinsieme specifico di ML, come l' apprendimento supervisionato , come richiesto da DeltaV.
gung - Ripristina Monica

3
@DeltaIV Nota che "Deep" è nel titolo.
ameba dice di reintegrare Monica il

4
La comprensione di questa domanda è stata l'argomento di una recente serie di lezioni ospitate da David Donoho: vedi stats385.github.io .
user795305

Risposte:


43

Come ho scritto nei commenti, questa domanda mi sembra troppo ampia, ma cercherò di rispondere. Per stabilire alcuni limiti, inizierò con un po 'di matematica che sta alla base della maggior parte delle ML, e poi mi concentrerò sui risultati recenti per DL.


Il compromesso della variazione di bias è indicato in innumerevoli libri, corsi, MOOC, blog, tweet, ecc. Su ML, quindi non possiamo iniziare senza menzionarlo:

E[(Yf^(X))2|X=x0]=σϵ2+(Ef^(x0)f(x0))2+E[(f^(x0)Ef^(x0))2]=Irreducible error + Bias2 + Variance

Prova qui: https://web.stanford.edu/~hastie/ElemStatLearn/


Il teorema di Gauss-Markov (sì, la regressione lineare rimarrà una parte importante dell'apprendimento automatico, non importa cosa: affrontarlo) chiarisce che, quando il modello lineare è vero e alcune ipotesi sul termine dell'errore sono valide, OLS ha il minimo errore quadratico medio (che nell'espressione precedente è solo ) solo tra gli stimatori lineari imparziali del modello lineare. Pertanto, potrebbero esserci degli stimatori lineari con bias (o stimatori non lineari) che presentano un errore quadratico medio migliore e quindi un errore di previsione atteso migliore rispetto a OLS. E questo apre la strada a tutto l'arsenale di regolarizzazione (regressione della cresta, LASSO, decadimento del peso, ecc.) Che è un cavallo di battaglia di ML. Una prova è fornita qui (e in innumerevoli altri libri): Bias2 + Variancehttps://www.amazon.com/Linear-Statistical-Models-James-Stapleton/dp/0470231467

Probabilmente più rilevante per l'esplosione degli approcci di regolarizzazione, come osservato da Carlos Cinelli nei commenti, e sicuramente più divertente da imparare, è il teorema di James-Stein . Considera variabili indipendenti, stessa varianza ma non media media gaussiana:n

Xi|μiN(θi,σ2),i=1,,n

in altre parole, abbiamo un vettore casuale gaussiano componenti . Abbiamo un campione da e vogliamo stimare . Lo stimatore MLE (e anche UMVUE) è ovviamente . Considera lo stimatore di James-SteinnXN(θ,σ2I)xXθθ^MLE=x

θ^JS=(1(n2)σ2||x||2)x

Chiaramente, se , riduce la stima MLE verso zero. Il teorema di James-Stein afferma che per , domina rigorosamente , cioè ha MSE inferiore . Pheraps sorprendentemente, anche se ci restringiamo verso qualsiasi altro costante , domina ancora . Dal momento che(n2)σ2||x||2θ^JS n4θ^JS θ^MLE θc0θ^JSθ^MLEXisono indipendenti, può sembrare strano che, quando si cerca di stimare l'altezza di tre persone non correlate, incluso un campione del numero di mele prodotte in Spagna, può migliorare la nostra stima in media . Il punto chiave qui è "in media": l'errore quadratico medio per la stima simultanea di tutti i componenti del vettore dei parametri è più piccolo, ma l'errore quadrato per uno o più componenti può benissimo essere maggiore, e infatti spesso lo è, quando hai osservazioni "estreme".

Scoprire che l'MLE, che era davvero lo stimatore "ottimale" per il caso di stima univariata, fu detronizzato per la stima multivariata, fu piuttosto uno shock al momento e portò a un grande interesse per il restringimento, meglio noto come regolarizzazione nel linguaggio ML. Si potrebbero notare alcune somiglianze con i modelli misti e il concetto di "forza di prestito": c'è davvero qualche connessione, come discusso qui

Vista unificata sulla contrazione: qual è la relazione (se presente) tra il paradosso di Stein, la regressione della cresta e gli effetti casuali nei modelli misti?

Riferimento: James, W., Stein, C., Stima con perdita quadratica . Atti del quarto simposio di Berkeley su statistica matematica e probabilità, volume 1: contributi alla teoria della statistica, 361-379, University of California Press, Berkeley, California, 1961


L'analisi dei componenti principali è la chiave dell'importante argomento della riduzione dimensionale ed è basata sulla decomposizione del valore singolare : per ogni matrice reale (sebbene il teorema si generalizzi facilmente a matrici complesse) possiamo scrivereN×pX

X=UDVT

dove di dimensione è ortogonale, è una matrice diagonale con elementi diagonali non negativi e di dimensione è di nuovo ortogonale. Per prove e algoritmi su come calcolarlo vedi: Golub, G. e Van Loan, C. (1983), i calcoli Matrix , la John Hopkins University Press, Baltimora.UN×pDp×pUp×p


Il teorema di Mercer è la pietra miliare per molti metodi ML diversi: spline sottili, macchine vettoriali di supporto, stima Kriging di un processo casuale gaussiano, ecc. Fondamentalmente, è uno dei due teoremi dietro il cosiddetto trucco del kernel . Sia essere una funzione o kernel simmetrica continua. se è un semidefinito positivo, allora ammette una base ortoornormale di autofunzioni corrispondenti a autovalori non negativi:K(x,y):[a,b]×[a,b]RK

K(x,y)=i=1γiϕi(x)ϕi(y)

L'importanza di questo teorema per la teoria ML è testimoniata dal numero di riferimenti che ottiene in testi famosi, come ad esempio il testo di Rasmussen & Williams sui processi gaussiani .

Riferimento: J. Mercer, Funzioni di tipo positivo e negativo e loro connessione con la teoria delle equazioni integrali. Transazioni filosofiche della Royal Society of London. Serie A, contenenti documenti di carattere matematico o fisico, 209: 415-446, 1909

C'è anche una presentazione più semplice in Konrad Jörgens, operatori integrali lineari , Pitman, Boston, 1982.


L'altro teorema che, insieme al teorema di Mercer, stabilisce le basi teoriche del trucco del kernel, è il teorema del rappresentante . Supponiamo di avere uno spazio campione e un kernel semidefinito positivo simmetrico . Lascia anche essere i RKHS associati . Infine, sia un esempio di training. Il teorema dice che tra tutte le funzioni , tutte ammettono una rappresentazione infinita in termini di autofunzioni diXK:X×XRHKKS={xi,yi}i=1nfHKKa causa del teorema di Mercer, quello che minimizza il rischio regolarizzato ha sempre una rappresentazione finita nella base formata dal kernel valutata in punti di addestramento, cioèn

minfHKi=1nL(yi,f(xi))+λ||f||HK2=min{cj}1i=1nL(yi,jcjϕj(xi))+λjcj2γj=i=1nαiK(x,xi)

(il teorema è l'ultima uguaglianza). Riferimenti: Wahba, G. 1990, Spline Models for Observational Data , SIAM, Filadelfia.


Il teorema di approssimazione universale è già stato citato dall'utente Tobias Windisch ed è molto meno rilevante per l'apprendimento automatico rispetto all'analisi funzionale, anche se potrebbe non sembrare a prima vista. Il problema è che il teorema dice solo che esiste una tale rete, ma:

  • non fornisce alcuna correlazione tra la dimensione del livello nascosto e una certa misura della complessità della funzione target , come ad esempio Variazione totale. Se e la richiesta per un errore fisso cresce in modo esponenziale con , quindi neurale singolo strato nascosto le reti sarebbero inutili.Nf(x)f(x)=sin(ωx):[0,2π][1,1]Nϵω
  • non dice se la rete è apprendibile . In altre parole, supponiamo che, dato e , sappiamo che una dimensione approssimerà con la tolleranza richiesta nell'ipercubo. Quindi, utilizzando set di allenamento di dimensione e una procedura di apprendimento come ad esempio il back-prop, abbiamo qualche garanzia che aumentando possiamo recuperare ?F(x)fϵNfMMF
  • infine, e peggio ancora, non dice nulla sull'errore di predizione delle reti neurali. Quello che stiamo veramente interessati a è una stima dell'errore di predizione, almeno come media su tutti i set di allenamento di dimensioni . Il teorema non aiuta in questo senso.M

Un piccolo punto debole con la versione di Hornik di questo teorema è che non vale per le funzioni di attivazione di ReLU. Tuttavia, da allora Bartlett ha dimostrato una versione estesa che copre questo divario.


Fino ad ora, immagino che tutti i teoremi che ho considerato fossero noti a nessuno. Quindi ora è il momento delle cose divertenti :-) Vediamo alcuni teoremi del Deep Learning :

ipotesi:

  • la rete neurale profonda (per fissa , è la funzione che associa gli ingressi della rete neurale alle sue uscite) e la perdita di regolarizzazione sono entrambe somme positive funzioni omogenee dello stesso gradoΦ(X,W)WΦW(X)Θ(W)
  • la funzione di perdita è convessa e una volta differenziabile in , in un set compattoL(Y,Φ(X,W)XS

Poi:

  • qualsiasi minimo locale per tale che una sottorete di abbia pesi zero, è un minimo globale ( Teorema 1 )L(Y,Φ(X,W))+λΘ(W)Φ(X,W)
  • al di sopra di una dimensione critica della rete, la discesa locale converge sempre al minimo globale da qualsiasi inizializzazione ( Teorema 2 ).

Questo è molto interessante: le CNN fatte solo di strati convoluzionali, ReLU, max-pooling, ReLU completamente collegati e strati lineari sono funzioni omogenee positivamente , mentre se includiamo funzioni di attivazione sigmoide, questo non è più vero, il che potrebbe spiegare in parte il superiore prestazioni in alcune applicazioni del pooling ReLU + max rispetto ai sigmoidi. Inoltre, i teoremi valgono solo se anche è positivamente omogeneo in dello stesso grado di . Ora, il fatto divertente è che la regolarizzazione o , sebbene positivamente omogenea, non ha lo stesso grado di (il grado diΘWΦl1l2ΦΦ, nel semplice caso della CNN menzionato in precedenza, aumenta con il numero di strati). Invece, metodi di regolarizzazione più moderni come la normalizzazione in lotti e path-SGD corrispondono a una funzione di regolarizzazione positivamente omogenea dello stesso grado di , e il dropout, pur non adattandosi esattamente a questo framework, ha forti somiglianze con esso. Questo potrebbe spiegare perché, al fine di ottenere un'elevata precisione con le CNN, la regolarizzazione e non sono sufficienti, ma dobbiamo impiegare tutti i tipi di trucchi diabolici, come dropout e normalizzazione batch! Per quanto ne so, questa è la cosa più vicina a una spiegazione dell'efficacia della normalizzazione in lotti, che è altrimenti molto oscura, come correttamente osservato da Al Rahimi nel suo discorso.Φl1l2

Un'altra osservazione che alcune persone fanno, basata sul Teorema 1 , è che potrebbe spiegare perché ReLU funziona bene, anche con il problema dei neuroni morti . Secondo questa intuizione, il fatto che, durante l'allenamento, alcuni neuroni ReLU "muoiano" (vai all'attivazione zero e poi non si riprendono più da quello, poiché per il gradiente di ReLU è zero) è "una caratteristica, non un bug ", perché se abbiamo raggiunto un minimo e una sottorete completa è morta, allora siamo dimostratamente raggiunti un minimo globale (secondo le ipotesi del Teorema 1x<0). Forse mi manca qualcosa, ma penso che questa interpretazione sia inverosimile. Prima di tutto, durante l'allenamento, le ReLU possono "morire" molto prima di raggiungere un minimo locale. In secondo luogo, deve essere dimostrato che quando le unità ReLU "muoiono", lo fanno sempre su una sottorete completa: l'unico caso in cui ciò è banalmente vero è quando hai solo un livello nascosto, nel qual caso ovviamente ogni singolo neurone è una sottorete. Ma in generale sarei molto cauto nel vedere i "neuroni morti" come una cosa positiva.

Riferimenti:

B. Haeffele e R. Vidal, Ottimalità globale nella formazione delle reti neurali , In Conferenza IEEE su Computer Vision e Pattern Recognition, 2017.

B. Haeffele e R. Vidal. Ottimalità globale nella fattorizzazione tensoriale, apprendimento profondo e oltre , arXiv, abs / 1506.07540, 2015.


La classificazione delle immagini richiede rappresentazioni di apprendimento che sono invarianti (o almeno robuste, cioè molto sensibili) a varie trasformazioni come posizione, posa, punto di vista, illuminazione, espressione, ecc. Che sono comunemente presenti nelle immagini naturali, ma non contengono informazioni per l'attività di classificazione. Stessa cosa per il riconoscimento vocale: cambiamenti di tonalità, volume, ritmo, accento. ecc. non dovrebbe portare a un cambiamento nella classificazione della parola. Operazioni come convoluzione, pool massimo, pool medio, ecc., Utilizzate nelle CNN, hanno esattamente questo obiettivo, così intuitivamente ci aspettiamo che funzionino per queste applicazioni. Ma abbiamo teoremi per supportare questa intuizione? Esiste un teorema di invarianza della traduzione verticale, che, nonostante il nome, non ha nulla a che fare con la traduzione in direzione verticale, ma è fondamentalmente un risultato che afferma che le caratteristiche apprese nei livelli seguenti diventano sempre più invarianti, con l'aumentare del numero di livelli. Ciò si contrappone a un vecchio teorema di invarianza della traduzione orizzontale che tuttavia vale per le reti di diffusione, ma non per le CNN. Il teorema è molto tecnico, tuttavia:

  • si supponga che (l'immagine di input) sia integrabile al quadratof
  • supponiamo che il tuo filtro permuta con l'operatore di traduzione , che mappa l'immagine di input su una copia tradotta di se stesso . Un kernel di convoluzione appreso (filtro) soddisfa questa ipotesi.TtfTtf
  • supponiamo che tutti i filtri, le non linearità e i pool nella vostra rete soddisfino una cosiddetta condizione di ammissibilità debole , che è fondamentalmente una sorta di condizioni di regolarità e limitatezza deboli. Queste condizioni sono soddisfatte dal kernel di convoluzione appreso (fintanto che viene eseguita un'operazione di normalizzazione su ogni livello), ReLU, sigmoid, tanh, ecc., Non linearità e dal pool medio, ma non dal pool massimo. Quindi copre alcune (non tutte) architetture della CNN nel mondo reale.
  • Supponiamo infine che ogni livello abbia un fattore di raggruppamento , vale a dire che il raggruppamento viene applicato in ogni livello e scarta efficacemente le informazioni. La condizione sarebbe anche sufficiente per una versione più debole del teorema.nSn>1Sn1

Indicare con l'output del layer della CNN, quando l'input è . Quindi infine:Φn(f)nf

limn|||Φn(Tff)Φn(f)|||=0

(le barre triple non sono un errore) il che significa sostanzialmente che ogni livello apprende caratteristiche che diventano sempre più invarianti e che nel limite di una rete infinitamente profonda abbiamo un'architettura perfettamente invariante. Poiché le CNN hanno un numero finito di strati, non sono perfettamente invarianti per la traduzione, il che è qualcosa di ben noto ai professionisti.

Riferimento: T. Wiatowski e H. Bolcskei, una teoria matematica delle reti neurali convoluzionali profonde per l'estrazione di caratteristiche , arXiv: 1512.06293v3 .


Per concludere, numerosi limiti per l'errore di generalizzazione di una rete neurale profonda basata sulla sua dimensione Vapnik-Chervonkensis o sulla complessità di Rademacher crescono con il numero di parametri (alcuni addirittura in modo esponenziale), il che significa che non possono spiegare perché i DNN funzionano così bene in pratica anche quando il numero di parametri è considerevolmente maggiore del numero di campioni di addestramento. È un dato di fatto, la teoria del VC non è molto utile nel Deep Learning.

Al contrario, alcuni risultati dello scorso anno hanno associato l'errore di generalizzazione di un classificatore DNN con una quantità che è indipendente dalla profondità e dalle dimensioni della rete neurale, ma dipende solo dalla struttura del set di addestramento e dallo spazio di input. Sotto alcune ipotesi piuttosto tecniche sulla procedura di apprendimento, sul set di addestramento e sullo spazio di input, ma con ipotesi molto ridotte sul DNN (in particolare, le CNN sono completamente coperte), quindi con probabilità almeno , abbiamo1δ

GE2log2NyNγm+2log(1/δ)m

dove:

  • GE è l'errore di generalizzazione, definito come la differenza tra la perdita attesa (la perdita media del classificatore appreso su tutti i possibili punti di prova) e la perdita empirica (solo il buon vecchio set di addestramento)
  • Ny è il numero di classi
  • m è la dimensione del set di allenamento
  • Nγ è il numero di copertura dei dati, una quantità correlata alla struttura dello spazio di input e alla separazione minima tra i punti di diverse classi nel set di addestramento. Riferimento:

J. Sokolic, R. Giryes, G. Sapiro e M. Rodrigues. Errore di generalizzazione dei classificatori invarianti . In AISTATS, 2017


2
+1. Ottima risposta, l'ultima parte è molto intrigante. Nella prima parte, il teorema di Mercer sembra proprio SVD che hai presentato appena sopra.
ameba dice di reintegrare Monica il

1
@amoeba, hai ragione, ma 1) non tutti i lettori sono così matematici come te, che riconosceranno immediatamente la somiglianza tra SVD, l'espansione Karhunen- Loeve e il teorema di Mercer. Inoltre 2) l'altro teorema di Analisi funzionale che "alimenta" il trucco del kernel, e che ho scelto di non includere, è più difficile da spiegare rispetto al teorema di Mercer, e ho già eliminato il mio sabato :-) Forse lo aggiungerò domani!
DeltaIV

1
Gauss Markov sembra fuori posto, non ha mai visto nessuno preoccuparsi di BLUE nella comunità ML.
Carlos Cinelli,

2
Concordo sul fatto che, come regola generale, il riferimento (arcaico) di solito ha una notazione noiosa. Detto questo, la carta di Mercer è in realtà sorprendentemente moderna in questo aspetto e l'ho aggiunta proprio per questo. :) (ho detto inizialmente, questa è un'ottima risposta, questo è solo un commento dopo la votazione)
usεr11852 dice Reinstate Monic il

2
Mi piace il teorema di Mercer qui, non rimuoverlo. E perché non avere entrambi i link? Basta aggiungere smth come See [here] for a modern exposition, o viceversa, "per il documento originale".
ameba dice di reintegrare Monica il

11

Penso che il seguente teorema a cui alludi sia considerato piuttosto fondamentale nell'apprendimento statistico.

Teorema (Vapnik e Chervonenkis, 1971) Sia una classe di ipotesi di funzioni da un dominio a e lascia che la funzione di perdita sia la perdita . Quindi, i seguenti sono equivalenti:HX{0,1}01

  1. H ha la proprietà di convergenza uniforme.
  2. H è PAC apprendibile.
  3. H ha una dimensione VC finita.

Dimostrato in una versione quantitativa qui:

VN Vapnik e AY Chervonenkis: sulla convergenza uniforme delle frequenze relative degli eventi alle loro probabilità. Teoria della probabilità e sue applicazioni, 16 (2): 264–280, 1971.

La versione formulata sopra insieme a una bella esposizione di altri risultati della teoria dell'apprendimento è disponibile qui :

Shalev-Shwartz, Shai e Shai Ben-David. Comprensione dell'apprendimento automatico: dalla teoria agli algoritmi. Pressa universitaria di Cambridge, 2014.



4

La mia preferita è la disuguaglianza di Kraft.

Teorema: per qualsiasi metodo di descrizione per alfabeto finito , le lunghezze delle parole in codice devono soddisfare la disuguaglianza .CA={1,,m}LC(1),,LC(2)xA2LC(x)1

Questa disuguaglianza mette in relazione la compressione con le densità di probabilità : dato un codice, la lunghezza di un risultato rappresentato da quel codice è la probabilità di log negativa di un modello identificato dal codice.

Inoltre, il teorema del pranzo libero per l'apprendimento automatico ha un fratello meno noto del teorema della non iper compressione, che afferma che non tutte le sequenze possono essere compresse.


4

Non lo definirei un teorema principale , ma penso che quanto segue (a volte indicato come teorema di approssimazione universale) sia interessante (e almeno per me sorprendente) in quanto afferma la potenza approssimativa delle reti neurali feed-forward.

Teorema: Sia una funzione continua non costante e in aumento monotinicamente. Per qualsiasi funzione continua e qualsiasi , esiste una interna e una percezione multistrato con un livello nascosto con neuroni che ha come attivazione funziona cosìσf:[0,1]mRϵ>0NFNσ

|F(x)f(x)|ϵ
per tutti .x[0,1]m

Naturalmente, poiché questa è una dichiarazione sull'esistenza , il suo impatto per i praticanti è trascurabile.

Una prova può essere trovata in Hornik, Funzionalità di approssimazione di Muitilayer Feedforward Networks, Neural Networks 4 (2), 1991,


5
Questo teorema è un po 'poco interessante in quanto non è particolare per le reti neurali. Molte altre classi di funzioni condividono proprietà di approssimazione simili (e talvolta più forti). Vedi ad esempio il teorema di Stone-Weierstrass. Un risultato più interessante sarebbe la coerenza della regressione della rete neurale in un quadro generale. Inoltre, devono esserci limiti noti sull'errore di generalizzazione medio in termini di complessità della rete e dimensioni del campione di addestramento.
Olivier,

1
@Olivier: sono totalmente d'accordo. Ma anche se questo teorema non è dedicato esclusivamente alle reti neurali, trovo comunque la sua affermazione, la sua prova rigorosa e le sue implicazioni interessanti. Ad esempio, afferma che finché si utilizza una funzione di attivazione con le proprietà sopra indicate, la capacità approssimativa della rete è la stessa (in termini approssimativi). Oppure, dice che le reti neurali sono prive di sovralimentazione poiché puoi già imparare molto con uno strato nascosto.
Tobias Windisch,

1
Non dice esattamente questo. Dice solo che esiste una rete neurale con un livello nascosto che può rappresentare , ma non ti dice nulla su come cresce con , ad esempio, o con una certa misura della complessità di (ad esempio la sua variazione totale ). Non ti dice se puoi i pesi della tua rete, dati dati. Scoprirai che in molti casi interessanti è esponenzialmente più grande per le reti a un livello nascosto rispetto alle reti multistrato (profonde). Ecco perché nessuno usa una rete di livelli nascosti per ImageNet o per Kaggle. fNmflearnN
DeltaIV

@DeltaIV: nell'ultima frase del mio precedente commento c'è un errore di battitura: la parola "impara" dovrebbe in realtà essere "approssimativa" (altrimenti la mia affermazione sul "sovradimensionamento" non avrebbe senso). Grazie per il suggerimento!
Tobias Windisch,

Sì, l'ho interpretato nel senso di "approssimazione". Il mio punto è che anche se sai che in teoria puoi approssimare qualsiasi funzione (su un ipercubo limitato) con un solo strato nascosto NN, in pratica è inutile in molti casi. Un altro esempio: i processi gaussiani con il kernel esponenziale quadrato hanno la proprietà di approssimazione universale, ma non hanno eliminato tutti gli altri metodi di regressione, anche a causa del fatto che per alcuni problemi il numero di campioni necessari per un'approssimazione accurata aumenta esponenzialmente.
DeltaIV

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.