O descenso de gradientes é a técnica de optimización máis popular no modelado de aprendizaxe automática (ML). O algoritmo minimiza o erro entre os valores previstos e a verdade do terreo. Dado que a técnica considera cada punto de datos para comprender e minimizar o erro, o seu rendemento depende do tamaño dos datos de adestramento. Técnicas como Descenso de gradiente estocástico (SGD) están deseñadas para mellorar o rendemento do cálculo pero a costa da precisión da converxencia.
Gradiente medio estocástico equilibra o enfoque clásico, coñecido como Descenso de degradado completo e SGD, e ofrece ambos beneficios. Pero antes de poder usar o algoritmo, primeiro debemos comprender o seu significado para a optimización do modelo.
Cada algoritmo de ML ten asociada unha función de perda que ten como obxectivo minimizar ou mellorar o rendemento do modelo. Matemáticamente, a perda pódese definir como:
É simplemente a diferenza entre a saída real e a prevista, e minimizar esta diferenza significa que o noso modelo achégase aos valores de verdade básicos.
O algoritmo de minimización usa o descenso de gradientes para atravesar a función de perda e atopar un mínimo global. Cada paso de percorrido implica actualizar os pesos do algoritmo para optimizar a saída.
O algoritmo de descenso de gradientes convencional utiliza a media de todos os gradientes calculados en todo o conxunto de datos. O ciclo de vida dun único exemplo de adestramento é o seguinte:
A ecuación de actualización de peso ten o seguinte aspecto:
Onde W
representa os pesos do modelo e dJ/dW
é a derivada da función de perda con respecto ao peso do modelo. O método convencional ten unha alta taxa de converxencia, pero resulta costoso computacionalmente cando se trata de grandes conxuntos de datos que comprenden millóns de puntos de datos.
A metodoloxía SGD segue sendo a mesma que a GD simple, pero en lugar de usar todo o conxunto de datos para calcular os gradientes, utiliza un pequeno lote das entradas. O método é moito máis eficiente, pero pode saltar demasiado arredor dos mínimos globais xa que cada iteración usa só unha parte dos datos para aprender.
O enfoque do Gradiente Medio Estocástico (SAG) introduciuse como un punto medio entre GD e SGD. Selecciona un punto de datos aleatorios e actualiza o seu valor en función do gradiente nese punto e dunha media ponderada dos gradientes pasados almacenados para ese punto de datos en particular.
Semellante ao SGD, SAG modela cada problema como unha suma finita de funcións convexas e diferenciables. En calquera iteración, usa os gradientes actuais e a media dos gradientes anteriores para actualizar o peso. A ecuación toma a seguinte forma:
Entre os dous algoritmos populares, gradiente completo (FG) e descenso de gradiente estocástico (SGD), o algoritmo FG ten unha mellor taxa de converxencia xa que utiliza todo o conxunto de datos durante cada iteración para o cálculo.
Aínda que SAG ten unha estrutura similar á SGD, a súa taxa de converxencia é comparable e ás veces mellor que o enfoque de gradiente completo. A táboa 1 a continuación resume os resultados dos experimentos de
A pesar do seu sorprendente rendemento, propuxéronse varias modificacións ao algoritmo SGD orixinal para axudar a mellorar o rendemento.
O descenso de gradientes é unha optimización popular que se usa para localizar mínimos globais das funcións obxectivas proporcionadas. O algoritmo usa o gradiente da función obxectivo para percorrer a pendente da función ata chegar ao punto máis baixo.
Descenso de degradado completo (FG) e Descenso de degradado estocástico (SGD) son dúas variacións populares do algoritmo. FG usa todo o conxunto de datos durante cada iteración e proporciona unha alta taxa de converxencia cun alto custo de cálculo. En cada iteración, SGD usa un subconxunto de datos para executar o algoritmo. É moito máis eficiente pero cunha converxencia incerta.
O Gradiente Medio Estocástico (SAG) é outra variación que proporciona os beneficios de ambos os algoritmos anteriores. Utiliza a media dos gradientes pasados e un subconxunto do conxunto de datos para proporcionar unha alta taxa de converxencia cun cálculo baixo. O algoritmo pode modificarse aínda máis para mellorar a súa eficiencia mediante vectorización e mini-lotes.