andrewekhalel / MLQuestions

Una raccolta di domande di intervista tecnica per l’apprendimento automatico e computer vision posizioni di ingegneria.

1) Qual è il compromesso tra bias e varianza?

Se il nostro modello è troppo semplice e ha pochissimi parametri, potrebbe avere un alto bias e una bassa varianza. D’altra parte se il nostro modello ha un gran numero di parametri, avrà un’alta varianza e un basso bias. Quindi dobbiamo trovare il giusto / buon equilibrio senza overfitting e underfitting dei dati.

2) Che cos’è la discesa del gradiente?

3) Spiegare over-e sotto-montaggio e come combatterli?

4) Come si combatte la maledizione della dimensionalità?

  • Selezione manuale delle funzioni
  • Principal Component Analysis (PCA)
  • Scaling multidimensionale
  • Incorporamento lineare locale

5) Cos’è la regolarizzazione, perché la usiamo e forniamo alcuni esempi di metodi comuni?

Una tecnica che scoraggia l’apprendimento di un modello più complesso o flessibile, in modo da evitare il rischio di overfitting.Esempi

  • Ridge (norma L2)
  • Lasso (norma L1)
    L’ovvio svantaggio della regressione della cresta è l’interpretabilità del modello. Ridurrà i coefficienti per i predittori meno importanti, molto vicini allo zero. Ma non li farà mai esattamente zero. In altre parole, il modello finale includerà tutti i predittori. Tuttavia, nel caso del lazo, la penalità L1 ha l’effetto di costringere alcune stime del coefficiente ad essere esattamente uguali a zero quando il parametro di sintonizzazione λ è sufficientemente grande. Pertanto, il metodo lazo esegue anche la selezione variabile e si dice che produca modelli sparsi.

6) Spiegare Principal Component Analysis (PCA)?

7) Perché ReLU è migliore e più spesso usato di Sigmoid nelle reti neurali?

Immagina una rete con pesi inizializzati casuali ( o normalizzati ) e quasi il 50% della rete produce l’attivazione 0 a causa della caratteristica di ReLu ( output 0 per valori negativi di x ). Ciò significa che un minor numero di neuroni stanno sparando (attivazione sparsa ) e la rete è più leggera.

8) Date le dimensioni del passo S e del kernel per ogni livello di una CNN (1-dimensionale), creare una funzione per calcolare il campo ricettivo di un particolare nodo nella rete. Questo è solo trovare quanti nodi di input effettivamente connettersi a un neurone in una CNN.

9) Implementare componenti collegati su un’immagine / matrice.

10) Implementare una classe di matrice sparse in C++.

11) Crea una funzione per calcolare un’immagine integrale e crea un’altra funzione per ottenere somme di area dall’immagine integrale.

12) Come rimuovere i valori anomali quando si tenta di stimare un piano piatto da campioni rumorosi?

13) Come agisce CBIR?

14) Come funziona la registrazione delle immagini? Flusso ottico sparso vs denso e così via.

15) Descrivi come funziona la convoluzione. Che dire se i tuoi input sono immagini in scala di grigi vs RGB? Cosa determina la forma del livello successivo?

16) Parlami di come creeresti un modello 3D di un oggetto da immagini e misurazioni del sensore di profondità prese a tutti gli angoli attorno all’oggetto.

17) Implementare SQRT (const double & x) senza utilizzare funzioni speciali, solo aritmetica fondamentale.

18) Invertire una bitstring.

19) Implementa la soppressione non massima nel modo più efficiente possibile.

20) Invertire una lista collegata sul posto.

21) Cos’è la normalizzazione dei dati e perché ne abbiamo bisogno?

La normalizzazione dei dati è una fase di pre-elaborazione molto importante, utilizzata per ridimensionare i valori per adattarsi a un intervallo specifico per assicurare una migliore convergenza durante la backpropagazione. In generale, si riduce a sottrarre la media di ciascun punto dati e dividere per la sua deviazione standard. Se non lo facciamo, alcune delle caratteristiche (quelle con magnitudine elevata) saranno ponderate di più nella funzione di costo (se una caratteristica di magnitudine maggiore cambia dell ‘ 1%, allora quel cambiamento è piuttosto grande, ma per le caratteristiche più piccole è abbastanza insignificante). La normalizzazione dei dati rende tutte le caratteristiche ponderate allo stesso modo.

22) Perché usiamo le circonvoluzioni per le immagini piuttosto che solo i livelli FC?

In primo luogo, le circonvoluzioni conservano, codificano e utilizzano effettivamente le informazioni spaziali dall’immagine. Se usassimo solo livelli FC non avremmo informazioni spaziali relative. In secondo luogo, le reti neurali convoluzionali (CNN) hanno una varianza di traduzione parzialmente integrata, poiché ogni kernel di convoluzione agisce come il proprio filtro/rilevatore di funzionalità.

23) Cosa rende invariante la traduzione CNNs?

Come spiegato sopra, ogni kernel di convoluzione agisce come il proprio filtro/rilevatore di funzionalità. Quindi diciamo che stai facendo il rilevamento di oggetti, non importa dove nell’immagine si trova l’oggetto poiché applicheremo comunque la convoluzione in modo scorrevole su tutta l’immagine.

24) Perché abbiamo il max-pooling nella classificazione CNNs?

per un ruolo nella visione artificiale. Max-pooling in una CNN consente di ridurre il calcolo poiché le mappe delle funzionalità sono più piccole dopo il pooling. Non perdi troppe informazioni semantiche dal momento che stai prendendo l’attivazione massima. C’è anche una teoria che max-pooling contribuisce un po ‘ a dare CNNs più traduzione in-varianza. Dai un’occhiata a questo grande video da Andrew Ng sui vantaggi di max-pooling.

25) Perché i CNN di segmentazione hanno tipicamente uno stile / struttura codificatore-decodificatore?

Il codificatore CNN può essere fondamentalmente pensato come una rete di estrazione di funzionalità, mentre il decodificatore utilizza tali informazioni per prevedere i segmenti dell’immagine “decodificando” le funzionalità e aggiornando le dimensioni dell’immagine originale.

26) Qual è il significato delle Reti residue?

La cosa principale che le connessioni residue hanno fatto è stata consentire l’accesso diretto alle funzionalità dai livelli precedenti. Questo rende la propagazione delle informazioni in tutta la rete molto più facile. Un articolo molto interessante su questo mostra come l’utilizzo di connessioni di skip locali dia alla rete un tipo di struttura multi-percorso di ensemble, dando caratteristiche a più percorsi da propagare in tutta la rete.

27) Che cos’è la normalizzazione batch e perché funziona?

La formazione di reti neurali profonde è complicata dal fatto che la distribuzione degli input di ciascun livello cambia durante l’allenamento, man mano che cambiano i parametri dei livelli precedenti. L’idea è quindi di normalizzare gli input di ciascun livello in modo tale da avere un’attivazione media dell’output di zero e una deviazione standard di uno. Questo viene fatto per ogni singolo mini-batch ad ogni livello cioè calcolare la media e la varianza di quel mini-batch da solo, quindi normalizzare. Questo è analogo a come gli ingressi alle reti sono standardizzati. In che modo questo aiuta? Sappiamo che normalizzare gli input di una rete aiuta a imparare. Ma una rete è solo una serie di livelli, in cui l’output di un livello diventa l’input per il successivo. Ciò significa che possiamo pensare a qualsiasi livello in una rete neurale come il primo strato di una rete successiva più piccola. Pensato come una serie di reti neurali che si alimentano l’una nell’altra, normalizziamo l’output di uno strato prima di applicare la funzione di attivazione e quindi lo alimentiamo nel livello successivo (sottorete).

28) Perché dovresti usare molti piccoli kernel convoluzionali come 3×3 piuttosto che alcuni grandi?

Questo è molto ben spiegato nel documento VGGET. Ci sono 2 motivi: in primo luogo, puoi usare diversi kernel più piccoli piuttosto che pochi grandi per ottenere lo stesso campo ricettivo e catturare più contesto spaziale, ma con i kernel più piccoli stai usando meno parametri e calcoli. In secondo luogo, poiché con i kernel più piccoli utilizzerai più filtri, sarai in grado di utilizzare più funzioni di attivazione e quindi avere una funzione di mappatura più discriminatoria appresa dalla tua CNN.

29) Perché abbiamo bisogno di un set di convalida e di un set di test? Qual è la differenza tra loro?

Quando si allena un modello, dividiamo i dati disponibili in tre set separati:

  • Il set di dati di allenamento viene utilizzato per adattare i parametri del modello. Tuttavia, la precisione che otteniamo sul set di allenamento non è affidabile per prevedere se il modello sarà accurato su nuovi campioni.
  • Il set di dati di convalida viene utilizzato per misurare quanto bene il modello fa su esempi che non facevano parte del set di dati di formazione. Le metriche calcolate sui dati di convalida possono essere utilizzate per ottimizzare gli iperparametri del modello. Tuttavia, ogni volta che valutiamo i dati di convalida e prendiamo decisioni in base a tali punteggi, stiamo perdendo informazioni dai dati di convalida nel nostro modello. Più valutazioni, più informazioni sono trapelate. Quindi possiamo finire per overfitting ai dati di convalida, e ancora una volta il punteggio di convalida non sarà affidabile per prevedere il comportamento del modello nel mondo reale.
  • Il set di dati di test viene utilizzato per misurare quanto bene il modello fa su esempi precedentemente non visti. Dovrebbe essere usato solo una volta che abbiamo sintonizzato i parametri usando il set di convalida.

Quindi se omettiamo il set di test e usiamo solo un set di convalida, il punteggio di convalida non sarà una buona stima della generalizzazione del modello.

30) Cos’è la cross-validation stratificata e quando dovremmo usarla?

La cross-validation è una tecnica per dividere i dati tra set di training e validation. Sulla tipica convalida incrociata questa divisione viene eseguita in modo casuale. Ma nella validazione incrociata stratificata, la divisione preserva il rapporto tra le categorie sia sui set di dati di formazione che di validazione.

Ad esempio, se abbiamo un set di dati con il 10% della categoria A e il 90% della categoria B e usiamo la convalida incrociata stratificata, avremo le stesse proporzioni nella formazione e nella convalida. Al contrario, se usiamo una semplice convalida incrociata, nel peggiore dei casi potremmo scoprire che non ci sono campioni di categoria A nel set di convalida.

La convalida incrociata stratificata può essere applicata nei seguenti scenari:

  • Su un set di dati con più categorie. Più piccolo è il set di dati e più squilibrate sono le categorie, più importante sarà utilizzare la convalida incrociata stratificata.
  • Su un set di dati con dati di diverse distribuzioni. Ad esempio, in un set di dati per la guida autonoma, potremmo avere immagini scattate durante il giorno e di notte. Se non ci assicuriamo che entrambi i tipi siano presenti nella formazione e nella convalida, avremo problemi di generalizzazione.

31) Perché gli ensemble hanno in genere punteggi più alti rispetto ai singoli modelli?

Un ensemble è la combinazione di più modelli per creare una singola previsione. L’idea chiave per fare previsioni migliori è che i modelli dovrebbero fare errori diversi. In questo modo gli errori di un modello saranno compensati dalle giuste ipotesi degli altri modelli e quindi il punteggio dell’ensemble sarà più alto.

Abbiamo bisogno di modelli diversi per creare un ensemble. La diversità può essere raggiunta da:

  • Utilizzando diversi algoritmi ML. Ad esempio, è possibile combinare regressione logistica, k-nearest neighbors e alberi decisionali.
  • Utilizzo di diversi sottoinsiemi di dati per la formazione. Questo è chiamato insaccamento.
  • Dare un peso diverso a ciascuno dei campioni del set di allenamento. Se questo viene fatto in modo iterativo, ponderando i campioni in base agli errori dell’ensemble, si chiama boosting.Molte soluzioni vincenti ai concorsi di scienza dei dati sono ensemble. Tuttavia, nei progetti di machine learning reali, gli ingegneri devono trovare un equilibrio tra tempo di esecuzione e precisione.

32) Che cos’è un set di dati squilibrato? Puoi elencare alcuni modi per affrontarlo?

Un set di dati squilibrato è uno che ha proporzioni diverse di categorie di destinazione. Ad esempio, un set di dati con immagini mediche in cui dobbiamo rilevare alcune malattie avrà in genere molti più campioni negativi rispetto ai campioni positivi, ad esempio, il 98% delle immagini è senza la malattia e il 2% delle immagini è con la malattia.

Esistono diverse opzioni per gestire set di dati squilibrati:

  • Sovracampionamento o sottocampionamento. Invece di campionare con una distribuzione uniforme dal set di dati di allenamento, possiamo usare altre distribuzioni in modo che il modello veda un set di dati più bilanciato.
  • Aumento dei dati. Possiamo aggiungere dati nelle categorie meno frequenti modificando i dati esistenti in modo controllato. Nel set di dati di esempio, potremmo capovolgere le immagini con malattie o aggiungere rumore alle copie delle immagini in modo tale che la malattia rimanga visibile.
  • Utilizzo di metriche appropriate. Nel set di dati di esempio, se avessimo un modello che ha sempre fatto previsioni negative, raggiungerebbe una precisione del 98%. Esistono altre metriche come precisione, richiamo e punteggio F che descrivono meglio l’accuratezza del modello quando si utilizza un set di dati squilibrato.

33) Puoi spiegare le differenze tra apprendimento supervisionato, non supervisionato e di rinforzo?

Nell’apprendimento supervisionato, formiamo un modello per apprendere la relazione tra dati di input e dati di output. Abbiamo bisogno di avere dati etichettati per essere in grado di fare l’apprendimento supervisionato.

Con l’apprendimento non supervisionato, abbiamo solo dati senza etichetta. Il modello apprende una rappresentazione dei dati. L’apprendimento non supervisionato viene spesso utilizzato per inizializzare i parametri del modello quando abbiamo molti dati non etichettati e una piccola frazione di dati etichettati. Per prima cosa addestriamo un modello non supervisionato e, successivamente, usiamo i pesi del modello per addestrare un modello supervisionato.

Nell’apprendimento per rinforzo, il modello ha alcuni dati di input e una ricompensa a seconda dell’output del modello. Il modello impara una politica che massimizza la ricompensa. L’apprendimento per rinforzo è stato applicato con successo a giochi strategici come Go e persino ai classici videogiochi Atari.

34) Che cos’è l’aumento dei dati? Può fare qualche esempio?

L’aumento dei dati è una tecnica per sintetizzare nuovi dati modificando i dati esistenti in modo tale che il target non venga modificato o modificato in modo noto.

La visione artificiale è uno dei campi in cui l’aumento dei dati è molto utile. Ci sono molte modifiche che possiamo fare alle immagini:

  • Ridimensiona
  • Flip orizzontale o verticale
  • Ruota
  • Aggiungi rumore
  • Deforma
  • Modifica coloriOgni problema richiede una pipeline di aumento dei dati personalizzata. Ad esempio, su OCR, fare salti mortali cambierà il testo e non sarà utile; tuttavia, ridimensionamenti e piccole rotazioni possono aiutare.

35) Che cosa è test di Turing?

Il test di Turing è un metodo per testare la capacità della macchina di abbinare l’intelligenza a livello umano. Una macchina viene utilizzata per sfidare l’intelligenza umana che quando supera il test, viene considerata intelligente. Eppure una macchina potrebbe essere vista come intelligente senza conoscere sufficientemente le persone da imitare un essere umano.

36) Che cos’è la precisione?

La precisione (chiamata anche valore predittivo positivo) è la frazione delle istanze rilevanti tra le istanze recuperate
Precisione = vero positivo / (vero positivo + falso positivo)

37) Che cos’è il richiamo?

Il richiamo (noto anche come sensibilità) è la frazione delle istanze rilevanti che sono state recuperate rispetto alla quantità totale di istanze rilevanti.Recall = vero positivo /( vero positivo + falso negativo)

38) Definire F1-score.

È la media ponderata di precisione e richiamo. Considera sia il falso positivo che il falso negativo in considerazione. Viene utilizzato per misurare le prestazioni del modello.
F1-Score = 2 * (precision * recall) / (precision + recall)

39) Qual è la funzione di costo?

La funzione di costo è una funzione scalare che quantifica il fattore di errore della rete neurale. Abbassare la funzione di costo meglio la rete neurale. Ad esempio: set di dati MNIST per classificare l’immagine, l’immagine di input è la cifra 2 e la rete neurale prevede erroneamente che sia 3

40) Elenca diversi neuroni o funzioni di attivazione.

  • Neurone lineare
  • Neurone binario soglia
  • Neurone binario stocastico
  • Neurone sigmoide
  • Funzione Tanh
  • Unità lineare rettificata (ReLU)

41) Definire tasso di apprendimento.

Il tasso di apprendimento è un iper-parametro che controlla quanto stiamo regolando i pesi della nostra rete rispetto al gradiente di perdita.

42) Che cos’è Momentum (ottimizzazione w.r.t NN)?

Momentum consente all’algoritmo di ottimizzazione di ricordare il suo ultimo passaggio e di aggiungerne una parte al passaggio corrente. In questo modo, anche se l’algoritmo è bloccato in una regione piatta o in un piccolo minimo locale, può uscire e continuare verso il vero minimo.

43) Qual è la differenza tra la discesa del gradiente batch e la discesa del gradiente stocastico?

La discesa del gradiente batch calcola il gradiente utilizzando l’intero set di dati. Questo è ottimo per collettori di errore convessi o relativamente lisci. In questo caso, ci muoviamo in qualche modo direttamente verso una soluzione ottimale, locale o globale. Inoltre, la discesa del gradiente batch, dato un tasso di apprendimento ricotto, alla fine troverà il minimo situato nel suo bacino di attrazione.

Stocastic Gradient Descent (SGD) calcola il gradiente utilizzando un singolo campione. SGD funziona bene (non bene, suppongo, ma meglio della discesa del gradiente batch) per collettori di errore che hanno molti massimi/minimi locali. In questo caso, il gradiente un po ‘ più rumoroso calcolato utilizzando il numero ridotto di campioni tende a scuotere il modello dai minimi locali in una regione che si spera sia più ottimale.

44) Epoch vs Batch vs Iterazione.

Epoch: un passaggio avanti e uno indietro di tutti gli esempi di allenamento
Batch: esempi elaborati insieme in un passaggio (avanti e indietro)
Iterazione:numero di esempi di allenamento / Dimensione del lotto

45) Che cos’è il gradiente di fuga?

Mentre aggiungiamo livelli sempre più nascosti, la propagazione posteriore diventa sempre meno utile nel passare informazioni agli strati inferiori. In effetti, quando le informazioni vengono restituite, i gradienti iniziano a svanire e diventano piccoli rispetto ai pesi delle reti.

46) Cosa sono gli abbandoni?

Dropout è un modo semplice per impedire a una rete neurale di overfitting. È l’abbandono di alcune delle unità in una rete neurale. È simile al processo di riproduzione naturale, in cui la natura produce discendenti combinando geni distinti (abbandonando gli altri) piuttosto che rafforzarne il co-adattamento.

47) Definire LSTM.

Long Short Term Memory-sono esplicitamente progettati per affrontare il problema della dipendenza a lungo termine, mantenendo uno stato cosa ricordare e cosa dimenticare.

48) Elenca i componenti chiave di LSTM.

  • Gates (dimentica, Memoria, aggiorna & Leggi)
  • tanh (x) (valori compresi tra -1 e 1)
  • Sigmoid(x) (valori compresi tra 0 e 1)

49) Elenca le varianti di RNN.

  • LSTM: Long Short Term Memory
  • GRU: Gated Recurrent Unit
  • End to End Network
  • Rete di memoria

50) Che cosa è Autoencoder, il nome di alcune applicazioni.

L’encoder automatico viene fondamentalmente utilizzato per apprendere una forma compressa di dati dati. Poche applicazioni includono

  • Data denoising
  • Dimensionality reduction
  • Image reconstruction
  • Image colorization

51) Quali sono i componenti di GAN?

  • Generatore
  • Discriminatore

52) Qual è la differenza tra boosting e insagging?

L’amplificazione e l’insacco sono simili, in quanto sono entrambe tecniche di ensemble, in cui un numero di studenti deboli (classificatori/regressori che sono appena migliori dell’ipotesi) si combinano (attraverso la media o il voto massimo) per creare uno studente forte che può fare previsioni accurate. Insaccamento significa che si prendono campioni bootstrap (con sostituzione) del set di dati e ogni campione treni un (potenzialmente) studente debole. Boosting, d’altra parte, utilizza tutti i dati per formare ogni studente, ma le istanze che sono state classificate erroneamente dagli studenti precedenti ricevono più peso in modo che gli studenti successivi si concentrino maggiormente su di loro durante l’allenamento.

53) Spiega come funziona una curva ROC.

La curva ROC è una rappresentazione grafica del contrasto tra tassi positivi veri e tassi falsi positivi a varie soglie. Viene spesso utilizzato come proxy per il compromesso tra la sensibilità del modello (veri positivi) e la caduta o la probabilità che inneschi un falso allarme (falsi positivi).

54) Qual è la differenza tra errore di tipo I e di tipo II?

L’errore di tipo I è un falso positivo, mentre l’errore di tipo II è un falso negativo. In breve, l’errore di tipo I significa affermare che qualcosa è successo quando non lo è, mentre l’errore di tipo II significa che non si afferma nulla quando in realtà qualcosa lo è.Un modo intelligente per pensare a questo è quello di pensare di tipo I errore come dire un uomo che è incinta, mentre errore di tipo II significa che si dice una donna incinta che non sta portando un bambino.

55) Qual è la differenza tra un modello generativo e discriminativo?

Un modello generativo apprenderà categorie di dati mentre un modello discriminativo imparerà semplicemente la distinzione tra diverse categorie di dati. I modelli discriminativi generalmente sovraperformeranno i modelli generativi sui compiti di classificazione.

Contributi

I contributi sono i più accolti.

  1. Fork del repository.
  2. Invia le tue domande o risposte.
  3. Apri richiesta pull.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.