Descenso Gradiente
Actualizado en November 15, 2024 4 Minutos lidos

Introdución
Imaxina que temos unha función $f(x)$ e queremos atopar o seu mínimo. Que farías?
Simple non? Só necesitamos resolver a seguinte ecuación:
$$f’(x) = 0$$
O caso é que atopar a fórmula de $f’$ non sempre é doado xa que adoitan ser extremadamente complicados, especialmente na aprendizaxe profunda onde tratamos funcións complexas. Polo tanto, necesitamos atopar outro método que nos proporcione o mínimo dunha función sen necesidade de atopar a fórmula da derivada $f’$.
Construímos algo de intuición
Supoñamos que temos unha función f coa gráfica correspondente:
Comecemos cun punto aleatorio $x_{0}$. O obxectivo é mover este punto e achegalo cada vez máis a $x*$ de tal xeito que $f’($x*$) = 0$. Polo tanto, o problema pódese dividir en dúas partes:
-
En que dirección debemos mover o punto $x$ ? Esquerda ou dereita?
-
Canto debemos movelo?
A dirección
Imos construír algo de intuición para responder á primeira pregunta. Bótalle un ollo ao seguinte punto:
Teña en conta que:
-
cando o punto $x_{0}$ está á dereita do punto óptimo $x*$ a súa recta tanxente sobe.
-
cando o punto $x_{0}$ está á dereita do punto óptimo $x*$ a súa recta tanxente baixa.
A dirección dunha recta vén determinada polo signo da súa pendente:
-
Unha liña sube $\implica$ que a pendente $a$ é positiva.
-
Unha liña baixa $\implica$ que a pendente $a$ é negativa.
Ten en conta que: \
A pendente da recta tanxente dunha función nun determinado punto $x_{0}$ non é máis que a derivada nese punto $f’(x_{0})$:
$$ tangent(x*{0}): g(x) = f’(x*{0}).(x-x*{0}) + f(x*{0}) $$
Entón, como resposta á pregunta “Onde debemos mover $x_{0}$?”:
-
$f’(x_{0}) < 0$ $\implies$ $x_{0}$ á dereita de $x*$ $\implies$ Necesitamos mover $x_{0}$ á esquerda.
-
$f’(x_{0}) > 0$ $\implies$ $x_{0}$ á esquerda de $x*$ $\implies$ Necesitamos mover $x_{0}$ cara á dereita.
Os pasos
Agora para a segunda pregunta, Canto debemos mover $x_{0}$ ?
Bótalle un ollo aos seguintes exemplos:
Podemos concluír que:
-
$x_{0}$ está próximo a $x*$ => A pendente da tanxente é pequena => $f’(x_{0})$ é pequena.
-
$x_{0}$ está distante de $x*$ => A pendente da tanxente é grande => $f’(x_{0})$ é grande.
Respondendo a ambas as preguntas, chegamos á conclusión de que só o coñecemento da derivada no punto $x_{0}$ pode darnos moita información sobre a dirección e a distancia do punto óptimo $x_{0}$.
Descenso en gradiente
O descenso en gradiente é a formulación das respostas das dúas preguntas anteriores. É un algoritmo iterativo de optimización que aproxima o $x*$ mínimo da función a partir dun punto inicial aleatorio $x_{0}$. O algoritmo explícase como segue:
$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$
onde:
-
$ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ non é máis que a derivada de $f$ no punto $x*{n}$.
-
$lr$ é unha constante positiva que determina o grandes que van ser os pasos.
Teña en conta que:
-
$x_{n}$ está á dereita de $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - $ positivo => $x_{n}$ móvese cara á esquerda.
-
$x_{n}$ está á esquerda de $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0$ => $ x*{n +1} = x*{n} + $ positivo => $x_{n}$ móvese cara á dereita.
-
$x_{n}$ preto de $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ preto de $0$ => Pequena actualización de $x_{ n}$.
Cuestionario
-
Cando deixa de iterar o descenso do gradiente:
-
Cando $x_{n}$ é o suficientemente pequeno.
-
Cando $x_{n}$ está preto de $x_{0}$ .
-
Cando $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX
-
Como eliximos $x_{0}$:
-
Escollemos ao azar. XXX
-
Levámolo no barrio de $x_{n}$.
-
Depende do problema.
-
Por que necesitamos un descenso en pendiente:
-
Porque os ordenadores non son o suficientemente potentes para calcular derivadas.
-
Porque é moi difícil atopar as fórmulas derivadas dos modelos de aprendizaxe profunda. XXX
-
Porque as funcións teñen máis dun mínimo local.
Máster Data Science and AI con Code Labs Academy! Únete ao noso Bootcamp en liña: opcións flexibles a tempo parcial e a tempo completo dispoñibles.