andrewekhalel / MLQuestions

Una colección de preguntas técnicas para entrevistas para puestos de ingeniería de aprendizaje automático y visión por computadora.

1) ¿Cuál es el equilibrio entre sesgo y varianza?

Si nuestro modelo es demasiado simple y tiene muy pocos parámetros, puede tener un sesgo alto y una varianza baja. Por otro lado, si nuestro modelo tiene un gran número de parámetros, tendrá una alta varianza y un bajo sesgo. Por lo tanto, tenemos que encontrar el equilibrio correcto/bueno sin sobreajustar ni sobreajustar los datos.

2) ¿Qué es el descenso de gradiente?

3) Explicar el exceso y la falta de ajuste y cómo combatirlos?

4) ¿Cómo combatas la maldición de la dimensionalidad?

  • Selección manual de características
  • Análisis de componentes principales (PCA)
  • Escala multidimensional
  • Incrustación localmente lineal

5) ¿Qué es la regularización, por qué la usamos y damos algunos ejemplos de métodos comunes?

Una técnica que desalienta el aprendizaje de un modelo más complejo o flexible, para evitar el riesgo de sobreajuste.Ejemplos

  • Cresta (norma L2)
  • Lazo (norma L1)
    La desventaja obvia de la regresión de cresta es la interpretabilidad del modelo. Reducirá los coeficientes para los predictores menos importantes, muy cerca de cero. Pero nunca los hará exactamente cero. En otras palabras, el modelo final incluirá todos los predictores. Sin embargo, en el caso del lazo, la penalización L1 tiene el efecto de forzar algunas de las estimaciones de coeficientes a ser exactamente iguales a cero cuando el parámetro de ajuste λ es suficientemente grande. Por lo tanto, el método lazo también realiza la selección variable y se dice que produce modelos dispersos.

6) ¿Explicar el Análisis de Componentes Principales (PCA)?

7) ¿Por qué ReLU es mejor y se usa con más frecuencia que Sigmoid en Redes Neuronales?

Imagine una red con pesos inicializados aleatorios (o normalizados) y casi el 50% de la red produce 0 activación debido a la característica de ReLU ( salida 0 para valores negativos de x). Esto significa que se activan menos neuronas (activación escasa) y la red es más ligera.

8) Dados los tamaños de zancada y núcleo para cada capa de una CNN (1-dimensional), cree una función para calcular el campo receptivo de un nodo en particular en la red. Esto es solo encontrar cuántos nodos de entrada se conectan realmente a través de una neurona en una CNN.

9) Implemente componentes conectados en una imagen / matriz.

10) Implementar una clase de matriz dispersa en C++.

11) Cree una función para calcular una imagen integral y cree otra función para obtener sumas de área de la imagen integral.

12) ¿Cómo eliminaría los valores atípicos al intentar estimar un plano plano de muestras ruidosas?

13) ¿Cómo actúa CBIR?

14) ¿Cómo funciona el registro de imágenes? Escasa vs denso flujo óptico y así sucesivamente.

15) Describe cómo funciona la convolución. ¿Qué pasa si tus entradas son imágenes en escala de grises frente a imágenes RGB? ¿Qué determina la forma de la siguiente capa?

16) Explíqueme cómo crearía un modelo 3D de un objeto a partir de imágenes y mediciones de sensores de profundidad tomadas en todos los ángulos alrededor del objeto.

17) Implemente SQRT (const double & x) sin usar ninguna función especial, solo aritmética fundamental.

18) Invertir una cadena de bits.

19) Implemente la supresión no máxima de la manera más eficiente posible.

20) Invierta una lista vinculada en su lugar.

21) ¿Qué es la normalización de datos y por qué la necesitamos?

La normalización de datos es un paso de preprocesamiento muy importante, que se utiliza para volver a escalar los valores para que se ajusten a un rango específico para garantizar una mejor convergencia durante la contrapropagación. En general, se reduce a restar la media de cada punto de datos y dividiendo por su desviación estándar. Si no hacemos esto, algunas de las características (las de gran magnitud) se ponderarán más en la función de costo (si una característica de mayor magnitud cambia en un 1%, ese cambio es bastante grande, pero para las características más pequeñas es bastante insignificante). La normalización de datos hace que todas las características se ponderen por igual.

22) ¿Por qué usamos convoluciones para imágenes en lugar de solo capas FC?

En primer lugar, las circunvoluciones conservan, codifican y utilizan la información espacial de la imagen. Si usáramos solo capas FC, no tendríamos información espacial relativa. En segundo lugar, las Redes Neuronales Convolucionales (CNN) tienen una varianza de traducción parcialmente incorporada, ya que cada núcleo de convolución actúa como su propio filtro/detector de características.

23) ¿Qué hace que la traducción de CNNs sea invariante?

Como se explicó anteriormente, cada núcleo de convolución actúa como su propio filtro / detector de características. Así que digamos que estás haciendo detección de objetos, no importa en qué parte de la imagen se encuentre el objeto, ya que de todos modos vamos a aplicar la convolución en una ventana deslizante a través de toda la imagen.

24) ¿Por qué tenemos la agrupación máxima en la clasificación CNN?

para un papel en Visión artificial. La agrupación máxima en una CNN le permite reducir la computación, ya que sus mapas de funciones son más pequeños después de la agrupación. No pierdes demasiada información semántica ya que estás tomando la máxima activación. También hay una teoría de que la agrupación máxima contribuye un poco a dar a los CNN más varianza de traducción. Echa un vistazo a este gran video de Andrew Ng sobre los beneficios de la agrupación máxima.

25) ¿Por qué los CNN de segmentación suelen tener un estilo / estructura de codificador-decodificador?

El codificador CNN se puede considerar básicamente como una red de extracción de características, mientras que el decodificador utiliza esa información para predecir los segmentos de imagen “decodificando” las características y aumentando la escala al tamaño de imagen original.

26) ¿Cuál es la importancia de las Redes Residuales?

Lo principal que hicieron las conexiones residuales fue permitir el acceso directo a entidades desde capas anteriores. Esto hace que la propagación de información en toda la red sea mucho más fácil. Un artículo muy interesante sobre esto muestra cómo el uso de conexiones de salto locales da a la red un tipo de estructura de múltiples rutas de ensamble, dando características de múltiples rutas para propagarse a través de la red.

27) ¿Qué es la normalización por lotes y por qué funciona?

El entrenamiento de Redes Neuronales Profundas se complica por el hecho de que la distribución de las entradas de cada capa cambia durante el entrenamiento, a medida que cambian los parámetros de las capas anteriores. La idea es entonces normalizar las entradas de cada capa de tal manera que tengan una activación de salida media de cero y una desviación estándar de uno. Esto se hace para cada mini-lote individual en cada capa, es decir, calcular la media y la varianza de ese mini-lote solo, luego normalizar. Esto es análogo a cómo se estandarizan las entradas a las redes. ¿Cómo ayuda esto? Sabemos que normalizar las entradas a una red le ayuda a aprender. Pero una red es solo una serie de capas, donde la salida de una capa se convierte en la entrada a la siguiente. Eso significa que podemos pensar en cualquier capa de una red neuronal como la primera capa de una red posterior más pequeña. Pensada como una serie de redes neuronales que se alimentan entre sí, normalizamos la salida de una capa antes de aplicar la función de activación, y luego la alimentamos en la siguiente capa (subred).

28) ¿Por qué utilizarías muchos núcleos convolucionales pequeños, como 3×3, en lugar de unos pocos núcleos grandes?

Esto está muy bien explicado en el documento de VGGNet. Hay 2 razones: Primero, puede usar varios núcleos más pequeños en lugar de algunos grandes para obtener el mismo campo receptivo y capturar más contexto espacial, pero con los núcleos más pequeños está utilizando menos parámetros y cálculos. En segundo lugar, porque con núcleos más pequeños usarás más filtros, podrás usar más funciones de activación y, por lo tanto, tendrás una función de mapeo más discriminativa que aprenderá tu CNN.

29) ¿Por qué necesitamos un conjunto de validación y un conjunto de pruebas? ¿Cuál es la diferencia entre ellos?

Al entrenar un modelo, dividimos los datos disponibles en tres conjuntos separados:

  • El conjunto de datos de entrenamiento se utiliza para ajustar los parámetros del modelo. Sin embargo, la precisión que logramos en el equipo de entrenamiento no es confiable para predecir si el modelo será preciso en muestras nuevas.
  • El conjunto de datos de validación se utiliza para medir el rendimiento del modelo en ejemplos que no formaban parte del conjunto de datos de capacitación. Las métricas calculadas en los datos de validación se pueden utilizar para ajustar los hiperparámetros del modelo. Sin embargo, cada vez que evaluamos los datos de validación y tomamos decisiones basadas en esos puntajes, filtramos información de los datos de validación a nuestro modelo. Cuantas más evaluaciones, más información se filtra. Así que podemos terminar sobreajustándonos a los datos de validación, y una vez más la puntuación de validación no será confiable para predecir el comportamiento del modelo en el mundo real.
  • El conjunto de datos de prueba se utiliza para medir el rendimiento del modelo en ejemplos no vistos anteriormente. Solo se debe usar una vez que hayamos ajustado los parámetros utilizando el conjunto de validación.

Así que si omitimos el conjunto de pruebas y solo usamos un conjunto de validación, la puntuación de validación no será una buena estimación de la generalización del modelo.

30) ¿Qué es la validación cruzada estratificada y cuándo debemos usarla?

La validación cruzada es una técnica para dividir datos entre conjuntos de entrenamiento y validación. En la validación cruzada típica, esta división se realiza aleatoriamente. Pero en la validación cruzada estratificada, la división conserva la proporción de las categorías en los conjuntos de datos de capacitación y validación.

Por ejemplo, si tenemos un conjunto de datos con un 10% de categoría A y un 90% de categoría B, y usamos validación cruzada estratificada, tendremos las mismas proporciones en entrenamiento y validación. Por el contrario, si usamos validación cruzada simple, en el peor de los casos podemos encontrar que no hay muestras de categoría A en el conjunto de validación.

La validación cruzada estratificada se puede aplicar en los siguientes escenarios:

  • En un conjunto de datos con varias categorías. Cuanto más pequeño sea el conjunto de datos y más desequilibradas sean las categorías, más importante será el uso de la validación cruzada estratificada.
  • En un conjunto de datos con datos de diferentes distribuciones. Por ejemplo, en un conjunto de datos para la conducción autónoma, podemos tener imágenes tomadas durante el día y por la noche. Si no nos aseguramos de que ambos tipos estén presentes en el entrenamiento y la validación, tendremos problemas de generalización.

31) ¿Por qué los conjuntos suelen tener puntuaciones más altas que los modelos individuales?

Un conjunto es la combinación de varios modelos para crear una única predicción. La idea clave para hacer mejores predicciones es que los modelos deben cometer errores diferentes. De esta manera, los errores de un modelo se compensarán con las conjeturas correctas de los otros modelos y, por lo tanto, la puntuación del conjunto será mayor.

Necesitamos modelos diversos para crear un conjunto. La diversidad puede lograrse mediante:

  • Usando diferentes algoritmos de ML. Por ejemplo, puede combinar regresión logística, k-vecinos más cercanos y árboles de decisión.
  • Usando diferentes subconjuntos de datos para entrenamiento. Esto se llama embolsado.
  • Dando un peso diferente a cada una de las muestras del set de entrenamiento. Si esto se hace de forma iterativa, ponderando las muestras de acuerdo con los errores del conjunto, se llama impulso.Muchas de las soluciones ganadoras de concursos de ciencia de datos son conjuntos. Sin embargo, en proyectos de aprendizaje automático de la vida real, los ingenieros necesitan encontrar un equilibrio entre el tiempo de ejecución y la precisión.

32) ¿Qué es un conjunto de datos desequilibrado? ¿Puedes enumerar algunas maneras de lidiar con esto?

Un conjunto de datos desequilibrado es aquel que tiene diferentes proporciones de categorías de destino. Por ejemplo, un conjunto de datos con imágenes médicas donde tenemos que detectar alguna enfermedad normalmente tendrá muchas más muestras negativas que muestras positivas, por ejemplo, el 98% de las imágenes son sin la enfermedad y el 2% de las imágenes son con la enfermedad.

Hay diferentes opciones para tratar con conjuntos de datos desequilibrados:

  • Sobremuestreo o submuestreo. En lugar de muestrear con una distribución uniforme del conjunto de datos de entrenamiento, podemos usar otras distribuciones para que el modelo vea un conjunto de datos más equilibrado.
  • Aumento de datos. Podemos añadir datos en las categorías menos frecuentes modificando los datos existentes de forma controlada. En el conjunto de datos de ejemplo, podríamos voltear las imágenes con enfermedades, o agregar ruido a las copias de las imágenes de tal manera que la enfermedad permanezca visible.
  • Usando métricas apropiadas. En el conjunto de datos de ejemplo, si tuviéramos un modelo que siempre hiciera predicciones negativas, lograría una precisión del 98%. Hay otras métricas, como precisión, recuperación y puntuación F, que describen mejor la precisión del modelo cuando se utiliza un conjunto de datos desequilibrado.

33) ¿Puede explicar las diferencias entre el aprendizaje supervisado, no supervisado y el aprendizaje por refuerzo?

En el aprendizaje supervisado, entrenamos un modelo para aprender la relación entre los datos de entrada y los datos de salida. Necesitamos tener datos etiquetados para poder hacer aprendizaje supervisado.

Con el aprendizaje no supervisado, solo tenemos datos sin etiquetar. El modelo aprende una representación de los datos. El aprendizaje no supervisado se utiliza con frecuencia para inicializar los parámetros del modelo cuando tenemos una gran cantidad de datos sin etiquetar y una pequeña fracción de datos etiquetados. Primero entrenamos a un modelo sin supervisión y, después de eso, usamos los pesos del modelo para entrenar a un modelo supervisado.

En el aprendizaje por refuerzo, el modelo tiene algunos datos de entrada y una recompensa dependiendo de la salida del modelo. El modelo aprende una política que maximiza la recompensa. El aprendizaje por refuerzo se ha aplicado con éxito a juegos estratégicos como Go e incluso videojuegos clásicos de Atari.

34) ¿Qué es el aumento de datos? ¿Puede dar algunos ejemplos?

El aumento de datos es una técnica para sintetizar nuevos datos modificando los datos existentes de tal manera que el objetivo no se cambie, o se cambie de una manera conocida.

La visión por computadora es uno de los campos en los que el aumento de datos es muy útil. Hay muchas modificaciones que podemos hacer a las imágenes:

  • Cambiar el tamaño
  • Voltear horizontal o vertical
  • Rotar
  • Agregar ruido
  • Deformar
  • Modificar color Cada problema necesita una canalización de aumento de datos personalizada. Por ejemplo, en OCR, hacer volteos cambiará el texto y no será beneficioso; sin embargo, los cambios de tamaño y las pequeñas rotaciones pueden ayudar.

35) ¿Qué es la prueba de Turing?

La prueba de Turing es un método para probar la capacidad de la máquina para igualar la inteligencia a nivel humano. Una máquina se utiliza para desafiar la inteligencia humana que cuando pasa la prueba, se considera inteligente. Sin embargo, una máquina podría ser vista como inteligente sin saber lo suficiente sobre las personas como para imitar a un humano.

36) ¿Qué es la precisión?

La precisión (también llamada valor predictivo positivo) es la fracción de instancias relevantes entre las instancias recuperadas
Precisión = verdadero positivo / (verdadero positivo + falso positivo)

37) ¿Qué es el Recuerdo?

La recuperación (también conocida como sensibilidad) es la fracción de instancias relevantes que se han recuperado sobre la cantidad total de instancias relevantes.Recuperación = verdadero positivo / (verdadero positivo + falso negativo)

38) Definir puntuación F1.

Es el promedio ponderado de precisión y recuperación. Tiene en cuenta tanto los falsos positivos como los falsos negativos. Se utiliza para medir el rendimiento del modelo.
Puntuación F1 = 2 *(recuperación de precisión*) / (precisión + recuperación)

39) ¿Qué es la función de costo?

La función de coste es una función escalar que cuantifica el factor de error de la Red Neuronal. Reducir el coste funciona mejor la red neuronal. Por ejemplo: Conjunto de datos MNIST para clasificar la imagen, la imagen de entrada es el dígito 2 y la red neuronal predice erróneamente que es 3

40) Enumere diferentes neuronas o funciones de activación.

  • Neurona Lineal
  • Neurona de umbral Binario
  • Neurona Binaria Estocástica
  • Neurona Sigmoide
  • Función Tanh
  • Unidad Lineal Rectificada (ReLU)

41) Definir la tasa de aprendizaje.

La tasa de aprendizaje es un hiper parámetro que controla cuánto ajustamos los pesos de nuestra red con respecto al gradiente de pérdida.

42) ¿Qué es Momentum (optimización w.r.t NN)?

Momentum permite que el algoritmo de optimización recuerde su último paso y añada una parte de él al paso actual. De esta manera, incluso si el algoritmo está atascado en una región plana, o en un mínimo local pequeño, puede salir y continuar hacia el mínimo verdadero.

43) ¿Cuál es la diferencia entre el Descenso de Gradiente por Lotes y el Descenso de Gradiente Estocástico?

El descenso de gradiente por lotes calcula el gradiente utilizando todo el conjunto de datos. Esto es ideal para colectores de error convexos o relativamente suaves. En este caso, nos movemos un poco directamente hacia una solución óptima, ya sea local o global. Además, el descenso de gradiente por lotes, dado un índice de aprendizaje recocido, eventualmente encontrará el mínimo ubicado en su cuenca de atracción.

El descenso de gradiente estocástico (SGD) calcula el gradiente utilizando una sola muestra. SGD funciona bien (No bien, supongo, pero mejor que el descenso de gradiente por lotes) para colectores de errores que tienen muchos máximos/mínimos locales. En este caso, el gradiente algo más ruidoso calculado utilizando el número reducido de muestras tiende a desplazar el modelo de los mínimos locales a una región que, con suerte, es más óptima.

44) Época vs Lote vs Iteración.

Época: una pasada hacia adelante y una pasada hacia atrás de todos los ejemplos de entrenamiento
Lote: ejemplos procesados juntos en una sola pasada (hacia adelante y hacia atrás)
Iteración: número de ejemplos de entrenamiento / Tamaño del lote

45) ¿Qué es el gradiente de fuga?

A medida que agregamos más y más capas ocultas, la propagación hacia atrás se vuelve cada vez menos útil para pasar información a las capas inferiores. En efecto, a medida que se devuelve la información, los gradientes comienzan a desaparecer y se vuelven pequeños en relación con los pesos de las redes.

46) ¿Qué son los abandonos?

Dropout es una forma sencilla de evitar que una red neuronal se sobreajuste. Es el abandono de algunas de las unidades de una red neuronal. Es similar al proceso de reproducción natural, donde la naturaleza produce descendientes combinando genes distintos (abandonando otros) en lugar de fortalecer la adaptación conjunta de ellos.

47) Definir LSTM.

Memoria a largo Plazo a Corto Plazo: están diseñados explícitamente para abordar el problema de dependencia a largo plazo, manteniendo un estado de qué recordar y qué olvidar.

48) Enumere los componentes clave de LSTM.

  • Puertas (olvidar, Memoria, actualizar & Leer)
  • tanh(x) (valores entre -1 y 1)
  • Sigmoid(x) (valores entre 0 y 1)

49) Enumere las variantes de RNN.

  • LSTM: Memoria A Largo Plazo
  • GRU: Unidad Recurrente cerrada
  • Red de Extremo a Extremo
  • Red de memoria

50) Qué es Autoencoder, nombrar algunas aplicaciones.

El codificador automático se utiliza básicamente para aprender una forma comprimida de datos dados. Pocas aplicaciones incluyen

  • Eliminación de datos
  • Reducción de dimensionalidad
  • Reconstrucción de imágenes
  • Colorización de imágenes

51) ¿Cuáles son los componentes de GAN?

  • Generador
  • Discriminador

52) ¿Cuál es la diferencia entre impulsar y embolsar?

Impulsar y embolsar son similares, ya que ambas son técnicas de ensamble, donde un número de estudiantes débiles (clasificadores/regresores que apenas son mejores que adivinar) se combinan (a través del promedio o el voto máximo) para crear un estudiante fuerte que puede hacer predicciones precisas. El ensacado significa que toma muestras de arranque (con reemplazo) de su conjunto de datos y cada muestra entrena a un alumno (potencialmente) débil. Boosting, por otro lado, utiliza todos los datos para entrenar a cada alumno, pero las instancias que fueron clasificadas incorrectamente por los alumnos anteriores reciben más peso para que los alumnos posteriores les presten más atención durante el entrenamiento.

53) Explica cómo funciona una curva ROC.

La curva ROC es una representación gráfica del contraste entre las tasas positivas verdaderas y las tasas positivas falsas en varios umbrales. A menudo se usa como un proxy para el equilibrio entre la sensibilidad del modelo (verdaderos positivos) frente a las consecuencias o la probabilidad de que desencadene una falsa alarma (falsos positivos).

54) ¿Cuál es la diferencia entre el error de tipo I y el de tipo II?

El error de tipo I es un falso positivo, mientras que el error de tipo II es un falso negativo. Dicho brevemente, el error de tipo I significa afirmar que algo ha sucedido cuando no lo ha hecho, mientras que el error de tipo II significa que usted afirma que no está sucediendo nada cuando en realidad algo lo está haciendo.Una forma inteligente de pensar en esto es pensar en el error de tipo I como decirle a un hombre que está embarazada, mientras que el error de tipo II significa que le dices a una mujer embarazada que no está embarazada.

55) ¿Cuál es la diferencia entre un modelo generativo y discriminativo?

Un modelo generativo aprenderá categorías de datos, mientras que un modelo discriminativo simplemente aprenderá la distinción entre diferentes categorías de datos. Los modelos discriminativos generalmente superarán a los modelos generativos en las tareas de clasificación.

Contribuciones

Se agradecen más las contribuciones.

  1. Bifurca el repositorio.
  2. Confirme sus preguntas o respuestas.
  3. Solicitud de extracción abierta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.