andrewekhalel / MLQuestions
en samling av tekniska intervjufrågor för maskininlärning och datorseende engineering positioner.
- 1) Vad är avvägningen mellan bias och varians?
- 2) Vad är gradient nedstigning?
- 3) förklara över-och undermontering och hur man bekämpar dem?
- 4) Hur bekämpar du dimensionalitetens förbannelse?
- 5) Vad är regularisering, varför använder vi det och ger några exempel på vanliga metoder?
- 6) förklara Principal Component Analysis (PCA)?
- 7) Varför används ReLU bättre och oftare än Sigmoid i neurala nätverk?
- 8) med tanke på steg S och kärnstorlekar för varje lager av en (1-dimensionell) CNN, skapa en funktion för att beräkna det mottagliga fältet för en viss nod i nätverket. Detta är bara att hitta hur många ingångsnoder som faktiskt ansluter till en neuron i en CNN.
- 9) implementera anslutna komponenter på en bild / matris.
- 10) implementera en gles matrisklass i C++.
- 11) skapa en funktion för att beräkna en integrerad bild och skapa en annan funktion för att få areasummor från den integrerade bilden.
- 12) hur skulle du ta bort avvikare när du försöker uppskatta ett platt plan från bullriga prover?
- 13) hur verkar CBIR?
- 14)Hur fungerar bildregistrering? Gles vs. tätt optiskt flöde och så vidare.
- 15) Beskriv hur faltning fungerar. Vad sägs om dina ingångar är gråskala vs RGB-bilder? Vad bestämmer formen på nästa lager?
- 16) prata mig igenom hur du skulle skapa en 3D-modell av ett objekt från bild-och djupsensormätningar tagna i alla vinklar runt objektet.
- 17) implementera SQRT(const double & x) utan att använda några speciella funktioner, bara grundläggande aritmetik.
- 18) Omvänd en bitsträng.
- 19) implementera icke maximal undertryckning så effektivt som möjligt.
- 20) Vänd en länkad lista på plats.
- 21) Vad är data normalisering och varför behöver vi det?
- 22) varför använder vi omvälvningar för bilder snarare än bara FC-lager?
- 23) Vad gör CNNs översättning invariant?
- 24) varför har vi maxpooling i klassificering CNN?
- 25) varför har segmentering CNN vanligtvis en kodare-avkodarstil / struktur?
- 26) Vad är betydelsen av återstående nätverk?
- 27) Vad är batch normalisering och varför fungerar det?
- 28) varför skulle du använda många små konvolutionella kärnor som 3×3 snarare än några stora?
- 29) varför behöver vi en valideringsuppsättning och testuppsättning? Vad är skillnaden mellan dem?
- 30) Vad är stratifierad korsvalidering och när ska vi använda den?
- 31) Varför har ensembler vanligtvis högre poäng än enskilda modeller?
- 32) Vad är en obalanserad dataset? Kan du lista några sätt att hantera det?
- 33) kan du förklara skillnaderna mellan övervakad, oövervakad och förstärkningsinlärning?
- 34) Vad är data augmentation? Kan du ge några exempel?
- 35) Vad är Turing test?
- 36) Vad är Precision?
- 37) Vad är Recall?
- 38) definiera F1-poäng.
- 39) vad är kostnad funktion?
- 40) lista olika aktiveringsneuroner eller funktioner.
- 41) definiera inlärningshastighet.
- 42) Vad är Momentum (w.r.t nn optimering)?
- 43) vad är skillnaden mellan Batch Gradient Descent och stokastisk Gradient Descent?
- 44) epok vs Batch vs Iteration.
- 45) Vad är försvinnande lutning?
- 46) Vad är bortfall?
- 47) definiera LSTM.
- 48) lista de viktigaste komponenterna i LSTM.
- 49) lista varianterna av RNN.
- 50) Vad är Autoencoder, namnge några applikationer.
- 51) vilka är komponenterna i GAN?
- 52) Vad är skillnaden mellan boosting och bagging?
- 53) förklara hur en ROC-kurva fungerar.
- 54) vad är skillnaden mellan typ i och typ II-fel?
- 55) Vad är skillnaden mellan en generativ och diskriminerande modell?
- bidrag
1) Vad är avvägningen mellan bias och varians?
om vår modell är för enkel och har väldigt få parametrar kan den ha hög bias och låg varians. Å andra sidan om vår modell har ett stort antal parametrar kommer den att ha hög varians och låg bias. Så vi måste hitta rätt / bra balans utan att överfitta och underfitta data.
2) Vad är gradient nedstigning?
3) förklara över-och undermontering och hur man bekämpar dem?
4) Hur bekämpar du dimensionalitetens förbannelse?
- manuellt funktionsval
- Principal Component Analysis (PCA)
- flerdimensionell skalning
- lokalt linjär inbäddning
5) Vad är regularisering, varför använder vi det och ger några exempel på vanliga metoder?
en teknik som avskräcker att lära sig en mer komplex eller flexibel modell för att undvika risken för överfitting.Exempel
- Ridge (L2 norm)
- Lasso (L1 norm)
den uppenbara nackdelen med ridge regression, är Modell tolkbarhet. Det kommer att krympa koefficienterna för minst viktiga prediktorer, mycket nära noll. Men det kommer aldrig att göra dem exakt noll. Med andra ord kommer den slutliga modellen att innehålla alla prediktorer. När det gäller lasso har L1-straffet emellertid effekten att tvinga några av koefficientberäkningarna att vara exakt lika med noll när inställningsparametern Bisexuell är tillräckligt stor. Därför utför lasso-metoden också variabelt urval och sägs ge glesa modeller.
6) förklara Principal Component Analysis (PCA)?
7) Varför används ReLU bättre och oftare än Sigmoid i neurala nätverk?
Föreställ dig ett nätverk med slumpmässiga initialiserade vikter ( eller normaliserade ) och nästan 50% av nätverket ger 0 aktivering på grund av karaktäristiken för ReLu ( Utgång 0 för negativa värden på x ). Detta innebär att färre neuroner skjuter ( gles aktivering) och nätverket är lättare.
8) med tanke på steg S och kärnstorlekar för varje lager av en (1-dimensionell) CNN, skapa en funktion för att beräkna det mottagliga fältet för en viss nod i nätverket. Detta är bara att hitta hur många ingångsnoder som faktiskt ansluter till en neuron i en CNN.
9) implementera anslutna komponenter på en bild / matris.
10) implementera en gles matrisklass i C++.
11) skapa en funktion för att beräkna en integrerad bild och skapa en annan funktion för att få areasummor från den integrerade bilden.
12) hur skulle du ta bort avvikare när du försöker uppskatta ett platt plan från bullriga prover?
13) hur verkar CBIR?
14)Hur fungerar bildregistrering? Gles vs. tätt optiskt flöde och så vidare.
15) Beskriv hur faltning fungerar. Vad sägs om dina ingångar är gråskala vs RGB-bilder? Vad bestämmer formen på nästa lager?
16) prata mig igenom hur du skulle skapa en 3D-modell av ett objekt från bild-och djupsensormätningar tagna i alla vinklar runt objektet.
17) implementera SQRT(const double & x) utan att använda några speciella funktioner, bara grundläggande aritmetik.
18) Omvänd en bitsträng.
19) implementera icke maximal undertryckning så effektivt som möjligt.
20) Vänd en länkad lista på plats.
21) Vad är data normalisering och varför behöver vi det?
data normalisering är mycket viktigt förbehandlingssteg, som används för att skala om värden för att passa i ett specifikt intervall för att säkerställa bättre konvergens under backpropagation. I allmänhet kokar det ner för att subtrahera medelvärdet för varje datapunkt och dividera med dess standardavvikelse. Om vi inte gör det så kommer några av funktionerna (de med hög storlek) att vägas mer i kostnadsfunktionen (om en högre funktion ändras med 1%, då är den förändringen ganska stor, men för mindre funktioner är det ganska obetydligt). Data normalisering gör alla funktioner vägda lika.
22) varför använder vi omvälvningar för bilder snarare än bara FC-lager?
för det första bevarar, kodar och använder faktiskt den rumsliga informationen från bilden. Om vi bara använde FC-lager skulle vi inte ha någon relativ rumslig information. För det andra har Convolutional Neural Networks (CNN) en Delvis inbyggd översättning in-varians, eftersom varje convolution kernel fungerar som sin egen filter/feature detector.
23) Vad gör CNNs översättning invariant?
som förklarats ovan fungerar varje konvolutionskärna som sin egen filter/feature detector. Så låt oss säga att du gör objektdetektering, det spelar ingen roll var i bilden objektet är eftersom vi kommer att tillämpa fällningen på ett glidande fönstermode över hela bilden ändå.
24) varför har vi maxpooling i klassificering CNN?
för en roll i datorseende. Max-pooling i en CNN kan du minska beräkningen eftersom dina funktionskartor är mindre efter sammanslagningen. Du förlorar inte för mycket semantisk information eftersom du tar maximal aktivering. Det finns också en teori om att max-pooling bidrar lite till att ge CNNs mer översättningsvarians. Kolla in den här fantastiska videon från Andrew Ng om fördelarna med max-pooling.
25) varför har segmentering CNN vanligtvis en kodare-avkodarstil / struktur?
kodaren CNN kan i princip betraktas som ett funktionsextraktionsnätverk, medan avkodaren använder den informationen för att förutsäga bildsegmenten genom att “avkoda” funktionerna och uppskalning till den ursprungliga bildstorleken.
26) Vad är betydelsen av återstående nätverk?
det viktigaste som återstående anslutningar gjorde var att möjliggöra direkt åtkomst från tidigare lager. Detta gör informationsutbredning i hela nätverket mycket enklare. Ett mycket intressant papper om detta visar hur man använder lokala hoppa anslutningar ger nätverket en typ av ensemble multi-path struktur, vilket ger funktioner flera vägar att sprida sig i hela nätverket.
27) Vad är batch normalisering och varför fungerar det?
utbildning av djupa neurala nätverk kompliceras av det faktum att fördelningen av varje lags ingångar ändras under träning, eftersom parametrarna för de tidigare lagren ändras. Tanken är då att normalisera ingångarna i varje lager på ett sådant sätt att de har en genomsnittlig utgångsaktivering av noll och standardavvikelse för en. Detta görs för varje enskild mini-batch vid varje lager, dvs beräkna medelvärdet och variansen för den mini-batchen ensam och normalisera sedan. Detta är analogt med hur ingångarna till nätverk standardiseras. Hur hjälper detta? Vi vet att normalisering av ingångarna till ett nätverk hjälper det att lära sig. Men ett nätverk är bara en serie lager, där utgången från ett lager blir ingången till nästa. Det betyder att vi kan tänka på vilket lager som helst i ett neuralt nätverk som det första lagret i ett mindre efterföljande nätverk. Tänk på som en serie neurala nätverk som matar in i varandra, normaliserar vi utmatningen av ett lager innan vi applicerar aktiveringsfunktionen och matar sedan in den i följande lager (undernätverk).
28) varför skulle du använda många små konvolutionella kärnor som 3×3 snarare än några stora?
detta förklaras mycket väl i vggnet-papperet. Det finns 2 skäl: för det första kan du använda flera mindre kärnor snarare än få stora för att få samma mottagliga fält och fånga mer rumsligt sammanhang, men med de mindre kärnorna använder du mindre parametrar och beräkningar. För det andra, för med mindre kärnor kommer du att använda fler filter, du kommer att kunna använda fler aktiveringsfunktioner och därmed ha en mer diskriminerande kartläggningsfunktion som lärs av din CNN.
29) varför behöver vi en valideringsuppsättning och testuppsättning? Vad är skillnaden mellan dem?
när vi tränar en modell delar vi upp tillgängliga data i tre separata uppsättningar:
- träningsdatasetet används för att anpassa modellens parametrar. Den noggrannhet som vi uppnår på träningsuppsättningen är dock inte tillförlitlig för att förutsäga om modellen kommer att vara korrekt på nya prover.
- valideringsdatauppsättningen används för att mäta hur bra modellen gör på exempel som inte ingick i träningsdatauppsättningen. Mätvärdena som beräknas på valideringsdata kan användas för att ställa in hyperparametrarna för modellen. Men varje gång vi utvärderar valideringsdata och vi fattar beslut baserat på dessa poäng läcker vi information från valideringsdata till vår modell. Ju fler utvärderingar, desto mer information läckt ut. Så vi kan hamna overfitting till valideringsdata, och återigen validering poäng kommer inte att vara tillförlitliga för att förutsäga beteendet hos modellen i den verkliga världen.
- testdataset används för att mäta hur bra modellen gör på tidigare osedda exempel. Den ska bara användas när vi har ställt in parametrarna med valideringsuppsättningen.
så om vi utelämnar testuppsättningen och bara använder en valideringsuppsättning, kommer valideringspoängen inte att vara en bra uppskattning av generaliseringen av modellen.
30) Vad är stratifierad korsvalidering och när ska vi använda den?
Korsvalidering är en teknik för att dela data mellan tränings-och valideringsuppsättningar. Vid typisk korsvalidering görs denna delning slumpmässigt. Men i stratifierad korsvalidering bevarar delningen förhållandet mellan kategorierna på både tränings-och valideringsdataset.
om vi till exempel har en dataset med 10% av kategori A och 90% av kategori B, och vi använder stratifierad korsvalidering, kommer vi att ha samma proportioner i utbildning och validering. Däremot, om vi använder enkel korsvalidering, kan vi i värsta fall upptäcka att det inte finns några prover av kategori A i valideringsuppsättningen.
stratifierad korsvalidering kan tillämpas i följande scenarier:
- på en dataset med flera kategorier. Ju mindre datauppsättningen och ju mer obalanserade kategorierna är, desto viktigare blir det att använda stratifierad korsvalidering.
- på en dataset med data från olika distributioner. Till exempel i en dataset för autonom körning kan vi ha bilder tagna under dagen och på natten. Om vi inte ser till att båda typerna finns i utbildning och validering kommer vi att ha generaliseringsproblem.
31) Varför har ensembler vanligtvis högre poäng än enskilda modeller?
en ensemble är kombinationen av flera Modeller för att skapa en enda förutsägelse. Nyckeltanken för att göra bättre förutsägelser är att modellerna ska göra olika fel. På så sätt kompenseras felen i en modell av de andra modellernas rätt gissningar och därmed blir ensembleens poäng högre.
vi behöver olika modeller för att skapa en ensemble. Mångfald kan uppnås genom:
- använda olika ML-algoritmer. Du kan till exempel kombinera logistisk regression, k-närmaste grannar och beslutsträd.
- använda olika delmängder av data för träning. Detta kallas bagging.
- ger en annan vikt till var och en av proverna i träningsuppsättningen. Om detta görs iterativt, viktning proverna enligt fel i ensemblen, det kallas öka.Många vinnande lösningar på datavetenskapstävlingar är ensembler. Men i verkliga maskininlärningsprojekt måste ingenjörer hitta en balans mellan exekveringstid och noggrannhet.
32) Vad är en obalanserad dataset? Kan du lista några sätt att hantera det?
en obalanserad dataset är en som har olika proportioner av målkategorier. Till exempel, en dataset med medicinska bilder där vi måste upptäcka någon sjukdom kommer vanligtvis att ha många fler negativa prover än positiva prover—säg, 98% av bilderna är utan sjukdomen och 2% av bilderna är med sjukdomen.
det finns olika alternativ för att hantera obalanserade datamängder:
- översampling eller undersampling. Istället för att sampla med en jämn fördelning från träningsdatamängden kan vi använda andra distributioner så att modellen ser en mer balanserad dataset.
- data augmentation. Vi kan lägga till data i de mindre frekventa kategorierna genom att ändra befintliga data på ett kontrollerat sätt. I exempeldatauppsättningen kan vi vända bilderna med sjukdomar eller lägga till ljud i kopior av bilderna på ett sådant sätt att sjukdomen förblir synlig.
- använda lämpliga mätvärden. I exemplet dataset, om vi hade en modell som alltid gjorde negativa förutsägelser, skulle den uppnå en precision på 98%. Det finns andra mätvärden som precision, återkallelse och F-poäng som beskriver modellens noggrannhet bättre när man använder en obalanserad dataset.
33) kan du förklara skillnaderna mellan övervakad, oövervakad och förstärkningsinlärning?
i övervakat lärande tränar vi en modell för att lära oss förhållandet mellan indata och utdata. Vi måste ha märkta data för att kunna göra övervakat lärande.
med oövervakad inlärning har vi bara omärkta data. Modellen lär sig en representation av data. Oövervakad inlärning används ofta för att initiera parametrarna i modellen när vi har mycket omärkt data och en liten del av märkt data. Vi tränar först en oövervakad modell och därefter använder vi modellens vikter för att träna en övervakad modell.
i förstärkningsinlärning har modellen vissa indata och en belöning beroende på modellens utgång. Modellen lär sig en politik som maximerar belöningen. Förstärkningsinlärning har framgångsrikt tillämpats på strategiska spel som Go och till och med klassiska Atari-videospel.
34) Vad är data augmentation? Kan du ge några exempel?
data augmentation är en teknik för att syntetisera nya data genom att modifiera befintliga data på ett sådant sätt att målet inte ändras eller ändras på ett känt sätt.
datorseende är ett av fält där data augmentation är mycket användbar. Det finns många modifieringar som vi kan göra för bilder:
- ändra storlek
- horisontell eller vertikal flip
- rotera
- Lägg till brus
- deformera
- ändra färgvarje problem behöver en anpassad dataförstärkningsrörledning. Till exempel, på OCR, gör flips kommer att ändra texten och kommer inte att vara till nytta; dock, storleksändringar och små rotationer kan hjälpa.
35) Vad är Turing test?
Turing-testet är en metod för att testa maskinens förmåga att matcha intelligensen på mänsklig nivå. En maskin används för att utmana den mänskliga intelligensen att när den klarar testet anses den vara intelligent. Ändå kan en maskin ses som intelligent utan att tillräckligt veta om människor för att efterlikna en människa.
36) Vad är Precision?
Precision (även kallat positivt prediktivt värde) är fraktionen av relevanta instanser bland de hämtade instanserna
Precision = true positive / (true positive + false positive)
37) Vad är Recall?
Recall (även känd som känslighet) är den bråkdel av relevanta instanser som har hämtats över den totala mängden relevanta instanser.Recall = sant positivt / (sant positivt + falskt negativt)
38) definiera F1-poäng.
det är det vägda genomsnittet av precision och återkallelse. Den tar hänsyn till både falskt positivt och falskt negativt. Den används för att mäta modellens prestanda.
F1-Score = 2 * (precision * recall) / (precision + recall)
39) vad är kostnad funktion?
kostnadsfunktion är en skalärfunktion som kvantifierar Felfaktorn i det neurala nätverket. Sänka kostnaden fungerar bättre neurala nätverk. T. ex: mnist-datauppsättning för att klassificera bilden, inmatningsbilden är siffra 2 och det neurala nätverket förutspår felaktigt att det är 3
40) lista olika aktiveringsneuroner eller funktioner.
- linjär Neuron
- binär Tröskelneuron
- stokastisk binär Neuron
- Sigmoid Neuron
- Tanh-funktion
- rektifierad linjär enhet (ReLU)
41) definiera inlärningshastighet.
Learning rate är en hyperparameter som styr hur mycket vi justerar vikterna i vårt nätverk med avseende på förlustgradienten.
42) Vad är Momentum (w.r.t nn optimering)?
Momentum låter optimeringsalgoritmen komma ihåg sitt sista steg och lägger till en del av det till det aktuella steget. På så sätt, även om algoritmen sitter fast i en platt region, eller ett litet lokalt minimum, kan det komma ut och fortsätta mot det sanna minimumet.
43) vad är skillnaden mellan Batch Gradient Descent och stokastisk Gradient Descent?
Batch gradient descent beräknar lutningen med hela datauppsättningen. Detta är bra för konvexa eller relativt släta felgrenrör. I det här fallet går vi något direkt mot en optimal lösning, antingen lokal eller global. Dessutom kommer batch gradient descent, med tanke på en glödgad inlärningshastighet, så småningom att hitta det minsta som ligger i attraktionsbassängen.
stokastisk gradient nedstigning (SGD) beräknar gradienten med ett enda prov. SGD fungerar bra (inte bra, antar jag, men bättre än batch gradient descent) för felgrenrör som har massor av lokala maxima/minima. I det här fallet tenderar den något bullrigare gradienten som beräknas med det reducerade antalet prover att rycka modellen ur lokala minima till en region som förhoppningsvis är mer optimal.
44) epok vs Batch vs Iteration.
epok: ett framåtpass och ett bakåtpass av alla träningsexempel
Batch: exempel som behandlas tillsammans i ett pass (framåt och bakåt)
Iteration: antal träningsexempel / batchstorlek
45) Vad är försvinnande lutning?
när vi lägger till fler och fler dolda lager blir ryggutbredning mindre och mindre användbar för att överföra information till de nedre lagren. I själva verket, när information skickas tillbaka, börjar gradienterna försvinna och bli små i förhållande till nätets vikter.
46) Vad är bortfall?
Dropout är ett enkelt sätt att förhindra att ett neuralt nätverk överfittas. Det är att släppa ut några av enheterna i ett neuralt nätverk. Det liknar den naturliga reproduktionsprocessen, där naturen producerar avkommor genom att kombinera distinkta gener (släppa ut andra) snarare än att stärka samanpassningen av dem.
47) definiera LSTM.
Long Short Term Memory-är uttryckligen utformade för att ta itu med det långsiktiga beroendeproblemet genom att upprätthålla en stat vad man ska komma ihåg och vad man ska glömma.
48) lista de viktigaste komponenterna i LSTM.
- grindar (glöm, minne, uppdatering & Läs)
- tanh (x) (värden mellan -1 till 1)
- Sigmoid (x) (värden mellan 0 till 1)
49) lista varianterna av RNN.
- LSTM: lång korttidsminne
- GRU: Gated återkommande enhet
- slut till slut nätverk
- Minnesnätverk
50) Vad är Autoencoder, namnge några applikationer.
Auto encoder används i grunden för att lära sig en komprimerad form av givna data. Få applikationer inkluderar
- Data denoising
- Dimensionalitetsreduktion
- bildrekonstruktion
- Bildfärgning
51) vilka är komponenterna i GAN?
- Generator
- diskriminator
52) Vad är skillnaden mellan boosting och bagging?
Boosting och bagging är likartade, eftersom de båda är ensemblingstekniker, där ett antal svaga elever (klassificerare/regressorer som knappt är bättre än att gissa) kombinerar (genom medelvärde eller maxröstning) för att skapa en stark elev som kan göra exakta förutsägelser. Bagging innebär att du tar bootstrap-prover (med ersättning) av din datamängd och varje prov tränar en (potentiellt) svag elev. Boosting, å andra sidan, använder all data för att träna varje elev, men instanser som felklassificerades av de tidigare eleverna får mer vikt så att efterföljande elever ger dem mer fokus under träningen.
53) förklara hur en ROC-kurva fungerar.
ROC-kurvan är en grafisk representation av kontrasten mellan sanna positiva hastigheter och den falska positiva hastigheten vid olika tröskelvärden. Det används ofta som en proxy för avvägningen mellan modellens känslighet (sanna positiva) mot fallet eller sannolikheten att det kommer att utlösa ett falskt larm (falska positiva).
54) vad är skillnaden mellan typ i och typ II-fel?
typ i-fel är ett falskt positivt, medan typ II-fel är ett falskt negativt. Kort sagt betyder typ i-fel att hävda att något har hänt när det inte har hänt, medan typ II-fel betyder att du hävdar att ingenting händer när det faktiskt är något.Ett smart sätt att tänka på detta är att tänka på typ i-fel som att berätta för en man att han är gravid, medan typ II-fel betyder att du berättar för en gravid kvinna att hon inte bär en bebis.
55) Vad är skillnaden mellan en generativ och diskriminerande modell?
en generativ modell kommer att lära sig kategorier av data medan en diskriminerande modell helt enkelt kommer att lära sig skillnaden mellan olika kategorier av data. Diskriminerande modeller kommer i allmänhet att överträffa generativa modeller för klassificeringsuppgifter.
bidrag
bidrag är mest välkomna.
- gaffla förvaret.
- begå dina frågor eller svar.
- öppna pull begäran.