Andrew Eun "Pasión por el aprendizaje automático". Traducción de los capítulos 36-46

Han pasado tres años desde la publicación de los primeros capítulos de Andrew Ng's Machine Learning Yearning. Si está suscrito al centro "Aprendizaje automático", no es necesario presentarle a su autor, y lo más probable es que ya haya leído el libro en el idioma de la fuente original. La traducción de la primera mitad del libro al ruso fue hecha por alexey_nichnikov , en este momento se publicó en Habré en una serie de artículos .


Les presento mi versión de la traducción de la segunda mitad del libro, a saber, los capítulos 36-58. Se planea dividirlo en dos artículos para la conveniencia de su publicación. Además, puede descargar una traducción completa de estos capítulos, compilada en pdf , tal vez alguien encuentre este formato más conveniente para leer.

El primer artículo se centrará en la capacitación y las pruebas en diferentes distribuciones, así como en los algoritmos de salida de depuración.

Capacitación y pruebas en diferentes distribuciones.



Capítulo 36. Cuándo debe entrenar y probar en diferentes distribuciones



Los usuarios de su aplicación Cat Photo subieron 10,000 imágenes que usted etiquetó manualmente como que contienen o no gatos. También tiene un conjunto más grande de 200,000 imágenes que descargó de Internet. ¿Cómo definir el entrenamiento (conjunto de entrenamiento), la validación (conjunto de desarrollo) y la selección de prueba (conjunto de prueba)?

Dado que 10,000 imágenes de los usuarios reflejan de cerca la distribución de probabilidad real de los datos con los que desea trabajar con éxito en el futuro, puede usar esto para su validación y muestras de prueba. Si entrena un algoritmo de aprendizaje profundo que exige la cantidad de ejemplos de entrenamiento, puede darle 200,000 imágenes adicionales descargadas de Internet para entrenamiento. Por lo tanto, los datos en las muestras de validación y prueba tendrán diferentes distribuciones de probabilidad. ¿Cómo afectará esto el resultado de tu trabajo?

En lugar de dividir nuestros datos en muestras de entrenamiento, validación y prueba, podemos tomar todas las 210,000 imágenes disponibles y mezclarlas aleatoriamente en muestras de entrenamiento, validación y prueba. En este caso, todos los datos vienen con la misma distribución. Pero no recomiendo usar este método, porque aproximadamente el 97.6% (205,000 / 210,000) de sus muestras de validación y prueba consistirán en imágenes descargadas de Internet que no reflejan la distribución real en la que desea tener éxito.

Recomendación para la definición de validación y muestras de prueba:

  • seleccione muestras de validación y prueba para reflejar los datos que espera recibir en el futuro y con los que desea trabajar con éxito.

La mayoría de la literatura académica de aprendizaje automático sugiere que la capacitación, la validación y las muestras de prueba tienen la misma distribución. 1 En los albores del aprendizaje automático, los datos eran escasos. Por lo general, solo teníamos un conjunto de datos con alguna distribución de probabilidad. Por lo tanto, dividimos al azar todo el conjunto en muestras de entrenamiento, validación y prueba, suponiendo que todos los datos provienen de la misma fuente, que generalmente corresponde a la realidad.
1 Existe una serie de estudios científicos sobre la capacitación y las pruebas de modelos en varias distribuciones. Los ejemplos incluyen la adaptación del dominio, el aprendizaje de transferencia y el aprendizaje multitarea. Pero todavía hay una gran brecha entre la teoría y la práctica. Si entrena un modelo en el conjunto de datos A y prueba en el conjunto de datos B, que es muy diferente, la suerte puede tener un gran impacto en el rendimiento de su algoritmo. (Aquí, “suerte” incluye la selección manual de atributos por parte de un investigador para una tarea específica, así como otros factores que aún no entendemos). Esto dificulta la realización de un estudio académico sistemático de capacitación y pruebas en diversas distribuciones.

Pero en la era de los grandes datos, ahora tenemos acceso a grandes conjuntos de entrenamiento, como imágenes con gatos de Internet. Incluso si la muestra de capacitación tiene una distribución diferente de la distribución de las muestras de validación y prueba, aún queremos usarla para capacitación, ya que esto puede proporcionar mucha información adicional.

En el ejemplo con un detector de gatos, en lugar de poner las 10,000 imágenes cargadas por los usuarios en las muestras de validación y prueba, solo podríamos colocar 5,000 imágenes en ellas. Y los 5,000 ejemplos restantes que podemos poner en el conjunto de entrenamiento. Por lo tanto, la muestra de capacitación consistirá en 205,000 ejemplos e incluirá datos que tengan la misma distribución que en las muestras de validación y prueba, más 200,000 imágenes de Internet. En el próximo capítulo, discutiremos por qué este método es útil.

Veamos un segundo ejemplo. Suponga que está creando un sistema de reconocimiento de voz para transcribir direcciones para la aplicación de voz Navigator. Tiene 20,000 ejemplos, en cada uno de los cuales el usuario nombra alguna dirección. Pero también tiene otras 500,000 grabaciones de audio en las que los usuarios hablan sobre temas gratuitos. Puede tomar 10,000 ejemplos con direcciones para validación y muestras de prueba, y los 10,000 ejemplos restantes más 500,000 ejemplos adicionales que se incluirán en el conjunto de capacitación.

Continuaremos asumiendo que nuestros datos de muestra de validación y prueba tienen la misma distribución. Pero es importante comprender y recordar que las diferentes distribuciones en las muestras de capacitación y validación / prueba conducirán a problemas especiales.


Capítulo 37. Cómo decidir si usar todos sus datos o solo una parte



Suponga que la muestra de entrenamiento de su detector de gatos incluye 10,000 imágenes cargadas por el usuario. Deje que estos datos tengan la misma distribución que en las muestras de validación y prueba, y es para tal distribución que desea lograr el máximo resultado. También tiene 20,000 imágenes adicionales descargadas de Internet. ¿Es necesario incluir todas las 20,000 + 10,000 = 30,000 imágenes en el conjunto de entrenamiento, o es mejor dejar 20,000 imágenes de Internet por temor a introducir errores en su algoritmo de aprendizaje?

Al utilizar generaciones anteriores de algoritmos de aprendizaje (como un algoritmo de visión por computadora diseñado manualmente, seguido de un clasificador lineal simple), existía un riesgo real de que la combinación de datos de ambas fuentes pudiera degradar los resultados. Por lo tanto, algunos ingenieros le advertirán contra la inclusión de 20,000 imágenes en línea.

Pero en la era moderna de algoritmos de aprendizaje potentes y flexibles, como las grandes redes neuronales, este riesgo se ha reducido significativamente. Si puede permitirse el lujo de construir una red neuronal con un número suficientemente grande de capas ocultas, puede agregar de forma segura 20,000 imágenes de Internet a su conjunto de entrenamiento. Es probable que agregar imágenes mejore su resultado final.

Esta observación se basa en el hecho de que existe cierta correspondencia xy que funciona bien para ambos tipos de datos. En otras palabras, existe algún tipo de sistema que, habiendo recibido una imagen de Internet o una imagen de una aplicación móvil, predice de manera confiable una etiqueta sin siquiera saber la fuente de la imagen.

Agregar 20,000 imágenes adicionales de Internet tendrá los siguientes efectos:

  1. Esto le dará a su red neuronal más ejemplos de cómo se ven / no se ven los gatos. Esto es útil porque las imágenes web y las imágenes cargadas por los usuarios de una aplicación móvil tienen algunas similitudes. Su red neuronal puede aplicar parte del conocimiento obtenido de las imágenes en línea a las imágenes de una aplicación móvil.
  2. Esto obliga a la red neuronal a gastar parte de sus recursos en el reconocimiento de propiedades que son específicas de las imágenes de Internet (por ejemplo, mayor resolución, varios métodos de diseño, etc.). Si estas propiedades son significativamente diferentes de las imágenes de una aplicación móvil, esto se "drenará" parte de las capacidades representativas de la red neuronal. Por lo tanto, habrá menos oportunidades para reconocer los datos recibidos de una aplicación móvil, y esto es lo que realmente debería preocuparte. Teóricamente, esto puede degradar el rendimiento de su algoritmo.

Para explicar el segundo efecto en otras palabras, podemos recurrir a un personaje ficticio, Sherlock Holmes, quien dice que su cerebro se ve como un ático que tiene una cantidad limitada de espacio. Él dice que “con cada adición de conocimiento olvidas lo que sabías antes. Por lo tanto, es extremadamente importante no permitir que hechos inútiles suplanten a los útiles ”. 2
2 "Etude in Scarlet", Arthutre Conan Doyle, 1887

Afortunadamente, si tiene la potencia informática necesaria para construir una red neuronal suficientemente grande, es decir, un "ático lo suficientemente grande", entonces este "desplazamiento" descrito anteriormente no es un problema grave. Tiene suficientes oportunidades de capacitación tanto en imágenes de Internet como en imágenes de una aplicación móvil, mientras que ambos tipos de datos no compiten por la capacidad de reconocimiento. El "cerebro" de su algoritmo es lo suficientemente grande como para que no tenga que preocuparse de que de repente no tenga suficiente "espacio en el ático".

Pero si no tiene una red neuronal suficientemente grande (u otro algoritmo de aprendizaje muy flexible), debe prestar más atención a los datos de entrenamiento que coincidan con su validación y muestra de prueba.

Si cree que tiene datos que no aportan ningún beneficio, simplemente debe excluirlos para acelerar los cálculos. Por ejemplo, suponga que sus muestras de validación y prueba contienen principalmente fotografías aleatorias de personas, lugares, letreros y punteros, así como animales. Supongamos que también tiene una gran colección de documentos históricos escaneados:



Estos documentos no contienen nada como un gato. También se ven completamente diferentes de los datos de sus muestras de validación y prueba. No tiene sentido incluir estos datos como ejemplos negativos, porque en este caso los beneficios descritos en el primer efecto serán insignificantes. Según estos datos, su red neuronal no podrá descubrir casi nada que pueda aplicar a su muestra de validación y prueba. La inclusión de estos ejemplos conducirá a una pérdida de recursos informáticos y una disminución de la capacidad representativa de la red neuronal.


Capítulo 38. Cómo decidir si incluir datos en conflicto



Suponga que quiere aprender cómo pronosticar los precios de la vivienda en Nueva York. Dado el tamaño de la casa (entrada x ), desea predecir el precio (etiqueta de destino y ).

Los precios de la vivienda en Nueva York son muy altos. Supongamos que tiene un segundo conjunto de datos: los precios de la vivienda en Detroit, Michigan, donde los precios de la vivienda son mucho más bajos. ¿Debo incluir estos datos en mi conjunto de entrenamiento?

Dado el mismo tamaño x , el precio de una casa y es muy diferente dependiendo de si está en Nueva York o Detroit. Si solo le importa pronosticar los precios de la vivienda en Nueva York, la combinación de los dos conjuntos de datos afectará su productividad. En este caso, sería mejor no utilizar datos contradictorios del conjunto de Detroit. 3
3 Hay una forma de resolver el problema de incompatibilidad de los datos de Detroit con los datos de Nueva York, a saber, agregar una característica adicional a cada ejemplo de entrenamiento, es decir, Indicación de la ciudad. Dado el valor de entrada de x , que ahora indica la ciudad, el valor objetivo de y ahora se determina de manera única. Sin embargo, en la práctica, todavía no veo que se haga con frecuencia.

¿En qué se diferencia este ejemplo de vivienda en Nueva York y Detroit de nuestro ejemplo con imágenes de gatos e imágenes de Internet desde una aplicación móvil?

El ejemplo con las imágenes de gatos difiere en que, dada la imagen de entrada x , puede predecir de manera confiable la etiqueta y , indicando si hay un gato en ella, sin siquiera saber si recibimos la imagen de Internet o de una aplicación móvil. Es decir existe una función f (x) que refleja de manera confiable la correspondencia de la entrada x con la salida objetivo y , sin siquiera saber la fuente de origen de x . Por lo tanto, la tarea de reconocer imágenes de Internet "corresponde" a la tarea de reconocer imágenes desde una aplicación móvil. Esto significa que hubo una pequeña desventaja (a excepción de los costos computacionales) al incluir todos los datos y algunas posibles ventajas significativas. En contraste con el ejemplo con datos contradictorios de Nueva York y Detroit, en los que, para el mismo valor de entrada x (tamaño de la casa), el precio es muy diferente dependiendo de la ciudad en la que se encuentra esta casa.


Capítulo 39. Pesaje de datos



Suponga que tiene 200,000 imágenes en línea y 5,000 imágenes de usuarios de su aplicación móvil. Hay una relación de 40: 1 entre los tamaños de estos conjuntos de datos. Teóricamente, siempre que construya una gran red neuronal y la entrene lo suficiente con todos los 205,000 ejemplos disponibles, no hay nada de malo en hacer que el algoritmo funcione bien tanto en imágenes de Internet como en imágenes móviles.

Pero en la práctica, al tener 40 veces más imágenes de Internet que imágenes de una aplicación móvil, es posible que deba gastar 40 veces más recursos informáticos que cuando entrenó a una red para solo 5,000 imágenes.

Si no tiene grandes recursos informáticos, puede dar a las imágenes de Internet un peso mucho menor como compromiso.

Por ejemplo, suponga que su objetivo de optimización es el error al cuadrado (esta no es una buena opción para el problema de clasificación, pero simplificará nuestra explicación). Por lo tanto, su algoritmo de aprendizaje está tratando de optimizar:

$$ display $$ \ min_θ \ sum _ {(x, y) ∈MobileImg} (h_θ (x) -y) ^ 2 + \ sum _ {(x, y) ∈InternetImg} (h_θ (x) -y) ^ 2 $$ display $$


La primera cantidad anterior es el error total de 5,000 imágenes móviles, y la segunda cantidad es el error total de 200,000 imágenes de Internet. En cambio, puede optimizar con un parámetro adicional  beta :

$$ display $$ \ min_θ \ sum _ {(x, y) ∈MobileImg} (h_θ (x) -y) ^ 2 + \ beta \ sum _ {(x, y) ∈InternetImg} (h_θ (x) -y) ^ 2 $$ mostrar $$


Si instala  beta = 1/40, el algoritmo otorgará el mismo peso a 5,000 imágenes móviles y 200,000 imágenes de Internet. También puedes configurar el parámetro  beta otros valores, posiblemente ajustándolo a la muestra de validación.

Al asignar menor peso a las imágenes de Internet, no necesita crear una red neuronal masiva para asegurarse de que el algoritmo se adapte bien a ambos tipos de tareas. Este método de "reponderación" es necesario solo si sospecha que los datos adicionales (imágenes de Internet) tienen una distribución muy diferente de los datos en las muestras de validación y prueba, o si hay muchos más datos adicionales que los datos obtenidos con la misma distribución como en las muestras de validación y prueba (imágenes móviles).


Capítulo 40. Generalización de la muestra de entrenamiento a una muestra de validación



Suponga que aplica ML en una situación en la que la muestra de entrenamiento es diferente de la validación / prueba. Digamos, una muestra de entrenamiento contiene imágenes de Internet + imágenes móviles, y las muestras de validación / prueba solo contienen imágenes móviles. Sin embargo, el algoritmo no funciona muy bien: tiene un error mucho mayor en la muestra de validación / prueba de lo que quisiéramos. Aquí hay algunas razones por las cuales este puede no ser el caso:

  1. El algoritmo no funciona muy bien en el conjunto de entrenamiento. Este es un problema de alto sesgo (evitable) de la distribución de la muestra de entrenamiento.
  2. El algoritmo funciona bien en el conjunto de entrenamiento, pero se generaliza poco a los datos nuevos (no mostrados anteriormente) tomados con la misma distribución que en el conjunto de entrenamiento. Esta es una gran variación.
  3. El algoritmo generaliza bien a los datos nuevos (no mostrados anteriormente) tomados con la misma distribución que en la muestra de entrenamiento, pero no a los datos de la muestra de validación / prueba. Llamamos a este problema falta de coincidencia de datos debido al hecho de que los datos de la muestra de entrenamiento están pobremente correlacionados con los datos de las muestras de validación / prueba.

Por ejemplo, suponga que las personas logran un resultado casi perfecto en la tarea de identificar gatos. Y su algoritmo ha alcanzado:

  • 1% de errores en la muestra de entrenamiento
  • 1.5% de errores en datos nuevos (previamente no mostrados al algoritmo) que tienen la misma distribución que la muestra de entrenamiento
  • 10% de errores en la muestra de validación

En este caso, definitivamente tiene un problema de falta de coincidencia de datos. Para habilitarlo, puede intentar hacer que la muestra de entrenamiento sea más similar a la validación / prueba. Discutiremos algunas técnicas de esta técnica más adelante.

Para diagnosticar en qué medida el algoritmo sufre de cada uno de los problemas 1-3 descritos anteriormente, será útil tener un conjunto de datos diferente. En particular, en lugar de proporcionar al algoritmo todos los datos disponibles para el entrenamiento, puede dividirlos en dos partes: la muestra de entrenamiento real en la que se entrenará el algoritmo, y un conjunto separado, que llamaremos el conjunto de validación de entrenamiento (conjunto "trainig dev" ), que no utilizaremos en el entrenamiento.

Por lo tanto, tiene 4 conjuntos de datos:

  • El conjunto de entrenamiento (conjunto de entrenamiento). Estos son los datos sobre los que se entrenará el algoritmo (por ejemplo, imágenes de Internet + imágenes de una aplicación móvil). No es necesario que estos datos se tomen con la misma distribución, cuyo resultado finalmente nos enfocamos (muestras de validación / prueba).
  • Muestra de capacitación y validación (conjunto de "capacitación de desarrollo"). Estos datos se toman con la misma distribución que en la muestra de capacitación (por ejemplo, imágenes de Internet + imágenes de una aplicación móvil). Este conjunto suele ser más pequeño que el conjunto de entrenamiento, y debe ser lo suficientemente grande como para evaluar y seguir el progreso de nuestro algoritmo de entrenamiento.
  • Validación de muestreo (conjunto de desarrollo). Estos datos se toman con la misma distribución que en la muestra de prueba y deben reflejar completamente la distribución de datos en los que nos esforzamos por lograr la mejora máxima (por ejemplo, imágenes de una aplicación móvil).
  • Conjunto de prueba Estos datos se toman con la misma distribución que en la muestra de validación (por ejemplo, imágenes de una aplicación móvil).

Armado con estos cuatro conjuntos de datos separados, puede evaluar:

  • El error de entrenamiento (error de entrenamiento), al evaluar la muestra de entrenamiento.
  • La capacidad del algoritmo para generalizar a nuevos datos, con la misma distribución que en el conjunto de entrenamiento, mediante la evaluación del conjunto de validación de entrenamiento.
  • La eficiencia del algoritmo en su conjunto para resolver el problema, mediante la evaluación de una muestra de validación y / o prueba.

La mayoría de las recomendaciones que se dieron en los capítulos 5-7 de este libro para elegir el tamaño de la muestra de validación también son aplicables a la muestra de capacitación y validación.


Capítulo 41. Determinación de sesgo, varianza y error de falta de coincidencia de datos



Suponga que las personas alcanzan una eficiencia casi perfecta (error ≈0%) en las tareas de detección de gatos y, por lo tanto, la tasa de error óptima es aproximadamente 0%.

Supongamos que tienes:

  • 1% de errores en la muestra de entrenamiento
  • 5% de errores en la muestra de capacitación y validación
  • 5% de errores en la muestra de validación

¿Qué nos dice esto? Sabes que tienes una gran variación. Los métodos de reducción de dispersión descritos anteriormente deberían permitirle progresar.

Ahora suponga que su algoritmo ha alcanzado:

  • 10% de errores en la muestra de entrenamiento
  • 11% de errores en la muestra de capacitación y validación
  • 12% de errores en la muestra de validación

Esto sugiere que tiene un sesgo alto evitable en el conjunto de entrenamiento. Es decirel algoritmo produce malos resultados en el conjunto de entrenamiento, pero los métodos de reducción de compensación deberían ayudar.

En los dos ejemplos anteriores, el algoritmo sufre solo un alto sesgo (sesgo evitable) o solo una alta dispersión (varianza). Además, el algoritmo puede sufrir cualquier combinación de alto sesgo, alta dispersión e inconsistencia de datos. Por ejemplo:

  • 10% de errores en la muestra de entrenamiento
  • 11% de errores en la muestra de capacitación y validación
  • 20% de errores en la muestra de validación

Este algoritmo sufre un alto sesgo (sesgo evitable) y una falta de coincidencia de datos, y al mismo tiempo no experimenta problemas con una alta dispersión en la muestra de entrenamiento.

Puede ser más fácil entender cómo los diferentes tipos de errores se relacionan entre sí escribiéndolos en la siguiente tabla:


Continuando con el ejemplo del detector de imagen de gato, puede ver que hay dos distribuciones de datos diferentes (distribución A y distribución B) a lo largo del eje X. En el eje Y, tenemos tres tipos de errores: error humano, error en ejemplos de los que se entrenó el algoritmo y error en ejemplos, en los que no se entrenó el algoritmo. Podemos llenar las celdas de la tabla con los diversos tipos de errores que identificamos en el capítulo anterior.

Si lo desea, también puede completar las dos celdas restantes en esta tabla: puede completar el campo en la esquina superior derecha ("La eficiencia es accesible para los humanos en imágenes desde una aplicación móvil"), pidiéndole a alguien que marque las imágenes de los gatos desde la aplicación móvil y luego mida su error . Puede completar el siguiente campo tomando imágenes de gatos desde una aplicación móvil (distribución B) y colocando una pequeña parte de ellos en el conjunto de entrenamiento para que la red neuronal también aprenda de él. Luego, mide el error del modelo entrenado en este subconjunto de datos. Llenar estos dos campos adicionales a veces puede proporcionar una comprensión adicional de cómo funciona el algoritmo en dos distribuciones diferentes (distribución A y B) de datos.

Al comprender qué tipos de errores sufre más el algoritmo, puede determinar mejor si enfocarse en reducir el sesgo, reducir la varianza o reducir las inconsistencias de datos.


Capítulo 42. Resolución de error de coincidencia de datos



Supongamos que ha desarrollado un sistema de reconocimiento de voz que funciona muy bien en una muestra de entrenamiento y en una muestra de validación de entrenamiento. Sin embargo, el algoritmo no funciona bien en su muestra de validación: tiene un problema de falta de coincidencia de datos. Que puedes hacer

Le recomiendo que: (i) intente comprender qué propiedades difieren en los datos de las muestras de capacitación y validación; (ii) trate de encontrar más datos de entrenamiento que coincidan mejor con los ejemplos de la muestra de validación con los que su algoritmo tiene problemas. 4 4
4 « » (domain adaptation) — . , , .

Por ejemplo, suponga que está realizando un análisis de validación de errores para un sistema de reconocimiento de voz: revisa manualmente 100 ejemplos e intenta comprender dónde comete errores el algoritmo. Descubrirá que su sistema no funciona bien, porque la mayoría de las grabaciones de audio de la muestra de validación se realizaron dentro del automóvil, mientras que la mayoría de los ejemplos de la muestra de entrenamiento se grabaron en un contexto de silencio. El ruido del motor y la carretera degradan drásticamente el rendimiento de su sistema de reconocimiento de voz. En este caso, puede intentar obtener más ejemplos de entrenamiento que contengan grabaciones de audio realizadas en el automóvil. El propósito del análisis de errores es comprender las diferencias significativas entre las muestras de capacitación y validación, que conducen a la falta de coincidencia de datos.

Si su muestra de entrenamiento y validación de entrenamiento incluye el sonido grabado en el automóvil, también debe verificar la efectividad de su sistema en este conjunto de datos. Si funciona bien en ejemplos "automotrices" de una muestra de capacitación, pero no en ejemplos "automotrices" de una muestra de validación de capacitación, esto confirma una vez más la hipótesis de que será útil obtener más ejemplos "automotrices". Es por eso que en el capítulo anterior discutimos la posibilidad de incluir en su conjunto de capacitación un conjunto de datos que tengan la misma distribución que en las muestras de validación / prueba. Esto le permite comparar la efectividad del sistema con ejemplos "automotrices" en el conjunto de capacitación versus ejemplos similares de muestras de validación / prueba.

Desafortunadamente, no hay garantías en este asunto. Por ejemplo, si no tiene la oportunidad de obtener más datos de capacitación que coincidan mejor con los datos de muestra de validación, es posible que no tenga un camino claro para mejorar la eficiencia.


Capítulo 43. Sintetizar datos artificiales



Su sistema de reconocimiento de voz necesita más datos que suenen como si las grabaciones de audio de estos ejemplos se hicieran en un automóvil. En lugar de recopilar una gran cantidad de datos mientras se conduce, podría haber una forma más fácil de obtener esos datos: generándolos artificialmente.

Suponga que recibe una gran cantidad de grabaciones de audio con ruido de carretera / automóvil. Puede descargar estos datos desde varios sitios. Supongamos que también tiene un conjunto de entrenamiento grande, en el que la gente habla en una habitación tranquila. Si toma una grabación de audio de una persona que habla y "agrega" los sonidos del ruido del automóvil / carretera, obtendrá una grabación de audio que suena como si esta persona estuviera hablando en un automóvil ruidoso. Con este proceso, puede sintetizar una gran cantidad de datos que suena como si se hubieran recopilado dentro de un automóvil.

En general, hay varias circunstancias en las que la generación de datos artificiales le permite crear un gran conjunto de datos que coincide razonablemente con la muestra de validación. Tomemos un detector de imagen de gato como segundo ejemplo. Notó que las imágenes en la muestra de validación tienen mucho más desenfoque al moverse, porque generalmente se obtienen de usuarios de teléfonos móviles que mueven el teléfono ligeramente durante el disparo. Puede tomar imágenes nítidas de Internet del conjunto de entrenamiento y agregarles una imitación de desenfoque de movimiento, haciéndolos más similares a las imágenes en el conjunto de validación.

Tenga en cuenta que la síntesis de datos artificiales tiene sus propios problemas: a veces es más fácil crear datos sintéticos que parezcan realistas para una persona que crear datos que parezcan realistas para una computadora. Por ejemplo, suponga que tiene 1000 horas de grabaciones de voz en un conjunto de entrenamiento, pero solo 1 hora de ruido del automóvil. Si usa repetidamente la misma hora de ruido del automóvil con partes que no sean las 1000 horas originales del conjunto de entrenamiento, obtendrá un conjunto de datos sintéticos en el que el mismo ruido del automóvil se repite una y otra vez. Aunque la persona que escucha este sonido probablemente no puede nombrar sus características: todos los ruidos del automóvil suenan igual para la mayoría de nosotros, es posible que el algoritmo de aprendizaje se vuelva a entrenar durante 1 hora de ruido del automóvil. De esta manerapuede generalizarse poco a nuevas grabaciones de audio en las que el ruido del automóvil suena diferente.

Alternativamente, suponga que tiene 1000 horas únicas de ruido de automóvil, pero solo se usaron 10 automóviles diferentes para grabarlos. En este caso, el algoritmo puede volver a capacitarse en los registros de estos 10 automóviles y mostrará un bajo rendimiento al probar los registros de otro automóvil. Desafortunadamente, estos problemas son difíciles de detectar.


Tome otro ejemplo, suponga que crea un sistema de visión por computadora para reconocer automóviles. Suponga que está colaborando con una compañía de videojuegos que tiene varios modelos de automóviles hechos con gráficos por computadora. Para entrenar su algoritmo, utiliza estos modelos para generar imágenes sintéticas de automóviles. Incluso si las imágenes sintetizadas se ven muy realistas, este enfoque (que fue sugerido independientemente por muchas personas) probablemente no funcionará bien. Un videojuego puede tener aproximadamente 20 modelos de automóviles. Crear un modelo 3D de un automóvil de alta calidad es muy costoso, si estuvieras jugando un juego, probablemente no notarías que ves los mismos automóviles una y otra vez, tal vez solo en diferentes colores. Es decirEstos datos te parecen muy realistas. Pero en comparación con la variedad de todos los automóviles en la carretera y, por lo tanto, con el conjunto que probablemente verá en la muestra de validación / prueba, este conjunto de 20 modelos sintetizados captura solo una pequeña fracción de toda la variedad global de automóviles. Por lo tanto, si sus 100,000 ejemplos de entrenamiento se basan completamente en estos 20 automóviles, entonces su sistema será reentrenado por estos modelos específicos y no podrá generalizarse bien a las muestras de validación / prueba que incluyen otros modelos de automóviles.

Al sintetizar datos, considere si realmente está generando un conjunto representativo de ejemplos. Trate de no dar propiedades de datos sintetizados que
permita que el algoritmo de aprendizaje distinga un ejemplo sintetizado de uno no sintetizado, como en los casos en que todos los datos sintetizados se obtienen sobre la base de uno de los 20 modelos de automóviles o todos los sonidos sintetizados se obtienen de solo 1 hora de ruido del automóvil. Seguir este consejo puede ser muy difícil.

Cuando se trabajaba en la síntesis de datos, a veces nuestro equipo tardó semanas en crear datos con detalles lo suficientemente cercanos a la distribución real de los datos sintetizados que tenían un efecto significativo. Pero si puede obtener los detalles correctos, de repente le dará acceso a un conjunto de entrenamiento mucho más grande que antes.

Algoritmos de salida de depuración


Capítulo 44. Punto de referencia de optimización



Imagina que estás desarrollando un sistema de reconocimiento de voz. Su sistema funciona tomando el audio A como entrada y calcula un puntaje A (S) para cada posible oración de salida S. Por ejemplo, podría intentar evaluar el puntaje A (S) = P (S | A), es decir. la probabilidad de que la oración S sea la transcripción de salida correcta, dado que el audio se envió a la entrada A.

Dado el método de cálculo de la puntuación A (S), debe encontrar una oración en inglés que tenga la calificación máxima:

Output=argmaxSScoreA(S)


¿Cómo calcular el "arg max" del ejemplo anterior? Hay 50,000 palabras en inglés, en cuyo caso hay (50,000) N posibles oraciones de longitud N. Esto es demasiado para enumerarlo.

Por lo tanto, debe aplicar un algoritmo de búsqueda aproximado para tratar de encontrar el valor de S que optimice (maximice) la puntuación de la Puntuación A (S). Un ejemplo de dicho algoritmo es la búsqueda de haz, que guarda solo a los K mejores candidatos en el proceso de búsqueda. (Para los propósitos de este capítulo, no es necesario que comprenda los detalles de la operación de búsqueda de rayos). Tales algoritmos no garantizan la búsqueda del valor de S, lo que maximiza la puntuación Puntuación A (S).

Imagine que en una cinta de audio alguien dijera "Me encanta el aprendizaje automático". Pero en lugar de la transcripción correcta, su sistema emite el error "Me encantan los robots". Hay dos posibles razones para lo que podría salir mal:

  1. Problemas en el algoritmo de búsqueda . El algoritmo de búsqueda de haz encontró incorrectamente el valor de S, que maximiza la puntuación A (S).
  2. Un problema objetivo con la función de evaluación . Nuestra estimación de la puntuación A (S) = P (S | A) no fue precisa. En particular, la puntuación A (S) seleccionada no permitió reconocer correctamente la transcripción correcta "Me encanta el aprendizaje automático".

Dependiendo de cuál de ellos fue la causa del error del sistema, debe priorizar de manera diferente para futuros esfuerzos. En el primer caso, debe trabajar para mejorar el algoritmo de búsqueda, en el segundo caso, debe trabajar en un algoritmo de aprendizaje que calcule una puntuación de Puntuación A (S).

Ante una situación similar, algunos investigadores deciden aleatoriamente trabajar en un algoritmo de búsqueda, mientras que otros optan aleatoriamente por mejorar el aprendizaje de la función de calificación de Puntuación A (S). Pero hasta que descubra las verdaderas causas de un error del sistema, todos sus esfuerzos pueden desperdiciarse. ¿Cómo tomar una decisión más sistemática sobre lo que vale la pena trabajar?

Vamos a salirserá la transcripción de salida ("Me encantan los robots"). Deje que S * sea la transcripción correcta ("Me encanta el aprendizaje automático"). Para comprender cuál de los dos problemas enumerados anteriormente nos enfrenta, puede realizar una prueba de verificación de optimización: primero calcule los puntajes para el puntaje A (S *) y para el puntaje A (S out ). Luego verifique cuál de las dos clasificaciones será más importante. Hay dos probabilidades:

  1. Score A (S*) > Score A (S out ), .. ().

    S*. S out . , S, Score A (S). , . , (beam search).
  2. Score A (S*) ≤ Score A (S out ), .. ().

    , Score A (.): S out . . Score A (S) S.

Nuestra discusión tocó un solo ejemplo. Para poner en práctica la prueba de control de optimización, debe verificar los errores de su muestra de validación. Para cada error, debe verificar que la estimación de la transcripción esperada (correcta) sea mayor que la estimación de la transcripción de salida (incorrecta), es decir. Puntuación A (S *)> Puntuación A (S fuera ). Cada ejemplo de la muestra de validación para el cual persiste dicha desigualdad se marcará como un error causado por el algoritmo de optimización. Cada ejemplo para el que esta desigualdad no persista se considerará un error debido al método incorrecto de calcular la puntuación A (.).

Por ejemplo, encuentra que el 95% de los errores son causados ​​por el trabajo de la función de evaluación al calcular el puntaje A(.), y solo el 5% de los errores son causados ​​por el algoritmo de optimización. Ahora sabe que no importa cuánto mejore su función de optimización, en realidad ayudará a eliminar no más del 5% de los errores. Por lo tanto, debe centrarse en mejorar el método de cálculo de la Puntuación A (.).


Capítulo 45. Procedimiento de prueba de control de optimización general



Puede aplicar el punto de referencia de optimización al obtener algo de x como entrada, ya sabe cómo calcular la puntuación X (y), que indica qué tan bien corresponde la salida y a la x dada en la entrada. Además, utiliza el algoritmo de búsqueda aproximado para encontrar arg max Y Score X (y), pero sospecha que el algoritmo de búsqueda está equivocado al encontrar el máximo. En el ejemplo anterior, con un sistema de reconocimiento de voz, x = A era una grabación de audio, y y = S era una transcripción de salida.

Suponga que y * es el valor de salida correcto, pero el algoritmo lo devuelve en su lugar. Luego, lo principal es verificar cómo se relacionan el puntaje X (y *) y el puntaje X (y out ). Si la primera estimación es mayor que la segunda, entonces la causa del error está en el algoritmo de optimización; de lo contrario, la falla recae en la función de cálculo de la puntuación Puntuación X (y).

Veamos otro ejemplo. Supongamos que está creando un sistema de traducción automática del chino al inglés. Su sistema funciona al recibir una oración C, calcula un puntaje C (E) para cada posible versión de la traducción E. Por ejemplo, puede usar el puntaje Puntaje C (E) = P (E | C), es decir la probabilidad de que la transferencia sea E, dado que la oración C ha sido presentada.

Su motor de traducción automática está tratando de calcular:

Salida=arg maxEPuntuaciónC(E)



Sin embargo, el conjunto de todas las posibles oraciones E en inglés es tan grande que debe confiar en un algoritmo de búsqueda heurístico.

Suponga que su algoritmo produce la traducción incorrecta E con más frecuencia que alguna traducción correcta E *. Luego, la prueba de control de optimización permitirá calcular la desigualdad Puntaje C (E *)> Puntaje C (E fuera ). Si se guarda, la puntuación C (.) Reconoce correctamente E * como la mejor salida E, por lo que atribuirá este error a la parte del algoritmo de búsqueda aproximado, de lo contrario, a la función de cálculo Puntuación C (.).

Este es un patrón muy general en IA: primero, entrenamos la función de estimación aproximada Score x (.), Luego usamos el algoritmo de maximización aproximada. Si recuerda este patrón, puede usar la prueba de control de optimización para encontrar la fuente de los errores.


Capítulo 46. Ejemplo de aprendizaje de refuerzo




Suponga que usa el aprendizaje automático para enseñarle a un helicóptero cómo realizar maniobras complejas. Arriba hay una imagen de un helicóptero controlado por una computadora que aterriza con el motor apagado.

Esta maniobra se llama aterrizar en autorrotación. Permite que el helicóptero aterrice, incluso si el motor se estrella repentinamente. Los pilotos humanos practican esta maniobra como parte de su entrenamiento. Su objetivo es utilizar el algoritmo de aprendizaje automático para que el helicóptero pueda volar a lo largo de cierta trayectoria T y aterrizar de forma segura al final.

Para aplicar el entrenamiento de refuerzo, debe desarrollar una "función de recompensa" R (.) Que proporcione una estimación que muestre cuán buena fue cada trayectoria posible de T., por ejemplo, si la trayectoria T condujo a un accidente de helicóptero, entonces deje que la recompensa R (T) = - 1000, es decir Tiene un gran valor negativo. La trayectoria T, que terminó con un aterrizaje exitoso, tendrá una estimación positiva de R (T), que refleja con precisión la dependencia de cuán suave fue el aterrizaje. La función de recompensa R (.) Generalmente se selecciona manualmente para cuantificar cuán deseables son las diversas trayectorias de T. Debe compensar varios factores: cuánto se sacudió durante el aterrizaje, si el helicóptero aterrizó exactamente en el lugar correcto, qué tan difícil fue el descenso para los pasajeros, etc. Las buenas características de recompensa no son fáciles de desarrollar.

Dada la función de recompensa R (T), la tarea del algoritmo de aprendizaje de refuerzo es controlar el helicóptero para alcanzar el máximo T R (T). Sin embargo, los algoritmos de aprendizaje por refuerzo hacen muchas aproximaciones y es posible que no logren esta maximización.

Supongamos que define una función de recompensa R (.) Y ejecuta su algoritmo de aprendizaje. Sin embargo, su efectividad es mucho peor que la de un piloto humano: tiembla mucho durante el aterrizaje y parece menos seguro. ¿Cómo determinar si el error está relacionado con el algoritmo de aprendizaje de refuerzo que está tratando de seguir la ruta máxima T R (T), o el error está relacionado con la función de recompensa que está tratando de medir y determinar la relación ideal entre la sacudida aceptable durante el aterrizaje y la precisión del sitio de aterrizaje?

Aplicamos la prueba de control de optimización. Deje que T human sea ​​el camino seguido por el piloto, y T out sea ​​el camino elegido por el algoritmo. Siguiendo la descripción anterior, estamos de acuerdo en que la trayectoria de T humano es mejor que T out , entonces la pregunta clave de prueba será si R (T humano )> R (T out ) corresponde a la realidad.

Opción 1: si esta desigualdad persiste, entonces la función de recompensa R (.) Estima correctamente la trayectoria de T humano . Pero el algoritmo de aprendizaje de refuerzo eligió la trayectoria T peor valorada. Esto significa que vale la pena trabajar para mejorar nuestro algoritmo de aprendizaje de refuerzo.

Opción 2: esta desigualdad no se conserva, es decir R (T humano ) ≤ R (T out ). Esto significa que la función de recompensa R (.) Asignó el peor resultado para T humano , aunque esta es, con mucho, la mejor trayectoria. Debería trabajar para mejorar R (.) Para encontrar la mejor proporción de factores que corresponden a un buen ajuste.

Muchas aplicaciones de aprendizaje automático tienen esta "plantilla" para optimizar la función Score x (.), Utilizando el algoritmo de búsqueda aproximado. A veces no tenemos exactamente la entrada x dada, por lo que la optimización se reduce solo a la función de evaluación Puntuación (.). En el ejemplo anterior, la función de recompensa era la función de recompensa Puntuación (T) = R (T), y el algoritmo de optimización era un algoritmo de aprendizaje de refuerzo que intentaba calcular una buena trayectoria T.

La única diferencia entre este ejemplo y los anteriores es que, en lugar de compararlo con el resultado "óptimo", lo comparamos con la eficiencia humana para T humano . Suponemos que la trayectoria humana T es razonablemente buena, incluso si no es óptima. En general, siempre que tenga algo de y * (en este ejemplo, T humano ), que es el mejor resultado en términos de eficiencia para su algoritmo de aprendizaje actual (incluso si no es "óptimo"), la prueba de control de optimización puede mostrar si habrá más prometiendo mejorar el algoritmo de optimización o la función de evaluación.


[ Continúa ]

Source: https://habr.com/ru/post/485070/


All Articles