Skip to main content

Descenso Gradiente

Actualizado en November 15, 20244 Minutos lidos


Introdución

Imaxina que temos unha función f(x)f(x) e queremos atopar o seu mínimo. Que farías?

Simple non? Só necesitamos resolver a seguinte ecuación:

f′(x)=0f'(x) = 0

O caso é que atopar a fórmula de f′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′f'.

Construímos algo de intuición

Supoñamos que temos unha función f coa gráfica correspondente:

Graph 1

Comecemos cun punto aleatorio x0x_{0}. O obxectivo é mover este punto e achegalo cada vez máis a x∗x* de tal xeito que f′(f'(x*)=0) = 0. Polo tanto, o problema pódese dividir en dúas partes:

  • En que dirección debemos mover o punto xx ? 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:

Graph 2

Graph 3

Teña en conta que:

  • cando o punto x0x_{0} está á dereita do punto óptimo x∗x* a súa recta tanxente sobe.

  • cando o punto x0x_{0} está á dereita do punto óptimo x∗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\implica que a pendente aa é positiva.

  • Unha liña baixa \implica\implica que a pendente aa é negativa.

Ten en conta que: \

A pendente da recta tanxente dunha función nun determinado punto x0x_{0} non é máis que a derivada nese punto f′(x0)f'(x_{0}):

tangent(x∗0):g(x)=f′(x∗0).(x−x∗0)+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 x0x_{0}?":

  • f′(x0)<0f'(x_{0}) < 0   ⟹  \implies x0x_{0} á dereita de x∗x*   ⟹  \implies Necesitamos mover x0x_{0} á esquerda.

  • f′(x0)>0f'(x_{0}) > 0   ⟹  \implies x0x_{0} á esquerda de x∗x*   ⟹  \implies Necesitamos mover x0x_{0} cara á dereita.

Os pasos

Agora para a segunda pregunta, Canto debemos mover x0x_{0} ?

Bótalle un ollo aos seguintes exemplos:

Graph 4

Graph 5

Podemos concluír que:

  • x0x_{0} está próximo a x∗x* => A pendente da tanxente é pequena => f′(x0)f'(x_{0}) é pequena.

  • x0x_{0} está distante de x∗x* => A pendente da tanxente é grande => f′(x0)f'(x_{0}) é grande.

Respondendo a ambas as preguntas, chegamos á conclusión de que só o coñecemento da derivada no punto x0x_{0} pode darnos moita información sobre a dirección e a distancia do punto óptimo x0x_{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∗x* mínimo da función a partir dun punto inicial aleatorio x0x_{0}. O algoritmo explícase como segue:

x∗n+1=x∗n−lr×dfdx_nx*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x\_{n}}

onde:

  • dfdx∗n\frac{\mathrm{d} f}{\mathrm{d} x*{n}} non é máis que a derivada de ff no punto x∗nx*{n}.

  • lrlr é unha constante positiva que determina o grandes que van ser os pasos.

Teña en conta que:

  • xnx_{n} está á dereita de x∗x* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xn−x_{n+ 1} = x_{n} - positivo => xnx_{n} móvese cara á esquerda.

  • xnx_{n} está á esquerda de x∗x* => dfdxn<0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0 => x∗n+1=x∗n+x*{n +1} = x*{n} + positivo => xnx_{n} móvese cara á dereita.

  • xnx_{n} preto de x∗x* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} preto de 00 => Pequena actualización de xnx_{ n}.

Cuestionario

  • Cando deixa de iterar o descenso do gradiente:

  • Cando xnx_{n} é o suficientemente pequeno.

  • Cando xnx_{n} está preto de x0x_{0} .

  • Cando dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

  • Como eliximos x0x_{0}:

  • Escollemos ao azar. XXX

  • Levámolo no barrio de xnx_{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.

Aprende habilidades técnicas en liña con Code Labs Academy

Aprende habilidades técnicas en liña con Code Labs Academy

Únete á nosa comunidade de apoio, desbloquea o teu potencial e emprende un camiño profesional gratificante.