Både PCA og autoencoder kan reducere demension, så hvad er forskellen mellem dem? I hvilken situation skal jeg bruge den ene over den anden?
Både PCA og autoencoder kan reducere demension, så hvad er forskellen mellem dem? I hvilken situation skal jeg bruge den ene over den anden?
PCA er begrænset til et lineært kort, mens auto-kodere kan have ikke-lineær enoder / dekodere.
En enkelt-lags automatisk indkoder med lineær overføringsfunktion svarer næsten til PCA, hvor næsten betyder, at $ W $ fundet af AE og PCA vil ikke nødvendigvis være den samme - men underområdet spændt af den respektive $ W $ span> 's vilje.
Som bayerj påpeger, er PCA en metode, der antager lineære systemer, hvor Autoencoders (AE) ikke gør det. Hvis der ikke anvendes nogen ikke-lineær funktion i AE, og antallet af neuroner i det skjulte lag er af mindre dimension, så kan input af input så PCA og AE give det samme resultat. Ellers kan AE finde et andet underrum.
En ting at bemærke er, at det skjulte lag i en AE kan have større dimensionalitet end inputets. I sådanne tilfælde foretager AE muligvis ikke dimensioneringsreduktion. I dette tilfælde opfatter vi dem som en transformation fra et funktionsrum til et andet, hvor dataene i det nye funktionsrum adskiller variationer i faktorer.
Med hensyn til dit spørgsmål om, hvorvidt flere lag betyder meget kompleks ikke-lineær i dit svar til bayerj. Afhængigt af hvad du mener med "meget kompleks ikke-lineær", kan dette være sandt. Dog giver dybde virkelig bedre generalisering. Mange metoder kræver et lige antal prøver svarende til antallet af regioner. Det viser sig imidlertid, at "et meget stort antal regioner, f.eks. $ O (2 ^ N) $, kan defineres med $ O (N) $ -eksempler" ifølge Bengio et al. Dette er et resultat af kompleksiteten i repræsentation, der opstår ved at komponere lavere funktioner fra lavere lag i netværket.
Det aktuelt accepterede svar fra @bayerj siger, at vægten af en lineær autokoder spænder over det samme underområde som de vigtigste komponenter, der findes af PCA, men de er ikke de samme vektorer. Især er de ikke et ortogonalt grundlag. Dette er sandt, gså kan vi nemt gendanne de vigtigste komponenter, der indlæser vektorer fra autokodervægtene. En lille smule notation: lad $ \ {\ mathbf {x} _i \ in \ mathbb {R} ^ n \} _ {i = 1} ^ N $ være et sæt af $ N $ $ n- $ dimensionelle vektorer, som vi ønsker at beregne PCA for, og lad $ X $ være den matrix, hvis kolonner er $ \ mathbf {x} _1, \ dots, \ mathbf {x} _N $. Lad os derefter definere en lineær autokoder som det ene-skjulte neurale netværk defineret af følgende ligninger:
$$ \ begin {align} \ mathbf {h} _1 & = \ mathbf {W} _1 \ mathbf {x} + \ mathbf {b} _1 \\ \ hat {\ mathbf {x}} & = \ mathbf {W} _2 \ mathbf {h} _1 + \ mathbf {b} _2 \ end {align} $$
hvor $ \ hat {\ mathbf {x}} $ er output fra den (lineære) autoencoder, betegnet med en hat for at understrege det faktum, at outputtet fra en autoencoder er en "rekonstruktion" af input. Bemærk, at det skjulte lag har mindre enheder end inputlaget, da det er mest almindeligt med autokodere, dvs. $ W_1 \ i \ mathbb {R} ^ {n \ gange m} $ og $ W_2 \ i \ mathbb {R} ^ {m \ times n} $ med $ m < n $.
Beregn nu de første $ m $ entalvektorer på $ W_2 $ efter træning af din lineære autokoder. Det er muligt at bevise, at disse entalvektorer faktisk er de første $ m $ hovedkomponenter på $ X $, og beviset er i Plaut, E., Fra hovedunderrum til hovedkomponenter med lineære autokodere, Arxiv .org: 1804.10253.
Da SVD faktisk er den algoritme, der almindeligvis bruges til at beregne PCA, kan det virke meningsløst at først træne en lineær autokoder og derefter anvende SVD på $ W_2 $ for at gendanne de første $ m $ -belastningsvektorer i stedet for direkte at anvende SVDtil $ X $.Pointen er, at $ X $ er en $ n \ gange N $ -matrix, mens en $ W_2 $ er $ m \ gange n $.Nu er tidskompleksiteten af SVD for $ W_2 $ $ O (m ^ 2n) $, mens for $ X $ er $ O (n ^ 2N) $ med $ m < n $, kan der således opnås en vis besparelse (enddahvis ikke så stor som påstået af forfatteren af det papir, jeg linker).Der er selvfølgelig andre mere nyttige tilgange til at beregne PCA for Big Data (randomiseret online PCA kommer til at tænke på), men hovedpunktet i denne ækvivalens mellem lineære autokodere og PCA er ikke at finde en praktisk måde at beregne PCA på for enorme datasæt: det handler mere om at give os en intuition om forbindelserne mellem autokodere og andre statistiske tilgange til dimensionreduktion.
Det generelle svar er, at autoassocierende neurale netværk kan udføre ikke-lineær dimensionalitetsreduktion. Træning af netværket er generelt ikke så hurtigt som PCA, så kompromiset er beregningsressourcer versus udtryksfuld magt.
Der var dog en forvirring i detaljerne, hvilket er en almindelig misforståelse. Det er rigtigt, at auto-associerede netværk med lineære aktiveringsfunktioner er enige med PCA, uanset antallet af skjulte lag. Imidlertid hvis der kun er 1 skjult lag (input-skjult-output), er det optimale auto-associerende netværk stadig enig med PCA, selv med ikke-lineære aktiveringsfunktioner. For det originale bevis se 1988 papir af Bourlard og Kamp. Chris Bishop's bog har en god oversigt over situationen i kap.12.4.2:
Man kunne tro, at begrænsningerne ved en lineær dimensionalitetsreduktion kunne overvindes ved hjælp af ikke-lineære (sigmoidale) aktiveringsfunktioner til de skjulte enheder i netværket i figur 12.18. Selv med ikke-lineære skjulte enheder gives den mindste fejlløsning imidlertid igen ved projiceringen på hovedkomponentens underområde (Bourlard og Kamp, 1988). Der er derfor ingen fordel ved at bruge to-lags neurale netværk til at udføre dimensionalitetsreduktion.