andrewekhalel / Mlvragen

a collection of technical interview questions for machine learning and computer vision engineering positions.

1) Wat is de trade-off tussen bias en variantie?

als Ons model te eenvoudig is en zeer weinig parameters heeft, kan het een hoge bias en een lage variantie hebben. Aan de andere kant, als Ons model een groot aantal parameters heeft dan zal het een hoge variantie en een lage bias hebben. We moeten dus de juiste/goede balans vinden zonder overbevissing en onderaanpassing van de gegevens.

2) Wat is gradiëntafdaling?

3) over – en onder-fitting uitleggen en hoe ze te bestrijden?

4) Hoe bestrijdt u de vloek van dimensionaliteit?

  • handmatige functieselectie
  • Hoofdcomponentanalyse (PCA)
  • multidimensionale schaling
  • lokaal lineair inbedden

5) Wat is regularisatie, waarom gebruiken we het, en geven we enkele voorbeelden van gemeenschappelijke methoden?

een techniek die het leren van een complexer of flexibeler model ontmoedigt om het risico van overbevissing te vermijden.Voorbeelden

  • Ridge (L2-norm)
  • Lasso (L1-norm)
    het voor de hand liggende nadeel van ridge regressie is modelinterpreteerbaarheid. Het zal de coëfficiënten voor de minst belangrijke voorspellers verkleinen, zeer dicht bij nul. Maar het zal ze nooit precies nul maken. Met andere woorden, het uiteindelijke model zal alle voorspellers omvatten. In het geval van de lasso heeft de L1-straf echter tot gevolg dat sommige schattingen van de coëfficiënt exact gelijk zijn aan nul wanneer de afstemmingsparameter λ voldoende groot is. Daarom voert de lasso-methode ook variabele selectie uit en levert naar verluidt schaarse modellen op.

6) Principal Component Analysis (PCA) uitleggen?

7) Waarom wordt ReLU beter en vaker gebruikt dan Sigmoid in neurale netwerken?

stel je een netwerk voor met willekeurige geïnitialiseerde gewichten ( of genormaliseerde ) en bijna 50% van het netwerk geeft 0 activering vanwege de eigenschap van ReLu ( output 0 voor negatieve waarden van x ). Dit betekent dat er minder neuronen vuren ( weinig activering) en het netwerk lichter is.

8) gegeven de grootte van de stappen en kernels voor elke laag van een (1-dimensionale) CNN, Maak een functie aan om het receptieve veld van een bepaalde knoop in het netwerk te berekenen. Dit is gewoon het vinden van hoeveel inputknooppunten daadwerkelijk verbinden met een neuron in een CNN.

9) implementeer verbonden componenten op een afbeelding / matrix.

10) implementeer een schaarse matrixklasse in C++.

11) Maak een functie aan om een integraal beeld te berekenen, en maak een andere functie aan om oppervlaktesommen van het integraal beeld te krijgen.

12) Hoe zou u uitschieters verwijderen wanneer u probeert een vlak vlak uit lawaaierige monsters te schatten?

13) Hoe werkt CBIR?

14) Hoe werkt afbeeldingsregistratie? Sparse vs dichte optische stroom en ga zo maar door.

15) beschrijf hoe convolutie werkt. Hoe zit het als uw ingangen zijn grijswaarden vs RGB beelden? Wat bepaalt de vorm van de volgende laag?

16) vertel me hoe u een 3D-model van een object zou maken aan de hand van beelden en dieptesensormetingen die onder alle hoeken om het object worden uitgevoerd.

17) implementeer SQRT (const double & x) zonder speciale functies te gebruiken, alleen fundamentele rekenkunde.

18) een bitstring omkeren.

19) implementeer niet-maximale onderdrukking zo efficiënt als u kunt.

20) een gekoppelde lijst omkeren.

21) Wat is data normalisatie en waarom hebben we het nodig?

de normalisatie van gegevens is een zeer belangrijke preprocesstap, die wordt gebruikt om waarden te herschalen zodat ze binnen een specifiek bereik passen om een betere convergentie tijdens de backpropagatie te verzekeren. In het algemeen komt het neer op het aftrekken van het gemiddelde van elk gegevenspunt en delen door de standaardafwijking. Als we dit niet doen dan zullen sommige van de functies (die met een hoge magnitude) meer worden gewogen in de kostenfunctie (als een hogere magnitude functie verandert met 1%, dan is die verandering vrij groot, maar voor kleinere functies is het vrij onbeduidend). De data normalisatie maakt alle functies gelijkelijk gewogen.

22) waarom gebruiken we convoluties voor afbeeldingen in plaats van alleen FC-lagen?

ten eerste bewaren, coderen en gebruiken convoluties de ruimtelijke informatie uit de afbeelding. Als we alleen FC-lagen zouden gebruiken, zouden we geen relatieve ruimtelijke informatie hebben. Ten tweede, Convolutional Neural Networks (CNNs) hebben een gedeeltelijk ingebouwde vertaling in-variance, omdat elke convolution kernel fungeert als zijn eigen filter/functie detector.

23) Wat maakt CNNs-vertaling invariant?

zoals hierboven uitgelegd, werkt elke convolutiekernel als zijn eigen filter / feature detector. Dus laten we zeggen dat je objectdetectie doet, het maakt niet uit waar in de afbeelding het object is, want we gaan de convolutie toepassen in een schuifraam mode over het hele beeld hoe dan ook.

24) Waarom hebben we max-pooling in classificatie CNNs?

voor een rol in computervisie. Max-pooling in een CNN kunt u de berekening te verminderen, omdat uw functie kaarten zijn kleiner na de pooling. Je verliest niet te veel semantische informatie omdat je de maximale activering neemt. Er is ook een theorie dat max-pooling een beetje bijdraagt aan het geven van CNNs meer vertaling in-variantie. Bekijk deze geweldige video van Andrew Ng over de voordelen van max-pooling.

25) Waarom hebben segmentatie CNNs meestal een encoder-decoder stijl / structuur?

de encoder CNN kan in principe gezien worden als een extractie netwerk, terwijl de decoder die informatie gebruikt om de beeldsegmenten te voorspellen door de functies te “decoderen” en te opschalen naar de oorspronkelijke afbeeldingsgrootte.

26) Wat is de Betekenis van Restnetwerken?

het belangrijkste wat restverbindingen deden was directe toegang tot functies toestaan vanuit vorige lagen. Dit maakt informatieverspreiding in het hele netwerk veel gemakkelijker. Een zeer interessante paper over dit laat zien hoe het gebruik van lokale skip verbindingen geeft het netwerk een soort ensemble multi-pad structuur, waardoor functies Meerdere paden te verspreiden door het netwerk.

27) Wat is batch normalisatie en waarom werkt het?

het trainen van diepe neurale netwerken wordt bemoeilijkt door het feit dat de verdeling van de input van elke laag verandert tijdens de training, als de parameters van de vorige lagen veranderen. Het idee is dan om de ingangen van elke laag zo te normaliseren dat ze een gemiddelde outputactivering van nul en standaardafwijking van één hebben. Dit wordt gedaan voor elke individuele mini-batch op elke laag dat wil zeggen bereken het gemiddelde en de variantie van die mini-batch alleen, dan normaliseren. Dit is analoog aan hoe de ingangen naar netwerken worden gestandaardiseerd. Hoe helpt dit? We weten dat het normaliseren van de ingangen naar een netwerk helpt het te leren. Maar een netwerk is slechts een reeks lagen, waarbij de uitvoer van de ene laag de invoer naar de volgende wordt. Dat betekent dat we elke laag in een neuraal netwerk kunnen zien als de eerste laag van een kleiner volgend netwerk. Gezien als een reeks neurale netwerken die elkaar voeden, normaliseren we de uitvoer van één laag voordat we de activeringsfunctie toepassen, en voeden we deze vervolgens in de volgende laag (subnetwerk).

28) waarom zou je veel kleine convolutionele kernels zoals 3×3 gebruiken in plaats van een paar grote?

dit wordt zeer goed uitgelegd in het vggnet-document. Er zijn 2 redenen: Ten eerste kun je meerdere kleinere kernels gebruiken in plaats van enkele grote om hetzelfde ontvankelijke veld te krijgen en meer ruimtelijke context vast te leggen, maar met de kleinere kernels gebruik je minder parameters en berekeningen. Ten tweede, omdat je met kleinere kernels meer filters zult gebruiken, zul je in staat zijn om meer activeringsfuncties te gebruiken en dus een meer discriminerende mapping functie te hebben die geleerd wordt door je CNN.

29) Waarom hebben we een validatieset en testset nodig? Wat is het verschil tussen hen?

bij het trainen van een model verdelen we de beschikbare gegevens in drie afzonderlijke sets:

  • de trainingsdataset wordt gebruikt om de parameters van het model aan te passen. De nauwkeurigheid die we bereiken op de trainingsset is echter niet betrouwbaar om te voorspellen of het model accuraat zal zijn op nieuwe monsters.
  • de validatiedataset wordt gebruikt om te meten hoe goed het model het doet aan de hand van voorbeelden die geen deel uitmaakten van de trainingsdataset. De metrics berekend op de validatiegegevens kunnen worden gebruikt om de hyperparameters van het model af te stemmen. Echter, elke keer als we de validatiegegevens evalueren en we beslissingen nemen op basis van die scores, lekken we informatie uit de validatiegegevens in ons model. Hoe meer evaluaties, hoe meer informatie wordt gelekt. Zo kunnen we uiteindelijk overvliegen naar de validatiegegevens, en opnieuw zal de validatiescore niet betrouwbaar zijn voor het voorspellen van het gedrag van het model in de echte wereld.
  • de testdataset wordt gebruikt om te meten hoe goed het model het doet op eerder ongeziene voorbeelden. Het mag alleen worden gebruikt als we de parameters hebben afgestemd met behulp van de validatieset.

dus als we de testset weglaten en alleen een validatieset gebruiken, zal de validatiescore geen goede schatting zijn van de generalisatie van het model.

30) Wat is gestratificeerde kruisvalidatie en wanneer moeten we het gebruiken?

kruisvalidatie is een techniek voor het verdelen van gegevens tussen trainings-en validatiesets. Bij typische kruisvalidatie wordt deze splitsing willekeurig gedaan. Maar in gestratificeerde cross-validatie, de splitsing behoudt de verhouding van de categorieën op zowel de training en validatie datasets.

bijvoorbeeld, als we een dataset hebben met 10% van categorie A en 90% van categorie B, en we gebruik maken van gestratificeerde kruisvalidatie, zullen we dezelfde proporties hebben in training en validatie. Als we daarentegen eenvoudige kruisvalidatie gebruiken, kunnen we in het slechtste geval vaststellen dat er geen monsters van categorie A in de validatieset zijn.

gestratificeerde kruisvalidatie kan worden toegepast in de volgende scenario ‘ s:

  • op een dataset met meerdere categorieën. Hoe kleiner de dataset en hoe onevenwichtiger de categorieën, hoe belangrijker het zal zijn om gestratificeerde kruisvalidatie te gebruiken.
  • op een dataset met gegevens van verschillende distributies. Bijvoorbeeld, in een dataset voor autonoom rijden, kunnen we beelden hebben genomen tijdens de dag en ‘ s nachts. Als we er niet voor zorgen dat beide typen in opleiding en validatie aanwezig zijn, zullen we generalisatieproblemen hebben.

31) Waarom hebben ensembles doorgaans hogere scores dan individuele modellen?

een ensemble is de combinatie van meerdere modellen om een enkele voorspelling te maken. Het belangrijkste idee voor het maken van betere voorspellingen is dat de modellen verschillende fouten moeten maken. Op die manier worden de fouten van het ene model gecompenseerd door de juiste inschattingen van de andere modellen en is de score van het ensemble hoger.

we hebben diverse modellen nodig om een ensemble te maken. Diversiteit kan worden bereikt door:

  • met behulp van verschillende ml algoritmen. U kunt bijvoorbeeld logistieke regressie, k-dichtstbijzijnde buren en beslissingsbomen combineren.
  • gebruikmakend van verschillende deelverzamelingen van de gegevens voor de opleiding. Dit heet bagging.
  • geeft een verschillend gewicht aan elk van de monsters van de trainingsset. Als dit iteratief wordt gedaan, weging van de monsters volgens de fouten van het ensemble, het heet stimuleren.Veel winnende oplossingen voor Data science wedstrijden zijn ensembles. In real-life machine learning-projecten moeten ingenieurs echter een evenwicht vinden tussen uitvoeringstijd en nauwkeurigheid.

32) wat is een onevenwichtige dataset? Kun je een aantal manieren opnoemen om ermee om te gaan?

een onevenwichtige dataset heeft verschillende percentages van doelcategorieën. Bijvoorbeeld, een dataset met medische beelden waar we sommige ziekte moeten ontdekken zal typisch veel meer negatieve steekproeven dan positieve steekproeven hebben-zeg, 98% van beelden zijn zonder de ziekte en 2% van beelden zijn met de ziekte.

er zijn verschillende opties om met onevenwichtige datasets om te gaan:

  • Overbemonstering of onderbemonstering. In plaats van sampling met een uniforme distributie vanuit de trainingsdataset, kunnen we andere distributies gebruiken, zodat het model een meer gebalanceerde dataset ziet.
  • gegevensvergroting. We kunnen gegevens in de minder frequente categorieën toevoegen door bestaande gegevens op een gecontroleerde manier aan te passen. In de voorbeelddataset kunnen we de beelden omdraaien met ziekten, of ruis toevoegen aan kopieën van de beelden op een zodanige manier dat de ziekte zichtbaar blijft.
  • met behulp van geschikte maatstaven. In het voorbeeld dataset, als we een model hadden dat altijd negatieve voorspellingen deed, zou het een precisie van 98% bereiken. Er zijn andere metrics zoals precisie, recall en F-score die de nauwkeurigheid van het model beter beschrijven wanneer een onevenwichtige dataset wordt gebruikt.

33) kunt u de verschillen tussen begeleid, zonder toezicht, en versterking leren verklaren?

in begeleid leren trainen we een model om de relatie tussen input data en output data te leren. We hebben gelabelde data nodig om begeleid te kunnen leren.

bij het leren zonder toezicht hebben we alleen gegevens zonder label. Het model leert een weergave van de gegevens. Unsupervised learning wordt vaak gebruikt om de parameters van het model te initialiseren wanneer we veel niet-gelabelde gegevens en een klein deel van gelabelde gegevens hebben. We trainen eerst een model zonder toezicht en daarna gebruiken we de gewichten van het model om een model met toezicht te trainen.

in reinforcement learning heeft het model enkele inputgegevens en een beloning, afhankelijk van de output van het model. Het model leert een beleid dat de beloning maximaliseert. Reinforcement learning is met succes toegepast op strategische games zoals Go en zelfs klassieke Atari video games.

34) Wat is gegevensvergroting? Kunt u enkele voorbeelden geven?

data augmentation is een techniek om nieuwe gegevens samen te stellen door bestaande gegevens zodanig te wijzigen dat het doel niet of op een bekende manier wordt gewijzigd.

computervisie is een van de velden waar gegevensvergroting zeer nuttig is. Er zijn veel aanpassingen die we kunnen doen aan afbeeldingen:

  • Formaat wijzigen
  • horizontaal of verticaal spiegelen
  • roteren
  • ruis toevoegen
  • vervormen
  • kleur wijzigen elk probleem heeft een aangepaste data-augmentatiepijplijn nodig. Bijvoorbeeld, op OCR, het doen van flips zal de tekst te veranderen en zal niet nuttig zijn; echter, resizes en kleine rotaties kunnen helpen.

35) Wat is Turing test?

de Turing-test is een methode om het vermogen van de machine te testen om de intelligentie op menselijk niveau te evenaren. Een machine wordt gebruikt om de menselijke intelligentie uit te dagen dat wanneer het de test doorstaat, het als intelligent wordt beschouwd. Toch kan een machine gezien worden als intelligent zonder voldoende kennis over mensen om een mens na te bootsen.

36) Wat is precisie?

precisie (ook wel positieve voorspellende waarde genoemd) is de fractie van relevante gevallen onder de opgehaalde gevallen
precisie = true positive / (true positive + false positive)

37) Wat is terugroepen?

Recall (ook bekend als gevoeligheid) is de fractie van relevante gevallen die zijn opgehaald over het totale aantal relevante gevallen.Recall = true positive / (true positive + false negative)

38) definieer F1-score.

het is het gewogen gemiddelde van precisie en terugroeping. Het houdt rekening met zowel vals-positief als vals-negatief. Het wordt gebruikt om de prestaties van het model te meten.
F1-Score = 2 * (precision * recall) / (precision + recall)

39) Wat is de kostenfunctie?

kostenfunctie is een scalaire functie die de foutfactor van het neurale netwerk kwantificeert. Verlaag de kosten functie beter het neurale netwerk. Bijvoorbeeld: MNIST-gegevensset om het beeld te classificeren, is het invoerbeeld cijfer 2 en het neurale netwerk voorspelt ten onrechte dat het 3

40 Is) Lijst verschillende activeringsneuronen of-functies.

  • lineair Neuron
  • binaire drempel Neuron
  • stochastisch binair Neuron
  • sigmoïd Neuron
  • Tanh-functie
  • gerectificeerde Lineaire eenheid (ReLU))

41) definieer Leersnelheid.

Leersnelheid is een hyper-parameter die bepaalt hoeveel we de gewichten van ons netwerk aanpassen met betrekking tot de verliesgradiënt.

42) Wat is Momentum (w.r.t NN optimalisatie)?

Momentum laat het optimalisatiealgoritme zijn laatste stap onthouden en voegt een deel ervan toe aan de huidige stap. Op deze manier, zelfs als het algoritme vast zit in een vlakke regio, of een klein lokaal minimum, kan het eruit komen en doorgaan naar het echte minimum.

43) Wat is het verschil tussen Batch Gradiëntafdaling en stochastische Gradiëntafdaling?

Batch gradiënt descent berekent de gradiënt met behulp van de hele dataset. Dit is geweldig voor convexe, of relatief gladde error manifolds. In dit geval gaan we enigszins direct naar een optimale oplossing, lokaal of mondiaal. Bovendien, batch gradiënt afdaling, gegeven een ontharde Leersnelheid, zal uiteindelijk het minimum gelegen in het bassin van aantrekkingskracht vinden.

Stochastic gradient descent (SGD) berekent de gradiënt met behulp van één monster. SGD werkt goed (niet goed, denk ik, maar beter dan batch gradient descent) voor fout variëteiten die veel lokale maxima/minima hebben. In dit geval, de enigszins lawaaieriger gradiënt berekend met behulp van het verminderde aantal monsters heeft de neiging om het model ruk uit de lokale minima in een regio die hopelijk meer optimaal.

44) Epoch vs Batch vs iteratie.

Epoch: één voorwaartse pas en één achterwaartse pas van alle trainingsvoorbeelden
partij: voorbeelden samen verwerkt in één pas (vooruit en achteruit)
iteratie: aantal trainingsvoorbeelden / batchgrootte

45) Wat is verdwijnend verloop?

naarmate we meer en meer verborgen lagen toevoegen, wordt rugvermeerdering steeds minder nuttig bij het doorgeven van informatie aan de onderste lagen. In feite, als informatie wordt doorgegeven, de gradiënten beginnen te verdwijnen en worden klein ten opzichte van de gewichten van de netwerken.

46) wat zijn voortijdige schoolverlaters?

uitval is een eenvoudige manier om te voorkomen dat een neuraal netwerk overfitting. Het is het wegvallen van sommige eenheden in een neuraal netwerk. Het is vergelijkbaar met het natuurlijke voortplantingsproces, waar de natuur Nakomelingen voortbrengt door verschillende genen te combineren (andere uit te schakelen) in plaats van de co-aanpassing ervan te versterken.

47) definieer LSTM.

lange-termijngeheugen-zijn expliciet ontworpen om het probleem van de afhankelijkheid op lange termijn aan te pakken, door een toestand te behouden wat te onthouden en wat te vergeten.

48) Toon de belangrijkste componenten van LSTM.

  • Gates (forget, Memory, update & Read)
  • tanh (x) (waarden tussen -1 en 1)
  • Sigmoid (x) (waarden tussen 0 en 1)

49) lijst de varianten van RNN.

  • LSTM: langetermijngeheugen
  • GRU: gated Recurrent Unit
  • End to End Network
  • Memory Network

50) Wat is Autoencoder, naam paar toepassingen.

Auto encoder wordt in principe gebruikt om een gecomprimeerde vorm van gegeven gegevens te leren. Enkele toepassingen zijn

  • data-denoising
  • Dimensionaliteitsreductie
  • beeldreconstructie
  • beeldkleuring

51) Wat zijn de componenten van GAN?

  • Generator
  • Discriminator

52) Wat is het verschil tussen boosten en zakken?

Boosting en bagging zijn vergelijkbaar, in die zin dat ze beide ensemblerende technieken zijn, waarbij een aantal zwakke leerlingen (classifiers/regressors die nauwelijks beter zijn dan raden) combineren (door middel van gemiddelde of maximale stem) om een sterke leerling te creëren die accurate voorspellingen kan doen. Bagging betekent dat je bootstrap samples neemt (met vervanging) van je dataset en elke sample traint een (potentieel) zwakke leerling. Boosting daarentegen gebruikt alle gegevens om elke leerling te trainen, maar gevallen die door de vorige leerlingen verkeerd zijn geclassificeerd, krijgen meer gewicht zodat de volgende leerlingen tijdens de training meer aandacht aan hen geven.

53) leg uit hoe een ROC-curve werkt.

de ROC-curve is een grafische weergave van het contrast tussen echte positieve en fout-positieve waarden bij verschillende drempels. Het wordt vaak gebruikt als een proxy voor de trade-off tussen de gevoeligheid van het model (true positieven) versus de fall-out of de kans dat het een vals alarm zal triggeren (false positieven).

54) Wat is het verschil tussen type I-en type II-fout?

Type I-fout is een fout-positief, terwijl Type II-fout een fout-negatief is. Kort gezegd, Type I fout betekent beweren dat er iets is gebeurd als het niet is gebeurd, terwijl Type II fout betekent dat u beweert dat er niets gebeurt als er in feite iets is.Een slimme manier om hierover na te denken is te denken aan Type I fout als het vertellen van een man dat hij zwanger is, terwijl Type II fout betekent dat je een zwangere vrouw vertelt dat ze geen baby draagt.

55) Wat is het verschil tussen een generatief en discriminatief model?

een generatief model zal categorieën van gegevens leren, terwijl een discriminatief model gewoon het onderscheid tussen verschillende categorieën van gegevens leert. Discriminatieve modellen zullen over het algemeen beter presteren dan generatieve modellen voor classificatietaken.

bijdragen

bijdragen zijn zeer welkom.

  1. Fork de repository.
  2. geef uw vragen of antwoorden op.
  3. open pull request.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.