TensorFlow de 0 a 1 - 13 - AI Tamer: descripción general del ajuste de la red neuronal
En la era futura de la inteligencia artificial, habrá cada vez menos "programas hechos a mano", y los programas basados en programas generales de inteligencia artificial y el "aprendizaje" a través de big data estarán en todas partes. Para entonces, los programadores dejarán sus trabajos y serán reemplazados por una nueva especie profesional: no necesitan conocer todos los detalles como los programadores, sino que se centran en la adquisición y selección de datos, el entrenamiento y el ajuste de modelos. Son entrenadores de animales con inteligencia artificial.
Huang Shijie, que representó a AlphaGo en las dos últimas batallas de Go entre humanos y máquinas, es un pionero en entrenadores de inteligencia artificial: este jugador aficionado de seis dan construyó AlphaGo como ingeniero jefe y derrotó al profesional humano de nueve-dan. dan player. , desde entonces no ha habido ningún oponente humano.
Cuando se implementó el reconocimiento MNIST en el pasado, la selección de varios valores de parámetros parecía lógica y fluida. De hecho, todo se basó en la experiencia de los predecesores. Sin embargo, el proceso de ajuste es real. Las situaciones deben estar llenas de problemas que no se advirtieron en el pasado. Recuerdo que cuando TensorFlow construyó un NN de 3 capas para reproducir MNIST en 2012, una inicialización accidental de los pesos y sesgos a 0 resultó en una tasa de reconocimiento que ni siquiera podía exceder 60.
Esta publicación de blog proporcionará una descripción general del ajuste de redes neuronales como una breve guía para "domesticar a la bestia".
Las opciones para el ajuste de redes neuronales son numerosas y no sencillas, por eso las he dividido en 5 niveles.
La arquitectura de la red debe determinarse antes del entrenamiento, incluyendo:
En teoría, cuanto más grande sea la arquitectura de la red, más modelos complejos se pueden representar. Sin embargo, los efectos secundarios que conlleva también son muy obvios: la dificultad del entrenamiento aumentará en consecuencia y es probable que se produzca un sobreajuste. Además, debido a las limitaciones del algoritmo de red neuronal basado en el descenso de gradiente, la cantidad de cálculo y algunos otros factores, cuando la escala de la red completamente conectada aumenta hasta cierto punto (especialmente la escala de profundidad), se vuelve cada vez más Es difícil mejorar el rendimiento del modelo.
Por lo tanto, cuanto más grande sea la red, mejor se debe considerar en función del tamaño del problema y la cantidad de datos.
Una vez que se determina la arquitectura de la red, además de los parámetros entrenables de la propia red, todos los demás parámetros pueden considerarse hiperparámetros, incluidos:
Pesos y sesgos antes de comenzar a aprender. El estado de distribución numérica del modelo también afecta en gran medida la precisión y la velocidad de aprendizaje del modelo. Métodos de inicialización comunes:
El primero es inicializar a 0, que es una situación grave mencionada en "12 TensorFlow construye un NN de 3 capas para jugar con MNIST" Tasa de reconocimiento de 60 "".
El segundo es el método de inicialización utilizado por nuestra implementación de reconocimiento MNIST existente. En comparación con el segundo método, los dos últimos métodos mejoran en gran medida la velocidad de aprendizaje, lo que se analizará en un artículo posterior.
Cuanto más datos se utilicen para el aprendizaje de modelos, mejor, pero en realidad, los datos siempre son escasos y caros. En este caso, necesita particionar y usar los datos sabiamente:
Ya sabemos cómo particionar conjuntos de entrenamiento, validación y prueba (consulte 11 74 líneas de Python para el reconocimiento de dígitos escritos a mano). La extensión de los datos se presenta brevemente a continuación.
Tome los datos de la imagen como ejemplo. Sabemos que moviendo la imagen original 1 píxel en su conjunto, podemos obtener una imagen completamente nueva. Dado que las posiciones relativas de la mayoría de los píxeles de la imagen permanecen sin cambios, la información semántica contenida en ella permanece intacta. De esta manera, se pueden generar artificialmente más datos nuevos a partir de los datos existentes. Estos métodos no se limitan a la traslación, sino que también se pueden utilizar para rotación, duplicación, distorsión, adición de ruido, etc. para entrenar y mejorar la capacidad de generalización del modelo.
Incluso el marco del algoritmo de optimización en el nivel más externo del algoritmo de entrenamiento se puede reemplazar:
El objetivo final de ajustar una red neuronal se define estrictamente como la precisión del reconocimiento en el conjunto de prueba.
Aunque el objetivo es claro, todo el proceso de entrenamiento solo puede tener un impacto indirecto en él: los datos para el aprendizaje del modelo provienen del conjunto de entrenamiento y la precisión del reconocimiento en el conjunto de prueba depende de la capacidad de generalización. del modelo.Ven a apoyar.
El punto de partida para mejorar la generalización del modelo no es intentar ajustar ciegamente todas las opciones en todos los niveles anteriores, sino normalmente empezar a mejorar el problema. Generalmente hay dos problemas con las redes neuronales no optimizadas:
Es una buena estrategia comenzar a optimizar la red neuronal primero.
Este artículo analiza exhaustivamente varias dimensiones del ajuste de redes neuronales, así como los objetivos y estrategias de ajuste. Piense en esto como una lista de verificación siempre que necesite optimizar una red neuronal.