You are on page 1of 13

Semana 2

Clasificación binaria
Hola, y bienvenido de nuevo. En esta semana vamos a repasar los principios básicos de la programación de redes
neuronales. Resulta que cuando implementa una red neuronal allí son algunas técnicas que van a ser realmente
importantes. Por ejemplo, si tiene un conjunto de entrenamiento de m ejemplos de capacitación, es posible que esté
acostumbrado a procesar el conjunto de entrenamiento al tener un ciclo de cuatro paso a través de tus m ejemplos de
entrenamiento. Pero resulta que cuando estás implementando una red neuronal, generalmente quiere procesar todo su
conjunto de entrenamiento sin usar un lazo explícito de cuatro para recorrer todo tu conjunto de entrenamiento.
Entonces, verás cómo hacer eso en los materiales de esta semana. Otra idea, cuando organizas el cálculo de, en tu red,
por lo general, tiene lo que se denomina un paso de avance de propagación o avance, seguido por una pausa hacia
atrás o lo que se llama un paso de propagación hacia atrás. Y así en los materiales de esta semana, también recibes
una introducción sobre por qué los cálculos, en el aprendizaje de una red neuronal se pueden organizar en esto para
propagación y una propagación hacia atrás por separado.

1:09

Para los materiales de esta semana quiero transmitir estas ideas usando Regresión logística para facilitar la
comprensión de las ideas. Pero incluso si has visto regresión logística antes, creo que habrá hay algunas ideas nuevas
e interesantes para que recoja en los materiales de esta semana. Entonces con eso, empecemos. La regresión logística
es un algoritmo para la clasificación binaria. Comencemos configurando el problema. Aquí hay un ejemplo de un
problema de clasificación binario. Es posible que tenga una entrada de una imagen, así, y quiere imprimir una
etiqueta para reconocer esta imagen como un gato, en cuyo caso usted saca 1, o no-gato en cuyo caso saca 0, y vamos
a usar y para denotar la etiqueta de salida. Veamos cómo se representa una imagen en una computadora. Para
almacenar una imagen, su computadora almacena tres matrices separadas correspondiente a los canales de color rojo,
verde y azul de esta imagen.

2:10

Entonces, si su imagen de entrada es de 64 por 64 píxeles, entonces tendrías 3 matrices de 64 por 64 correspondiente
a los valores de intensidad de píxel rojo, verde y azul para sus imágenes. Aunque para hacer esta pequeña diapositiva
dibujé estas matrices mucho más pequeñas, entonces en realidad son matrices de 5 por 4 en lugar de 64 por 64.
Entonces, para convertir estos valores de intensidad de píxeles: en un vector de características, lo que somos va a
hacer es desenrollar todos estos valores de píxeles en un vector de características de entrada x. Entonces, para
desenrollar todos estos valores de intensidad de píxeles en el vector de características, lo que estamos va a hacer es
definir un vector de características x correspondiente a esta imagen de la siguiente manera. Vamos a tomar todos los
valores de píxel 255, 231, y así sucesivamente. 255, 231, y así sucesivamente hasta que hayamos enumerado todos
los píxeles rojos. Y luego finalmente 255 134 255, 134 y así hasta que obtengamos un vector de características largas
listando todo el rojo, valores de intensidad de píxel verde y azul de esta imagen. Si esta imagen es una imagen de 64
por 64, la dimensión total de este vector x será 64 por 64 por 3 porque eso es los números totales que tenemos en
todas estas matrices. Que en este caso, resulta ser 12,288, eso es lo que obtienes si multiplicas todos esos números. Y
entonces vamos a usar nx = 12288 para representar la dimensión de las características de entrada x. Y a veces por
brevedad, también usaré n minúscula para representar la dimensión de este vector de características de entrada.
Entonces, en la clasificación binaria, nuestro objetivo es aprender un clasificador que pueda ingresar una imagen
representada por este vector de características x. Y pronosticar si la etiqueta correspondiente y es 1 o 0, es decir, si
esta es una imagen de gato o una imagen que no es de gato. Veamos ahora algunas de las anotaciones que haremos
usar durante el resto de este curso Un solo ejemplo de entrenamiento está representado por un par, (x, y) donde x es
una característica x-dimensional vector e y, la etiqueta, es 0 o 1. Sus conjuntos de entrenamiento comprenderán
ejemplos de entrenamiento en minúscula. Y así se escribirán sus conjuntos de entrenamiento (x1, y1) que es la
entrada y salida para su primer ejemplo de entrenamiento (x (2), y (2)) para el segundo ejemplo de entrenamiento
hasta <xm, ym) que es tu último ejemplo de entrenamiento. Y luego, eso es todo tu conjunto de entrenamiento
completo. Así que voy a usar minúsculas m para indicar el número de muestras de entrenamiento. Y a veces para
enfatizar que este es el número de ejemplos de trenes, Podría escribir esto como M = M train. Y cuando hablamos de
un conjunto de prueba, a veces podemos usar la prueba m subscript para denotar el número de ejemplos de prueba.
Entonces esa es la cantidad de ejemplos de prueba. Finalmente, para dar salida a todos los ejemplos de entrenamiento
en una notación más compacta, vamos a definir una matriz, capital X. Según lo definido al llevarlo a su
entrenamiento, configure las entradas x1, x2 y y luego apilarlos en columnas. Entonces tomamos X1 y lo ponemos
como una primera columna de esta matriz, X2, pon eso como una segunda columna y así sucesivamente hasta Xm,
entonces esta es la matriz de capital X. Entonces esta matriz X tendrá M columnas, donde M es el número de tren
ejemplos y el número de ferrocarriles, o la altura de esta matriz es NX. Tenga en cuenta que en otras causas, puede
ver el capital de la matriz X definido al apilar los ejemplos del tren en filas como tal, X1 transpone a Xm transpuesta.
Resulta que cuando estás implementando redes neuronales usando esta convención que tengo a la izquierda hará que
la implementación sea mucho más fácil. Entonces, para recapitular, x es una matriz de nx por m dimensiones, y
cuando implemente esto en Python, ves que x.shape, ese es el comando python para encontrando la forma de la
matriz, que esta una nx, m. Eso solo significa que es una matriz de nx por m dimensiones. Entonces, así es como se
agrupan los ejemplos de entrenamiento, ingrese x en la matriz. ¿Qué hay de las etiquetas de salida Y? Resulta que
para facilitar la implementación de una red neuronal, sería conveniente también apilar columnas Y In. Así que vamos
a definir la capital Y para que sea igual a Y 1, Y 2, hasta Y m como tal. Entonces, Y aquí será una matriz de 1 por m
dimensión. Y nuevamente, usar la notación sin la forma de Y será 1, m. Lo que simplemente significa que esta es una
matriz de 1 por m. Y a medida que influyes en tu nueva red, el discurso de mtrain, encuentras que un útil convención
sería tomar los datos asociados con diferentes entrenamientos ejemplos, y por datos me refiero a x o y u otras
cantidades que veas más adelante. Pero tomar las cosas o los datos asociados con diferentes ejemplos de
entrenamiento y apilarlos en diferentes columnas, como hemos hecho aquí para xey.

7:58

Entonces, esa es una notación que usaremos e para una regresión y para redes de redes neuronales más adelante en
este curso. Si alguna vez olvida lo que significa una pieza de notación, como lo que es M o que es N o qué es otra
cosa, también hemos publicado en el sitio web del curso una guía de notación que puede usar para buscar
rápidamente lo que significa una determinada pieza de notación. Entonces con eso, vamos al siguiente video donde
comenzaremos a buscar regresión logística usando esta notación.

Regresión logística
En este video, repasaremos la regresión logística. Este es un algoritmo de aprendizaje que usa cuando las etiquetas de
salida en un problema de aprendizaje supervisado son cero o uno, entonces para problemas de clasificación binarios
Dado un vector de características de entrada X tal vez corresponde a una imagen que desea reconocer como una
imagen de gato o no como un gato, quieres un algoritmo que pueda generar una predicción, que llamaremos Y hat,
cuál es su estimación de Y. Más formalmente, quieres que sea la probabilidad de que, Y es igual a uno dado las
características de entrada X. En otras palabras, si X es una imagen, como vimos en el último video, quieres que te
diga, ¿Cuál es la posibilidad de que esta sea una imagen de gato? Entonces X, como dijimos en el video anterior, es
un vector X dimensional, dado que los parámetros de la regresión logística Be W, que también es un vector X
dimensional, junto con b, que es solo un número real. Entonces, dado una entrada X y los parámetros W y b, ¿cómo
generamos la salida Y hat? Bueno, una cosa que podrías probar, eso no funciona, sería tener Y hat be w transponer X
plus B, tipo de una función lineal de la entrada X. Y de hecho, esto es lo que usas si estuvieras haciendo una
regresión lineal. Pero este no es un algoritmo muy bueno para la clasificación binaria porque quieres que Y sea la
oportunidad de que Y sea igual a uno. Entonces, ¿realmente debería estar entre cero y uno? y es difícil hacer cumplir
eso porque W transpone X más B puede ser mucho más grande que uno o incluso puede ser negativo, lo cual no tiene
sentido para la probabilidad, que quieres que sea entre cero y uno. Entonces, en la regresión logística, nuestra
producción va a ser en cambio es igual a la función sigmoidea aplicada a esta cantidad. Así es como se ve la función
sigmoidea. Si en el eje horizontal represento Z, entonces la función sigmoide de Z se ve así. Por lo tanto, va sin
problemas desde cero hasta uno. Déjame etiquetar mis ejes aquí, esto es cero y cruza el eje vertical como 0.5. Así que
esto es lo que sigmoides de Z parece y vamos a usar Z para denotar esta cantidad, W transpone X más B. Aquí está la
fórmula para la función sigmoidea. Sigmoid de Z, donde Z es un número real, es uno sobre uno más E hacia la Z
negativa. Entonces note un par de cosas. Si Z es muy grande, entonces E a la Z negativa estará cerca de cero.
Entonces sigmoid de Z será aproximadamente uno por uno más algo muy cercano a cero, porque E al negativo de un
número muy grande será cercano a cero. Entonces esto es cerca de 1. Y de hecho, si miras en la trama de la izquierda,
si Z es muy grande, el sigmoide de Z está muy cerca de uno. Por el contrario, si Z es muy pequeño, o es un número
negativo muy grande, luego sigmoide de Z se convierte en uno más uno más E a la Z negativa, y esto se convierte en
un gran número. Así que esto se convierte en, piense en ello como uno más uno más un número que es muy, muy
grande, y entonces, eso está cerca de cero. Y de hecho, ves que a medida que Z se convierte en un número negativo
muy grande, sigmoide de Z va muy cerca de cero. Entonces, cuando implemente la regresión logística, su trabajo es
tratar de aprender los parámetros W y B para que Y se convierte en una buena estimación de la posibilidad de que Y
sea igual a uno. Antes de continuar, solo otra nota sobre la notación. Cuando programamos redes neuronales,
generalmente mantendremos separados el parámetro W y el parámetro B, donde aquí, B corresponde a un inter-
espectro. En algunos otros cursos, es posible que haya visto una notación que maneja esto de manera diferente. En
algunas convenciones, usted define una característica adicional llamada X0 y que equivale a una. Entonces, ahora X
está en R de NX más uno. Y luego defines Y hat para que sea igual a sigma de theta transpose X. En esta convención
de notación alternativa, tienes parámetros de vectores theta, theta zero, theta uno, theta dos, hasta theta NX Y
entonces, theta zero, coloca una fila en B, eso es solo un número real, y theta one to theta NX interpreta el papel de
W. Resulta que cuando implementa implementa su red neuronal, será más fácil simplemente mantener B y W como
parámetros separados. Y entonces, en esta clase, no usaremos ninguna de estas convenciones de notación que acabo
de escribir en rojo. Si no ha visto esta notación anteriormente en otros cursos, no se preocupe. Es solo que para
aquellos de ustedes que han visto esta notación que yo quería mencionar explícitamente que no estamos usando esa
notación en este curso. Pero si no has visto esto antes, no es importante y no necesita preocuparse por eso. Entonces,
ahora ha visto cómo es el modelo de regresión logística. Luego de cambiar los parámetros W y B, debe definir una
función de costo. Hagámoslo en el

Función de costo de regresión logística

En un video anterior, Viste el modelo de regresión logística. Para entrenar los parámetros W y B del modelo de
regresión logística, necesita definir una función de costo. Echemos un vistazo a la función de costos que puede usar
para entrenar la regresión logística. Para recapitular, esto es lo que tuvimos que encontrar en la diapositiva anterior.
Entonces tu salida y-hat es sigmoide de w transponer x más b donde un sigmoide de Z es como se define aquí.
Entonces, para aprender los parámetros de su modelo, un conjunto de entrenamiento de m ejemplos de entrenamiento
y parece natural que quiera encontrar parámetros W y B para que al menos en el conjunto de entrenamiento, las
salidas que tiene. Las predicciones que tienes en el conjunto de entrenamiento, que solo escribimos como y-hat (i)
que eso estará cerca de las etiquetas de verdad del suelo y_i que obtuviste en el conjunto de entrenamiento. Para
agregar un poco más de detalle para la ecuación en la parte superior, habíamos dicho que y-hat es como se define en
la parte superior para un ejemplo de entrenamiento x y, por supuesto, para cada ejemplo de entrenamiento, estamos
usando estos superíndices con corchetes redondos con paréntesis para indexar y diferenciar ejemplos. Su predicción
sobre la muestra de capacitación (i) que es y-hat (i) va a se obtiene tomando la función sigmoidea y aplicándola a W
transpuesta X, (i) la entrada que el ejemplo de entrenamiento más V y usted también puede definir Z (i) de la
siguiente manera. Z (i) es igual a W transpuesta x (i) más b. Entonces a lo largo de este curso, vamos a usar esta
convención de notación, que el paréntesis superíndice i se refiere a los datos. X, Y, Z u otra cosa asociada con el
ejemplo de entrenamiento i-ésimo, asociado con el i-ésimo ejemplo. Eso es lo que significa el superíndice i entre
paréntesis. Ahora, veamos qué función de pérdida o error función que podemos usar para medir qué tan bien está
funcionando nuestro algoritmo. Una cosa que podrías hacer es definir la pérdida cuando tus resultados de algoritmo
y-hat y la etiqueta verdadera como Y para ser quizás el error cuadrado o un error de medio cuadrado. Resulta que
podrías hacer esto, pero en la regresión logística la gente no suele esto porque cuando vienes a aprender los
parámetros, encuentra que el problema de optimización del que hablamos más adelante se vuelve no convexo.
Entonces terminas con un problema de optimización con múltiples óptimos locales. Entonces, el descenso gradual
puede no encontrar el óptimo global. Si no entendiste los últimos dos comentarios. No te preocupes, lo abordaremos
en un video posterior. Pero la intuición de llevar es que esta función L llamada la función de pérdida es una función
que podrás Necesitamos definir para medir cuán bueno es nuestro rendimiento y-hat cuando la etiqueta verdadera es
y. Como el error cuadrado parece que podría ser una opción razonable excepto que hace que el descenso de gradiente
no funcione bien. Entonces en la regresión logística, realmente definiremos una función de pérdida diferente que
desempeña un papel similar al error cuadrado, eso nos dará un problema de optimización que es convexo y entonces
veremos que el video posterior se vuelve mucho más fácil de optimizar. Entonces, lo que usamos en la regresión
logística es en realidad la siguiente función de pérdida que estoy justo aquí, es negativo y log y-hat más una línea
tiene y log, una línea es y-hat. Aquí hay una intuición de por qué esta función de pérdida tiene sentido. Tenga en
cuenta que si estamos usando al cuadrado de error, entonces usted quiere que el error al cuadrado sea lo más pequeño
posible. Y con esta función de pérdida de regresión logística, también queremos que sea lo más pequeño posible. Para
entender por qué esto tiene sentido, veamos los dos casos. En el primer caso, digamos que Y es igual a uno, entonces
la pérdida función y-hat coma es justicia para nosotros escribir este signo negativo. Entonces este log negativo y-hat.
Si y es igual a uno. Porque si y es igual uno entonces el segundo término uno menos Y es igual a cero. Así que esto
dice que si y es igual a uno, quiere que log-y-hat negativo sea lo más grande posible. Eso significa que quieres que
log y-hat sea grande, ser lo más grande posible y eso significa que quieres que y-hat sea grande. Pero porque y-hat es
tu sabes, la función sigmoidea, nunca puede ser más grande que uno. Entonces, esto significa que si y es igual a uno,
quiero que y-hat sea lo más grande posible. Pero nunca puede ser más grande que uno diciendo que quieres que y-hat
esté cerca de uno también. El otro caso es si y es igual a cero. Si y es igual a cero, entonces este primer término en la
función de pérdida es igual a cero porque y cero y luego el segundo término define la función de pérdida. Entonces la
pérdida se convierte en log negativo menos y-hat. Y entonces, si en su proceso de aprendizaje intenta hacer que la
función de pérdida sea pequeña, lo que esto significa es que quieres registrar uno menos y-hat para que sea grande. Y
porque es un signo negativo allí y luego, a través de una razón similar, puedes concluir que esta función de pérdida
está tratando de hacer que y-hat sea lo más pequeño posible. Y otra vez porque y-hat tiene que estar entre cero y uno.
Esto está diciendo que si y es igual a cero, entonces su función de pérdida empujará los parámetros para hacer que y-
hat sea lo más cercano posible a cero. Ahora, hay muchas funciones con el efecto de Rafidah que si y es igual a uno
tratamos de hacer que y-hat sea grande y si Y es igual a cero tratamos de hacer que y-hat sea pequeño. Acabamos de
dar aquí en verde una justificación algo informal para esta función de pérdida proporcionará un video opcional más
tarde para dar una justificación más formal para ¿Por qué en la regresión logística nos gusta usar la función de
pérdida con esta forma particular? Finalmente, la función de pérdida se definió con respecto a un único ejemplo de
entrenamiento. Mide qué tan bien estás en un solo ejemplo de entrenamiento. Ahora voy a definir algo llamado
función de costo, que mide qué tan bien estás haciendo un conjunto de entrenamiento completo. Entonces la función
de costo J que se aplica a sus parámetros W y B van a ser el promedio con uno de la m de la suma de la función de
pérdida aplicada a cada uno de los ejemplos de entrenamiento y turno. Mientras que aquí y-hat es, por supuesto, la
salida de predicción por su algoritmo de regresión logística usando usted sabe, un conjunto particular de parámetros
W y B. Y así solo para expandir esto, esto es igual a uno negativo m suma de i es igual a uno a m de la definición de
la función de pérdida. Entonces este es y (i) Log y-hat (i) más una línea es y (i) log una línea es y-hat (i). Creo que
podría poner corchetes aquí. Entonces, el signo menos está fuera de todo lo demás. Entonces la terminología que voy
a usar es que la función de pérdida se aplica a un solo ejemplo de entrenamiento como ese. Y la función de costo es el
costo de sus parámetros. Entonces, al entrenar su modelo de regresión logística, vamos a tratar de encontrar los
parámetros W y B que minimizar los costos generales de la máquina J escrita en la parte inferior. Entonces, usted
acaba de ver la configuración para el algoritmo de regresión logística, la función de pérdida para el ejemplo de
entrenamiento y la función de costo general para los parámetros de su algoritmo. Resulta que la regresión logística se
puede ver como una red neuronal muy pequeña. En el próximo video vamos a repasar eso para que puedas comenzar
adquiriendo intuición sobre lo que hacen las redes neuronales. Para que veamos el próximo video sobre cómo ver la
regresión logística como una red neuronal muy pequeña.

Descenso de gradiente
Has visto el modelo de regresión logística. Has visto la función de pérdida que mide qué tan bien te está yendo en el
único ejemplo de entrenamiento. También ha visto la función de costos que mide qué tan bien sus parámetros w y b
lo están haciendo en su conjunto de entrenamiento completo. Ahora hablemos sobre cómo puede usar el algoritmo de
descenso de gradiente para entrenar, o para aprender, los parámetros w y b en su conjunto de entrenamiento. Para
recapitular, aquí está el familiar algoritmo de regresión logística.

0:31

Y tenemos en la segunda línea la función de costo, J, que es una función de tus parámetros w y b. Y eso se define
como el promedio. Entonces es 1 sobre m veces la suma de esta función de pérdida. Y entonces la función de pérdida
mide qué tan bien tus algoritmos salidas y-hat (i) en cada uno de los ejemplos de entrenamiento se acumulan o se
compara con la etiqueta verdadera de la tierra y (i) en cada uno de los ejemplos de entrenamiento. Y la fórmula
completa se expande a la derecha. Entonces, la función de costo mide qué tan bien sus parámetros w y b lo están
haciendo en el conjunto de entrenamiento. Entonces, para aprender el conjunto de parámetros w y b parece natural
que queremos encuentre w y b que hagan que la función de costo J (w, b) sea lo más pequeña posible. Así que aquí
hay una ilustración del descenso en gradiente. En este diagrama, los ejes horizontales representan sus parámetros
espaciales, w y b. En la práctica, w puede ser mucho más dimensional, pero a los efectos de trazado, ilustremos w
como un número real único yb como un número real único. La función de costo J (w, b,) es, luego, alguna superficie
arriba de estos ejes horizontales w y b. Entonces la altura de la superficie representa el valor de J (w, b) en un cierto
punto. Y lo que queremos hacer es realmente encontrar el valor de w y b que corresponde al mínimo de la función de
costo J.

2:00

Resulta que esta función de costo J es una función convexa. Entonces, es solo un tazón grande, así que esta es una
función convexa y esto se opone a las funciones que se ven así, que no son convexos y tienen muchos locales
diferentes. Entonces, el hecho de que nuestra función de costos J (w, b) como se definió aquí es convexo es una de las
grandes razones por las que usamos esta función de costo particular, J, para la regresión logística. Entonces, para
encontrar un buen valor para los parámetros, lo que haremos es inicializar w y b con un valor inicial, tal vez denotado
por ese pequeño punto rojo. Y para la regresión logística casi cualquier método de inicialización funciona,
generalmente inicializas el valor a cero. La inicialización aleatoria también funciona, pero la gente no suele hacer eso
para la regresión logística. Pero debido a que esta función es convexa, no importa dónde se inicialice, deberías llegar
al mismo punto o más o menos al mismo punto. Y lo que hace el descenso de gradiente es que comienza en ese punto
inicial y luego da un paso en la dirección más inclinada hacia abajo. Entonces, después de un paso de descenso en
gradiente podrías terminar allí, porque está tratando de dar un paso cuesta abajo en la dirección del descenso más
empinado o tan rápido cuesta abajo como sea posible. Entonces esa es una iteración de descenso de gradiente. Y
después de dos iteraciones de descenso de gradiente, podrías subir, tres iteraciones, etc. Supongo que esto ahora está
oculto por la parte posterior de la trama hasta que, finalmente, con suerte converger a este óptimo global o llegar a
algo cercano al óptimo global. Entonces esta imagen ilustra el algoritmo de descenso de gradiente. Vamos a escribir
un poco más de los detalles. Con el fin de ilustrar, digamos que hay alguna función, J (w), que quieres minimizar, y
tal vez esa función se vea así. Para hacer esto más fácil de dibujar, voy a ignorar b por ahora, solo para hacer de esto
una trama unidimensional en lugar de una trama de alta dimensión. Así que el descenso gradual hace esto, vamos a
llevar a cabo repetidamente la siguiente actualización. Tomaríamos el valor de w y lo actualizaríamos, va a usar dos
puntos iguales para representar la actualización w. Así que configure w a w menos alfa, veces y esto es un derivado
dJ (w) / dw. Lo haré repetidamente hasta que el algoritmo converja. Así que un par de puntos en la notación, alfa
aquí, es la tasa de aprendizaje, y controla qué tan grande es el paso que damos en cada iteración o descenso de
gradiente. Más adelante hablaremos sobre algunas formas al elegir la tasa de aprendizaje alfa. Y segundo, esta
cantidad aquí, esta es una derivada. Esta es básicamente la actualización o el cambio que desea realizar a los
parámetros w. Cuando comenzamos a escribir código para implementar el descenso de gradiente, vamos a utilizar la
convención de que el nombre de la variable en nuestro código

4:58

dw se usará para representar este término derivado. Entonces, cuando escribes código, escribes algo así como w colon
es igual a w menos alfa multiplicado por dw. Y entonces usamos dw para ser el nombre de la variable para
representar este término derivado. Ahora asegurémonos de que esta actualización de gradiente tenga sentido.
Digamos que w estaba aquí. Entonces estás en este punto en la función de costo J (w). Recuerde que la definición de
derivada es la pendiente de una función en el punto. Entonces, la pendiente de la función es realmente la altura
dividida por el ancho, a la derecha, de un triángulo bajo aquí en esta tangente a J (w) en ese punto. Y entonces, aquí
la derivada es positiva. W se actualiza como w menos una tasa de aprendizaje multiplicada por la derivada. La
derivada es positiva y entonces terminas restando de w, entonces terminas dando un paso hacia la izquierda. Y así el
descenso gradual hará que su algoritmo sea lento disminuya el parámetro si ha comenzado con este gran valor de w.
Como otro ejemplo, si w hubiera terminado aquí, entonces en este punto la pendiente aquí de dJ / dw será negativa y
entonces la actualización del descenso del gradiente restaría alfa multiplicado por un número negativo. Y así terminas
aumentando lentamente w, por lo que terminas haciéndolo más grande y más grande con iteraciones sucesivas y
descenso de gradiente. Entonces, con suerte, si se inicializa a la izquierda o en el descenso del gradiente derecho te
moverá hacia este mínimo global aquí. Si no está familiarizado con derivados o con cálculo y lo que significa este
término dJ (w) / dw, no te preocupes demasiado por eso. Hablaremos un poco más sobre derivados en el siguiente
video. Si tienes un conocimiento profundo del cálculo, es posible que pueda tener una intuición más profunda sobre
cómo funcionan las redes neuronales. Pero incluso si no estás familiarizado con el cálculo, en los próximos videos le
daremos suficientes intuiciones sobre derivados y sobre el cálculo que podrá utilizar de manera efectiva las redes
neuronales. Pero la intuición general para ahora es que este término representa la pendiente de la función, y queremos
saber la pendiente de la función en la configuración actual de los parámetros para que podamos tomar estos pasos de
descenso más empinado, para que sepamos qué dirección para intervenir con el fin de ir cuesta abajo en la función de
costos J.

7:36

Entonces escribimos nuestro descenso de gradiente para J (s) si solo w fuera su parámetro. En la regresión logística,
su función de costo es una función de w y b. Entonces, en ese caso, el bucle interno de descenso de gradiente, eso es
aquí, esto que debes repetir se convierte en lo siguiente. Terminas actualizando w w menos los tiempos de velocidad
de aprendizaje la derivada de J (w, b) con respecto a w. Y actualiza b como b menos los tiempos de velocidad de
aprendizaje la derivada de la función de costo con respecto a b. Estas dos ecuaciones en la parte inferior son la
actualización real que implementa. Como un aparte solo quiero mencionar una convención de notación en cálculo que
es un poco confuso para algunas personas No creo que sea muy importante que entiendas el cálculo, pero en caso de
que veas esto, quiero asegurarme de que no pienses demasiado en esto. Que es eso en cálculo, este término aquí, en
realidad escribimos como barbechos, de ese divertido símbolo de garabato. Entonces este símbolo, esto es en realidad
una minúscula d en una fuente elegante, en una fuente estilizada para cuando vea esta expresión todo esto significa
que esto no es [INAUDIBLE] J (w, b) o realmente la pendiente de la función J (w, b), cuánto se inclina esa función
en la dirección w. Y la regla de la notación en cálculo, que creo que no es totalmente lógica, pero la regla en la
notación para el cálculo, que creo que hace las cosas mucho más complicado de lo que necesita ser es que si J es una
función de dos o más variables, entonces en lugar de usar minúsculas d, usa este símbolo divertido. Esto se llama un
símbolo derivado parcial. Pero no te preocupes por esto, y si J es una función de solo una variable, entonces usa
minúscula d. Entonces, la única diferencia entre usar este gracioso el símbolo de derivada parcial o minúscula d como
lo hicimos en la parte superior, es si J es una función de dos o más variables. En ese caso, usa este símbolo, el
símbolo de derivada parcial, o si J es solo una función de una variable, entonces se usa minúscula d. Esta es una de
esas divertidas reglas de notación en cálculo que Creo que las cosas son más complicadas de lo que deberían ser. Pero
si ves este símbolo derivativo parcial todo lo que significa es que estás midiendo la pendiente de la función, con
respecto a una de las variables. Y de manera similar adherirse a la matemática anteriormente correcta notación en
cálculo, porque aquí J tiene dos entradas, no solo una. Esta cosa en la parte inferior debe escribirse con esta derivada
parcial simple. Pero realmente significa lo mismo que, casi lo mismo que minúscula d. Finalmente, cuando
implemente esto en el código, vamos a usar la convención de que esta cantidad, realmente la cantidad por la cual
usted actualiza w, denotará como la variable dw en su código. Y esta cantidad, ¿verdad? La cantidad por la cual desea
actualizar b se denotará por la variable db en tu código. Está bien, entonces, así es como puedes implementar el
descenso en gradiente. Ahora bien, si no ha visto cálculos durante algunos años, sé que eso podría parecer muchos
más derivados en cálculo de los que podría estar cómodo hasta ahora. Pero si te sientes así, no te preocupes por eso.
En el siguiente video, le daremos una mejor intuición sobre los derivados. E incluso sin la profunda comprensión
matemática del cálculo, con solo una comprensión intuitiva del cálculo podrá hacer que las redes neuronales
funcionen de manera efectiva. Entonces, vamos al siguiente video donde hablaremos un poco más sobre derivados.

Derivados
en este video quiero ayudarte a ganar comprensión intuitiva de cálculo y los derivados ahora tal vez eres pensando
que no has visto el cálculo desde tus días universitarios y dependiendo de cuando te gradúas tal vez eso fue bastante
Hace algún tiempo atrás si eso es lo que eres pensando, no te preocupes, no necesitas una comprensión profunda del
cálculo con el fin para aplicar nuevas redes y aprendizaje profundo muy efectivamente, así que si estás mirando este
video o algunos de los videos posteriores se preguntan wow estas cosas realmente para este cálculo se ve realmente
complicado mi consejo para usted es el lo siguiente es que miren los videos y luego, si pudieras hacer la tarea y
completa la tarea de programación con éxito, entonces puede aplicar profundamente aprendiendo de hecho lo que ves
más tarde es que en la semana 4 definirá un par de tipos de funciones que te permitirán para encapsular todo lo que
necesita hacerse con respecto al cálculo que estas funciones invocan funciones de reenvío y funciones hacia atrás que
aprendes sobre el menos pones todo lo que necesita saber acerca de los consejeros en estos funciones para que no
necesite preocuparse por ellos más allá de eso, pero Pensé que en esta incursión en lo profundo aprendiendo que esta
semana deberíamos abrir subir la caja y mirar un poco más allá en los detalles del cálculo, pero realmente todo lo que
necesitas es un intuitivo comprensión de esto para construir y aplica con éxito estos algoritmos oh y finalmente si
estás entre eso tal vez un grupo más pequeño de personas que son experto en cálculo si eres muy familiarizado con el
cálculo observar esto es Probablemente está bien que te saltes este video pero para todos los demás, vamos a bucear y
tratar de obtener una comprensión intuitiva de derivados que he trazado aquí el la función f de a es igual a 3/8 por lo
que es solo una línea recta para ganar intuición acerca de derivados echemos un vistazo a algunos puntos en esta
función, digamos que a es igual a 2 en ese caso f de una que es igual a 3 por 8 es igual a 6, por lo que si es igual a 2,
entonces usted sabe F de una voluntad ser igual a 6 digamos que damos el valor de una sabes solo un poco de un
empujón Voy a simplemente subirme una poco así que ahora hay 2.00 1 derecha así que voy a tener un poco como un
pequeño empuje hacia la derecha, así que ahora digamos 2 oh uno este enchufe esto es a escala 2.01 la diferencia de
0.001 es demasiado pequeña para mostrar en esta trama esto les da una pequeño empujón hacia la derecha ahora f de
a es igual a tres veces a las seis punto cero cero tres Simplot esto aquí esta no es la escala esto es seis puntos cero cero
tres, así que si nos fijamos en esto triángulo bajo aquí algunos destacando en verde lo que vemos es que si coincido
con un 0.001 a la derecha luego F de a sube por 0.03 la cantidad que F de una subió es tres veces más grande que la
cantidad Juzgué a la derecha, así que vamos decir que la pendiente de la derivada de la función f de a en a es igual a
dos o cuando a es igual a 2 la pendiente este leyendo y sabes el término derivado básicamente significa pendiente es
solo eso sonido derivado como un miedo a más palabra intimidante, mientras que la pendiente es una forma más
amigable de describir el concepto de derivado por lo que uno de estos año derivada solo piensa pendiente de la
función y más formalmente la pendiente es definido como la altura dividida por ancho de este pequeño triángulo que
tener en verde, así que esto es usted sabe 0.03 más de 0.01 y el hecho de que la pendiente es igual a 3 o la derivada es
igual a 3 solo representa el hecho de que cuando mira a la derecha por 0.01 por diminuto cantidad la cantidad que F
de a sube es tres veces más grande que la cantidad que Unido el inercial a en el horizontal dirección, así que eso es
todo lo que la pendiente de una línea ahora vamos a ver esto función en un punto diferente, digamos que a es ahora
igual a cinco en ese caso f de tres veces a es igual a 15 así que digamos que de nuevo le doy y muesca a la derecha un
pequeño cuello largo ahora se topa con cinco puntos sobre uno F de a es tres veces que entonces f de a es igual a
quince punto cero tres y así una vez más cuando me encuentro con el derecho no a la derecha por 0.001 F de un sube
tres veces más por lo que la pendiente de nuevo en un igual a cinco es También tres por lo que la forma en que
escribimos es que la pendiente de la función f es igual a tres decimos DF de un da y esto solo significa la pendiente
de la función f de cuando empuja la variable aa minúscula poca cantidad um esto es igual a tres y una forma
alternativa de escribir esto fórmula derivada es la siguiente que puede también escriba esto como d da de f de modo si
pones la f de a en la parte superior de ya sea que lo escribas, sabes aquí No importa pero toda esa ecuación significa
que si Empujo un poco hacia la derecha un poco Espero que F de a suba tres veces tanto como yo no solo el valor de
poco un ahora para este video que expliqué derivados hablando de lo que sucede empujamos la variable a por 0.001
um si quieres la matemática formal definición de los derivados derivados se definen con un par menor valor de la
cantidad de energía a el derecho por lo que no está abierto más de 1 no es 0.001 no es 0.0 y así sucesivamente 1 es
una especie de incluso más pequeño que eso y el formal definición de derivado dice lo que tienen das un empujón a la
derecha con una información cantidad comprobable básicamente un infinito pequeña cantidad infinitamente pequeña
si lo hace que hace f de una subida tres veces como tanto como lo que sea que era un pequeño y diminuto cantidad
que ahora se queda a la derecha, por lo esa es en realidad la definición formal de un derivado, pero para los fines de
nuestra comprensión intuitiva que vamos a hablar sobre empujar a la derecha por esta pequeña cantidad 0.001 incluso
si es 0.001 no es exactamente usted sabe muy pequeña insa testable ahora una propiedad de la derivado es que no
importa donde tomar la pendiente de esta función es igual a 3 si a es igual a 2 o a es igual a 5 la pendiente de esta
función es igual a 3 lo que significa que sea lo que sea el valor de a si lo aumenta por 0.001 que el valor de f de a
aumenta en tres veces tanto así que esta función tiene el mismo pendiente en todas partes y una forma de ver eso es
que donde sea que dibujes esto tu pequeño triángulo justo la altura dividida por el ancho siempre tiene una relación
de tres a uno, así que espero que esto te da un sentido de lo que la pendiente es la derivada de la función significa
para una línea recta donde en este ejemplo la pendiente del la función era tres en todas partes en el próximo video
echemos un vistazo a un un poco más complejo ejemplo donde el las pendientes de la función pueden ser diferentes
en diferentes puntos de la función

Más ejemplos derivados


En este video, te mostraré un ejemplo un poco más complejo donde la pendiente de la función puede ser diferente a
diferentes puntos en la función. Comencemos con un ejemplo. Has trazado la función f (a) = a². Echemos un vistazo
al punto a = 2. Entonces a² o f (a) = 4. Menos empuje ligeramente hacia la derecha, entonces a = 2.001. f (a) que es a²
va a ser aproximadamente 4.004. Resulta que el valor exacto, Llamas a la calculadora y descubres que esto es en
realidad 4.004001. Solo diré que 4.004 está lo suficientemente cerca. Entonces, ¿qué significa esto? Cuando a = 2,
dibujemos esto en la trama. Entonces, lo que estamos diciendo es que si a = 2, luego f (a) = 4 y aquí está el eje xey no
están dibujados a escala. Técnicamente, ¿la altura vertical debería ser mucho más alta que esta altura horizontal por lo
que los ejes xey no están en la misma escala. Pero si ahora empujo a a 2.001 entonces f (a) se convierte en
aproximadamente 4.004. Entonces, si dibujamos este pequeño triángulo nuevamente, lo que esto significa es que si lo
empujo hacia la derecha por 0.001, f (a) sube cuatro veces más en 0.004. Entonces en el lenguaje del cálculo, decimos
que una pendiente que es la derivada de f (a) en a = 2 es 4 o para escribir esto fuera de nuestra notación de cálculo,
decimos que d / da de f (a) = 4 cuando a = 2. Ahora una cosa sobre esta función f (a) = a² es que la pendiente es
diferente para diferentes valores de a. Esto es diferente al ejemplo que vimos en la diapositiva anterior. Así que
veamos un punto diferente. Si a = 5, entonces en vez de a = 2, y ahora a = 5 luego a² = 25, entonces eso es f (a). Si
empujo 8 a la derecha otra vez, es un pequeño empujoncito para 8, entonces ahora a = 5.001 entonces f (a) será
aproximadamente 25.010. Entonces, lo que vemos es que al empujar un up por .001, f (a) sube diez veces más.
Entonces tenemos esa d / da f (a) = 10 cuando a = 5 porque f (a) sube diez veces más tanto como a cuando hago un
pequeño empujoncito a 8. Entonces, una forma de ver por qué los derivados son diferentes en diferentes puntos es
que si dibuja ese pequeño triángulo en diferentes lugares en esto, verá que la proporción de la altura del triángulo
sobre el ancho del triángulo es muy diferente en diferentes puntos de la curva. Entonces aquí, la pendiente = 4 cuando
a = 2, a = 10, cuando a = 5. Ahora, si sacas un libro de texto de cálculo, un libro de texto de cálculo le dirá que d / da
de f (a), entonces f (a) = a², así que eso es d / da de a². Una de las fórmulas que encuentras son los libros de texto de
cálculo es que esta cosa, la pendiente de la función a² = 2a. Ahora voy a probar esto por la forma en que descubres
esto es que abres un libro de texto de cálculo para las fórmulas de la tabla y te dirán esa derivada de 2 de a² = 2a. Y de
hecho, esto es consistente con lo que hemos resuelto. A saber, cuando a = 2, la pendiente de la función a a es 2x2 = 4.
Y cuando a = 5, entonces la pendiente de la función 2xa es 2x5 = 10. Entonces, si alguna vez sacas un libro de texto
de cálculo y ves esta fórmula, que la derivada de a² = 2a, todo lo que eso significa es que para cualquier valor dado de
a, si empuja hacia arriba por 0.001 ya su pequeño valor, esperará que f (a) suba por 2a. Esa es la pendiente o los
tiempos derivados otra vez mucho le empujaste hacia la derecha el valor de a. Ahora un pequeño detalle, Yo uso
estos símbolos aproximados aquí y esto no era exactamente 4.004, hay un .001 adicional por ahí. Resulta que este
extra .001, esta pequeña cosa aquí es porque estábamos empujando a la derecha por 0.001, si, en cambio, lo estamos
empujando hacia la derecha este valor infinitesimalmente pequeño, entonces este extra cada término irá de distancia y
se encuentra que la cantidad que f (a) se apaga es exactamente igual a la derivada veces la cantidad que empuja a la
derecha. Y la razón por la cual no es 4.004 es exactamente porque los derivados se definen usando esto infinitamente
pequeño empuja a un más bien que 0.001 que no es. Y aunque 0.001 es pequeño, no es infinitesimalmente pequeño
Entonces, esa es la razón por la cual la cantidad que f (a) subió no se da exactamente por la fórmula, pero es solo una
especie de aproximadamente dada por la derivada. Para concluir este video, veamos algunos ejemplos más rápidos. El
ejemplo que ya has visto es que si f (a) = a² entonces la tabla de fórmulas de los libros de texto de cálculo le dirá que
la derivada es igual a 2a. Y entonces el ejemplo que pasamos fue si (a) = 2, f (a) = 4, y empujamos un a, ya que es un
poco más grande que f (a) se trata de 4.004 y así f (a) subieron cuatro veces más y de hecho cuando a = 2, los
derivados es igual a 4. Veamos algunos otros ejemplos. Digamos que, en cambio, f (a) = a³. Si toma la mitad de este
libro de texto y busca las fórmulas de la tabla, ves que la pendiente de esta función, de nuevo, la derivada de esta
función es igual a 3a². Para que pueda obtener esta fórmula del libro de texto de cálculo. Entonces, ¿qué significa
esto? Entonces, la forma de interpretar esto es la siguiente. Tomemos a = 2 como ejemplo nuevamente. Entonces f (a)
o a³ = 8, eso es dos partes tres. Entonces damos un pequeño empujoncito usted encuentra que f (a) es
aproximadamente 8.012 y puede verificarlo. Tome 2.001 tp parte tres, usted encuentra que esto está muy cerca de
8.012. Y de hecho, cuando a = 2 eso es 3x2² es igual a 3x4, ves que son 12. Entonces, la fórmula derivada predice que
si empuja a la derecha un poquito, f (a) debería subir 12 veces más. Y de hecho, esto es cierto cuando subió por .001,
f (a) subió 12 veces más por .012. Solo un último ejemplo y luego terminaremos. Digamos que f (a) es igual a la
función de registro. Entonces, en el registro correcto de a, Voy a usar esto como el logaritmo de base e. Entonces,
algunas personas escriben eso como log (a). Entonces, si vas al libro de texto de cálculo, lo encuentras cuando tomas
la derivada de log (a). Entonces esta es una función que se ve así, la pendiente de esta función está dada por 1 / a.
Entonces, la forma de interpretar esto es que si a tiene algún valor, entonces solo mantengamos usando a = 2 como
ejemplo y empuja a la derecha hacia .001, esperarías que f (a) suba por 1 / a que es por la derivada multiplicado por la
cantidad que aumenta a. Entonces, de hecho, si sacas una calculadora, usted encuentra que si a = 2, f (a) es
aproximadamente 0.69315 y si aumente f y si aumenta a a 2.001 entonces f (a) es aproximadamente 0.69365, esto ha
aumentado en 0.0005. Y de hecho, si miras la fórmula de la derivada cuando a = 2, d / da f (a) = 1/2. Entonces, esta
fórmula derivada predice que si bombeas un a por 0.00, esperarías que f (a) subiera solo 1/2 y 1/2 de .001 es 0.0005
que es exactamente lo que tenemos. Luego, cuando sube un .001 pasando de a = 2/3, a = 2.01, f (a) aumenta a la
mitad. Entonces, las respuestas están subiendo aproximadamente en .0005. Entonces, si dibujamos ese pequeño
triángulo, si lo haces es que si el eje horizontal simplemente sube por .001 en el eje vertical, log (a) sube a la mitad de
eso, por lo que .0005. Y para que 1 / a o 1/2 en este caso, 1a = 2 eso es solo la pendiente de esta línea cuando a = 2.
Entonces eso es todo para los derivados. Solo dos mensajes para llevar a casa de este video. Primero es que la
derivada de la función solo significa la pendiente de una función y la pendiente de una función puede ser diferente en
diferentes puntos de la función. En nuestro primer ejemplo, f (a) = 3a es una línea recta. La derivada fue la misma en
todas partes, eran tres en todas partes. Para otras funciones como f (a) = a² o f (a) = log (a), la pendiente de la línea
varía. Entonces, la pendiente o la derivada pueden ser diferentes en diferentes puntos de la curva. Entonces esa es una
primera vez. Derivado solo significa pendiente de una línea. El segundo punto es que si quieres buscar la derivada de
una función, puede abrir su libro de texto de cálculo o buscar Wikipedia y a menudo obtienen una fórmula para la
pendiente de estas funciones en diferentes puntos. Entonces, espero que tengan una comprensión intuitiva de los
derivados o las pendientes de las líneas. Vamos al siguiente video. Comenzaremos a hablar sobre la caída de cómputo
y cómo usar eso para calcular derivados de más complejo.
Transcripción interactiva
Me has oído decir que los cálculos de una red neuronal son organizados en términos de un paso hacia adelante o hacia
adelante, en el que calculamos la salida de la red neuronal, seguido de un paso hacia atrás o de propagación hacia
atrás, que usamos para calcular gradientes o calcular derivadas. El gráfico de computación explica por qué está
organizado de esta manera. En este video, veremos un ejemplo. Para ilustrar el gráfico de computación, usemos un
ejemplo más simple que la regresión logística o una red neuronal completa. Digamos que estamos tratando de
calcular una función, J, que es una función de tres variables a, b, yc y digamos que la función es 3 (a + bc). La
computación de esta función en realidad tiene tres pasos distintos. El primero es que necesita calcular lo que es bc y
digamos que almacenamos eso en la variable llamada u. Entonces u = bc y luego mi cálculo V = a * u. Entonces,
digamos que esto es V. Y finalmente, tu salida J es 3V. Entonces esta es tu función final J que intentas calcular.
Podemos tomar estos tres pasos y dibujarlos en un gráfico de computación de la siguiente manera. Digamos que
dibujo sus tres variables a, b y c aquí. Entonces, lo primero que hicimos fue calcular u = bc. Así que voy a poner una
caja rectangular alrededor de eso. Y entonces la entrada a eso es b y c. Y entonces, puedes tener V = a + u. Entonces
las entradas a eso son V. Entonces las entradas a eso son U con solo computar junto con a. Y finalmente, tenemos J =
3V. Entonces, como un ejemplo concreto, si a = 5, b = 3 y c = 2 luego u = bc serían seis porque a + u sería 5 + 6 es
11, J es tres veces eso, entonces J = 33. Y de hecho, con suerte puede verificar que esto es tres veces cinco más tres
veces dos. Y si expandes eso, en realidad obtienes 33 como el valor de J. Entonces, el gráfico de computación es útil
cuando hay alguna variable de salida distinguida o alguna especial, como J en este caso, que quieres optimizar Y en
el caso de una regresión logística, J es, por supuesto, la función cos que estamos tratando de minimizar. Y lo que
estamos viendo en este pequeño ejemplo es eso, a través de un pase de izquierda a derecha, puedes calcular el valor
de J. Y lo que veremos en las próximas diapositivas es que para calcular derivadas, habrá un pase de derecha a
izquierda como este, tipo de ir en la dirección opuesta a las flechas azules. Eso sería lo más natural para calcular los
derivados. Entonces, para recapitular, el gráfico de computación organiza un cálculo con esta flecha azul, cálculo de
izquierda a derecha. Vamos a referirnos al siguiente video de cómo puedes hacer la flecha roja hacia atrás cálculo de
derecha a izquierda de las derivadas. Pasemos al siguiente video.

Transcripción interactiva
En el último video, trabajamos a través de un ejemplo de usar un gráfico de computación para calcular una función J.
Ahora, tomemos una desviación limpia de ese gráfico de computación. Y muestre cómo puede usarlo para descubrir
cálculos derivados para esa función J. Así que aquí hay un gráfico de computación. Digamos que quieres calcular la
derivada de J con respecto a v.

0:23

Entonces, ¿qué es eso? Bueno, esto dice, si tuviéramos que tomar este valor de v cámbielo un poco, ¿cómo cambiaría
el valor de J? Bueno, J se define como 3 veces v. Y ahora mismo, v = 11. Entonces, si vamos a subir un poco v a
11.001, luego J, que es 3v, entonces actualmente 33, se aumentará hasta 33.003. Así que aquí, hemos aumentado v
por 0.001. Y el resultado neto de eso es que J sale 3 veces más. So the derivative of J with respect to v is equal to 3.
Because the increase in J is 3 times the increase in v. And in fact, this is very analogous to the example we had in the
previous video, where we had f(a) = 3a. And so we then derived that df/da, which with slightly simplified, a slightly
sloppy notation, you can write as df/da = 3. So instead, here we have J = 3v, and so dJ/dv = 3. With here, J playing
the role of f, and v playing the role of a in this previous example that we had from an earlier video. So indeed,
terminology of backpropagation, what we're seeing is that if you want to compute the derivative of this final output
variable, which usually is a variable you care most about, with respect to v, then we've done one step of
backpropagation. So we call it one step backwards in this graph. Now let's look at another example. What is dJ/da? In
other words, if we bump up the value of a, how does that affect the value of J?

2:35

Well, let's go through the example, where now a = 5. So let's bump it up to 5.001. The net impact of that is that v,
which was a + u, so that was previously 11. This would get increased to 11.001. And then we've already seen as
above that J now gets bumped up to 33.003. So what we're seeing is that if you increase a by 0.001, J increases by
0.003. And by increase a, I mean, you have to take this value of 5 and just plug in a new value. Then the change to a
will propagate to the right of the computation graph so that J ends up being 33.003. And so the increase to J is 3 times
the increase to a. So that means this derivative is equal to 3. And one way to break this down is to say that if you
change a, then that will change v.

3:40

And through changing v, that would change J. And so the net change to the value of J when you bump up the value,
when you nudge the value of a up a little bit, is that,

3:57

First, by changing a, you end up increasing v. Well, how much does v increase? It is increased by an amount that's
determined by dv/da. And then the change in v will cause the value of J to also increase. So in calculus, this is
actually called the chain rule that if a affects v, affects J, then the amounts that J changes when you nudge a is the
product of how much v changes when you nudge a times how much J changes when you nudge v. So in calculus,
again, this is called the chain rule. And what we saw from this calculation is that if you increase a by 0.001, v changes
by the same amount. So dv/da = 1. So in fact, if you plug in what we have wrapped up previously, dv/dJ = 3 and
dv/da = 1. So the product of these 3 times 1, that actually gives you the correct value that dJ/da = 3. So this little
illustration shows hows by having computed dJ/dv, that is, derivative with respect to this variable, it can then help
you to compute dJ/da. And so that's another step of this backward calculation.

5:39

I just want to introduce one more new notational convention. Which is that when you're witting codes to implement
backpropagation, there will usually be some final output variable that you really care about. So a final output variable
that you really care about or that you want to optimize. And in this case, this final output variable is J. It's really the
last node in your computation graph. And so a lot of computations will be trying to compute the derivative of that
final output variable. So d of this final output variable with respect to some other variable. Then we just call that dvar.
So a lot of the computations you have will be to compute the derivative of the final output variable, J in this case,
with various intermediate variables, such as a, b, c, u or v. And when you implement this in software, what do you
call this variable name? One thing you could do is in Python, you could give us a very long variable name like
dFinalOurputVar/dvar. But that's a very long variable name. You could call this, I guess, dJdvar. But because you're
always taking derivatives with respect to dJ, with respect to this final output variable, I'm going to introduce a new
notation. Where, in code, when you're computing this thing in the code you write, we're just going to use the variable
name dvar in order to represent that quantity. So dvar in a code you write will represent the derivative of the final
output variable you care about such as J. Well, sometimes, the last l with respect to the various intermediate
quantities you're computing in your code. So this thing here in your code, you use dv to denote this value. So dv
would be equal to 3. And your code, you represent this as da, which is we also figured out to be equal to 3. So we've
done backpropagation partially through this computation graph. Let's go through the rest of this example on the next
slide. So let's go to a cleaned up copy of the computation graph. And just to recap, what we've done so far is go
backward here and figured out that dv = 3. And again, the definition of dv, that's just a variable name, where the code
is really dJ/dv. We've figured out that da = 3. And again, da is the variable name in your code and that's really the
value dJ/da.

8:32

And we hand wave how we've gone backwards on these two edges like so. Now let's keep computing derivatives.
Now let's look at the value u. So what is dJ/du? Well, through a similar calculation as what we did before and then we
start off with u = 6. If you bump up u to 6.001, then v, which is previously 11, goes up to 11.001. And so J goes from
33 to 33.003. And so the increase in J is 3x, so this is equal. And the analysis for u is very similar to the analysis we
did for a. This is actually computed as dJ/dv times dv/du, where this we had already figured out was 3. And this turns
out to be equal to 1. So we've gone up one more step of backpropagation. We end up computing that du is also equal
to 3. And du is, of course, just this dJ/du. Ahora solo pasamos por un último ejemplo en detalle. Entonces, ¿qué es dJ
/ db? Entonces, imagínense si se les permite cambiar el valor de b. Y quiere ajustar un poquito para minimizar o
maximizar el valor de J. Entonces, ¿cuál es el derivado o ¿Cuál es la pendiente de esta función J cuando cambias el
valor de ba un poquito?

10:11
Resulta que usando la regla de la cadena para el cálculo, esto puede escribirse como el producto de dos cosas. Este es
el momento you / db. Y el razonamiento es si cambias un poquito, entonces b = 3 a, digamos, 3.001. La forma en que
afectará a J es que primero te afectará a ti. Entonces, ¿cuánto te afecta? Bueno, u se define como b veces c. Así que
esto pasará de 6, cuando b = 3, hasta ahora 6.002 porque c = 2 en nuestro ejemplo aquí. Entonces, esto nos dice que
du / db = 2. Porque cuando subes b por 0.001, aumentas el doble. Entonces du / db, esto es igual a 2. Y ahora,
sabemos que has subido el doble que b. Bueno, ¿qué es dJ / du? Ya hemos descubierto que esto es igual a 3. Y así al
multiplicar estos dos, encontramos que dJ / db = 6. Y de nuevo, aquí está el razonamiento para la segunda parte del
argumento. Que es lo que queremos saber cuando aumenta 0.002, ¿cómo afecta eso a J? El hecho de que dJ / du = 3,
eso nos dice que cuando subes 0.002, J sube 3 veces más. Entonces J debería subir por 0.006. Esto se debe al hecho
de que dJ / du = 3. Y si revisas las matemáticas en detalle, encontrará que si b se convierte en 3.001, entonces u se
convierte en 6.002, v se convierte en 11.002. Entonces eso es un + u, entonces eso es 5 + u. Y luego J, que es igual a
3 veces v, eso termina siendo igual a 33.006. Y así es como obtienes ese dJ / db = 6. Y para completar eso, esto es si
retrocedemos, entonces esto es db = 6. Y db realmente es el nombre de la variable de código Python para dJ / db. Y
no voy a ir a través del último ejemplo en gran detalle. Pero resulta que si también computas dJ, esto resulta ser dJ /
du times du. Y esto resulta ser 9, esto resulta ser 3 por 3. No voy a seguir ese ejemplo en detalle. Entonces, a través
de este último paso, es posible deducir que dc es igual a.

13:20

Entonces, la clave de este video, de este ejemplo, es que cuando se computa derivados e informática de todos estos
derivados, la forma más eficiente de hacer también lo es a través de un cálculo de derecha a izquierda siguiendo la
dirección de las flechas rojas. Y, en particular, primero calcularemos la derivada con respecto a v. Y luego eso se
vuelve útil para computar la derivada con respecto a a y la derivada con respecto a u. Y luego la derivada con
respecto a u, para ejemplo, este término aquí y este término aquí. Estos a su vez se vuelven útiles para calcular la
derivada con respecto a by la derivada con respecto a c. Así que ese era el gráfico de computación y cómo avanza o
de izquierda a derecha Cálculo para calcular la función de costo, como J, que quizás desee optimizar. Y un cálculo
hacia atrás o de derecha a izquierda para calcular derivadas. Si no está familiarizado con el cálculo o la regla de la
cadena, Conozco algunos de esos detalles, pero se han ido muy rápido. Pero si no siguió todos los detalles, no se
preocupe. En el siguiente video, revisaremos esto nuevamente en el contexto de la regresión logística. Y le mostrará
exactamente lo que necesita hacer para implementar los cálculos que necesidad de calcular los derivados del modelo
de regresión logística.

Descenso del gradiente de regresión logística


Dar una buena acogida. En este video, hablaremos sobre cómo calcular derivados para usted para implementar el
descenso de gradiente para la regresión logística. Los puntos clave serán lo que necesita implementar. Es decir, las
ecuaciones clave que necesita para poder implementar el descenso de gradiente para la regresión logística. En este
video, quiero hacer este cálculo usando el gráfico de computación. Debo admitir que usar el gráfico de computación
es un poco una exageración para derivar el descenso del gradiente para la regresión logística, pero quiero comenzar a
explicar esto forma de familiarizarte con estas ideas para que, con suerte, tendrá más sentido cuando hablemos de
redes neuronales completas. Para eso, profundicemos en el descenso de gradientes para la regresión logística. Para
recapitular, habíamos configurado la regresión logística de la siguiente manera: tus predicciones, Y_hat, se definen de
la siguiente manera, donde z es eso. Si nos centramos solo en un ejemplo por ahora, entonces la pérdida, o respeto a
ese único ejemplo, se define de la siguiente manera, donde A es el resultado de la regresión logística, e Y es la
etiqueta de verdad del suelo. Vamos a escribir esto como un gráfico de computación y para este ejemplo, digamos
que tenemos solo dos funciones, X1 y X2. Para calcular Z, necesitaremos ingresar W1, W2 y B, además de los
valores de característica X1, X2. Estas cosas, en un gráfico computacional, acostumbrarse a calcular Z, que es W1,
X1 + W2 X2 + B, caja rectangular alrededor de eso. Entonces, calculamos Y_hat, o A = Sigma_of_Z, ese es el
siguiente paso en el gráfico de computación, y luego, finalmente, calculamos L, AY, y no copiaré la fórmula
nuevamente. En la regresión logística, lo que queremos hacer es modificar los parámetros, W y B, para reducir esta
pérdida. Hemos descrito los cuatro pasos de propagación de cómo en realidad calcular la pérdida en un solo ejemplo
de entrenamiento, ahora hablemos de cómo puede retroceder para calcular los derivados. Aquí hay una versión limpia
del diagrama. Porque lo que queremos hacer es calcular derivados con respecto a esta pérdida, lo primero que
queremos hacer cuando retrocedemos es calcular la derivada de esta pérdida con respecto a, el script por allí, con
respecto a esta variable A. Entonces, en el código, solo usa DA para denotar esta variable. Resulta que si estás
familiarizado con el cálculo, podrías mostrar que esto termina siendo -Y_over_A + 1-Y_over_1-A. Y la forma en que
lo haces es tomar la fórmula de la pérdida y, si estás familiarizado con el cálculo, puedes calcular la derivada con
respecto a la variable, A minúscula, y obtienes esta fórmula. Pero si no está familiarizado con el cálculo, no se
preocupe. Proporcionaremos la forma derivada, qué más necesitas, a lo largo de este curso. Si eres un experto en
cálculo, Te animo a buscar la fórmula para la pérdida de su diapositiva anterior y tratar de tomar derivada con
respecto a A usando cálculo, pero si no sabes suficiente cálculo para hacer eso, no te preocupes por eso. Ahora,
habiendo calculado esta cantidad de DA y la derivada o su variable alfa final con respecto a A, entonces puedes ir
hacia atrás. Resulta que puedes mostrar DZ que, esta es la parte llamada nombre de la variable, esto va a ser la
derivada de la pérdida, versus de vuelta a Z, o para L, podrías escribir la pérdida incluyendo A e Y explícitamente
como parámetros o no, ¿verdad? Cualquiera de los tipos de notación es igualmente aceptable. Podemos demostrar
que esto es igual a AY. Solo un par de comentarios solo para aquellos de ustedes expertos en cálculo, si no eres
experto en cálculo, no te preocupes por eso. Pero resulta que esto, DL DZ, esto se puede expresar como
DL_DA_times_DA_DZ, y resulta que DA DZ, esto resulta ser A_times_1-A, y DL DA que hemos trabajado
anteriormente aquí, si toma estas dos cantidades, DL DA, cuál es este término, junto con DA DZ, cuál es este
término, y solo toma estas dos cosas y multiplícalas. Puede mostrar que la ecuación se simplifica a AY. Así es como
lo deriva, y que esta es realmente la regla de la cadena que ha eludido brevemente a la forma. Siéntase libre de
realizar ese cálculo usted mismo si tiene conocimientos de cálculo, pero si no lo eres, todo lo que necesitas saber es
que puedes calcular DZ como AY y ya hemos hecho ese cálculo para ti. Entonces, el último paso en ese cálculo es
volver a calcular cuánto necesita cambiar W y B. En particular, puede mostrar que la derivada con respecto a W1 y
entre comillas, llama a este DW1, que esto es igual a X1_times_DZ. Luego, de manera similar, DW2, que es cuánto
quieres cambiar W2, es X2_times_DZ y B, discúlpeme, DB es igual a DZ. Si quieres hacer un descenso gradual con
respecto a este solo ejemplo, lo que harías es lo siguiente; usarías esta fórmula para calcular DZ, y luego usa estas
fórmulas para calcular DW1, DW2, y DB, y luego realiza estas actualizaciones. W1 se actualiza como W1 menos,
tasa de aprendizaje alfa, multiplicado por DW1. W2 se actualiza de manera similar, y B se establece como B menos
la tasa de aprendizaje multiplicada por DB. Y entonces, este será un paso de grado con respecto a un solo ejemplo.
Usted ve en cómo calcular derivados e implementar descenso de gradiente para la regresión logística con respecto a
un único ejemplo de entrenamiento. Pero el modelo de regresión logística de entrenamiento, usted no tiene solo un
ejemplo de capacitación dado a conjuntos de entrenamiento de M ejemplos de capacitación. En el siguiente video,
veamos cómo puedes tomar estas ideas y aplicarlas al aprendizaje, no solo de un ejemplo, pero de un conjunto
completo de entrenamiento.

Descenso de gradiente en m Ejemplos


en un video anterior viste cómo calcular derivados e implementar pendiente descendente con respecto a solo un
ejemplo de entrenamiento para religiosos regresión ahora queremos hacerlo por Emma ejemplos de entrenamiento
para comenzar vamos recordarnos a nosotros mismos que la definición de la función de costo J función de costo WP
lo que te importa es este promedio la derecha 1 sobre m suma de I es igual a 1 a M usted sabe la pérdida cuando su
algoritmo Emite un I en el ejemplo por el que somos tú sé que AI es la predicción en el que he ejemplo entrenado que
es Sigma de ZI que es igual a Sigma de W transpuesta X más B bien, así que lo que mostramos en el la diapositiva
anterior es para cualquier ejemplo de entrenamiento cómo calcular LD derivados cuando tienes solo uno ejemplo de
formación excelente para d w1 d w2 y d estar con ahora el superíndice I de denotan los valores correspondientes que
obtienes si estás haciendo lo que hicimos en el diapositiva anterior pero solo usando la ejemplo de entrenamiento
XIYII lo estaba usando falta en cualquiera de los dos así que ahora observe que las funciones de costos generales son
suma fue realmente el promedio porque el 1 más de m término de las pérdidas individuales por lo resulta que el
respeto derivativo decir w1 de la función de costo general también va a ser el promedio de derivados respecto a w1 de
la términos de pérdida individual pero anteriormente Ya he mostrado cómo calcular esto término como decir d w1 I
derecho que usted saber en la presentación previa de diapositivas cómo el computadoras en un solo ejemplo de
entrenamiento entonces lo que tienes que hacer es realmente calcular estos derivados propios como mostramos en el
ejemplo de entrenamiento anterior y promediarlos y esto le dará el gradiente general que puede usar para implementar
directamente en el olor, así que sé que había una gran cantidad de detalles, pero tomemos todos esto y envolver esto
en un hormigón algoritmos y lo que debe implementar junto la regresión logística con gradiente de descenso
trabajando así que qué puedes hacer vamos a inicializar J es igual a 0 en DW 1 es igual a 0 DW 2 es igual a 0 DB es
igual 0 y lo que vamos a hacer es usar un para el ciclo sobre el conjunto de entrenamiento y calcular los derivados
para respetar cada ejemplo de entrenamiento y luego sumarlos bien, así que mira como lo hacemos por mí es igual a 1
a m, por lo que M es el número de ejemplos de entrenamiento que calculamos CI es igual a W transponer XI más B
armado el predicción AI es igual a Sigma de zi y luego sabes, vamos a sumar jj más es igual a yi largo un IM más 1
menos y registro 1 menos AI y luego pongo un signo negativo en frente del todo cosa y luego, como vimos antes,
tenemos d zi o es igual a AI menos yi y DW obtiene más igual a x1 id zi b w2 plus es igual a x i2 d zi oy estoy
haciendo esto cálculo suponiendo que acaba de ser dos características por lo que el n es igual a 2 de lo contrario, haga
esto para d w1 z w2 TW 3 y así sucesivamente y GB plus es igual a VVI y yo Supongo que es el final del bucle for y
finalmente, habiendo hecho esto por todos M ejemplos de entrenamiento que todavía necesitarás dividir por M
porque estamos computando promedios tan d w1 si igualo m DW para dividir llamadas m DB dispositivo es igual a
M en todo el completo promedios y así con todos estos cálculos que acaba de calcular el derivada de la función de
costo J con Respecto a los tres parámetros W 1 W 2 y B por lo que el comentario detalla lo que somos haciendo que
estamos usando DW 1 + DW y DP - como acumuladores correctos para que luego este cálculo sabes que DW 1 es
igual a la derivada de su costo total función con respecto a W 1 y De manera similar para DW 2 y DV, tenga en
cuenta que DW 1 + DW para no tener un superíndice I porque los estamos usando en este código como acumuladores
para sumar sobre la totalidad conjunto de entrenamiento mientras que en contraste bzi aquí esto fue en PZ con
respecto a solo un solo ejemplo de entrenamiento que es ¿Por qué eso tiene un superíndice I para referirse a el
ejemplo de entrenamiento, ya sea eso computadora encendida y luego de haber terminado todo estos cálculos para
implementar un paso de pendiente descendente a implementar w1 se actualiza como w1 - una tasa de aprendizaje
veces d w1 w2 da actualizaciones w2 uno es velocidad de aprendizaje multiplicada por d w2 y B da actualizar como
B - tasa de aprendizaje veces EB donde PW 1 DW 2 + DB donde sabes calculado y, finalmente, J aquí también ser un
valor correcto por su costo función para que todo en la diapositiva implementa solo un paso de pendiente de gradiente
y por lo que tiene que repite todo en esta diapositiva múltiple veces para tomar varios pasos de pendiente descendente
en caso de que estos detalles parece demasiado complicado de nuevo, no te preocupes demasiado por eso ahora
espero que todo esto sea más claro cuando vayas a implementar esto en D asignación de programación, pero resulta
hay dos debilidades con el cálculo como con como con implemental adherirse, que es eso de implementar regresión
logística de esta manera que necesita escribir dos para bucles el primero para bucle es un pequeño bucle sobre el
entrenamiento M ejemplos y el segundo para bucle es una para recorrer todas las características de aquí bien, así que
en este ejemplo acabamos de tener dos características por lo que n es 2 igual a 2 y X es igual a 2 pero si tienes más
características terminas escribiendo tu DW 1 DW 2 y usted tiene cálculos similares para DW v y así sucesivamente
hasta DW n así parece que necesita tener un bucle para el características sobre todas las características n cuando estás
implementando aprendizaje profundo algoritmos que encuentre que tiene explícita para los bucles en su código hace
que su algoritmo ejecutar menos eficiencia y por lo tanto en el profundo error de aprendizaje se movería a una
conjuntos de datos cada vez más grandes y por lo tanto capaz de implementar tus algoritmos sin utilizar explícitos
para bucles es realmente importante y te ayudará a escalar a conjuntos de datos mucho más grandes por lo que resulta
que hay un conjunto de técnicas llamadas vectorización técnicas que le permiten deshacerse de estos bucles
completos explícitos en tu código I pensar en la era pre profunda de aprendizaje eso es antes del surgimiento del
aprendizaje profundo vectorización fue un placer tenerte a veces podría hacerlo para acelerar un vehículo y a veces
no, pero en el fondo aprendiendo vectorización de la era que es deshacerse de los bucles como este y como este se ha
vuelto realmente importante porque estamos cada vez más capacitados en muy grandes conjuntos de datos y por lo
que realmente necesita tu código para ser muy eficiente en los próximos videos hablaremos sobre vectorización y
cómo implementar todo esto sin usar ni un solo lleno lazo así de esto espero que tengas un sentido de cómo intimidar
la regresión logística o pendiente de gradiente para logística la regresión en las cosas será más clara cuando
implemente el ejercicio del programa pero antes de realmente hacer el programa ejercicio primero hablemos de
vectorización para que luego pueda implementar todo esto implementar un solo iteración de pendiente de gradiente
sin usando cualquier noticia de otoño

You might also like