Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Derivados
Volvamos a hablar de funciones y mirémoslas desde una perspectiva de cálculo,
comenzando con las derivadas. Una derivada indica la pendiente de una función y es útil
para medir la tasa de cambio en cualquier punto de una función.
¿Por qué nos preocupamos por los derivados? A menudo se utilizan en el aprendizaje
automático y otros algoritmos matemáticos, especialmente con descenso de gradiente.
Cuando la pendiente es 0, eso significa que estamos en el mínimo o máximo de una
variable de salida. Este concepto será útil más adelante cuando hagamos regresión lineal
( Capítulo 5 ), regresión logística ( Capítulo 6 ) y redes neuronales ( Capítulo 7 ).
Comencemos con un ejemplo simple. Echemos un vistazo a la función en
la Figura 1-6. ¿Qué tan “empinada” es la curva en x = 2 ?
Observe que podemos medir la "inclinación" en cualquier punto de la curva, y podemos
visualizar esto con una línea tangente. Piense en una línea tangente como una línea recta
que "apenas toca" la curva en un punto dado. También proporciona la pendiente en un
punto dado. Puede estimar crudamente una línea tangente en un valor x dado al crear
una línea que interseque ese valor x y un valor x vecino muy cercano en la función.
Tome x = 2 y un valor cercano x = 2.1, que cuando se pasa a la función f(x) = x2 producirá
f (2) = 4 y f (2.1) = 4.41 como se muestra en la Figura 1-7. La recta resultante que pasa
por estos dos puntos tiene una pendiente de 4,1.
Figura 1-6. Observando la pendiente en una parte dada de la función
Puede calcular rápidamente la pendiente m entre dos puntos usando la fórmula simple
de elevación sobre carrera:
m = 41
Si hiciera el paso x entre los dos puntos aún más pequeño, como x = 2 y x = 2,00001, lo
que daría como resultado f (2) = 4 y f (2,00001) = 4,00004, eso se acercaría mucho a la
pendiente real de 4. Entonces, cuanto menor sea el paso al valor vecino, más nos
acercaremos al valor de la pendiente en un punto dado de la curva. Como tantos
conceptos importantes en matemáticas, encontramos algo significativo cuando nos
acercamos a valores infinitamente grandes o infinitamente pequeños.
El ejemplo 1-17 muestra una calculadora derivada implementada en Python.
Ejemplo 1-17. Una calculadora de derivadas en Python
def derivative_x(f, x, step_size):
m = (f(x + step_size) - f(x)) / ((x + step_size) - x)
return m
def my_function(x):
return x**2
slope_at_2 = derivative_x(my_function, 2, .00001)
print(slope_at_2) # prints 4.000010000000827
Ahora, la buena noticia es que hay una forma más limpia de calcular la pendiente en
cualquier parte de una función. Ya hemos estado usando SymPy para trazar gráficos,
pero le mostraré cómo también puede realizar tareas como derivadas utilizando la magia
de la computación simbólica.
Cuando encuentre una función exponencial como f(x)= x2, la función derivada hará que el
exponente sea un multiplicador y luego lo reducirá en 1, dejándonos con la derivada
. El indica una derivada con respecto a x, lo que dice que estamos
construyendo una derivada apuntando al valor de x para obtener su pendiente. Entonces,
si queremos encontrar la pendiente en x = 2, y tenemos la función derivada, simplemente
reemplazamos ese valor de x para obtener la pendiente:
f(x) = x2
Si tiene la intención de aprender estas reglas para calcular derivadas a mano, hay
muchos libros de cálculo para eso. Pero hay algunas buenas herramientas para calcular
derivadas simbólicamente para ti. La biblioteca de Python SymPy es gratuita y de código
abierto, y se adapta muy bien al uso de la sintaxis de Python. El ejemplo 1-18 muestra
cómo calcular la derivada de f(x) = x2 en SymPy.
Ejemplo 1-18. Cálculo de una derivada en SymPy
from sympy import *
# Declare 'x' to SymPy
x = symbols('x')
# Now just use Python syntax to declare function
f = x**2
# Calculate the derivative of the function
dx_f = diff(f)
print(dx_f) # prints 2*x¡
Guau! Entonces, al declarar variables usando la función de símbolos () en SymPy, puedo
proceder a usar la sintaxis normal de Python para declarar mi función. Después de eso,
puedo usar diff() para calcular la función derivada. En el ejemplo 1-19, podemos llevar
nuestra función derivada de vuelta a Python simple y simplemente declararla como otra
función.
Ejemplo 1-19. Una calculadora de derivadas en Python
def f(x):
return x**2
def dx_f(x):
return 2*x
slope_at_2 = dx_f(2.0)
print(slope_at_2) # prints 4.0
Si quieres seguir usando SymPy, puede llamar a la función subs() para intercambiar la
variable x con el valor 2 como se muestra en el ejemplo 1-20.
Ejemplo 1-20. Uso de la función de sustitución en SymPy
# Calculate the slope at x = 2
print(dx_f.subs(x,2)) # prints 4
Derivadas parciales
Otro concepto que encontraremos en este libro es el de derivadas parciales, que
usaremos en los capítulos 5, 6 y 7. Estas son derivadas de funciones que tienen múltiples
variables de entrada.
Piénsalo de esta manera. En lugar de encontrar la pendiente en una función
unidimensional, tenemos pendientes con respecto a múltiples variables en varias
direcciones. Para cada derivada variable dada, asumimos que las otras variables se
mantienen constantes. Mire el gráfico 3D de f( x, y) = 2x 3 + 3y3 en la figura 1-8 y verá que
tenemos pendientes en dos direcciones para dos variables.
Tomemos la función f(x, y)= 2x3 + 3y3 . Las variables x e y obtienen cada una sus propias
derivadas . Estos representan los valores de pendiente con respecto a cada
variable en una superficie multidimensional. Técnicamente llamamos a estos gradientes
de "pendientes" cuando se trata de múltiples dimensiones. Estas son las derivadas de x e
y, seguidas del código SymPy para calcular esas derivadas.:
El ejemplo 1-21 y la figura 1-8 muestran cómo calculamos las derivadas parciales para x e
y, respectivamente, con SymPy.
Ejemplo 1-21. Cálculo de derivadas parciales con SymPy
from sympy import *
from sympy.plotting import plot3d
# Declare x and y to SymPy
x,y = symbols('x y')
# Now just use Python syntax to declare function
f = 2*x**3 + 3*y**3
# Calculate the partial derivatives for x and y
dx_f = diff(f, x)
dy_f = diff(f, y)
print(dx_f) # prints 6*x**2
print(dy_f) # prints 9*y**2
# plot the function
plot3d(f)
Figura 1-8. Trazar una función exponencial tridimensional