Hola y bienvenido a la parte súper emocionante de nuestra creación, la parte en la que la hacemos inteligente.
Entonces eso es exactamente lo que sucede cuando se entrena el aire.
Entrenaré su inteligencia para alcanzar la meta que queríamos lograr.
Y para hacer esto, básicamente vamos a entrenar la red neuronal para generar las predicciones correctas.
Y entonces ya todo está listo porque estas señales de salida del cerebro ya tienen la transmisión
correcta al cuerpo para reproducir las acciones finales.
Así que básicamente ahora lo que estamos a punto de hacer es algo que ya hicimos antes.
Solo vamos a tomar algunos lotes aleatorios de la memoria, obtener nuestra entrada de estas muestras, obtener
la salida, obtener el objetivo, obtener las predicciones, calcular el último error entre las predicciones y el
objetivo, y luego realizar la propagación hacia atrás. para obtener el descenso de gradiente para actualizar los pesos
de acuerdo a cuánto contribuyeron a este último error.
Así que hagamos todo esto.
Verás cómo va a ser tan fácil porque ya tenemos todas las herramientas para
implementarlo.
No solo tenemos el camino hacia herramientas como el optimizador y las funciones de pérdida, sino que también tenemos todas
las clases que hicimos antes, como nuestro cerebro, por supuesto, que vamos a usar para obtener
las predicciones.
Luego, nuestra experiencia, el seguimiento de elegibilidad de implementación de repetición y todas estas herramientas se combinaron con el piloto,
qué herramientas harán que el entrenamiento tenga un rendimiento excelente y, por lo tanto, eventualmente obtendremos
una A. YO. Así que hagamos realidad este entrenamiento.
Hagamos que nuestros ojos sean inteligentes.
Y lo primero que vamos a hacer ahora es obtener la última función que usaremos durante
el entrenamiento para calcular el error y optimizarlo.
Eso es lo primero que haremos.
Entonces, creemos una variable para la última función.
Lo llamaremos pérdida.
Y esto será igual a la función de pérdida MSE del módulo final.
Y luego ese Mercilus.
Esa es la última función que usaremos porque básicamente nuestras predicciones son valores.
Sabes, estamos prediciendo los valores fundamentales de las diferentes acciones.
Y, por lo tanto, dado que estos son números reales, bueno, estamos haciendo una red neuronal para la regresión y, por lo tanto,
la función de pérdida es el medio para el error.
Esa es la función de pérdida que usamos en general para la regresión.
Todo bien.
Entonces, ahora que tenemos nuestra última función, optimicemos nuestro optimizador aquí.
Esa es la variable que creamos para el optimizador.
Y lo vamos a tomar como de costumbre.
En cuanto al automóvil autónomo, el optimizador de átomos, es un optimizador muy poderoso que hará maravillas en
el entrenamiento.
Así que llevemos este hasta ese átomo.
Y recuerde, eso es exactamente lo que tiene el coche autónomo para introducir dos argumentos fundamentales.
El primero es el que hará la conexión entre el optimizador y los parámetros de nuestra red neuronal,
que son los pesos de las neuronas de nuestro cerebro.
Y para hacer esto, tomamos nuestro cerebro, al que llamamos CNN.
Ese es el objeto que creamos para nuestro cerebro.
Y así CNN que recordamos los parámetros que vamos y algunos paréntesis.
Entonces eso hace la conexión entre el optimizador y los pesos de las neuronas en el
cerebro de nuestro A. YO. Y luego el segundo argumento es una tasa de aprendizaje, y eso está dado por l. R.
Y aquí tenemos que tomar una tasa de aprendizaje menor porque no queremos converger demasiado rápido y queremos tener algo de exploración
y, por lo tanto, una buena forma de aprendizaje que podemos decir aquí es una pequeña que es de
cuatro puntos o una que es 0. 01 por ciento.
Creo que es el mismo que usamos para el automóvil autónomo.
Muy bien, ahora tenemos un optimizador de funciones perdido, así que estamos casi listos para comenzar el ciclo completo.
Bueno, en realidad, comenzaremos el ciclo completo ahora mismo.
Pero justo antes de hacerlo, vamos a decidir el tamaño del número de épocas en las que
nos convertiremos y, por lo tanto, crearemos una nueva variable aquí que responderá a este número de épocas.
Y pongámoslo igual a cien.
Eso estará bastante bien para entrenar al aire y hasta apuesto a que el aire logrará llegar de la mejor
manera antes de cien como veinte o treinta.
Veamos.
Pero por ahora, tomemos cien.
Y si lo necesitamos, lo aumentaremos.
Pero no creo que sea necesario.
Bien, ahora que tenemos nuestra cantidad de aeropuertos, podemos comenzar a hacer el ciclo completo, ya
sabes, este ciclo completo principal de la capacitación cuando entrenamos sobre los aeropuertos.
Entonces, para entonces, todo el voleibol estará en funcionamiento.
Eso es lo que elegimos para volver.
Ahora, por supuesto, usaremos la función de rango para decir que queremos ir del primero al
número de aprox.
Más uno, porque, recuerde, el límite superior de un rango no está incluido, y por lo
tanto, si quiere subir hasta 100, bueno, tenemos que especificar y ser un más uno para subir a 100.
Todo bien.
Entonces, Colin.
Y ahora entremos en el ciclo.
Todo bien.
Entonces, lo primero que vamos a hacer es hacer 200 ejecuciones de diez pasos.
Así que cada época serán 200 corridas, una tras otra de 10 pasos.
Y para hacer esto, tenemos esta función de un paso de nuestra clase de experiencia y, por lo tanto,
usamos esta función, que en realidad es un método porque la obtendremos de nuestro objeto de
memoria, que es un objeto de la clase de reemplazo para generar estas dos ejecuciones. de diez pasos.
Bueno, tenemos que tomar nuestro objeto de memoria que les recuerdo que creamos aquí mismo.
La memoria es un objetivo para reproducir la clase de memoria con Insteps.
Eso es 10 pasos y una capacidad de diez mil.
Creamos este objeto y a partir de este objeto tomamos bien, esta función de Rundstedt ejecuta pasos y
especificamos doscientas rondas sucesivas de diez pasos para que en cada una, básicamente, ejecutemos 200 pasos.
Y ahora que tenemos estos 200 pasos ejecutándose en cada apoc, bueno, es hora de probar algunos lotes de estas
ejecuciones y de probar estos lotes.
Tenemos otra función de nuestra memoria, que es un lote de muestra, y que generará exactamente algunos
lotes de estas 200 ejecuciones.
Pero recuerde, estos lotes son, esta vez, lotes de una serie de transiciones que son una serie de diez pasos a diferencia
de antes, donde los lotes eran solo algunos lotes de transiciones individuales aquí.
Esta vez van a ser lotes de diez pasos, diez transiciones, y por lo tanto ahora
es el momento de sacar de nuestra memoria estos lotes aleatorios y conseguirlos.
Usamos la función de lote simple a la que tenemos que aplicar el tamaño de lote y para el tamaño
de lote podemos tomar treinta y dos o incluso sesenta y cuatro o incluso ciento veintiocho.
Recuerde, para ese tamaño es una práctica común usar treinta y dos.
Eso es lo que verá en general en las arquitecturas de redes neuronales cuando realice un aprendizaje por lotes.
Pero esta vez es bastante diferente.
Nosotros, solo estamos probando algunos lotes de 10 pasos, por lo que es mejor tomar lotes con tamaños más grandes.
Así que ahí es donde podemos tomar sesenta y cuatro, ciento veintiocho.
Así que vamos a tomar ciento veintiocho.
Y en realidad esto estará dentro del ciclo porque queremos tomar varios lotes y los estamos tomando en
lo que devuelve esta función de lote simple.
Entonces, este ciclo completo para lote en lote de muestra de memoria, ciento veintiocho significa que cada
ciento veintiocho pasos, bueno, nuestra memoria nos dará un lote de tamaño, ciento veintiocho,
que contendrá en realidad el último. Ciento veintiocho pasos que acabamos de ejecutar.
Solo estamos obteniendo algunos lotes de seis, ciento veintiocho y el aprendizaje ocurrirá en
estos lotes.
Y además dentro de estos lotes, tendremos bandejas de elegibilidad funcionando, ya sabes, para aprender cada 10
pasos.
Todo bien.
Entonces ahora dentro de este ciclo, que todavía está sucediendo en una época, pero ahora esta vez estamos en un lote
específico.
Entonces, ahora lo primero que vamos a hacer es obtener nuestras entradas y nuestro objetivo por separado.
Y eso, como te dije, es muy fácil.
Podemos hacerlo con una de las herramientas que implementamos, que es el seguimiento de elegibilidad.
Como puede ver aquí, esta función de seguimiento de elegibilidad toma como entradas y ahora tenemos el
lote y devoluciones como salida, las entradas y los objetivos.
Entonces, en este momento, lo que podemos hacer simplemente es crear dos nuevas variables, que serán las entradas y
el objetivo.
Y estas entradas llegan a los objetivos exactamente igual a lo que devuelve esta función de seguimiento de elegibilidad que se aplica a un
lote.
Entonces aplicaremos esta función al lote de nuestro ciclo.
Entonces, lo que haremos es solo elegibilidad.
Traza aplicada al lote de nuestra esperanza.
De acuerdo, eso nos da las entradas y los objetivos, pero en los tacaños, siempre hay algo más que tenemos
que hacer.
Y, por supuesto, esto es para convertir la entrada de la red neuronal y también el objetivo en algunas variables
tahj.
Pero tampoco hay nada nuevo.
Sabemos cómo hacerlo.
Podemos hacerlo de esta manera.
Tomamos nuestras entradas, luego nuestros objetivos y bueno, serán iguales a verbales.
Entrada de.
Eso es por la entrada y verbal.
Objetivos, y eso es para los objetivos.
Muy bien, entonces las entradas del cerebro se convierten en algunas variables tahj y los objetivos también se convierten en
algunas variables tahj.
Entonces ahora podemos introducir las entradas en la red neuronal.
¿Y por qué tenemos que hacer esto?
Debido a que el siguiente paso es obtener las predicciones, tenemos las entradas que tenemos que apuntar.
Ahora, por supuesto, necesitamos nuestras predicciones porque entonces lo que sucede es que calcularemos la pérdida
entre las predicciones y los objetivos.
Así que obtengamos estas predicciones para obtenerlas.
Bueno, de nuevo, esto es tan simple.
Ahora solo necesitamos tomar nuestro cerebro, que es CNN, nuestra red neuronal convolucional, y aplicarlo
a nuestras entradas.
Aquí vamos.
Las entradas van a la red neuronal y la red neuronal generará las predicciones.
Perfecto, ahora tenemos las predicciones, tenemos los objetivos para que podamos obtener las leyes y ese es el
siguiente paso, vamos a introducir un nuevo más porque ahora mismo vamos a obtener el último error, que es
diferente. que la última función, porque la usamos como una función para obtener el último error.
Entonces, menos error aquí y lo obtendremos con la función menos aplicada a nuestras predicciones y los objetivos que vamos
a ver cómo todo va bien ahora.
Todo es lógico.
Primero obtenemos la entrada, los objetivos, luego, gracias a la entrada, obtenemos las predicciones.
Y luego, gracias a las predicciones y los objetivos que obtenemos, menos error.
Muy lógico y fluido, y ahora, ¿cuál es el siguiente paso?
Bueno, la misma ruta lógica ahora que tenemos la última, podemos volver a propagar este error menor a la
nueva red para actualizar los pesos.
Y lo hacemos con descenso de gradiente estocástico y para realizar un descenso de gradiente estocástico.
Necesitamos nuestro optimizador, pero ya lo tenemos.
Aquí están Adam Optimizer.
Pero ahora, en este punto, recuerde lo que tenemos que hacer.
Tenemos que inicializarlo e inicializarlo.
Recuerde, tomamos nuestro objeto optimizador y luego aplicamos el método de graduación cero.
Ahí vamos, no nos olvidamos del paréntesis que lo inicializa, y ahora el siguiente paso es
propagar hacia atrás el último error a la nueva red y para hacer esto, tomamos nuestro último error
y le aplicamos el método hacia atrás.
Entonces eso es exactamente para aplicar la propagación hacia atrás.
Y finalmente, ahora que ha vuelto el último error, propaguelo a la nueva red.
Bueno, podemos actualizar los pesos con el descenso de gradiente de Cassi.
Y para hacer esto, recuerda, tomamos nuestro optimizador y luego aplicamos el método de pasos.
Aquí vamos.
Los pesos ahora están actualizados.
Como te dije, no solo ya lo hicimos, sino que ahora parece tan simple y tan natural.
Así que ahora vamos a hacer algo divertido.
Vamos a imprimir la recompensa promedio cada apoc.
Entonces, ya sabes, podemos realizar un seguimiento de cómo el A. YO. va, cómo va el entrenamiento.
Queremos ver que la recompensa promedio aumenta con los pasos, en el cuadro.
Y al principio, por supuesto, está esta fase de exploración.
Por lo tanto, es posible que la recompensa promedio no aumente al principio, pero luego, una vez que
llegue a la fase de explotación, veremos que la recompensa promedio aumenta definitivamente y aumentará hasta cierto nivel, que es cuando
llega al oeste tan rápido como posible.
Así que comencemos con la impresión.
Ya sabes, estamos haciendo esto en una sola, así que tenemos que volver a la impresión en
bucle y luego vamos a imprimir bien, primero alrededor de una columna, luego en porcentaje.
S, porque vamos a convertir todo en una cadena que sea mejor y luego
agregaremos la recompensa promedio.
Y luego también agregamos el porcentaje, luego cerraremos la cotización.
Y luego agregamos un porcentaje y por otro lado, ya sabes, ingresamos las variables que van a ser la primera
persona, ya que esa es la épica aquí y la segunda variable correspondiente a la recompensa promedio, que se
computará ahora mismo.
Entonces, la variable de recompensa promedio aún no existe.
Lo vamos a crear ahora mismo.
Entonces vamos a utilizar ETR en el trabajo.
Incluso si Époque es el número, lo convertiremos en una cadena.
Eso es mejor y.
Vamos a agregar, Estie, si esa será la recompensa promedio y entonces vamos
a crear una variable que llamaremos una gran recompensa y ahora vamos a crear esta variable y calcularla. ?
OK, entonces hagamos esto.
Eso es lo único que nos queda por hacer.
Entonces Époque, ya lo hemos hecho.
Ahora calculemos el mundo promedio y necesitamos calcularlo aquí.
Todavía en el ciclo, pero fuera del ciclo, porque ahora tenemos nuestro lote muestreado y nuestro entrenamiento ocurre en
el lote.
Pero ahora la propagación hacia adelante más la propagación hacia atrás se realiza en el lote.
Así que estamos volviendo al ciclo y ahora podemos calcular las recompensas acumulativas que podemos hacer con nuestro
objeto empeines.
Debido a que nuestro objeto de empeines contiene esta función, haríamos pasos que nos permitan obtener las recompensas acumulativas que suceden
en los pasos, ya sabes, durante la carrera de empeines.
Así que lo usaremos ahora mismo para actualizar las nuevas recompensas de los pasos.
Y luego actualizaremos el objeto de promedio móvil agregando las recompensas acumulativas al objeto cotidiano en movimiento y luego
volveremos a calcular el promedio.
Y así es como vamos a conseguir la recompensa media.
Así que hagamos esto.
Lo primero que necesitamos son los datos de recompensas de DARABA.
Así que llamémosles recompensas.
Pasos y luego, como dijimos, tomamos nuestro objeto de pasos finales, que fue, les recuerdo, creado aquí un objeto de la clase de
progreso instantáneo a partir de nuestra experiencia que contagiamos al sujeto tan sensible.
Luego agregamos recompensas, pasos y luego algunos paréntesis.
Todo bien.
Eso nos dará las nuevas recompensas acumulativas de los pasos.
Todo bien.
Pero luego debemos agregar estas nuevas recompensas acumulativas en nuestros objetos de promedio móvil.
Y para hacer esto, tenemos un método esta vez en la clase de media móvil, que es este método publicitario que es muy
simple.
Tomamos nuestro objeto de media móvil, que creamos aquí con cien pasos.
Luego, usaremos nuestro método ADD y luego en la atmósfera ingresamos nuestros pasos de recompensa y esto agregará las
recompensas de los pasos a la media móvil.
Todo bien.
Y finalmente, podemos calcular la recompensa promedio y eso está bien, ya sabes, esa es la misma variable aquí.
Entonces eso es lo que será igual a la recompensa promedio.
Y para obtenerlo, solo necesitamos usar el método de promedio esta vez de nuestro objeto de promedio móvil.
Y eso es lo que hacemos y un promedio de puntos así, porque nuestro promedio móvil ya se actualizó con los nuevos
pasos de recompensas que acabamos de agregar al método ADD.
Excelente.
Así que ahora tenemos nuestro premio promedio, por lo que es muy popular aquí y se imprimirá todos los años.
Está bien, así que terminamos.
Así que estoy muy emocionado de ver los resultados.
Y de hecho, voy a tener una sorpresa para ti en el próximo tutorial mientras miras los resultados.
Así que va a ser muy emocionante.
Y ahora creo que es hora de jugar con el aire y divertirse.
Todo bien.
Así que prepárate un buen café o un buen té.
Ahora es el momento de sentarse cómodamente en nuestra silla y ver algunos videos geniales de nuestro avión para ver, eso es
en el siguiente tutorial.
Y hasta entonces, disfruta.