En la primera parte se habla de la convergencia de SGD a gran escala en la práctica y en la segunda de resultados teóricos sobre la convergencia de SGD cuando el problema de optimización es convexo.
"El número de actualizaciones necesarias para alcanzar la convergencia suele aumentar con el tamaño del conjunto de entrenamiento".
Esta afirmación me ha parecido confusa, pero como ha señalado amablemente @DeltaIV en los comentarios, creo que se refieren a consideraciones prácticas para un modelo fijo, ya que el tamaño del conjunto de datos es diferente. m→∞m→∞ . Creo que hay dos fenómenos relevantes:
- las compensaciones de rendimiento cuando se intenta hacer SGD distribuido, o
- rendimiento en un problema real de optimización no convexo
Compromisos computacionales para el SGD distribuido
En un escenario de gran volumen y alta tasa de datos, es posible que desee intentar implementar una versión distribuida de SGD (o más probablemente minibatch SGD). Lamentablemente, crear una versión distribuida y eficiente de SGD es difícil, ya que es necesario compartir con frecuencia el estado de los parámetros. ww . En concreto, se incurre en un gran coste de sincronización entre ordenadores, lo que incentiva el uso de minilotes más grandes. La siguiente figura de (Li et al., 2014) lo ilustra muy bien
![synchronisation costs for SGD between nodes]()
SGD aquí es minibatch SGD y las otras líneas son algoritmos que proponen.
Sin embargo, también se sabe que, en el caso de los problemas convexos, los minilotes tienen un coste computacional que ralentiza la convergencia al aumentar el tamaño del minilote. Al aumentar el tamaño de los minilotes m′ hacia el tamaño del conjunto de datos m se vuelve cada vez más lento hasta que sólo estás haciendo el descenso de gradiente por lotes normal. Esta disminución puede ser un poco drástica si se utiliza un gran tamaño de mini-lotes. Una vez más, esto se ilustra muy bien en (Li et al, 2014):
![enter image description here]()
Aquí se representa el valor objetivo mínimo que han encontrado en el conjunto de datos KDD04 tras utilizar 107 puntos de datos.
Formalmente, si f es una función fuertemente convexa con un óptimo global w∗ y si wt es la salida de SGD en el tth iteración. Entonces usted puede demostrar que en la expectativa que tiene: E[f(wt)−f(w∗)]≤O(1√t). Tenga en cuenta que esto no depende del tamaño del conjunto de datos (esto es relevante para su siguiente pregunta). Sin embargo, para SGD minilotes con tamaño de lote b la convergencia al óptimo se produce a un ritmo de O(1√bt+1bt) . Cuando se dispone de una cantidad muy grande de datos (Li et al., 2014) señalan que:
Dado que el número total de ejemplos examinados es bt mientras que sólo hay a √b de mejora, la velocidad de convergencia se degrada con con el aumento del tamaño del minilote.
Existe un equilibrio entre el coste de sincronización de los minilotes pequeños y la penalización de rendimiento si aumenta el tamaño del minilote. Si se paraleliza ingenuamente el SGD (minilotes), se paga una cierta penalización y la velocidad de convergencia disminuye a medida que aumenta el tamaño de los datos.
No convexidad del problema de optimización empírica
Esto es básicamente lo que ha señalado @dopexxx. Es bien sabido que el problema de optimización que se quiere resolver en la práctica para las redes neuronales profundas no es convexo. En particular, puede tener las siguientes malas propiedades:
- mínimos locales y puntos de inflexión
- regiones de meseta
- curvatura muy variable
En general, se considera que la forma sobre la que se intenta optimizar es un colector y, hasta donde yo sé, todo lo que se puede decir sobre la convergencia es que se va a converger a (una bola de ruido alrededor de) un punto estacionario. Parece razonable pensar que cuanto mayor sea la variedad de datos del mundo real, más complicada será esta multiplicidad. Debido a que el gradiente real es más complicado como m aumentar necesita más muestras para aproximar ∇f con SGD.
"Sin embargo, a medida que m se acerca a la infinidad, el modelo acabará convergiendo a su mejor error de prueba posible antes de que SGD haya muestreado todos los ejemplos del conjunto de entrenamiento. Aumentar m aún más no ampliará la cantidad de tiempo de entrenamiento necesario para alcanzar el mejor error de prueba posible del modelo".
(Goodfellow et al., 2016) afirman esto con un poco más de precisión en la discusión de la sección 8.3.1, donde afirman:
La propiedad más importante del SGD y de la optimización relacionada basada en minilotes o gradientes en línea es que el tiempo de cálculo por actualización no crece con el número de ejemplos de entrenamiento. Esto permite la convergencia incluso cuando el número de ejemplos de entrenamiento es muy grande. Para un conjunto de datos suficientemente grande, SGD puede converger dentro de una tolerancia fija de su error final en el conjunto de prueba antes de haber procesado todo el conjunto de datos de entrenamiento.
(Bottou et al., 2017) ofrecen la siguiente explicación clara:
A nivel intuitivo, la SG emplea la información de forma más eficiente que un método por lotes. Para verlo, consideremos una situación en la que un conjunto de entrenamiento, llamémoslo S consta de diez copias de un conjunto Ssub . Un minimizador del riesgo empírico para el conjunto mayor S viene dado claramente por un minimizador para el conjunto menor Ssub pero si se aplicara un enfoque por lotes para minimizar Rn en S entonces cada iteración sería diez veces más cara que si sólo se tuviera una copia de Ssub . Por el Por otro lado, SG realiza los mismos cálculos en ambos escenarios, en el sentido de que los cálculos del gradiente estocástico implican la elección de e gradiente estocástico consiste en elegir elementos de Ssub con las mismas probabilidades.
donde Rn es el riesgo empírico (esencialmente la pérdida de formación). Si se deja que el número de copias sea arbitrariamente grande, el SGD convergerá sin duda antes de haber muestreado todos los puntos de datos.
Creo que esto concuerda con mi intuición estadística. Se puede conseguir |xopt−xk|<ϵ en la iteración k antes de muestrear necesariamente todos los puntos de su conjunto de datos, porque su tolerancia al error ϵ determina realmente la cantidad de datos que hay que consultar, es decir, cuántas iteraciones de SGD hay que completar.
La primera parte del artículo de (Bottou et al., 2017) me ha parecido bastante útil para entender mejor el SGD.
Referencias
Bottou, Léon, Frank E. Curtis y Jorge Nocedal. "Optimization methods for large-scale machine learning". arXiv preprint arXiv:1606.04838 (2016). https://arxiv.org/pdf/1606.04838.pdf
Li, Mu, et al. "Efficient mini-batch training for stochastic optimization". Actas de la 20ª conferencia internacional ACM SIGKDD sobre descubrimiento de conocimiento y minería de datos. ACM, 2014. https://www.cs.cmu.edu/~muli/file/minibatch_sgd.pdf