andrewekhalel / MLQuestions

o colecție de întrebări tehnice de interviu pentru machine learning și poziții de inginerie computer vision.

1) Care este compromisul dintre părtinire și varianță?

dacă modelul nostru este prea simplu și are foarte puțini parametri, atunci poate avea o părtinire ridicată și o variație scăzută. Pe de altă parte, dacă modelul nostru are un număr mare de parametri, atunci va avea o variație ridicată și o părtinire scăzută. Deci, trebuie să găsim echilibrul corect / bun fără a suprasolicita și a subfitta datele.

2) Ce este coborârea gradientului?

3) explicați supra – și sub-montaj și cum să le combată?

4) Cum combateți blestemul dimensionalității?

  • Selectarea manuală a caracteristicilor
  • analiza componentelor principale (PCA)
  • scalare multidimensională
  • încorporare liniară locală

5) Ce este regularizarea, de ce o folosim și oferim câteva exemple de metode comune?

o tehnică care descurajează învățarea unui model mai complex sau mai flexibil, pentru a evita riscul de suprasolicitare.Exemple

  • Ridge (norma L2)
  • Lasso (norma L1)
    dezavantajul evident al regresiei ridge, este interpretabilitatea modelului. Acesta va micșora coeficienții pentru predictorii cel mai puțin importanți, foarte aproape de zero. Dar nu le va face niciodată exact zero. Cu alte cuvinte, modelul final va include toți predictorii. Cu toate acestea, în cazul lasso-ului, penalizarea L1 are efectul de a forța o parte din estimările coeficientului să fie exact egale cu zero atunci când parametrul de tuning XV este suficient de mare. Prin urmare, metoda lasso efectuează, de asemenea, o selecție variabilă și se spune că produce modele rare.

6) explicați analiza componentelor principale (PCA)?

7) De ce este ReLU mai bun și mai des folosit decât sigmoidul în rețelele neuronale?

Imaginați-vă o rețea cu ponderi aleatoare inițializate ( sau normalizate ) și aproape 50% din rețea produce activarea 0 datorită caracteristicii ReLu ( ieșire 0 pentru valorile negative ale lui x ). Aceasta înseamnă că mai puțini neuroni trag ( activare rară) și rețeaua este mai ușoară.

8) dat pas s și dimensiuni de kernel pentru fiecare strat al unui (1-dimensional) CNN, creați o funcție pentru a calcula câmpul receptiv al unui anumit nod din rețea. Aceasta este doar găsirea numărului de noduri de intrare care se conectează de fapt la un neuron într-un CNN.

9) implementați componentele conectate pe o imagine/matrice.

10) implementați o clasă de matrice rară în c++.

11) creați o funcție pentru a calcula o imagine integrală și creați o altă funcție pentru a obține sume de suprafață din imaginea integrală.

12) cum ați elimina valorile aberante atunci când încercați să estimați un plan plat din eșantioane zgomotoase?

13) Cum acționează CBIR?

14) Cum funcționează înregistrarea imaginilor? Flux optic rar vs. dens și așa mai departe.

15) descrie cum funcționează convoluția. Ce zici dacă intrările dvs. sunt imagini în tonuri de gri vs RGB? Ce determină forma stratului următor?

16) Vorbește-mi despre cum ai crea un model 3D al unui obiect din imagini și măsurători ale senzorului de adâncime luate în toate unghiurile din jurul obiectului.

17) implementați sqrt(const double & x) fără a utiliza funcții speciale, doar aritmetică fundamentală.

18) inversați un șir de biți.

19) implementați suprimarea non maximă cât mai eficient posibil.

20) inversați o listă legată în loc.

21) Ce este normalizarea datelor și de ce avem nevoie de ea?

normalizarea datelor este o etapă de preprocesare foarte importantă, utilizată pentru a redimensiona valorile pentru a se încadra într-un anumit interval pentru a asigura o mai bună convergență în timpul propagării inverse. În general, se reduce la scăderea mediei fiecărui punct de date și împărțirea la abaterea sa standard. Dacă nu facem acest lucru, atunci unele dintre caracteristici (cele cu magnitudine mare) vor fi ponderate mai mult în funcția de cost (dacă o caracteristică cu magnitudine mai mare se modifică cu 1%, atunci schimbarea este destul de mare, dar pentru caracteristicile mai mici este destul de nesemnificativă). Normalizarea datelor face ca toate caracteristicile să fie ponderate în mod egal.

22) de ce folosim convoluții pentru imagini, mai degrabă decât doar straturi FC?

în primul rând, convoluțiile păstrează, codifică și folosesc de fapt informațiile spațiale din imagine. Dacă am folosi doar straturi FC, nu am avea informații spațiale relative. În al doilea rând, rețelele neuronale convoluționale (CNN) au o traducere parțial încorporată în varianță, deoarece fiecare nucleu de convoluție acționează ca propriul detector de filtre/caracteristici.

23) ce face ca traducerea CNNs să fie invariantă?

după cum sa explicat mai sus, fiecare nucleu convoluție acționează ca propriul filtru/caracteristică detector. Deci, să presupunem că faceți detectarea obiectelor, nu contează unde în imagine este obiectul, deoarece vom aplica convoluția într-o manieră glisantă pe întreaga imagine oricum.

24) de ce avem max-pooling în clasificarea CNNs?

pentru un rol în viziunea computerizată. Max-punerea în comun într-un CNN vă permite să reduceți calculul, deoarece hărțile dvs. de caracteristici sunt mai mici după punerea în comun. Nu pierdeți prea multe informații semantice, deoarece luați activarea maximă. Există, de asemenea, o teorie care max-pooling contribuie un pic pentru a da CNNs mai mult traducere în varianță. Check out acest Mare video de la Andrew Ng cu privire la beneficiile max-pooling.

25) de ce CNN-urile de segmentare au de obicei un stil / structură codificator-decodificator?

encoderul CNN poate fi considerat practic ca o rețea de extragere a caracteristicilor, în timp ce decodorul folosește aceste informații pentru a prezice segmentele de imagine prin “decodarea” caracteristicilor și creșterea la dimensiunea originală a imaginii.

26) care este semnificația rețelelor reziduale?

principalul lucru pe care conexiunile reziduale l-au făcut a fost să permită accesul direct al caracteristicilor din straturile anterioare. Acest lucru face propagarea informațiilor în întreaga rețea mult mai ușoară. O lucrare foarte interesantă despre acest lucru arată cum utilizarea conexiunilor skip locale oferă rețelei un tip de structură multi-cale de ansamblu, oferind caracteristici mai multe căi de propagat în întreaga rețea.

27) Ce este normalizarea lotului și de ce funcționează?

formarea rețelelor neuronale profunde este complicată de faptul că distribuția intrărilor fiecărui strat se schimbă în timpul antrenamentului, pe măsură ce parametrii straturilor anterioare se schimbă. Ideea este apoi de a normaliza intrările fiecărui strat în așa fel încât să aibă o activare medie de ieșire a deviației zero și standard a unuia. Acest lucru se face pentru fiecare mini-lot individual la fiecare strat, adică calculați media și varianța acelui mini-lot singur, apoi normalizați. Acest lucru este similar cu modul în care intrările în rețele sunt standardizate. Cum ajută asta? Știm că normalizarea intrărilor într-o rețea o ajută să învețe. Dar o rețea este doar o serie de straturi, unde ieșirea unui strat devine intrarea la următorul. Asta înseamnă că ne putem gândi la orice strat dintr-o rețea neuronală ca la primul strat al unei rețele ulterioare mai mici. Gândit ca o serie de rețele neuronale care se alimentează reciproc, normalizăm ieșirea unui strat înainte de a aplica funcția de activare și apoi îl alimentăm în următorul strat (sub-rețea).

28) de ce ați folosi mai multe nuclee convoluționale mici, cum ar fi 3×3, decât câteva mari?

acest lucru este foarte bine explicat în lucrarea VGGNet. Există 2 motive: în primul rând, puteți utiliza mai multe nuclee mai mici decât câteva mari pentru a obține același câmp receptiv și pentru a capta mai mult context spațial, dar cu nucleele mai mici utilizați mai puțini parametri și calcule. În al doilea rând, deoarece cu nucleele mai mici veți folosi mai multe filtre, veți putea utiliza mai multe funcții de activare și, astfel, veți avea o funcție de cartografiere mai discriminatorie învățată de CNN.

29) de ce avem nevoie de un set de validare și un set de testare? Care este diferența dintre ele?

când antrenăm un model, împărțim datele disponibile în trei seturi separate:

  • setul de date de instruire este utilizat pentru montarea parametrilor modelului. Cu toate acestea, precizia pe care o obținem pe setul de antrenament nu este fiabilă pentru a prezice dacă modelul va fi corect pe eșantioane noi.
  • setul de date de validare este utilizat pentru a măsura cât de bine se descurcă modelul pe exemple care nu făceau parte din setul de date de instruire. Valorile calculate pe datele de validare pot fi utilizate pentru a regla hiperparametrii modelului. Cu toate acestea, de fiecare dată când evaluăm datele de validare și luăm decizii pe baza acestor scoruri, scurgem informații din datele de validare în modelul nostru. Cu cât sunt mai multe evaluări, cu atât mai multe informații sunt scurse. Deci, putem ajunge overfitting la datele de validare, și încă o dată scorul de validare nu va fi de încredere pentru a prezice comportamentul modelului în lumea reală.
  • setul de date de testare este utilizat pentru a măsura cât de bine se descurcă modelul pe exemple nevăzute anterior. Ar trebui să fie utilizat numai după ce am reglat parametrii folosind setul de validare.

deci, dacă omitem setul de testare și folosim doar un set de validare, scorul de validare nu va fi o estimare bună a generalizării modelului.

30) Ce este validarea încrucișată stratificată și când ar trebui să o folosim?

validarea încrucișată este o tehnică pentru împărțirea datelor între seturi de instruire și validare. La validarea încrucișată tipică, această împărțire se face aleatoriu. Dar în validarea încrucișată stratificată, împărțirea păstrează raportul categoriilor atât pe seturile de date de formare, cât și pe cele de validare.

de exemplu, dacă avem un set de date cu 10% din categoria A și 90% din categoria B și folosim validare încrucișată stratificată, vom avea aceleași proporții în formare și validare. În schimb, dacă folosim validare încrucișată simplă, în cel mai rău caz putem constata că nu există eșantioane din categoria A în setul de validare.

validarea încrucișată stratificată poate fi aplicată în următoarele scenarii:

  • pe un set de date cu mai multe categorii. Cu cât setul de date este mai mic și categoriile sunt mai dezechilibrate, cu atât va fi mai important să se utilizeze validarea încrucișată stratificată.
  • pe un set de date cu date de distribuții diferite. De exemplu, într-un set de date pentru conducere autonomă, este posibil să avem imagini realizate în timpul zilei și noaptea. Dacă nu ne asigurăm că ambele tipuri sunt prezente în formare și validare, vom avea probleme de generalizare.

31) de ce ansamblurile au de obicei scoruri mai mari decât modelele individuale?

un ansamblu este combinația mai multor modele pentru a crea o singură predicție. Ideea cheie pentru a face predicții mai bune este că modelele ar trebui să facă diferite erori. În acest fel, erorile unui model vor fi compensate de presupunerile corecte ale celorlalte modele și astfel scorul ansamblului va fi mai mare.

avem nevoie de modele diverse pentru crearea unui ansamblu. Diversitatea se poate realiza prin:

  • folosind diferite algoritmi ML. De exemplu, puteți combina regresia logistică, k-vecinii cei mai apropiați și copacii de decizie.
  • folosind diferite subseturi de date pentru instruire. Aceasta se numește insacuire.
  • dând o greutate diferită fiecăruia dintre eșantioanele setului de antrenament. Dacă acest lucru se face iterativ, ponderarea eșantioanelor în funcție de erorile ansamblului, se numește boosting.Multe soluții câștigătoare la competițiile de știință a datelor sunt ansambluri. Cu toate acestea, în proiectele de învățare automată din viața reală, inginerii trebuie să găsească un echilibru între timpul de execuție și precizie.

32) ce este un set de date dezechilibrat? Puteți enumera câteva modalități de a face față?

un set de date dezechilibrat este unul care are proporții diferite de categorii țintă. De exemplu, un set de date cu imagini medicale în care trebuie să detectăm o anumită boală va avea de obicei mult mai multe probe negative decât probe pozitive—să zicem, 98% din imagini sunt fără boală și 2% din imagini sunt cu boala.

există diferite opțiuni pentru a face față seturilor de date dezechilibrate:

  • Oversampling sau undersampling. În loc să eșantionăm cu o distribuție uniformă din setul de date de instruire, putem folosi alte distribuții, astfel încât modelul să vadă un set de date mai echilibrat.
  • augmentarea datelor. Putem adăuga date în categoriile mai puțin frecvente modificând datele existente într-un mod controlat. În setul de date exemplu, am putea răsturna imaginile cu boli, sau adăuga zgomot la copii ale imaginilor în așa fel încât boala rămâne vizibilă.
  • folosind valori adecvate. În setul de date exemplu, dacă am avea un model care a făcut întotdeauna predicții negative, ar atinge o precizie de 98%. Există și alte valori, cum ar fi precizia, rechemarea și scorul F, care descriu mai bine acuratețea modelului atunci când se utilizează un set de date dezechilibrat.

33) puteți explica diferențele dintre învățarea supravegheată, nesupravegheată și cea de întărire?

în învățarea supravegheată, pregătim un model pentru a învăța relația dintre datele de intrare și datele de ieșire. Trebuie să avem date etichetate pentru a putea face învățare supravegheată.

cu învățarea nesupravegheată, avem doar date neetichetate. Modelul învață o reprezentare a datelor. Învățarea nesupravegheată este frecvent utilizată pentru a inițializa parametrii modelului atunci când avem o mulțime de date neetichetate și o mică parte din datele etichetate. Mai întâi antrenăm un model nesupravegheat și, după aceea, folosim greutățile modelului pentru a instrui un model supravegheat.

în învățarea întăririi, modelul are câteva date de intrare și o recompensă în funcție de rezultatul modelului. Modelul învață o politică care maximizează recompensa. Învățarea prin întărire a fost aplicată cu succes jocurilor strategice, cum ar fi Go și chiar jocurile video clasice Atari.

34) ce este augmentarea datelor? Puteți da câteva exemple?

augmentarea datelor este o tehnică pentru sintetizarea datelor noi prin modificarea datelor existente în așa fel încât ținta să nu fie modificată sau să fie modificată într-un mod cunoscut.

viziunea computerizată este unul dintre domeniile în care augmentarea datelor este foarte utilă. Există multe modificări pe care le putem face imaginilor:

  • redimensionați
  • flip orizontal sau vertical
  • rotire
  • adăugați zgomot
  • deformați
  • modificați culorilefiecare problemă are nevoie de o conductă de augmentare a datelor personalizată. De exemplu, pe OCR, efectuarea de răsturnări va schimba textul și nu va fi benefică; cu toate acestea, redimensionările și rotațiile mici pot ajuta.

35) ce este testul Turing?

Testul Turing este o metodă de testare a capacității mașinii de a se potrivi cu inteligența la nivel uman. O mașină este folosită pentru a contesta inteligența umană că, atunci când trece testul, este considerată inteligentă. Cu toate acestea, o mașină ar putea fi privită ca inteligentă fără să știe suficient despre oameni pentru a imita un om.

36) Ce este precizia?

precizie (numită și valoare predictivă pozitivă) este fracțiunea de instanțe relevante dintre instanțele preluate
precizie = adevărat pozitiv / (adevărat pozitiv + fals pozitiv)

37) ce este rechemarea?

rechemare (de asemenea, cunoscut sub numele de sensibilitate) este fracțiunea de instanțe relevante care au fost recuperate peste cantitatea totală de instanțe relevante.Rechemare = adevărat pozitiv / (adevărat pozitiv + fals negativ)

38) definiți F1-scor.

este media ponderată a preciziei și rechemării. Acesta consideră atât fals pozitiv, cât și fals negativ. Este folosit pentru a măsura performanța modelului.
F1-Scor = 2 *(precizie * rechemare) / (precizie + rechemare)

39) ce este funcția de cost?

funcția Cost este o funcție scalară care cuantifică factorul de eroare al rețelei neuronale. Reduceți funcția de cost mai bine rețeaua neuronală. De exemplu: set de date MNIST pentru a clasifica imaginea, imaginea de intrare este cifra 2, iar rețeaua neuronală prezice în mod greșit că este 3

40) enumerați diferiți neuroni sau funcții de activare.

  • Neuron liniar
  • Neuron cu prag binar
  • Neuron binar stocastic
  • Neuron Sigmoid
  • funcția Tanh
  • unitate liniară rectificată (ReLU)

41) definiți rata de învățare.

rata de învățare este un hiper-parametru care controlează cât de mult ajustăm greutățile rețelei noastre în ceea ce privește gradientul de pierdere.

42) Ce este impuls (w.R.T NN optimizare)?

Momentum permite algoritmului de optimizare își amintește ultimul pas, și adaugă o parte din ea la pasul curent. În acest fel, chiar dacă algoritmul este blocat într-o regiune plană sau un minim local mic, acesta poate ieși și continua spre adevăratul minim.

43) care este diferența dintre coborârea gradientului lot și coborârea gradientului Stochastic?

lot gradient descent calculează gradientul folosind întregul set de date. Acest lucru este excelent pentru colectoare de erori convexe sau relativ netede. În acest caz, ne îndreptăm oarecum direct către o soluție optimă, fie locală, fie globală. În plus, coborârea gradientului de lot, având în vedere o rată de învățare recoaptă, va găsi în cele din urmă minimul situat în bazinul său de atracție.

coborârea gradientului stocastic (SGD) calculează gradientul folosind un singur eșantion. SGD funcționează bine (nu bine, cred, dar mai bine decât lot coborâre gradient) pentru varietățile de eroare care au o mulțime de maxime locale/minime. În acest caz, gradientul oarecum mai zgomotos calculat folosind numărul redus de eșantioane tinde să smulgă modelul din minimele locale într-o regiune care, sperăm, este mai optimă.

44) Epoch vs lot vs iterație.

Epoch: o trecere înainte și o trecere înapoi a tuturor exemplelor de antrenament
lot: Exemple procesate împreună într-o singură trecere (înainte și înapoi)
iterație: numărul de exemple de antrenament / dimensiunea lotului

45) ce este gradientul de dispariție?

pe măsură ce adăugăm din ce în ce mai multe straturi ascunse, propagarea înapoi devine din ce în ce mai puțin utilă în transmiterea informațiilor către straturile inferioare. De fapt, pe măsură ce informațiile sunt transmise înapoi, gradienții încep să dispară și să devină mici în raport cu greutățile rețelelor.

46) ce sunt abandonul școlar?

abandonul școlar este o modalitate simplă de a preveni suprasolicitarea unei rețele neuronale. Este abandonarea unora dintre unitățile dintr-o rețea neuronală. Este similar cu procesul de reproducere naturală, în care natura produce descendenți prin combinarea genelor distincte (abandonarea altora), mai degrabă decât consolidarea co-adaptării acestora.

47) definiți LSTM.

memoria pe termen lung pe termen scurt – sunt concepute în mod explicit pentru a aborda problema dependenței pe termen lung, prin menținerea unei stări ce să-și amintească și ce să uite.

48) enumerați componentele cheie ale LSTM.

  • porți (uita, memorie, actualizare & citit)
  • tanh (x) (valori între -1 la 1)
  • Sigmoid(x) (valori între 0 la 1)

49) enumerați variantele RNN.

  • LSTM: memorie pe termen scurt
  • GRU: unitate recurentă închisă
  • rețea de la capăt la capăt
  • rețea de memorie

50) Ce este Autoencoder, denumiți câteva aplicații.

auto encoder este practic folosit pentru a învăța o formă comprimată de date date. Puține aplicații includ

  • date denoising
  • reducerea dimensionalității
  • reconstrucția imaginii
  • colorarea imaginii

51) care sunt componentele GAN?

  • Generator
  • Discriminator

52) care este diferența dintre boosting și insacuire?

stimularea și insacuirea sunt similare, în sensul că ambele sunt tehnici de asamblare, în care un număr de cursanți slabi (clasificatori/regresori care abia sunt mai buni decât ghicitul) se combină (prin mediere sau vot maxim) pentru a crea un cursant puternic care poate face predicții exacte. Insacuire înseamnă că luați probe bootstrap (cu înlocuire) a setului de date și fiecare probă Trenuri un (potențial) cursant slab. Boosting, pe de altă parte, folosește toate datele pentru a instrui fiecare cursant, dar cazurile care au fost clasificate greșit de către cursanții anteriori au o pondere mai mare, astfel încât cursanții ulteriori să le acorde mai multă atenție în timpul antrenamentului.

53) explicați cum funcționează o curbă ROC.

curba ROC este o reprezentare grafică a contrastului dintre ratele pozitive adevărate și rata fals pozitivă la diferite praguri. Este adesea folosit ca un proxy pentru compromisul dintre sensibilitatea modelului (pozitive adevărate) vs căderea sau probabilitatea ca acesta să declanșeze o alarmă falsă (pozitive false).

54) care este diferența dintre eroarea de tip I și eroarea de tip II?

eroarea de tip I este un fals pozitiv, în timp ce eroarea de tip II este un fals negativ. Pe scurt, eroarea de tip I înseamnă să pretinzi că ceva s-a întâmplat atunci când nu s-a întâmplat, în timp ce eroarea de tip II înseamnă că pretinzi că nu se întâmplă nimic atunci când de fapt se întâmplă ceva.Un mod inteligent de a gândi la acest lucru este să te gândești la eroarea de tip I ca la a spune unui bărbat că este însărcinată, în timp ce eroarea de tip II înseamnă că îi spui unei femei însărcinate că nu poartă un copil.

55) care este diferența dintre un model generativ și discriminativ?

un model generativ va învăța categorii de date, în timp ce un model discriminativ va învăța pur și simplu distincția dintre diferite categorii de date. Modelele discriminatorii vor depăși, în general, modelele generative privind sarcinile de clasificare.

contribuții

contribuțiile sunt binevenite.

  1. furcă magazia.
  2. puneți întrebări sau răspunsuri.
  3. deschideți cererea de tragere.

Lasă un răspuns

Adresa ta de email nu va fi publicată.