<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Appl. Math. Stat.</journal-id>
<journal-title>Frontiers in Applied Mathematics and Statistics</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Appl. Math. Stat.</abbrev-journal-title>
<issn pub-type="epub">2297-4687</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fams.2017.00009</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Applied Mathematics and Statistics</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Semi-Stochastic Gradient Descent Methods</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Kone&#x0010D;n&#x000FD;</surname> <given-names>Jakub</given-names></name>
<xref ref-type="author-notes" rid="fn001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/387206/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Richt&#x000E1;rik</surname> <given-names>Peter</given-names></name>
<uri xlink:href="http://loop.frontiersin.org/people/199009/overview"/>
</contrib>
</contrib-group>
<aff><institution>School of Mathematics, University of Edinburgh</institution> <country>Edinburgh, United Kingdom</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Darinka Dentcheva, Stevens Institute of Technology, United States</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Yu Du, Rutgers University, United States; Vladimir Shikhman, Technische Universit&#x000E4;t Chemnitz, Germany; Uday V. Shanbhag, Pennsylvania State University, United States</p></fn>
<fn fn-type="corresp" id="fn001"><p>&#x0002A;Correspondence: Jakub Kone&#x0010D;n&#x000FD; <email>kubo.konecny&#x00040;gmail.com</email></p></fn>
<fn fn-type="other" id="fn002"><p>This article was submitted to Optimization, a section of the journal Frontiers in Applied Mathematics and Statistics</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>23</day>
<month>05</month>
<year>2017</year>
</pub-date>
<pub-date pub-type="collection">
<year>2017</year>
</pub-date>
<volume>3</volume>
<elocation-id>9</elocation-id>
<history>
<date date-type="received">
<day>24</day>
<month>10</month>
<year>2016</year>
</date>
<date date-type="accepted">
<day>08</day>
<month>05</month>
<year>2017</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2017 Kone&#x0010D;n&#x000FD; and Richt&#x000E1;rik.</copyright-statement>
<copyright-year>2017</copyright-year>
<copyright-holder>Kone&#x0010D;n&#x000FD; and Richt&#x000E1;rik</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>In this paper we study the problem of minimizing the average of a large number of smooth convex loss functions. We propose a new method, S2GD (Semi-Stochastic Gradient Descent), which runs for one or several epochs in each of which a single full gradient and a random number of stochastic gradients is computed, following a geometric law. For strongly convex objectives, the method converges linearly. The total work needed for the method to output an epsilon-accurate solution in expectation, measured in the number of passes over data, is proportional to the condition number of the problem and inversely proportional to the number of functions forming the average. This is achieved by running the method with number of stochastic gradient evaluations per epoch proportional to conditioning of the problem. The SVRG method of Johnson and Zhang arises as a special case. To illustrate our theoretical results, S2GD only needs the workload equivalent to about 2.1 full gradient evaluations to find a 10e-6 accurate solution for a problem with 10e9 functions and a condition number of 10e3.</p>
</abstract>
<kwd-group>
<kwd>stochastic gradient</kwd>
<kwd>variance reduction</kwd>
<kwd>empirical risk minimization</kwd>
<kwd>linear convergence</kwd>
<kwd>convex optimization</kwd>
</kwd-group>
<contract-num rid="cn001">EP/G036136/1</contract-num>
<contract-num rid="cn001">EP/I017127/1</contract-num>
<contract-num rid="cn001">EP/K02325X/1</contract-num>
<contract-sponsor id="cn001">Engineering and Physical Sciences Research Council<named-content content-type="fundref-id">10.13039/501100000266</named-content></contract-sponsor>
<counts>
<fig-count count="3"/>
<table-count count="5"/>
<equation-count count="67"/>
<ref-count count="22"/>
<page-count count="14"/>
<word-count count="7933"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>Many problems in data science (e.g., machine learning, optimization, and statistics) can be cast as loss minimization problems of the form</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M1"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">min</mml:mo></mml:mrow><mml:mrow><mml:mi>x</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:munder></mml:mstyle><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where</p>
<disp-formula id="E2"><label>(2)</label><mml:math id="M2"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Here <italic>d</italic> typically denotes the number of features / coordinates, <italic>n</italic> the number of examples, and <italic>f</italic><sub><italic>i</italic></sub>(<italic>x</italic>) is the loss incurred on example <italic>i</italic>. That is, we are seeking to find a predictor <italic>x</italic> &#x02208; &#x0211D;<sup><italic>d</italic></sup> minimizing the average loss <italic>f</italic>(<italic>x</italic>). In big data applications, <italic>n</italic> is typically very large; in particular, <italic>n</italic> &#x0226B; <italic>d</italic>.</p>
<p>Note that this formulation includes more typical formulation of <italic>L</italic>2-regularized objectives&#x02014;<inline-formula><mml:math id="M3"><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:mfrac><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003BB;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:mi>x</mml:mi><mml:mo>|</mml:mo><mml:msup><mml:mrow><mml:mo>|</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:math></inline-formula> We hide the regularizer into the function <italic>f</italic><sub><italic>i</italic></sub>(<italic>x</italic>) for the sake of simplicity of resulting analysis.</p>
<sec>
<title>1.1. Motivation</title>
<p>Let us now briefly review two basic approaches to solving problem (1).</p>
<list list-type="order">
<list-item><p><italic>Gradient Descent</italic>. Given <inline-formula><mml:math id="M4"><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, the gradient descent (GD) method sets
<disp-formula id="E3"><mml:math id="M5"><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:math></disp-formula>
where <italic>h</italic> is a stepsize parameter and <inline-formula><mml:math id="M6"><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> is the gradient of <italic>f</italic> at <italic>x</italic><sub><italic>k</italic></sub>. We will refer to <italic>f</italic>&#x02032;(<italic>x</italic>) by the name <italic>full gradient</italic>. In order to compute <inline-formula><mml:math id="M7"><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, we need to compute the gradients of <italic>n</italic> functions. Since <italic>n</italic> is big, it is prohibitive to do this at every iteration.</p></list-item>
<list-item><p><italic>Stochastic Gradient Descent (SGD)</italic>. Unlike gradient descent, stochastic gradient descent [<xref ref-type="bibr" rid="B1">1</xref>, <xref ref-type="bibr" rid="B2">2</xref>] instead picks a random <italic>i</italic> (uniformly) and updates
<disp-formula id="E4"><mml:math id="M8"><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:math></disp-formula>
Note that this strategy drastically reduces the amount of work that needs to be done in each iteration (by the factor of <italic>n</italic>). Since
<disp-formula id="E5"><mml:math id="M9"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
we have an unbiased estimator of the full gradient. Hence, the gradients of the component functions <italic>f</italic><sub>1</sub>, &#x02026;, <italic>f</italic><sub><italic>n</italic></sub> will be referred to as <italic>stochastic gradients</italic>. A practical issue with SGD is that consecutive stochastic gradients may vary a lot or even point in opposite directions. This slows down the performance of SGD. On balance, however, SGD is preferable to GD in applications where low accuracy solutions are sufficient. In such cases usually only a small number of passes through the data (i.e., work equivalent to a small number of full gradient evaluations) are needed to find an acceptable <italic>x</italic>. For this reason, SGD is extremely popular in fields such as machine learning.</p></list-item>
</list>
<p>In order to improve upon GD, one needs to reduce the cost of computing a gradient. In order to improve upon SGD, one has to reduce the variance of the stochastic gradients. In this paper we propose and analyze a <italic>Semi-Stochastic Gradient Descent</italic> (S2GD) method. Our method combines GD and SGD steps and reaps the benefits of both algorithms: it inherits the stability and speed of GD and at the same time retains the work-efficiency of SGD.</p>
</sec>
<sec>
<title>1.2. Brief literature review</title>
<p>Several recent papers, e.g., Richt&#x000E1;rik and Tak&#x000E1;&#x0010D; [<xref ref-type="bibr" rid="B3">3</xref>], Roux et al. [<xref ref-type="bibr" rid="B4">4</xref>], Schmidt et al. [<xref ref-type="bibr" rid="B5">5</xref>], Shalev-Shwartz and Zhang [<xref ref-type="bibr" rid="B6">6</xref>], and Johnson and Zhang [<xref ref-type="bibr" rid="B7">7</xref>] proposed methods which achieve similar variance-reduction effect, directly or indirectly. These methods enjoy linear convergence rates when applied to minimizing smooth strongly convex loss functions.</p>
<p>The method in Richt&#x000E1;rik and Tak&#x000E1;&#x0010D; [<xref ref-type="bibr" rid="B3">3</xref>] is known as Random Coordinate Descent for Composite functions (RCDC), and can be either applied directly to Equation (1), or to a dual version of Equation (1). Unless specific conditions on the problem structure are met, application to the primal directly is not as computationally efficient as its dual version<xref ref-type="fn" rid="fn0001"><sup>1</sup></xref>. Application of a coordinate descent method to the dual formulation of Equation (1) is generally referred to as Stochastic Dual Coordinate Ascent (SDCA) [<xref ref-type="bibr" rid="B9">9</xref>]. The algorithm in Shalev-Shwartz [<xref ref-type="bibr" rid="B6">6</xref>] exhibits this duality, and the method in Tak&#x000E1;&#x0010D; et al. [<xref ref-type="bibr" rid="B10">10</xref>] extends the primal-dual framework to the parallel/mini-batch setting. Parallel and distributed stochastic coordinate descent methods were studied in Richt&#x000E1;rik and Tak&#x000E1;&#x0010D; [<xref ref-type="bibr" rid="B11">11</xref>], Fercoq and Richt&#x000E1;rik [<xref ref-type="bibr" rid="B12">12</xref>], and Richt&#x000E1;rik and Tak&#x000E1;&#x0010D; [<xref ref-type="bibr" rid="B13">13</xref>].</p>
<p>Stochastic Average Gradient (SAG) by Roux et al. [<xref ref-type="bibr" rid="B4">4</xref>], is one of the first SGD-type methods, other than coordinate descent methods, which were shown to exhibit linear convergence. The method of Johnson and Zhang [<xref ref-type="bibr" rid="B7">7</xref>], called Stochastic Variance Reduced Gradient (SVRG), arises as a special case in our setting for a suboptimal choice of a single parameter of our method. The Epoch Mixed Gradient Descent (EMGD) method, Zhang et al. [<xref ref-type="bibr" rid="B14">14</xref>], is similar in spirit to SVRG, but achieves a quadratic dependence on the condition number instead of a linear dependence, as is the case with SDCA, SAG, SVRG and with our method.</p>
<p>Earlier works of Friedlander and Schmidt [<xref ref-type="bibr" rid="B15">15</xref>], Deng and Ferris [<xref ref-type="bibr" rid="B16">16</xref>], and Bastin et al. [<xref ref-type="bibr" rid="B17">17</xref>] attempt to interpolate between GD and SGD and decrease variance by varying the sample size. These methods however do not realize the kind of improvements as the recent methods above. For partially related classical work on semi-stochastic approximation methods we refer<xref ref-type="fn" rid="fn0002"><sup>2</sup></xref> the reader to the papers of Marti and Fuchs [<xref ref-type="bibr" rid="B18">18</xref>, <xref ref-type="bibr" rid="B19">19</xref>], which focus on general stochastic optimization.</p>
</sec>
<sec>
<title>1.3. Outline</title>
<p>We start in Section 2 by describing two algorithms: S2GD, which we analyze, and S2GD&#x0002B;, which we do not analyze, but which exhibits superior performance in practice. We then move to summarizing some of the main contributions of this paper in Section 3. Section 4 is devoted to establishing expectation and high probability complexity results for S2GD in the case of a strongly convex loss. The results are generic in that the parameters of the method are set arbitrarily. Hence, in Section 5 we study the problem of choosing the parameters optimally, with the goal of minimizing the total workload (&#x00023; of processed examples) sufficient to produce a result of specified accuracy. In Section 6 we establish high probability complexity bounds for S2GD applied to a non-strongly convex loss function. Discussion of efficient implementation for sparse data is in Section 7. Finally, in Section 8 we perform very encouraging numerical experiments on real and artificial problem instances. A brief conclusion can be found in Section 9.</p>
</sec>
</sec>
<sec id="s2">
<title>2. Semi-stochastic gradient descent</title>
<p>In this section we describe two novel algorithms: S2GD and S2GD&#x0002B;. We analyze the former only. The latter, however, has superior convergence properties in our experiments.</p>
<p>These following two assumption are regarded as basic setting for smooth convex optimization, under which analysis of methods is typically presented first<xref ref-type="fn" rid="fn0003"><sup>3</sup></xref>. We assume throughout the paper that the functions <italic>f</italic><sub><italic>i</italic></sub> are convex and <italic>L</italic>-smooth.</p>
<p>Assumption 1. <italic>The functions</italic> <italic>f</italic><sub>1</sub>, &#x02026;, <italic>f</italic><sub><italic>n</italic></sub> <italic>have Lipschitz continuous gradients with constant L</italic> &#x0003E; 0 <italic>(in other words, they are L-smooth). That is, for all x, z</italic> &#x02208; &#x0211D;<sup><italic>d</italic></sup> <italic>and all i</italic> &#x0003D; 1, 2, &#x02026;, <italic>n</italic>,</p>
<disp-formula id="E6"><mml:math id="M10"><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02264;</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mrow><mml:mo>&#x02329;</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x0232A;</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x02551;</mml:mo><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:mi>x</mml:mi><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:math></disp-formula>
<p><italic>(This implies that the gradient of f is Lipschitz with constant L, and hence f satisfies the same inequality.)</italic></p>
<p>In one part of the paper (Section 4) we also make the following additional assumption:</p>
<p>Assumption 2. <italic>The average loss f is &#x003BC;-strongly convex, &#x003BC; &#x0003E;</italic> 0. <italic>That is, for all x, z</italic> &#x02208; &#x0211D;<sup><italic>d</italic></sup>,</p>
<disp-formula id="E7"><label>(3)</label><mml:math id="M11"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02265;</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mrow><mml:mo>&#x02329;</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:mi>x</mml:mi></mml:mrow><mml:mo>&#x0232A;</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x02551;</mml:mo><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:mi>x</mml:mi><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>(Note that, necessarily, &#x003BC; &#x02264; <italic>L</italic>.)</italic></p>
<sec>
<title>2.1. S2GD</title>
<p>Algorithm <xref ref-type="table" rid="T6">1</xref> (S2GD) depends on three parameters: stepsize <italic>h</italic>, constant <italic>m</italic> limiting the number of stochastic gradients computed in a single epoch, and a &#x003BD; &#x02208; [0, &#x003BC;], where &#x003BC; is the strong convexity constant of <italic>f</italic>. In practice, &#x003BD; would be a known lower bound on &#x003BC;. Note that the algorithm works also without any knowledge of the strong convexity parameter&#x02014;the case of &#x003BD; &#x0003D; 0.</p>
<table-wrap position="float" id="T6">
<label>Algorithm 1</label>
<caption><p>Semi-Stochastic Gradient Descent (S2GD)</p></caption>
<table frame="hsides" rules="groups">
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;<bold>parameters:</bold> <italic>m</italic> = max &#x00023; of stochastic steps per epoch, <italic>h</italic> = stepsize, &#x003BD; = lower bound on &#x003BC;</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;<bold>for</bold> <italic>j</italic> &#x0003D; 0, 1, 2, &#x02026;&#x02009; <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<inline-formula><mml:math id="M12"><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:mfrac><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<italic>y</italic><sub><italic>j</italic>,0</sub> &#x02190; <italic>x</italic><sub><italic>j</italic></sub></td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Let <italic>t</italic><sub><italic>j</italic></sub> &#x02190; <italic>t</italic> with probability (1 &#x02212; &#x003BD;<italic>h</italic>)<sup><italic>m</italic>&#x02212;<italic>t</italic></sup>/&#x003B2; for <italic>t</italic> &#x0003D; 1, 2, &#x02026;, <italic>m</italic></td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>for</bold> <italic>t</italic> &#x0003D; 0 to <italic>t</italic><sub><italic>j</italic></sub> &#x02212; 1 <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Pick <italic>i</italic> &#x02208; {1, 2, &#x02026;, <italic>n</italic>}, uniformly at random</td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<inline-formula><mml:math id="M13"><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end for</bold></td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<italic>x</italic><sub><italic>j</italic>&#x0002B;1</sub> &#x02190; <italic>y</italic><sub><italic>j</italic>,<sub><italic>t</italic></sub><sub><italic>j</italic></sub></sub></td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end for</bold></td></tr>
</table>
</table-wrap>
<p>The method has an outer loop, indexed by epoch counter <italic>j</italic>, and an inner loop, indexed by <italic>t</italic>. In each epoch <italic>j</italic>, the method first computes <italic>g</italic><sub><italic>j</italic></sub>&#x02014;the <italic>full</italic> gradient of <italic>f</italic> at <italic>x</italic><sub><italic>j</italic></sub>. Subsequently, the method produces a random number <italic>t</italic><sub><italic>j</italic></sub> &#x02208; [1, <italic>m</italic>] of steps, following a geometric law, where</p>
<disp-formula id="E8"><label>(4)</label><mml:math id="M14"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>&#x003B2;</mml:mi><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mtext>&#x000A0;</mml:mtext><mml:mo>-</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>with only <italic>two stochastic gradients</italic> computed in each step<xref ref-type="fn" rid="fn0004"><sup>4</sup></xref>. For each <italic>t</italic> &#x0003D; 0, &#x02026;, <italic>t</italic><sub><italic>j</italic></sub> &#x02212; 1, the stochastic gradient <inline-formula><mml:math id="M15"><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> is subtracted from <italic>g</italic><sub><italic>j</italic></sub>, and <inline-formula><mml:math id="M16"><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> is added to <italic>g</italic><sub><italic>j</italic></sub>, which ensures that, one has</p>
<disp-formula id="E9"><mml:math id="M17"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>where the expectation is with respect to the random variable <italic>i</italic>.</p>
<p>Hence, the algorithm is stochastic gradient descent&#x02014;albeit executed in a nonstandard way (compared to the traditional implementation described in the introduction).</p>
<p>Note that for all <italic>j</italic>, the expected number of iterations of the inner loop, <bold>E</bold>(<italic>t</italic><sub><italic>j</italic></sub>), is equal to</p>
<disp-formula id="E10"><label>(5)</label><mml:math id="M18"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>&#x003BE;</mml:mi><mml:mo>=</mml:mo><mml:mi>&#x003BE;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mi>t</mml:mi><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mtext>&#x000A0;</mml:mtext><mml:mo>-</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Also note that <inline-formula><mml:math id="M19"><mml:mi>&#x003BE;</mml:mi><mml:mo>&#x02208;</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, with the lower bound attained for &#x003BD; &#x0003D; 0, and the upper bound for &#x003BD;<italic>h</italic> &#x02192; 1.</p>
</sec>
<sec>
<title>2.2. S2GD&#x0002B;</title>
<p>We also implement Algorithm <xref ref-type="table" rid="T7">2</xref>, which we call S2GD&#x0002B;. In our experiments, the performance of this method is superior to all methods we tested, including S2GD. However, we do not analyze the complexity of this method and leave this as an open problem.</p>
<table-wrap position="float" id="T7">
<label>Algorithm 2</label>
<caption><p>S2GD&#x0002B;</p></caption>
<table frame="hsides" rules="groups">
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;<bold>parameters:</bold> &#x003B1; &#x02265; 1 (e.g., &#x003B1; &#x0003D; 1)</td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;1. Run SGD for a single pass over the data (i.e., <italic>n</italic> iterations); output <italic>x</italic></td></tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;2. Starting from <italic>x</italic><sub>0</sub> &#x0003D; <italic>x</italic>, run a version of S2GD in which <italic>t</italic><sub><italic>j</italic></sub> &#x0003D; &#x003B1;<italic>n</italic> for all <italic>j</italic></td></tr>
</table>
</table-wrap>
<p>In brief, S2GD&#x0002B; starts by running SGD for 1 epoch (1 pass over the data) and then switches to a variant of S2GD in which the number of the inner iterations, <italic>t</italic><sub><italic>j</italic></sub>, is not random, but fixed to be <italic>n</italic> or a small multiple of <italic>n</italic>.</p>
<p>The motivation for this method is the following. It is common knowledge that SGD is able to progress much more in one pass over the data than GD (where this would correspond to a single gradient step). However, the very first step of S2GD is the computation of the full gradient of <italic>f</italic>. Hence, by starting with a single pass over data using SGD and <italic>then</italic> switching to S2GD, we obtain a superior method in practice<xref ref-type="fn" rid="fn0005"><sup>5</sup></xref>.</p>
</sec>
</sec>
<sec id="s3">
<title>3. Summary of results</title>
<p>In this section we summarize some of the main results and contributions of this work.</p>
<list list-type="order">
<list-item><p><bold>Complexity for strongly convex</bold> <italic>f</italic>. If <italic>f</italic> is strongly convex, S2GD needs
<disp-formula id="E11"><label>(6)</label><mml:math id="M20"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
work (measured as the total number of evaluations of the stochastic gradient, accounting for the full gradient evaluations as well) to output an &#x003B5;-approximate solution (in expectation or in high probability), where &#x003BA; &#x0003D; <italic>L</italic>/&#x003BC; is the condition number. This is achieved by running S2GD with stepsize <italic>h</italic> &#x0003D; <italic>O</italic>(1/<italic>L</italic>), <italic>j</italic> &#x0003D; <italic>O</italic>(log(1/&#x003B5;)) epochs (this is also equal to the number of full gradient evaluations) and <italic>m</italic> &#x0003D; <italic>O</italic>(&#x003BA;) (this is also roughly equal to the number of stochastic gradient evaluations in a single epoch). The complexity results are stated in detail in Sections 4 and 5 (see Theorems 4, 5 and 6; see also Equations 26 and 27).</p></list-item>
<list-item><p><bold>Comparison with existing results</bold>. This complexity result (Equation 6) matches the best-known results obtained for strongly convex losses in recent work such as Roux et al. [<xref ref-type="bibr" rid="B4">4</xref>], Johnson and Zhang [<xref ref-type="bibr" rid="B7">7</xref>], and Zhang and Mahdavi [<xref ref-type="bibr" rid="B14">14</xref>]. Our treatment is most closely related to Johnson and Zhang [<xref ref-type="bibr" rid="B7">7</xref>], and contains their method (SVRG) as a special case. In Table <xref ref-type="table" rid="T1">1</xref> we summarize our results in the strongly convex case with other existing results for different algorithms.</p>
<p>We should note that the rate of convergence of Nesterov&#x00027;s algorithm [<xref ref-type="bibr" rid="B21">21</xref>] is a deterministic result. EMGD and S2GD results hold with high probability (see Theorem 5 for precise statement). Complexity results for stochastic coordinate descent methods are also typically analyzed in the high probability regime [<xref ref-type="bibr" rid="B3">3</xref>]. The remaining results hold in expectation. Notion of &#x003BA; is slightly different for SDCA, which requires explicit knowledge of the strong convexity parameter &#x003BC; to run the algorithm. In contrast, other methods do not algorithmically depend on this, and thus their convergence rate can adapt to any additional strong convexity locally.</p></list-item>
<list-item><p><bold>Complexity for convex</bold> <italic>f</italic>. If <italic>f</italic> is <italic>not</italic> strongly convex, then we propose that S2GD be applied to a perturbed version of the problem, with strong convexity constant &#x003BC; &#x0003D; <italic>O</italic>(<italic>L</italic>/&#x003B5;). An &#x003B5;-accurate solution of the original problem is recovered with arbitrarily high probability (see Theorem 8 in Section 6). The total work in this case is
<disp-formula id="E12"><mml:math id="M21"><mml:mrow><mml:mi mathvariant='script'>W</mml:mi><mml:mo>=</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mi>L</mml:mi><mml:mo>/</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mi>log</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
that is, &#x000D5;(1/&#x003F5;), which is better than the standard rate of SGD.</p></list-item>
<list-item><p><bold>Optimal parameters</bold>. We derive formulas for optimal parameters of the method which (approximately) minimize the total workload, measured in the number of stochastic gradients computed (counting a single full gradient evaluation as <italic>n</italic> evaluations of the stochastic gradient). In particular, we show that the method should be run for <italic>O</italic>(log(1/&#x003B5;)) epochs, with stepsize <italic>h</italic> &#x0003D; <italic>O</italic>(1/<italic>L</italic>) and <italic>m</italic> &#x0003D; <italic>O</italic>(&#x003BA;). No such results were derived for SVRG in Johnson and Zhang [<xref ref-type="bibr" rid="B7">7</xref>].</p></list-item>
<list-item><p><bold>One epoch</bold>. Consider the case when S2GD is run for 1 epoch only, effectively limiting the number of full gradient evaluations to 1, while choosing a target accuracy &#x003F5;. We show that S2GD with &#x003BD; &#x0003D; &#x003BC; needs
<disp-formula id="E13"><mml:math id="M22"><mml:mrow><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003BA;</mml:mi><mml:mo>/</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>
work only (see Table <xref ref-type="table" rid="T2">2</xref>). This compares favorably with the optimal complexity in the &#x003BD; &#x0003D; 0 case (which reduces to SVRG), where the work needed is
<disp-formula id="E14"><mml:math id="M23"><mml:mrow><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003BA;</mml:mi><mml:mo>/</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
For two epochs one could just say that we need <inline-formula><mml:math id="M24"><mml:msqrt><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:msqrt></mml:math></inline-formula> decrease in each epoch, thus having complexity of <inline-formula><mml:math id="M25"><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003BA;</mml:mi><mml:mo>/</mml:mo><mml:msqrt><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:msqrt><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>. This is already better than general rate of SGD (<italic>O</italic>(1/&#x003B5;)).</p></list-item>
<list-item><p><bold>Special cases</bold>. GD and SVRG arise as special cases of S2GD, for <italic>m</italic> &#x0003D; 1 and &#x003BD; &#x0003D; 0, respectively<xref ref-type="fn" rid="fn0006"><sup>6</sup></xref>.</p></list-item>
<list-item><p><bold>Low memory requirements</bold>. Note that SDCA and SAG, unlike SVRG and S2GD, need to store all gradients <inline-formula><mml:math id="M26"><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> (or dual variables) throughout the iterative process. While this may not be a problem for a modest sized optimization task, this requirement makes such methods less suitable for problems with very large <italic>n</italic>.</p></list-item>
<list-item><p><bold>S2GD&#x0002B;</bold>. We propose a &#x0201C;boosted&#x0201D; version of S2GD, called S2GD&#x0002B;, which we do not analyze. In our experiments, however, it performs vastly superior to all other methods we tested, including GD, SGD, SAG and S2GD. S2GD alone is better than both GD and SGD if a highly accurate solution is required. The performance of S2GD and SAG is roughly comparable, even though in our experiments S2GD turned to have an edge.</p></list-item>
</list>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p><bold>Comparison of performance of selected methods suitable for solving Equation (1)</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Algorithm</bold></th>
<th valign="top" align="center"><bold>Complexity/work</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Nesterov&#x00027;s algorithm</td>
<td valign="top" align="center"><inline-formula><mml:math id="M27"><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msqrt><mml:mrow><mml:mi>&#x003BA;</mml:mi></mml:mrow></mml:msqrt><mml:mi>n</mml:mi><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td valign="top" align="left">EMGD</td>
<td valign="top" align="center"><italic>O</italic>((<italic>n</italic> &#x0002B; &#x003BA;<sup>2</sup>) log(1/&#x003B5;))</td>
</tr>
<tr>
<td valign="top" align="left">SAG</td>
<td valign="top" align="center"><italic>O</italic>(max{<italic>n</italic>, &#x003BA;} log(1/&#x003B5;))</td>
</tr>
<tr>
<td valign="top" align="left">SDCA</td>
<td valign="top" align="center"><italic>O</italic>((<italic>n</italic> &#x0002B; &#x003BA;) log(1/&#x003B5;))</td>
</tr>
<tr>
<td valign="top" align="left">SVRG</td>
<td valign="top" align="center"><italic>O</italic>((<italic>n</italic> &#x0002B; &#x003BA;) log(1/&#x003B5;))</td>
</tr>
<tr style="border-top: thin solid #000000;">
<td valign="top" align="left">S2GD</td>
<td valign="top" align="center"><italic>O</italic>((<italic>n</italic> &#x0002B; &#x003BA;) log(1/&#x003B5;))</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<p><italic>The complexity/work is measured in the number of stochastic gradient evaluations needed to find an &#x003B5;-solution</italic>.</p>
</table-wrap-foot>
</table-wrap>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p><bold>Summary of complexity results and special cases</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Parameters</bold></th>
<th valign="top" align="left"><bold>Method</bold></th>
<th valign="top" align="center"><bold>Complexity</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">&#x003BD; &#x0003D; &#x003BC;, <inline-formula><mml:math id="M28"><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td/>
<td/>
</tr>
<tr>
<td valign="top" align="left">&#x00026; <italic>m</italic> &#x0003D; <italic>O</italic>(&#x003BA;)</td>
<td valign="top" align="left">Optimal S2GD</td>
<td valign="top" align="center"><inline-formula><mml:math id="M29"><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr style="border-top: thin solid #000000;">
<td valign="top" align="left"><italic>m</italic> &#x0003D; 1</td>
<td valign="top" align="left">GD</td>
<td valign="top" align="center">&#x02014;</td>
</tr>
<tr>
<td valign="top" align="left">&#x003BD; &#x0003D; 0</td>
<td valign="top" align="left">SVRG [<xref ref-type="bibr" rid="B7">7</xref>]</td>
<td valign="top" align="center"><inline-formula><mml:math id="M30"><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td valign="top" align="left">&#x003BD; &#x0003D; 0, <italic>j</italic> &#x0003D; 1, <inline-formula><mml:math id="M31"><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="left">Optimal SVRG with 1 epoch</td>
<td valign="top" align="center"><inline-formula><mml:math id="M32"><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td valign="top" align="left">&#x003BD; &#x0003D; &#x003BC;, <italic>j</italic> &#x0003D; 1, <inline-formula><mml:math id="M33"><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="left">Optimal S2GD with 1 epoch</td>
<td valign="top" align="center"><inline-formula><mml:math id="M34"><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<p><italic>Condition number: &#x003BA; &#x0003D; L/&#x003BC; if f is &#x003BC;-strongly convex and &#x003BA; &#x0003D; 2L/&#x003B5; if f is not strongly convex and &#x003F5; &#x02264; L</italic>.</p>
</table-wrap-foot>
</table-wrap>
</sec>
<sec id="s4">
<title>4. Complexity analysis: strongly convex loss</title>
<p>For the purpose of the analysis, let</p>
<disp-formula id="E15"><label>(7)</label><mml:math id="M35"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mi>&#x003C3;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>be the &#x003C3;-algebra generated by the relevant history of S2GD. We first isolate an auxiliary result.</p>
<p><bold>Lemma 3</bold>. <italic>Consider the S2GD algorithm. For any fixed epoch number j, the following identity holds:</italic></p>
<disp-formula id="E16"><label>(8)</label><mml:math id="M36"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>-</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>Proof</italic>. By the tower law of conditional expectations and the definition of <italic>x</italic><sub><italic>j</italic>&#x0002B;1</sub> in the algorithm, we obtain</p>
<disp-formula id="E17"><mml:math id="M37"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mo stretchy='false'>(</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mo stretchy='false'>(</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mo>&#x0007C;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mi mathvariant="-tex-caligraphic">F</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>=</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow><mml:mi>m</mml:mi></mml:munderover><mml:mrow><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mfrac></mml:mrow></mml:mstyle><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mi>&#x003B2;</mml:mi></mml:mfrac><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>=</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow><mml:mi>m</mml:mi></mml:munderover><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x025A1;</p>
<p>We now state and prove the main result of this section.</p>
<p><bold>Theorem 4</bold>. <italic>Let Assumptions 1 and 2 be satisfied. Consider the S2GD algorithm applied to solving problem (1). Choose</italic> 0 &#x02264; &#x003BD; &#x02264; &#x003BC;, <inline-formula><mml:math id="M38"><mml:mn>0</mml:mn><mml:mo>&#x0003C;</mml:mo><mml:mi>h</mml:mi><mml:mo>&#x0003C;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:mfrac></mml:math></inline-formula>, <italic>and let m be sufficiently large so that</italic></p>
<disp-formula id="E18"><label>(9)</label><mml:math id="M39"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>c</mml:mi><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi>&#x003B2;</mml:mi><mml:mi>&#x003BC;</mml:mi><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0003C;</mml:mo><mml:mn>1</mml:mn><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>Then we have the following convergence in expectation:</italic></p>
<disp-formula id="E19"><label>(10)</label><mml:math id="M40"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02264;</mml:mo><mml:msup><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Before we proceed to proving the theorem, note that in the special case with &#x003BD; &#x0003D; 0, we recover the result of Johnson and Zhang [<xref ref-type="bibr" rid="B7">7</xref>] (with a minor improvement in the second term of <italic>c</italic> where <italic>L</italic> is replaced by <italic>L</italic> &#x02212; &#x003BC;), namely</p>
<disp-formula id="E20"><label>(11)</label><mml:math id="M41"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>If we set &#x003BD; &#x0003D; &#x003BC;, then <italic>c</italic> can be written in the form (see Equation 4)</p>
<disp-formula id="E21"><label>(12)</label><mml:math id="M42"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Clearly, the latter <italic>c</italic> is a major improvement on the former one. We shall elaborate on this further later.</p>
<p><italic>Proof</italic>. It is well-known [<xref ref-type="bibr" rid="B21">21</xref>, Theorem 2.1.5] that since the functions <italic>f</italic><sub><italic>i</italic></sub> are <italic>L</italic>-smooth, they necessarily satisfy the following inequality:</p>
<disp-formula id="E22"><mml:math id="M43"><mml:mo>&#x02551;</mml:mo><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02264;</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mrow><mml:mo>&#x02329;</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x0232A;</mml:mo></mml:mrow></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:math></disp-formula>
<p>By summing these inequalities for <italic>i</italic> &#x0003D; 1, &#x02026;, <italic>n</italic>, and using <inline-formula><mml:math id="M44"><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:math></inline-formula> we get</p>
<disp-formula id="E23"><label>(13)</label><mml:math id="M45"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mtext>&#x02009;&#x02009;&#x02009;&#x02009;</mml:mtext><mml:mfrac><mml:mn>1</mml:mn><mml:mi>n</mml:mi></mml:mfrac><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>=</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:munderover><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:msup><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup></mml:msub><mml:mo stretchy='false'>(</mml:mo></mml:mrow></mml:mstyle><mml:mi>x</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:msup><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mo>&#x02016;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>&#x02264;</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mo>&#x02329;</mml:mo><mml:msup><mml:mi>f</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>&#x0232A;</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Let <inline-formula><mml:math id="M46"><mml:msub><mml:mrow><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mstyle class="text"><mml:mtext>def</mml:mtext></mml:mstyle></mml:mrow></mml:mover><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> be the direction of update at <italic>j</italic><sup><italic>th</italic></sup> iteration in the outer loop and <italic>t</italic><sup><italic>th</italic></sup> iteration in the inner loop. Taking expectation with respect to <italic>i</italic>, conditioned on the &#x003C3;-algebra <inline-formula><mml:math id="M47"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> Equation (7), we obtain<xref ref-type="fn" rid="fn0007"><sup>7</sup></xref></p>
<disp-formula id="E24"><label>(14)</label><mml:math id="M48"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mi>G</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>+</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>g</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02264;</mml:mo><mml:mn>2</mml:mn><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mn>2</mml:mn><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mi>f</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mn>2</mml:mn><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:mn>2</mml:mn><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mn>4</mml:mn><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mrow><mml:mo>&#x02329;</mml:mo><mml:mrow><mml:msup><mml:mi>f</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>&#x0232A;</mml:mo></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mn>2</mml:mn><mml:mo>&#x02551;</mml:mo><mml:msup><mml:mi>f</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mover><mml:mo>&#x02264;</mml:mo><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>13</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mover><mml:mn>4</mml:mn><mml:mi>L</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>+</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mn>2</mml:mn><mml:mo>&#x02551;</mml:mo><mml:msup><mml:mi>f</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>&#x02212;</mml:mo><mml:mn>4</mml:mn><mml:mo>&#x02329;</mml:mo><mml:msup><mml:mi>f</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:msup><mml:mi>f</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x0232A;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mover><mml:mo>&#x02264;</mml:mo><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>3</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mover><mml:mn>4</mml:mn><mml:mi>L</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mn>4</mml:mn><mml:mo stretchy='false'>(</mml:mo><mml:mi>L</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003BC;</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Above we have used the bound ||<italic>x</italic>&#x02032; &#x0002B; <italic>x</italic>&#x02033;||<sup>2</sup> &#x02264; 2||<italic>x</italic>&#x02032;||<sup>2</sup> &#x0002B; 2||<italic>x</italic>&#x02033;||<sup>2</sup> and the fact that</p>
<disp-formula id="E25"><label>(15)</label><mml:math id="M49"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>We now study the expected distance to the optimal solution (a standard approach in the analysis of gradient methods):</p>
<disp-formula id="E26"><label>(16)</label><mml:math id="M50"><mml:mtable><mml:mtr><mml:mtd><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mo stretchy='false'>(</mml:mo><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msub><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mo>&#x0007C;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mi mathvariant="-tex-caligraphic">F</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msub><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>&#x02212;</mml:mo><mml:mn>2</mml:mn><mml:mi>h</mml:mi><mml:mo>&#x02329;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>G</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mtext>&#x02009;</mml:mtext><mml:mo>&#x0007C;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mi mathvariant="-tex-caligraphic">F</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msub><mml:mo>&#x0232A;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mo stretchy='false'>(</mml:mo><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mi>G</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mo>&#x0007C;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mi mathvariant="-tex-caligraphic">F</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mover><mml:mo>&#x02264;</mml:mo><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mn>14</mml:mn></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mn>15</mml:mn></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mover><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msub><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>&#x02212;</mml:mo><mml:mn>2</mml:mn><mml:mi>h</mml:mi><mml:mo>&#x02329;</mml:mo><mml:msup><mml:mi>f</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>&#x0232A;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:mn>4</mml:mn><mml:mi>L</mml:mi><mml:msup><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mn>4</mml:mn><mml:mo stretchy='false'>(</mml:mo><mml:mi>L</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003BC;</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mover><mml:mo>&#x02264;</mml:mo><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mn>3</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mover><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>&#x02212;</mml:mo><mml:mn>2</mml:mn><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:mn>4</mml:mn><mml:mi>L</mml:mi><mml:msup><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mn>4</mml:mn><mml:mo stretchy='false'>(</mml:mo><mml:mi>L</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003BC;</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msub><mml:msup><mml:mo>&#x02551;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>&#x02212;</mml:mo><mml:mn>2</mml:mn><mml:mi>h</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x02212;</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>[</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>]</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:mn>4</mml:mn><mml:mo stretchy='false'>(</mml:mo><mml:mi>L</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003BC;</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo stretchy='false'>[</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>]</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>By rearranging the terms in Equation (16) and taking expectation over the &#x003C3;-algebra <inline-formula><mml:math id="M51"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, we get the following inequality:</p>
<disp-formula id="E27"><label>(17)</label><mml:math id="M52"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x0002B;</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mn>4</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Finally, we can analyze what happens after one iteration of the outer loop of S2GD, i.e., between two computations of the full gradient. By summing up inequalities Equation (17) for <italic>t</italic> &#x0003D; 1, &#x02026;, <italic>m</italic>, with inequality <italic>t</italic> multiplied by (1 &#x02212; &#x003BD;<italic>h</italic>)<sup><italic>m</italic>&#x02212;<italic>t</italic></sup>, we get the left-hand side</p>
<disp-formula id="E28"><mml:math id="M53"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mi>L</mml:mi><mml:mi>H</mml:mi><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>-</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x000A0;</mml:mo><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>8</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mover><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn><mml:mi>&#x003B2;</mml:mi><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>and the right-hand side</p>
<disp-formula id="E29"><mml:math id="M54"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mi>R</mml:mi><mml:mi>H</mml:mi><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x0002B;</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mn>4</mml:mn><mml:mi>&#x003B2;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mover class="overset"><mml:mrow><mml:mo>&#x02264;</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>3</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mover><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:mfrac><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x0002B;</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mn>4</mml:mn><mml:mi>&#x003B2;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>=</mml:mo><mml:mn>2</mml:mn><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn><mml:mi>&#x003B2;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Since <italic>LHS</italic> &#x02264; <italic>RHS</italic>, we finally conclude with</p>
<disp-formula id="E30"><mml:math id="M55"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02264;</mml:mo><mml:mi>c</mml:mi><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>&#x000A0;</mml:mo><mml:mo>-</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mfrac><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mi>&#x003B2;</mml:mi><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>&#x02264;</mml:mo><mml:mi>c</mml:mi><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x025A1;</p>
<p>Since we have established linear convergence of expected values, a high probability result can be obtained in a straightforward way using Markov inequality.</p>
<p><bold>Theorem 5</bold>. <italic>Consider the setting of Theorem 4. Then, for any 0 &#x0003C; &#x003C1; &#x0003C;1, 0 &#x0003C; &#x003B5; &#x0003C;1 and</italic></p>
<disp-formula id="E31"><label>(18)</label><mml:math id="M56"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>j</mml:mi><mml:mo>&#x02265;</mml:mo><mml:mfrac><mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi><mml:mi>&#x003C1;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>we have</italic></p>
<disp-formula id="E32"><label>(19)</label><mml:math id="M57"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>P</mml:mtext></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>&#x02264;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x02265;</mml:mo><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003C1;</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>Proof</italic>. This follows directly from Markov inequality and Theorem 4:</p>
<disp-formula id="E33"><mml:math id="M58"><mml:mrow><mml:mtext mathvariant='bold'>P</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x0003E;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>)</mml:mo><mml:mover><mml:mo>&#x02264;</mml:mo><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mn>10</mml:mn></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mover><mml:mfrac><mml:mrow><mml:mtext mathvariant='bold'>E</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mfrac><mml:mo>&#x02264;</mml:mo><mml:mfrac><mml:mrow><mml:msup><mml:mi>c</mml:mi><mml:mi>j</mml:mi></mml:msup></mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mfrac><mml:mover><mml:mo>&#x02264;</mml:mo><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mn>18</mml:mn></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mover><mml:mi>&#x003C1;</mml:mi></mml:mrow></mml:math></disp-formula>
<p>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x025A1;</p>
<p>This result will be also useful when treating the non-strongly convex case.</p>
</sec>
<sec id="s5">
<title>5. Optimal choice of parameters</title>
<p>The goal of this section is to provide insight into the choice of parameters of S2GD; that is, the number of epochs (equivalently, full gradient evaluations) <italic>j</italic>, the maximal number of steps in each epoch <italic>m</italic>, and the stepsize <italic>h</italic>. The remaining parameters (<italic>L</italic>, &#x003BC;, <italic>n</italic>) are inherent in the problem and we will hence treat them in this section as given.</p>
<p>In particular, ideally we wish to find parameters <italic>j</italic>, <italic>m</italic> and <italic>h</italic> solving the following optimization problem:</p>
<disp-formula id="E34"><label>(20)</label><mml:math id="M59"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">min</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:munder></mml:mstyle><mml:mtext>&#x02003;</mml:mtext><mml:mover accent="true"><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mo class="qopname">&#x0007E;</mml:mo></mml:mover><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mi>j</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn><mml:mi>&#x003BE;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>subject to</p>
<disp-formula id="E35"><label>(21)</label><mml:math id="M60"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02264;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Note that <inline-formula><mml:math id="M61"><mml:mover accent="true"><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> is the <italic>expected work</italic>, measured by the number number of stochastic gradient evaluations, performed by S2GD when running for <italic>j</italic> epochs. Indeed, the evaluation of <italic>g</italic><sub><italic>j</italic></sub> is equivalent to <italic>n</italic> stochastic gradient evaluations, and each epoch further computes on average 2&#x003BE;(<italic>m, h</italic>) stochastic gradients (see Equation 5). Since <inline-formula><mml:math id="M62"><mml:mfrac><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x02264;</mml:mo><mml:mi>&#x003BE;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0003C;</mml:mo><mml:mi>m</mml:mi></mml:math></inline-formula>, we can simplify and solve the problem with &#x003BE; set to the conservative upper estimate &#x003BE; &#x0003D; <italic>m</italic>.</p>
<p>In view of Equation (10), accuracy constraint Equation (21) is satisfied if <italic>c</italic> (which depends on <italic>h</italic> and <italic>m</italic>) and <italic>j</italic> satisfy</p>
<disp-formula id="E36"><label>(22)</label><mml:math id="M63"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msup><mml:mo>&#x02264;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>We therefore instead consider the parameter fine-tuning problem:</p>
<disp-formula id="E37"><label>(23)</label><mml:math id="M64"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">min</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:munder></mml:mstyle><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mi>j</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn><mml:mi>m</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mtext>&#x02003;&#x000A0;subject&#x000A0;to&#x02003;&#x000A0;</mml:mtext><mml:mi>c</mml:mi><mml:mo>&#x02264;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>In the following we (approximately) solve this problem in two steps. First, we fix <italic>j</italic> and find (nearly) optimal <italic>h</italic> &#x0003D; <italic>h</italic>(<italic>j</italic>) and <italic>m</italic> &#x0003D; <italic>m</italic>(<italic>j</italic>). The problem reduces to minimizing <italic>m</italic> subject to <italic>c</italic> &#x02264; &#x003B5;<sup>1/<italic>j</italic></sup> by fine-tuning <italic>h</italic>. While in the &#x003BD; &#x0003D; 0 case it is possible to obtain closed form solution, this is not possible for &#x003BD; &#x0003E; &#x003BC;.</p>
<p>However, it is still possible to obtain a good formula for <italic>h</italic>(<italic>j</italic>) leading to expression for good <italic>m</italic>(<italic>j</italic>) which depends on &#x003B5; in the correct way. We then plug the formula for <italic>m</italic>(<italic>j</italic>) obtained this way back into Equation (23), and study the quantity <inline-formula><mml:math id="M65"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>j</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn><mml:mi>m</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> as a function of <italic>j</italic>, over which we optimize optimize at the end.</p>
<p>Theorem 6 (<bold>Choice of parameters</bold>). <italic>Fix the number of epochs j</italic> &#x02265; 1, <italic>error tolerance</italic> 0 &#x0003C; &#x003B5; &#x0003C; 1, <italic>and let</italic> &#x00394; &#x0003D; &#x003B5;<sup>1/<italic>j</italic></sup>. <italic>If we run S2GD with the stepsize</italic></p>
<disp-formula id="E38"><label>(24)</label><mml:math id="M66"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>h</mml:mi><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mfrac><mml:mrow><mml:mn>4</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow></mml:mfrac><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>and</italic></p>
<disp-formula id="E39"><label>(25)</label><mml:math id="M67"><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x02265;</mml:mo><mml:mi>m</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mover><mml:mo>=</mml:mo><mml:mrow><mml:mi>d</mml:mi><mml:mi>e</mml:mi><mml:mi>f</mml:mi></mml:mrow></mml:mover><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable columnalign='left'><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>4</mml:mn><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003BA;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mn>2</mml:mn><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mi>log</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mstyle scriptlevel='+1'><mml:mfrac><mml:mn>2</mml:mn><mml:mi>&#x00394;</mml:mi></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mi>&#x003BA;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003BA;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>&#x02003;</mml:mtext><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x02003;</mml:mtext><mml:mi>&#x003BD;</mml:mi><mml:mo>=</mml:mo><mml:mi>&#x003BC;</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mfrac><mml:mrow><mml:mn>8</mml:mn><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003BA;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msup><mml:mi>&#x00394;</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mn>8</mml:mn><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:msup><mml:mi>&#x003BA;</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mi>&#x003BA;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>&#x02003;</mml:mtext><mml:mi>i</mml:mi><mml:mi>f</mml:mi><mml:mtext>&#x02003;</mml:mtext><mml:mi>&#x003BD;</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>
<p><italic>then</italic> <bold>E</bold>(<italic>f</italic>(<italic>x</italic><sub><italic>j</italic></sub>) &#x02212; <italic>f</italic>(<italic>x</italic><sub>&#x0002A;</sub>)) &#x02264; &#x003B5;(<italic>f</italic>(<italic>x</italic><sub>0</sub>) &#x02212; <italic>f</italic>(<italic>x</italic><sub>&#x0002A;</sub>)).</p>
<p><italic>In particular, if we choose j</italic><sup>&#x0002A;</sup> &#x0003D; &#x02308; log (1/&#x003B5;)&#x02309;, <italic>then</italic> <inline-formula><mml:math id="M68"><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x02264;</mml:mo><mml:mo class="qopname">exp</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, <italic>and hence m</italic>(<italic>j</italic><sup>&#x0002A;</sup>) &#x0003D; <italic>O</italic>(&#x003BA;), <italic>leading to the workload</italic></p>
<disp-formula id="E40"><label>(26)</label><mml:math id="M69"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>&#x02308;</mml:mo><mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x02309;</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>Proof</italic>. We only need to show that <italic>c</italic> &#x02264; &#x00394;, where <italic>c</italic> is given by Equation (12) for &#x003BD; &#x0003D; &#x003BC; and by Equation (11) for &#x003BD; &#x0003D; 0. We denote the two summands in expressions for <italic>c</italic> as <italic>c</italic><sub>1</sub> and <italic>c</italic><sub>2</sub>. We choose the <italic>h</italic> and <italic>m</italic> so that both <italic>c</italic><sub>1</sub> and <italic>c</italic><sub>2</sub> are smaller than &#x00394;/2, resulting in <italic>c</italic><sub>1</sub>&#x0002B;<italic>c</italic><sub>2</sub> &#x0003D; <italic>c</italic> &#x02264; &#x00394;.</p>
<p>The stepsize <italic>h</italic> is chosen so that</p>
<disp-formula id="E41"><mml:math id="M70"><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:math></disp-formula>
<p>and hence it only remains to verify that <inline-formula><mml:math id="M71"><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02264;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:math></inline-formula>. In the &#x003BD; &#x0003D; 0 case, <italic>m</italic>(<italic>j</italic>) is chosen so that <inline-formula><mml:math id="M72"><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:math></inline-formula>. In the &#x003BD; &#x0003D; &#x003BC; case, <inline-formula><mml:math id="M73"><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:math></inline-formula> holds for <inline-formula><mml:math id="M74"><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mi>&#x003BA;</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003BA;</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>/</mml:mo><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>H</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M75"><mml:mi>H</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>4</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003BA;</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. We only need to observe that <italic>c</italic> decreases as <italic>m</italic> increases, and apply the inequality <inline-formula><mml:math id="M76"><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>H</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02265;</mml:mo><mml:mi>H</mml:mi></mml:math></inline-formula>.</p>
<p>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x025A1;</p>
<p>We now comment on the above result:
<list list-type="order">
<list-item><p><bold>Workload</bold>. Notice that for the choice of parameters <italic>j</italic><sup>&#x0002A;</sup>, <italic>h</italic> &#x0003D; <italic>h</italic>(<italic>j</italic><sup>&#x0002A;</sup>), <italic>m</italic> &#x0003D; <italic>m</italic>(<italic>j</italic><sup>&#x0002A;</sup>) and any &#x003BD; &#x02208; [0, &#x003BC;], the method needs log(1/&#x003B5;) computations of the full gradient (note this is independent of &#x003BA;), and <italic>O</italic>(&#x003BA; log (1/&#x003B5;)) computations of the stochastic gradient. This result, and special cases thereof, are summarized in Table <xref ref-type="table" rid="T2">2</xref>.</p></list-item>
<list-item><p><bold>Simpler formulas for</bold> <italic>m</italic>. If &#x003BA; &#x02265; 2, we can instead of Equation (25) use the following (slightly worse but) simpler expressions for <italic>m</italic>(<italic>j</italic>), obtained from Equation (25) by using the bounds 1 &#x02264; &#x003BA; &#x02212; 1, &#x003BA; &#x02212; 1 &#x02264; &#x003BA; and &#x00394; &#x0003C;1 in appropriate places (e.g., <inline-formula><mml:math id="M77"><mml:mfrac><mml:mrow><mml:mn>8</mml:mn><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0003C;</mml:mo><mml:mfrac><mml:mrow><mml:mn>8</mml:mn><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:math></inline-formula>, <inline-formula><mml:math id="M78"><mml:mfrac><mml:mrow><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003BA;</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x02264;</mml:mo><mml:mn>2</mml:mn><mml:mo>&#x0003C;</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:math></inline-formula>):
<disp-formula id="E42"><label>(27)</label><mml:math id="M79"><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x02265;</mml:mo><mml:mover accent='true'><mml:mi>m</mml:mi><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mover><mml:mo>=</mml:mo><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable columnalign='left'><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mfrac><mml:mrow><mml:mn>6</mml:mn><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mfrac><mml:mi>log</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mstyle scriptlevel='+1'><mml:mfrac><mml:mn>5</mml:mn><mml:mi>&#x00394;</mml:mi></mml:mfrac></mml:mstyle></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>&#x02003;if&#x02003;</mml:mtext><mml:mi>&#x003BD;</mml:mi><mml:mo>=</mml:mo><mml:mi>&#x003BC;</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mfrac><mml:mrow><mml:mn>20</mml:mn><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mi>&#x00394;</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>&#x2003;if&#x2003;</mml:mtext><mml:mi>&#x003BD;</mml:mi><mml:mo>=</mml:mo><mml:mn>0.</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p></list-item>
<list-item><p><bold>Optimal stepsize in the</bold> &#x003BD; &#x0003D; 0 <bold>case</bold>. Theorem 6 does not claim to have solved problem (23); the problem in general does not have a closed form solution. However, in the &#x003BD; &#x0003D; 0 case a closed-form formula can easily be obtained:
<disp-formula id="E43"><label>(28)</label><mml:math id="M80"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mfrac><mml:mrow><mml:mn>4</mml:mn></mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mfrac><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mn>4</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mtext>&#x02003;&#x000A0;&#x02003;&#x000A0;</mml:mtext><mml:mi>m</mml:mi><mml:mo>&#x02265;</mml:mo><mml:mi>m</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mfrac><mml:mrow><mml:mn>8</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003BA;</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>8</mml:mn><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
Indeed, for fixed <italic>j</italic>, Equation (23) is equivalent to finding <italic>h</italic> that minimizes <italic>m</italic> subject to the constraint <italic>c</italic> &#x02264; &#x00394;. In view of Equation (11), this is equivalent to searching for <italic>h</italic> &#x0003E; 0 maximizing the quadratic <italic>h</italic> &#x02192; <italic>h</italic>(&#x00394; &#x02212; 2(&#x00394;<italic>L</italic>&#x0002B;<italic>L</italic> &#x02212; &#x003BC;)<italic>h</italic>), which leads to Equation (28).
Note that both the stepsize <italic>h</italic>(<italic>j</italic>) and the resulting <italic>m</italic>(<italic>j</italic>) are slightly larger in Theorem 6 than in Equation (28). This is because in the theorem the stepsize was for simplicity chosen to satisfy <inline-formula><mml:math id="M81"><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:math></inline-formula>, and hence is (slightly) suboptimal. Nevertheless, the dependence of <italic>m</italic>(<italic>j</italic>) on &#x00394; is of the correct (optimal) order in both cases. That is, <inline-formula><mml:math id="M82"><mml:mi>m</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow></mml:mfrac><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> for &#x003BD; &#x0003D; &#x003BC; and <inline-formula><mml:math id="M83"><mml:mi>m</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mi>&#x003BA;</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> for &#x003BD; &#x0003D; 0.</p></list-item>
<list-item><p><bold>Stepsize choice</bold>. In cases when one does not have a good estimate of the strong convexity constant &#x003BC; to determine the stepsize via Equation (24), one may choose suboptimal stepsize that does not depend on &#x003BC; and derive similar results to those above. For instance, one may choose <inline-formula><mml:math id="M84"><mml:mi>h</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x00394;</mml:mi></mml:mrow><mml:mrow><mml:mn>6</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:mfrac></mml:math></inline-formula>.</p></list-item>
</list></p>
<p>In Table <xref ref-type="table" rid="T3">3</xref> we provide comparison of work needed for small values of <italic>j</italic>, and different values of &#x003BA; and &#x003B5;. Note, for instance, that for any problem with <italic>n</italic> &#x0003D; 10<sup>9</sup> and &#x003BA; &#x0003D; 10<sup>3</sup>, S2GD outputs a highly accurate solution (&#x003B5; &#x0003D; 10<sup> &#x02212; 6</sup>) in the amount of work equivalent to 2.12 evaluations of the full gradient of <italic>f</italic>!</p>
<table-wrap position="float" id="T3">
<label>Table 3</label>
<caption><p><bold>Comparison of work sufficient to solve a problem with <italic>n</italic> &#x0003D; 10<sup>9</sup>, and various values of &#x003BA; and &#x003B5;</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th/>
<th valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>&#x003B5; &#x0003D; 10<sup><bold>&#x02212;3</bold></sup>, &#x003BA; &#x0003D; 10<sup><bold>3</bold></sup></bold></th>
<th/>
<th valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>&#x003B5; &#x0003D; 10<sup><bold>&#x02212;6</bold></sup>, &#x003BA; &#x0003D; 10<sup><bold>3</bold></sup></bold></th>
<th/>
<th valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>&#x003B5; &#x0003D; 10<sup><bold>&#x02212;9</bold></sup>, &#x003BA; &#x0003D; 10<sup><bold>3</bold></sup></bold></th>
</tr>
<tr>
<th valign="top" align="left"><bold><italic>j</italic></bold></th>
<th valign="top" align="center"><bold><inline-formula><mml:math id="M85"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></bold></th>
<th valign="top" align="center"><bold><inline-formula><mml:math id="M86"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></bold></th>
<th valign="top" align="center"><bold><italic>j</italic></bold></th>
<th valign="top" align="center"><bold><inline-formula><mml:math id="M87"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></bold></th>
<th valign="top" align="center"><bold><inline-formula><mml:math id="M88"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></bold></th>
<th valign="top" align="center"><bold><italic>j</italic></bold></th>
<th valign="top" align="center"><bold><inline-formula><mml:math id="M89"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></bold></th>
<th valign="top" align="center"><bold><inline-formula><mml:math id="M90"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1</td>
<td valign="top" align="center"><bold>1.06n</bold></td>
<td valign="top" align="center">17.0<italic>n</italic></td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">116<italic>n</italic></td>
<td valign="top" align="center">10<sup>7</sup><italic>n</italic></td>
<td valign="top" align="center">2</td>
<td valign="top" align="center">7.58<italic>n</italic></td>
<td valign="top" align="center">10<sup>4</sup><italic>n</italic></td>
</tr>
<tr>
<td valign="top" align="left">2</td>
<td valign="top" align="center">2.00<italic>n</italic></td>
<td valign="top" align="center"><bold>2.03n</bold></td>
<td valign="top" align="center">2</td>
<td valign="top" align="center"><bold>2.12n</bold></td>
<td valign="top" align="center">34.0<italic>n</italic></td>
<td valign="top" align="center">3</td>
<td valign="top" align="center"><bold>3.18n</bold></td>
<td valign="top" align="center">51.0<italic>n</italic></td>
</tr>
<tr>
<td valign="top" align="left">3</td>
<td valign="top" align="center">3.00<italic>n</italic></td>
<td valign="top" align="center">3.00<italic>n</italic></td>
<td valign="top" align="center">3</td>
<td valign="top" align="center">3.01<italic>n</italic></td>
<td valign="top" align="center"><bold>3.48n</bold></td>
<td valign="top" align="center">4</td>
<td valign="top" align="center">4.03<italic>n</italic></td>
<td valign="top" align="center">6.03<italic>n</italic></td>
</tr>
<tr>
<td valign="top" align="left">4</td>
<td valign="top" align="center">4.00<italic>n</italic></td>
<td valign="top" align="center">4.00<italic>n</italic></td>
<td valign="top" align="center">4</td>
<td valign="top" align="center">4.00<italic>n</italic></td>
<td valign="top" align="center">4.06<italic>n</italic></td>
<td valign="top" align="center">5</td>
<td valign="top" align="center">5.01<italic>n</italic></td>
<td valign="top" align="center"><bold>5.32n</bold></td>
</tr>
<tr>
<td valign="top" align="left">5</td>
<td valign="top" align="center">5.00<italic>n</italic></td>
<td valign="top" align="center">5.00<italic>n</italic></td>
<td valign="top" align="center">5</td>
<td valign="top" align="center">5.00<italic>n</italic></td>
<td valign="top" align="center">5.02<italic>n</italic></td>
<td valign="top" align="center">6</td>
<td valign="top" align="center">6.00<italic>n</italic></td>
<td valign="top" align="center">6.09<italic>n</italic></td>
</tr>
<tr style="border-top: thin solid #000000;">
<td/>
<td valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>&#x003B5; &#x0003D; 10<sup>&#x02212;3</sup>, &#x003BA; &#x0003D; 10<sup>6</sup></bold></td>
<td/>
<td valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>&#x003B5; &#x0003D; 10<sup>&#x02212;6</sup>, &#x003BA; &#x0003D; 10<sup>6</sup></bold></td>
<td/>
<td valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>&#x003B5; &#x0003D; 10<sup>&#x02212;9</sup>, &#x003BA; &#x0003D; 10<sup>6</sup></bold></td>
</tr>
<tr>
<td valign="top" align="left"><italic>j</italic></td>
<td valign="top" align="center"><inline-formula><mml:math id="M91"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><inline-formula><mml:math id="M92"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><italic>j</italic></td>
<td valign="top" align="center"><inline-formula><mml:math id="M93"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><inline-formula><mml:math id="M94"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><italic>j</italic></td>
<td valign="top" align="center"><inline-formula><mml:math id="M95"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><inline-formula><mml:math id="M96"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td valign="top" align="left">2</td>
<td valign="top" align="center">4.14<italic>n</italic></td>
<td valign="top" align="center">35.0<italic>n</italic></td>
<td valign="top" align="center">4</td>
<td valign="top" align="center">8.29<italic>n</italic></td>
<td valign="top" align="center">70.0<italic>n</italic></td>
<td valign="top" align="center">5</td>
<td valign="top" align="center">17.3<italic>n</italic></td>
<td valign="top" align="center">328<italic>n</italic></td>
</tr>
<tr>
<td valign="top" align="left">3</td>
<td valign="top" align="center"><bold>3.77n</bold></td>
<td valign="top" align="center">8.29<italic>n</italic></td>
<td valign="top" align="center">5</td>
<td valign="top" align="center"><bold>7.30n</bold></td>
<td valign="top" align="center">26.3<italic>n</italic></td>
<td valign="top" align="center">8</td>
<td valign="top" align="center"><bold>10.9n</bold></td>
<td valign="top" align="center">32.5<italic>n</italic></td>
</tr>
<tr>
<td valign="top" align="left">4</td>
<td valign="top" align="center">4.50<italic>n</italic></td>
<td valign="top" align="center"><bold>6.39n</bold></td>
<td valign="top" align="center">6</td>
<td valign="top" align="center">7.55<italic>n</italic></td>
<td valign="top" align="center">16.5<italic>n</italic></td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">11.9<italic>n</italic></td>
<td valign="top" align="center">21.4<italic>n</italic></td>
</tr>
<tr>
<td valign="top" align="left">5</td>
<td valign="top" align="center">5.41<italic>n</italic></td>
<td valign="top" align="center">6.60<italic>n</italic></td>
<td valign="top" align="center">8</td>
<td valign="top" align="center">9.01<italic>n</italic></td>
<td valign="top" align="center"><bold>12.7n</bold></td>
<td valign="top" align="center">13</td>
<td valign="top" align="center">14.3<italic>n</italic></td>
<td valign="top" align="center"><bold>19.1n</bold></td>
</tr>
<tr>
<td valign="top" align="left">6</td>
<td valign="top" align="center">6.37<italic>n</italic></td>
<td valign="top" align="center">7.28<italic>n</italic></td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">10.8<italic>n</italic></td>
<td valign="top" align="center">13.2<italic>n</italic></td>
<td valign="top" align="center">20</td>
<td valign="top" align="center">21.0<italic>n</italic></td>
<td valign="top" align="center">23.5<italic>n</italic></td>
</tr>
<tr style="border-top: thin solid #000000;">
<td/>
<td valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>&#x003B5; &#x0003D; 10<sup>&#x02212;3</sup>, &#x003BA; &#x0003D; 10<sup>9</sup></bold></td>
<td/>
<td valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>&#x003B5; &#x0003D; 10<sup>&#x02212;6</sup>, &#x003BA; &#x0003D; 10<sup>9</sup></bold></td>
<td/>
<td valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>&#x003B5; &#x0003D; 10<sup>&#x02212;9</sup>, &#x003BA; &#x0003D; 10<sup>9</sup></bold></td>
</tr>
<tr>
<td valign="top" align="left"><italic>j</italic></td>
<td valign="top" align="center"><inline-formula><mml:math id="M97"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><inline-formula><mml:math id="M98"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><italic>j</italic></td>
<td valign="top" align="center"><inline-formula><mml:math id="M99"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><inline-formula><mml:math id="M100"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><italic>j</italic></td>
<td valign="top" align="center"><inline-formula><mml:math id="M101"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
<td valign="top" align="center"><inline-formula><mml:math id="M102"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td valign="top" align="left">6</td>
<td valign="top" align="center">378<italic>n</italic></td>
<td valign="top" align="center">1, 293<italic>n</italic></td>
<td valign="top" align="center">13</td>
<td valign="top" align="center">737<italic>n</italic></td>
<td valign="top" align="center">2, 409<italic>n</italic></td>
<td valign="top" align="center">15</td>
<td valign="top" align="center">1, 251<italic>n</italic></td>
<td valign="top" align="center">4, 834<italic>n</italic></td>
</tr>
<tr>
<td valign="top" align="left">8</td>
<td valign="top" align="center"><bold>358n</bold></td>
<td valign="top" align="center">1, 063<italic>n</italic></td>
<td valign="top" align="center">16</td>
<td valign="top" align="center"><bold>717n</bold></td>
<td valign="top" align="center">2, 126<italic>n</italic></td>
<td valign="top" align="center">24</td>
<td valign="top" align="center"><bold>1,076n</bold></td>
<td valign="top" align="center">3, 189<italic>n</italic></td>
</tr>
<tr>
<td valign="top" align="left">11</td>
<td valign="top" align="center">376<italic>n</italic></td>
<td valign="top" align="center"><bold>1,002n</bold></td>
<td valign="top" align="center">19</td>
<td valign="top" align="center">727<italic>n</italic></td>
<td valign="top" align="center">2, 025<italic>n</italic></td>
<td valign="top" align="center">30</td>
<td valign="top" align="center">1, 102<italic>n</italic></td>
<td valign="top" align="center">3, 018<italic>n</italic></td>
</tr>
<tr>
<td valign="top" align="left">15</td>
<td valign="top" align="center">426<italic>n</italic></td>
<td valign="top" align="center">1, 058<italic>n</italic></td>
<td valign="top" align="center">22</td>
<td valign="top" align="center">752<italic>n</italic></td>
<td valign="top" align="center">2, 005<italic>n</italic></td>
<td valign="top" align="center">32</td>
<td valign="top" align="center">1, 119<italic>n</italic></td>
<td valign="top" align="center"><bold>3,008n</bold></td>
</tr>
<tr>
<td valign="top" align="left">20</td>
<td valign="top" align="center">501<italic>n</italic></td>
<td valign="top" align="center">1, 190<italic>n</italic></td>
<td valign="top" align="center">30</td>
<td valign="top" align="center">852<italic>n</italic></td>
<td valign="top" align="center">2, 116<italic>n</italic></td>
<td valign="top" align="center">40</td>
<td valign="top" align="center">1, 210<italic>n</italic></td>
<td valign="top" align="center">3, 078<italic>n</italic></td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<p><italic>The work was computed using formula (23), with m(j) as in Equation (27). The notation <inline-formula><mml:math id="M103"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003BD;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> indicates what parameter &#x003BD; was used, and optimal values are highlighted in bold</italic>.</p>
</table-wrap-foot>
</table-wrap>
</sec>
<sec id="s6">
<title>6. Complexity analysis: convex loss</title>
<p>If <italic>f</italic> is convex but not strongly convex, we define <inline-formula><mml:math id="M104"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mstyle class="text"><mml:mtext>def</mml:mtext></mml:mstyle></mml:mrow></mml:mover><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x003BC;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x02016;</mml:mo><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, for small enough &#x003BC; &#x0003E; 0 (we shall see below how the choice of &#x003BC; affects the results), and consider the perturbed problem</p>
<disp-formula id="E44"><label>(29)</label><mml:math id="M105"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">min</mml:mo></mml:mrow><mml:mrow><mml:mi>x</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:munder></mml:mstyle><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo class="qopname">^</mml:mo></mml:mover><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where</p>
<disp-formula id="E45"><label>(30)</label><mml:math id="M106"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mtext>def</mml:mtext></mml:mrow></mml:mover><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x02551;</mml:mo><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Note that <inline-formula><mml:math id="M107"><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:math></inline-formula> is &#x003BC;-strongly convex and (<italic>L</italic> &#x0002B; &#x003BC;)-smooth. In particular, the theory developed in the previous section applies. We propose that S2GD be instead applied to the perturbed problem, and show that an approximate solution of Equation (29) is also an approximate solution of Equation (1) (we will assume that this problem has a minimizer).</p>
<p>Let <inline-formula><mml:math id="M108"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>&#x0002A;</mml:mo></mml:mrow></mml:msub></mml:math></inline-formula> be the (necessarily unique) solution of the perturbed problem (29). The following result describes an important connection between the original problem and the perturbed problem.</p>
<p><bold>Lemma 7</bold>. <italic>If</italic> <inline-formula><mml:math id="M109"><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo>&#x0211D;</mml:mo></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> <italic>satisfies</italic> <inline-formula><mml:math id="M110"><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02264;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>&#x0002A;</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mo>&#x003B4;</mml:mo></mml:math></inline-formula>, <italic>where</italic> &#x003B4; &#x0003E; 0, <italic>then</italic></p>
<disp-formula id="E46"><mml:math id="M111"><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02264;</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B4;</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p><italic>Proof</italic>. The statement is almost identical to Lemma 9 in Richt&#x000E1;rik and Tak&#x000E1;&#x0010D; [<xref ref-type="bibr" rid="B3">3</xref>]; its proof follows the same steps with only minor adjustments.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x025A1;</p>
<p>We are now ready to establish a complexity result for non-strongly convex losses.</p>
<p><bold>Theorem 8</bold>. <italic>Let Assumption 1 be satisfied. Choose</italic> &#x003BC; &#x0003E; 0, 0 &#x02264; &#x003BD; &#x02264; &#x003BC;, <italic>stepsize</italic> <inline-formula><mml:math id="M112"><mml:mn>0</mml:mn><mml:mo>&#x0003C;</mml:mo><mml:mi>h</mml:mi><mml:mo>&#x0003C;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mo>&#x003BC;</mml:mo></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac></mml:math></inline-formula>, <italic>and let</italic> <italic>m</italic> <italic>be sufficiently large so that</italic></p>
<disp-formula id="E47"><label>(31)</label><mml:math id="M113"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mover accent="true"><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>e</mml:mi><mml:mi>f</mml:mi></mml:mrow></mml:mover><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003BD;</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi>&#x003B2;</mml:mi><mml:mi>&#x003BC;</mml:mi><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mi>L</mml:mi><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>L</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>h</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0003C;</mml:mo><mml:mn>1</mml:mn><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>Pick</italic> <inline-formula><mml:math id="M114"><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo>&#x0211D;</mml:mo></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> <italic>and let</italic> <inline-formula><mml:math id="M115"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> <italic>be the sequence of iterates produced by S2GD as applied to problem (29). Then, for any</italic> 0 &#x0003C; &#x003C1; &#x0003C; 1, 0 &#x0003C; &#x003B5; &#x0003C; 1 <italic>and</italic></p>
<disp-formula id="E48"><label>(32)</label><mml:math id="M116"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>j</mml:mi><mml:mo>&#x02265;</mml:mo><mml:mfrac><mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003B5;</mml:mi><mml:mi>&#x003C1;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mo class="qopname">^</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>we have</italic></p>
<disp-formula id="E49"><label>(33)</label><mml:math id="M117"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>P</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02264;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x02551;</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02551;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02265;</mml:mo><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003C1;</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>In particular, if we choose</italic> &#x003BC; &#x0003D; &#x003F5; &#x0003C; <italic>L and parameters j</italic><sup>&#x0002A;</sup>, <italic>h</italic>(<italic>j</italic><sup>&#x0002A;</sup>), <italic>m</italic>(<italic>j</italic><sup>&#x0002A;</sup>) <italic>as in Theorem 6, the amount of work performed by S2GD to guarantee Equation (33) is</italic></p>
<disp-formula id="E50"><mml:math id="M118"><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">W</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p><italic>which consists of</italic> <inline-formula><mml:math id="M119"><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>&#x003B5;</mml:mo></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> <italic>full gradient evaluations and</italic> <inline-formula><mml:math id="M120"><mml:mi>O</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x003F5;</mml:mo></mml:mrow></mml:mfrac><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo>&#x003B5;</mml:mo></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> <italic>stochastic gradient evaluations</italic>.</p>
<p><italic>Proof</italic>. We first note that</p>
<disp-formula id="E51"><label>(34)</label><mml:math id="M121"><mml:mrow><mml:mover accent='true'><mml:mi>f</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mover accent='true'><mml:mi>f</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mover><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>30</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mover><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mover accent='true'><mml:mi>f</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>where the first inequality follows from <inline-formula><mml:math id="M122"><mml:mi>f</mml:mi><mml:mo>&#x02264;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:math></inline-formula>, and the second one from optimality of <italic>x</italic><sub>&#x0002A;</sub>. Hence, by first applying Lemma 7 with <inline-formula><mml:math id="M123"><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and &#x003B4; &#x0003D; &#x003B5;(<italic>f</italic>(<italic>x</italic><sub>0</sub>)&#x02212;<italic>f</italic>(<italic>x</italic><sub>&#x0002A;</sub>)), and then Theorem 5, with <italic>c</italic> &#x02190; &#x00109;, <inline-formula><mml:math id="M124"><mml:mi>f</mml:mi><mml:mo>&#x02190;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:math></inline-formula>, <inline-formula><mml:math id="M125"><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula><mml:math id="M126"><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x0002A;</mml:mo></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo>&#x0002A;</mml:mo></mml:mrow></mml:msub></mml:math></inline-formula>, we obtain</p>
<disp-formula id="E52"><mml:math id="M127"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mtext mathvariant="bold">P</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mi>&#x003B4;</mml:mi><mml:mo>+</mml:mo><mml:mfrac><mml:mi>&#x003BC;</mml:mi><mml:mn>2</mml:mn></mml:mfrac><mml:mo>&#x0007C;</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>&#x0007C;</mml:mo><mml:msup><mml:mo>&#x0007C;</mml:mo><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mover><mml:mo>&#x02265;</mml:mo><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mtext>Lemma</mml:mtext><mml:mn>7</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mover><mml:mtext mathvariant="bold">P</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mover accent='true'><mml:mi>f</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mover accent='true'><mml:mi>f</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mi>&#x003B4;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mover><mml:mo>&#x02265;</mml:mo><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>34</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mover><mml:mtext mathvariant="bold">P</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mover accent='true'><mml:mi>f</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mover accent='true'><mml:mi>f</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mover accent='true'><mml:mi>f</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mover accent='true'><mml:mi>f</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>*</mml:mo></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mfrac><mml:mo>&#x02264;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mover><mml:mo>&#x02265;</mml:mo><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>19</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mover><mml:mn>1</mml:mn><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003C1;</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The second statement follows directly from the second part of Theorem 6 and the fact that the condition number of the perturbed problem is <inline-formula><mml:math id="M128"><mml:mo>&#x003BA;</mml:mo><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>L</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mo>&#x003F5;</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x003F5;</mml:mo></mml:mrow></mml:mfrac><mml:mo>&#x02264;</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x003F5;</mml:mo></mml:mrow></mml:mfrac></mml:math></inline-formula>.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x025A1;</p>
</sec>
<sec id="s7">
<title>7. Implementation for sparse data</title>
<p>In our sparse implementation of Algorithm <xref ref-type="table" rid="T6">1</xref>, described in this section and formally stated as Algorithm <xref ref-type="table" rid="T8">3</xref>, we make the following structural assumption:</p>
<p>Assumption 9. <italic>The loss functions arise as the composition of a univariate smooth loss function</italic> &#x003D5;<italic><sub>i</sub>, and an inner product with a data point/example</italic> <inline-formula><mml:math id="M129"><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo>&#x0211D;</mml:mo></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>:</p>
<disp-formula id="E53"><mml:math id="M130"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x003D5;</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mi>i</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mi>x</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mtext>&#x02003;</mml:mtext><mml:mo>&#x000A0;</mml:mo><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p><italic>In this case</italic>, <inline-formula><mml:math id="M131"><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02032;</mml:mo></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mo>&#x003D5;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02032;</mml:mo></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>.</p>
<p>This is the structure in many cases of interest, including linear or logistic regression.</p>
<table-wrap position="float" id="T8">
<label>Algorithm 3</label>
<caption><p>Semi-Stochastic Gradient Descent (S2GD) for sparse data; &#x0201C;lazy&#x0201D; updates</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top">&#x000A0;parameters: <italic>m</italic> = max &#x00023; of stochastic steps per epoch, <italic>h</italic> =</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;stepsize, &#x003BD; = lower bound on &#x003BC;</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;<bold>for</bold> <italic>j</italic> &#x0003D; 0, 1, 2, &#x02026;&#x02009; <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<inline-formula><mml:math id="M132"><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:mfrac><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02032;</mml:mo></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<italic>y</italic><sub><italic>j</italic>,0</sub>&#x02190;<italic>x</italic><sub><italic>j</italic></sub></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x003C7;<sup>(<italic>s</italic>)</sup> &#x02190; 0 for <italic>s</italic> &#x0003D; 1, 2, &#x02026;, <italic>d</italic> &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x022B3; Store when a coordinate was updated last time</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Let <italic>t</italic><sub><italic>j</italic></sub> &#x02190; <italic>t</italic> with probability (1 &#x02212; &#x003BD;<italic>h</italic>)<sup><italic>m</italic>&#x02212;<italic>t</italic></sup>/&#x003B2; for <italic>t</italic> &#x0003D; 1, 2, &#x02026;, <italic>m</italic></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>for</bold> <italic>t</italic> &#x0003D; 0 to <italic>t</italic><sub><italic>j</italic></sub> &#x02212; 1 <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Pick <italic>i</italic> &#x02208; {1, 2, &#x02026;, <italic>n</italic>}, uniformly at random</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>for</bold> <italic>s</italic> &#x02208; nnz(<italic>a</italic><sub><italic>i</italic></sub>) <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<inline-formula><mml:math id="M133"><mml:msubsup><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x02190;</mml:mo><mml:msubsup><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mo>&#x003C7;</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>h</mml:mi><mml:msubsup><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula> &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x022B3; Update what will be needed</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x003C7;<sup>(<italic>s</italic>)</sup> &#x0003D; <italic>t</italic></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end for</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<inline-formula><mml:math id="M134"><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mo>&#x003D5;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02032;</mml:mo></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mo>&#x003D5;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02032;</mml:mo></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x022B3; A sparse update</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end for</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>for</bold> <italic>s</italic> &#x0003D; 1 to <italic>d</italic> <bold>do</bold> &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x022B3; Finish all the &#x0201C;lazy&#x0201D; updates</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<inline-formula><mml:math id="M135"><mml:msubsup><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x02190;</mml:mo><mml:msubsup><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mo>&#x003C7;</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>h</mml:mi><mml:msubsup><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end for</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<italic>x</italic><sub><italic>j</italic>&#x0002B;1</sub> &#x02190; <italic>y</italic><sub><italic>j</italic>,<sub><italic>t</italic></sub><sub><italic>j</italic></sub></sub></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;<bold>end for</bold></td>
</tr>
</tbody>
</table>
</table-wrap>
<p>A natural question one might want to ask is whether S2GD can be implemented efficiently for sparse data.</p>
<p>Let us first take a brief detour and look at SGD, which performs iterations of the type:</p>
<disp-formula id="E54"><label>(35)</label><mml:math id="M136"><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mi>h</mml:mi><mml:msubsup><mml:mi>&#x003D5;</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mi>i</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mi>x</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>
<p>Let &#x003C9;<sub><italic>i</italic></sub> be the number of nonzero features in example <italic>a</italic><sub><italic>i</italic></sub>, i.e., <inline-formula><mml:math id="M137"><mml:msub><mml:mrow><mml:mo>&#x003C9;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mover class="overset"><mml:mrow><mml:mo>=</mml:mo></mml:mrow><mml:mrow><mml:mstyle class="text"><mml:mtext>def</mml:mtext></mml:mstyle></mml:mrow></mml:mover><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02264;</mml:mo><mml:mi>d</mml:mi></mml:math></inline-formula>. Assuming that the computation of the derivative of the univariate function &#x003D5;<sub><italic>i</italic></sub> takes <italic>O</italic>(1) amount of work, the computation of &#x02207;<italic>f</italic><sub><italic>i</italic></sub>(<italic>x</italic>) will take <italic>O</italic>(&#x003C9;<sub><italic>i</italic></sub>) work. Hence, the update step Equation (35) will cost <italic>O</italic>(&#x003C9;<sub><italic>i</italic></sub>), too, which means the method can naturally speed up its iterations on sparse data.</p>
<p>The situation is not as simple with S2GD, which for loss functions of the type described in Assumption 9 performs inner iterations as follows:</p>
<disp-formula id="E55"><label>(36)</label><mml:math id="M138"><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mi>h</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>g</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>&#x003D5;</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mi>i</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>&#x003D5;</mml:mi><mml:mi>i</mml:mi><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mi>i</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>
<p>Indeed, note that <inline-formula><mml:math id="M139"><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02032;</mml:mo></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> is in general be fully dense even for sparse data {<italic>a</italic><sub><italic>i</italic></sub>}. As a consequence, the update in Equation (36) might be as costly as <italic>d</italic> operations, irrespective of the sparsity level &#x003C9;<sub><italic>i</italic></sub> of the active example <italic>a</italic><sub><italic>i</italic></sub>. However, we can use the following &#x0201C;lazy/delayed&#x0201D; update trick. We split the update to the <italic>y</italic> vector into two parts: immediate, and delayed. Assume index <italic>i</italic> &#x0003D; <italic>i</italic><sub><italic>t</italic></sub> was chosen at inner iteration <italic>t</italic>. We immediately perform the update</p>
<disp-formula id="E56"><mml:math id="M140"><mml:mrow><mml:msub><mml:mi>&#x01EF9;</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mi>h</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mi>&#x003D5;</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>&#x003D5;</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>which costs <italic>O</italic>(<italic>a</italic><sub><italic>i</italic><sub><italic>t</italic></sub></sub>). Note that we have not computed the <italic>y</italic><sub><italic>j,t</italic>&#x0002B;1</sub>. However, we &#x0201C;know&#x0201D; that</p>
<disp-formula id="E57"><mml:math id="M141"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mi>&#x01EF9;</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mi>h</mml:mi><mml:msub><mml:mi>g</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>without having to actually compute the difference. At the next iteration, we are supposed to perform update Equation (36) for <italic>i</italic> &#x0003D; <italic>i</italic><sub><italic>t</italic>&#x0002B;1</sub>:</p>
<disp-formula id="E58"><label>(37)</label><mml:math id="M142"><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mi>h</mml:mi><mml:msub><mml:mi>g</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mi>h</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mi>&#x003D5;</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>&#x003D5;</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>
<p>However, notice that we can&#x00027;t compute</p>
<disp-formula id="E59"><label>(38)</label><mml:math id="M143"><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi>&#x003D5;</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x02032;</mml:mo></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>
<p>as we never computed <italic>y</italic><sub><italic>j,t</italic>&#x0002B;1</sub>. However, here lies the trick: as <italic>a</italic><sub><italic>i</italic><sub><italic>t</italic>&#x0002B;1</sub></sub> is sparse, we only need to know those coordinates <italic>s</italic> of <italic>y</italic><sub><italic>j,t</italic>&#x0002B;1</sub> for which <inline-formula><mml:math id="M144"><mml:msubsup><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula> is nonzero. So, just before we compute the (sparse part of) of the update Equation (37), we perform the update</p>
<disp-formula id="E60"><mml:math id="M145"><mml:mrow><mml:msubsup><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>s</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>&#x02190;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msubsup><mml:mi>&#x01EF9;</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>s</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>&#x02212;</mml:mo><mml:mi>h</mml:mi><mml:msubsup><mml:mi>g</mml:mi><mml:mi>j</mml:mi><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>s</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></disp-formula>
<p>for coordinates <italic>s</italic> for which <inline-formula><mml:math id="M146"><mml:msubsup><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula> is nonzero. This way we know that the inner product appearing in Equation (38) is computed correctly (despite the fact that <italic>y</italic><sub><italic>j,t</italic>&#x0002B;1</sub> potentially is not!). In turn, this means that we can compute the sparse part of the update in Equation (37).</p>
<p>We now continue as before, again only computing &#x01EF9;<sub><italic>j,t</italic>&#x0002B;3</sub>. However, this time we have to be more careful as it is no longer true that</p>
<disp-formula id="E61"><mml:math id="M147"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mi>&#x01EF9;</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mi>h</mml:mi><mml:msub><mml:mi>g</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p>We need to remember, for each coordinate <italic>s</italic>, the last iteration counter <italic>t</italic> for which <inline-formula><mml:math id="M148"><mml:msubsup><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x02260;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>. This way we will know how many times did we &#x0201C;forget&#x0201D; to apply the dense update <inline-formula><mml:math id="M149"><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:msubsup><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula>. We do it in a just-in-time fashion, just before it is needed.</p>
<p>Algorithm <xref ref-type="table" rid="T8">3</xref> (sparse S2GD) performs these lazy updates as described above. It produces exactly the same result as Algorithm <xref ref-type="table" rid="T6">1</xref> (S2GD), but is much more efficient for sparse data as iteration picking example <italic>i</italic> only costs <italic>O</italic>(&#x003C9;<sub><italic>i</italic></sub>). This is done with a memory overhead of only <italic>O</italic>(<italic>d</italic>) (as represented by vector &#x003C7; &#x02208; &#x0211D;<sup><italic>d</italic></sup>).</p>
</sec>
<sec id="s8">
<title>8. Numerical experiments</title>
<p>In this section we conduct computational experiments to illustrate some aspects of the performance of our algorithm. In Section 8.1 we consider the least squares problem with synthetic data to compare the practical performance and the theoretical bound on convergence in expectations. We demonstrate that for both SVRG and S2GD, the practical rate is substantially better than the theoretical one. In Section 8.2 we compare the S2GD algorithm on several real datasets with other algorithms suitable for this task. We also provide efficient implementation of the algorithm, as described in Section 7, for the case of logistic regression in the MLOSS repository<xref ref-type="fn" rid="fn0008"><sup>8</sup></xref>.</p>
<sec>
<title>8.1. Comparison with theory</title>
<p>Figure <xref ref-type="fig" rid="F1">1</xref> presents a comparison of the theoretical rate and practical performance on a larger problem with artificial data, with a condition number we can control (and choose it to be poor). In particular, we consider the L2-regularized least squares with</p>
<disp-formula id="E62"><mml:math id="M150"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi>a</mml:mi><mml:mi>i</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mi>x</mml:mi><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mfrac><mml:mi>&#x003BB;</mml:mi><mml:mn>2</mml:mn></mml:mfrac><mml:mo>&#x02016;</mml:mo><mml:mi>x</mml:mi><mml:msup><mml:mo>&#x02016;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>for some <inline-formula><mml:math id="M151"><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo>&#x0211D;</mml:mo></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, <italic>b</italic><sub><italic>i</italic></sub> &#x02208; &#x0211D; and &#x003BB; &#x0003E; 0 is the regularization parameter.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p><bold>Least squares with <italic><bold>n</bold></italic> &#x0003D; 10<sup><bold>5</bold></sup>, &#x003BA; &#x0003D; 10<sup><bold>4</bold></sup></bold>. Comparison of theoretical result and practical performance for cases &#x003BD; &#x0003D; &#x003BC; (full red line) and &#x003BD; &#x0003D; 0 (dashed blue line).</p></caption>
<graphic xlink:href="fams-03-00009-g0001.tif"/>
</fig>
<p>We consider an instance with <italic>n</italic> &#x0003D; 100, 000, <italic>d</italic> &#x0003D; 1, 000 and &#x003BA; &#x0003D; 10, 000. We run the algorithm with both parameters &#x003BD; &#x0003D; &#x003BB; (our best estimate of &#x003BC;) and &#x003BD; &#x0003D; 0. Recall that the latter choice leads to the SVRG method of [<xref ref-type="bibr" rid="B7">7</xref>]. We chose parameters <italic>m</italic> and <italic>h</italic> as a (numerical) solution of the work-minimization problem (20), obtaining <italic>m</italic> &#x0003D; 261, 063 and <italic>h</italic> &#x0003D; 1/11.4<italic>L</italic> for &#x003BD; &#x0003D; &#x003BB; and <italic>m</italic> &#x0003D; 426, 660 and <italic>h</italic> &#x0003D; 1/12.7<italic>L</italic> for &#x003BD; &#x0003D; 0. The practical performance is obtained after a single run of the S2GD algorithm.</p>
<p>The figure demonstrates linear convergence of S2GD in practice, with the convergence rate being significantly better than the already strong theoretical result. Recall that the bound is on the expected function values. We can observe a rather strong convergence to machine precision in work equivalent to evaluating the full gradient only 40 times. Needless to say, neither SGD nor GD have such speed. Our method is also an improvement over [<xref ref-type="bibr" rid="B7">7</xref>], both in theory and practice.</p>
</sec>
<sec>
<title>8.2. Comparison with other methods</title>
<p>The S2GD algorithm can be applied to several classes of problems. We perform experiments on an important and in many applications used L2-regularized logistic regression for binary classification on several datasets. The functions <italic>f</italic><sub><italic>i</italic></sub> in this case are:</p>
<disp-formula id="E63"><mml:math id="M152"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mi>log</mml:mi><mml:mtext>&#x02009;</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi>exp</mml:mi><mml:mtext>&#x02009;</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msubsup><mml:mi>a</mml:mi><mml:mi>i</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mi>x</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mfrac><mml:mi>&#x003BB;</mml:mi><mml:mn>2</mml:mn></mml:mfrac><mml:mo>&#x0007C;</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x0007C;</mml:mo><mml:msup><mml:mo>&#x0007C;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>where <italic>l</italic><sub><italic>i</italic></sub> is the label of <italic>i</italic><sup>th</sup> training exapmle <italic>a</italic><sub><italic>i</italic></sub>. In our experiments we set the regularization parameter &#x003BB; &#x0003D; <italic>O</italic>(1/<italic>n</italic>) so that the condition number &#x003BA; &#x0003D; <italic>O</italic>(<italic>n</italic>), which is about the most ill-conditioned problem used in practice. We added a (regularized) bias term to all datasets.</p>
<p>All the datasets we used, listed in Table <xref ref-type="table" rid="T4">4</xref>, are freely available<xref ref-type="fn" rid="fn0009"><sup>9</sup></xref> benchmark binary classification datasets.</p>
<table-wrap position="float" id="T4">
<label>Table 4</label>
<caption><p><bold>Datasets used in the experiments</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Dataset</bold></th>
<th valign="top" align="center"><bold>Training examples (<italic>n</italic>)</bold></th>
<th valign="top" align="center"><bold>Variables (<italic>d</italic>)</bold></th>
<th valign="top" align="center"><bold><italic>L</italic></bold></th>
<th valign="top" align="center"><bold>&#x003BC;</bold></th>
<th valign="top" align="center"><bold>&#x003BA;</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><italic>ijcnn</italic></td>
<td valign="top" align="center">49,990</td>
<td valign="top" align="center">23</td>
<td valign="top" align="center">1.23</td>
<td valign="top" align="center">1/<italic>n</italic></td>
<td valign="top" align="center">61,696</td>
</tr>
<tr>
<td valign="top" align="left"><italic>rcv1</italic></td>
<td valign="top" align="center">20,242</td>
<td valign="top" align="center">47,237</td>
<td valign="top" align="center">0.50</td>
<td valign="top" align="center">1/<italic>n</italic></td>
<td valign="top" align="center">10,122</td>
</tr>
<tr>
<td valign="top" align="left"><italic>real-sim</italic></td>
<td valign="top" align="center">72,309</td>
<td valign="top" align="center">20,959</td>
<td valign="top" align="center">0.50</td>
<td valign="top" align="center">1/<italic>n</italic></td>
<td valign="top" align="center">36,155</td>
</tr>
<tr>
<td valign="top" align="left"><italic>url</italic></td>
<td valign="top" align="center">2,396,130</td>
<td valign="top" align="center">3,231,962</td>
<td valign="top" align="center">128.70</td>
<td valign="top" align="center">100/<italic>n</italic></td>
<td valign="top" align="center">3,084,052</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In the experiment, we compared the following algorithms:
<list list-type="bullet">
<list-item><p><bold>SGD:</bold> Stochastic Gradient Descent. After various experiments, we decided to use a variant with constant step-size that gave the best practical performance in hindsight.</p></list-item>
<list-item><p><bold>L-BFGS:</bold> A publicly-available limited-memory quasi-Newton method that is suitable for broader classes of problems. We used a popular implementation by Mark Schmidt<xref ref-type="fn" rid="fn0010"><sup>10</sup></xref>.</p></list-item>
<list-item><p><bold>SAG:</bold> Stochastic Average Gradient, Schmidt et al. [<xref ref-type="bibr" rid="B5">5</xref>]. This is the most important method to compare to, as it also achieves linear convergence using only stochastic gradient evaluations. Although the methods has been analyzed for stepsize <italic>h</italic> &#x0003D; 1/16<italic>L</italic>, we experimented with various stepsizes and chose the one that gave the best performance for each problem individually.</p></list-item>
<list-item><p><bold>SDCA:</bold> Stochastic Dual Coordinate Ascent, where we used approximate solution to the one-dimensional dual step, as in Section 6.2 of Shalev-Shwartz and Zhang [<xref ref-type="bibr" rid="B6">6</xref>].</p></list-item>
<list-item><p><bold>S2GDcon:</bold> The S2GD algorithm with conservative stepsize choice, i.e., following the theory. We set <italic>m</italic> &#x0003D; <italic>O</italic>(&#x003BA;) and <italic>h</italic> &#x0003D; 1/10<italic>L</italic>, which is approximately the value you would get from Equation (24).</p></list-item>
<list-item><p><bold>S2GD:</bold> The S2GD algorithm, with stepsize that gave the best performance in hindsight. The best value of <italic>m</italic> was between <italic>n</italic> and 2<italic>n</italic> in all cases, but optimal <italic>h</italic> varied from 1/2<italic>L</italic> to 1/10<italic>L</italic>.</p></list-item>
</list></p>
<p>Note that SAG needs to store <italic>n</italic> gradients in memory in order to run. In case of relatively simple functions, one can store only <italic>n</italic> scalars, as the gradient of <italic>f</italic><sub><italic>i</italic></sub> is always a multiple of <italic>a</italic><sub><italic>i</italic></sub>. If we are comparing with SAG, we are implicitly assuming that our memory limitations allow us to do so. Although not included in Algorithm (<xref ref-type="table" rid="T6">1</xref>), we could also store these gradients we used to compute the full gradient, which would mean we would only have to compute a single stochastic gradient per inner iteration (instead of two).</p>
<p>We plot the results of these methods, as applied to various different, in the Figure <xref ref-type="fig" rid="F2">2</xref> for first 15&#x02013;30 passes through the data (i.e., amount of work work equivalent to 15&#x02013;30 full gradient evaluations).</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p><bold>Practical performance for logistic regression and the following datasets: <italic><bold>ijcnn, rcv</bold></italic> (first row), <italic><bold>realsim, url</bold></italic> (second row)</bold>.</p></caption>
<graphic xlink:href="fams-03-00009-g0002.tif"/>
</fig>
<p>There are several remarks we would like to make. First, our experiments confirm the insight from Schmidt et al. [<xref ref-type="bibr" rid="B5">5</xref>] that for this types of problems, reduced-variance methods consistently exhibit substantially better performance than the popular L-BFGS algorithm.</p>
<p>The performance gap between S2GDcon and S2GD differs from dataset to dataset. A possible explanation for this can be found in an extension of SVRG to proximal setting Xiao and Zhang [<xref ref-type="bibr" rid="B22">22</xref>], released after the first version of this paper was put onto arXiv (i.e., after December 2013). Instead Assumption 1, where all loss functions are assumed to be associated with the same constant <italic>L</italic>, the authors of Xiao and Zhang [<xref ref-type="bibr" rid="B22">22</xref>] instead assume that each loss function <italic>f</italic><sub><italic>i</italic></sub> has its own constant <italic>L</italic><sub><italic>i</italic></sub>. Subsequently, they sample proportionally to these quantities as opposed to the uniform sampling. In our case, <inline-formula><mml:math id="M153"><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">max</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:munder><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. This weighted sampling has an impact on the convergence: one gets dependence on the average of the quantities <italic>L</italic><sub><italic>i</italic></sub> and not in their maximum.</p>
<p>The number of passes through data seems a reasonable way to compare performance, but some algorithms could need more time to do the same amount of passes through data than others. In this sense, S2GD should be in fact faster than SAG due to the following property. While SAG updates the test point after each evaluation of a stochastic gradient, S2GD does not always make the update&#x02014;during the evaluation of the full gradient. This claim is supported by computational evidence: SAG needed about 20&#x02013;40% more time than S2GD to do the same amount of passes through data.</p>
<p>Finally, in Table <xref ref-type="table" rid="T5">5</xref> we provide the time it took the algorithm to produce these plots on a desktop computer with Intel Core i7 3610QM processor, with 2 &#x000D7; 4 GB DDR3 1,600 MHz memory. The numbers for the <italic>url</italic> dataset is are not representative, as the algorithm needed extra memory, which slightly exceeded the memory limit of our computer.</p>
<table-wrap position="float" id="T5">
<label>Table 5</label>
<caption><p><bold>Time required to produce plots in Figure <xref ref-type="fig" rid="F2"><bold>2</bold></xref></bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th/>
<th valign="top" align="center" colspan="4" style="border-bottom: thin solid #000000;"><bold>Time in seconds</bold></th>
</tr>
<tr>
<th valign="top" align="center"><bold>Algorithm</bold></th>
<th valign="top" align="left"><bold><italic>ijcnn</italic></bold></th>
<th valign="top" align="left"><bold><italic>rcv1</italic></bold></th>
<th valign="top" align="left"><bold><italic>real-sim</italic></bold></th>
<th valign="top" align="left"><bold><italic>url</italic></bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="center">S2GDcon</td>
<td valign="top" align="left">0.25</td>
<td valign="top" align="left">0.43</td>
<td valign="top" align="left">1.01</td>
<td valign="top" align="left">125.53</td>
</tr>
<tr>
<td valign="top" align="center">S2GD</td>
<td valign="top" align="left">0.29</td>
<td valign="top" align="left">0.49</td>
<td valign="top" align="left">1.02</td>
<td valign="top" align="left">54.04</td>
</tr>
<tr>
<td valign="top" align="left">SAG</td>
<td valign="top" align="left">0.41</td>
<td valign="top" align="left">0.73</td>
<td valign="top" align="left">1.87</td>
<td valign="top" align="left">71.74</td>
</tr>
<tr>
<td valign="top" align="center">L-BFGS</td>
<td valign="top" align="left">0.15</td>
<td valign="top" align="left">0.67</td>
<td valign="top" align="left">0.76</td>
<td valign="top" align="left">309.14</td>
</tr>
<tr>
<td valign="top" align="center">SGD</td>
<td valign="top" align="left">0.39</td>
<td valign="top" align="left">0.57</td>
<td valign="top" align="left">1.54</td>
<td valign="top" align="left">62.73</td>
</tr>
<tr>
<td valign="top" align="center">SDCA</td>
<td valign="top" align="left">0.33</td>
<td valign="top" align="left">0.38</td>
<td valign="top" align="left">1.10</td>
<td valign="top" align="left">126.32</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec>
<title>8.3. Boosted variants of S2GD and SAG</title>
<p>In this section we study the practical performance of boosted methods, namely S2GD&#x0002B; (Algorithm <xref ref-type="table" rid="T7">2</xref>) and variant of SAG suggested by its authors [<xref ref-type="bibr" rid="B5">5</xref>, Section 4.2].</p>
<p>SAG&#x0002B; is a simple modification of SAG, where one does not divide the sum of the stochastic gradients by <italic>n</italic>, but by the number of training examples seen during the run of the algorithm, which has the effect of producing larger steps at the beginning. The authors claim that this method performed better in practice than a hybrid SG/SAG algorithm.</p>
<p>We have observed that, in practice, starting SAG from a point close to the optimum, leads to an initial &#x0201C;away jump.&#x0201D; Eventually, the method exhibits linear convergence. In contrast, S2GD converges linearly from the start, regardless of the starting position.</p>
<p>Figure <xref ref-type="fig" rid="F3">3</xref> shows that S2GD&#x0002B; consistently improves over S2GD, while SAG&#x0002B; does not improve always: sometimes it performs essentially the same as SAG. Although S2GD&#x0002B; is overall a superior algorithm, one should note that this comes at the cost of having to choose stepsize parameter for SGD initialization. If one chooses these parameters poorly, then S2GD&#x0002B; could perform worse than S2GD. The other three algorithms can work well without any parameter tuning.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p><bold>Practical performance of boosted methods on datasets <italic><bold>ijcnn, rcv</bold></italic> (first row), <italic><bold>realsim</bold></italic>, <italic><bold>url</bold></italic> (second row)</bold>.</p></caption>
<graphic xlink:href="fams-03-00009-g0003.tif"/>
</fig>
</sec>
</sec>
<sec sec-type="conclusions" id="s9">
<title>9. Conclusion</title>
<p>We have developed a new semi-stochastic gradient descent method (S2GD) and analyzed its complexity for smooth convex and strongly convex loss functions. Our methods need <italic>O</italic>((&#x003BA;/<italic>n</italic>) log(1/&#x003B5;)) work only, measured in units equivalent to the evaluation of the full gradient of the loss function, where &#x003BA; &#x0003D; <italic>L</italic>/&#x003BC; if the loss is <italic>L</italic>-smooth and &#x003BC;-strongly convex, and &#x003BA; &#x02264; 2<italic>L</italic>/&#x003B5; if the loss is merely <italic>L</italic>-smooth.</p>
<p>Our results in the strongly convex case match or improve on a few very recent results, while at the same time generalizing and simplifying the analysis. Additionally, we proposed S2GD&#x0002B;&#x02014;a method which equips S2GD with an SGD pre-processing step&#x02014;which in our experiments exhibits superior performance to all methods we tested. We leave the analysis of this method as an open problem.</p>
</sec>
<sec id="s10">
<title>Author contributions</title>
<p>All authors listed, have made substantial, direct and intellectual contribution to the work, and approved it for publication.</p>
</sec>
<sec id="s11">
<title>Funding</title>
<p>The work of both authors was supported by the Centre for Numerical Algorithms and Intelligent Software (funded by EPSRC grant EP/G036136/1 and the Scottish Funding Council). Both authors also thank the Simons Institute for the Theory of Computing, UC Berkeley, where this work was conceived and finalized. The work of PR was also supported by the EPSRC grant EP/I017127/1 (Mathematics for Vast Digital Resources) and EPSRC grant EP/K02325X/1 (Accelerated Coordinate Descent Methods for Big Data Problems).</p>
<sec>
<title>Conflict of interest statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
</sec>
</body>
<back>
<ref-list>
<title>References</title>
<ref id="B1">
<label>1.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nemirovski</surname> <given-names>A</given-names></name> <name><surname>Juditsky</surname> <given-names>A</given-names></name> <name><surname>Lan</surname> <given-names>G</given-names></name> <name><surname>Shapiro</surname> <given-names>A</given-names></name></person-group>. <article-title>Robust stochastic approximation approach to stochastic programming</article-title>. <source>SIAM J Optim</source>. (<year>2009</year>) <volume>19</volume>:<fpage>1574</fpage>&#x02013;<lpage>609</lpage>. <pub-id pub-id-type="doi">10.1137/070704277</pub-id></citation>
</ref>
<ref id="B2">
<label>2.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>T</given-names></name></person-group>. <article-title>Solving large scale linear prediction problems using stochastic gradient descent algorithms</article-title>. In: <source>The International Conference on Machine Learning</source>. <publisher-loc>Banff, AB</publisher-loc> (<year>2004</year>).</citation>
</ref>
<ref id="B3">
<label>3.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Richt&#x000E1;rik</surname> <given-names>P</given-names></name> <name><surname>Tak&#x000E1;&#x0010D;</surname> <given-names>M</given-names></name></person-group>. <article-title>Iteration complexity of randomized block-coordinate descent methods for minimizing a composite function</article-title>. <source>Math Progr</source>. (<year>2014</year>) <volume>144</volume>:<fpage>1</fpage>&#x02013;<lpage>38</lpage>. <pub-id pub-id-type="doi">10.1007/s10107-012-0614-z</pub-id></citation>
</ref>
<ref id="B4">
<label>4.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Roux</surname> <given-names>NL</given-names></name> <name><surname>Schmidt</surname> <given-names>M</given-names></name> <name><surname>Bach</surname> <given-names>FR</given-names></name></person-group>. <article-title>A stochastic gradient method with an exponential convergence _rate for finite training sets</article-title>. In: <source>Advances in Neural Information Processing Systems</source>. <publisher-loc>Lake Tahoe</publisher-loc> (<year>2012</year>) p. <fpage>2663</fpage>&#x02013;<lpage>71</lpage>.</citation>
</ref>
<ref id="B5">
<label>5.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Schmidt</surname> <given-names>M</given-names></name> <name><surname>Le Roux</surname> <given-names>N</given-names></name> <name><surname>Bach</surname> <given-names>F</given-names></name></person-group>. <article-title>Minimizing finite sums with the stochastic average gradient</article-title>. <source>Math Progr</source>. (<year>2017</year>) <volume>162</volume>:<fpage>83</fpage>&#x02013;<lpage>112</lpage>. <pub-id pub-id-type="doi">10.1007/s10107-016-1030-6</pub-id></citation>
</ref>
<ref id="B6">
<label>6.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shalev-Shwartz</surname> <given-names>S</given-names></name> <name><surname>Zhang</surname> <given-names>T</given-names></name></person-group>. <article-title>Stochastic dual coordinate ascent methods for regularized loss minimization</article-title>. <source>J Mach Learn Res</source>. (<year>2013</year>) <volume>14</volume>:<fpage>567</fpage>&#x02013;<lpage>99</lpage>. Available online at: <ext-link ext-link-type="uri" xlink:href="http://www.jmlr.org/papers/v14/shalev-shwartz13a.html">http://www.jmlr.org/papers/v14/shalev-shwartz13a.html</ext-link></citation>
</ref>
<ref id="B7">
<label>7.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Johnson</surname> <given-names>R</given-names></name> <name><surname>Zhang</surname> <given-names>T</given-names></name></person-group>. <article-title>Accelerating stochastic gradient descent using predictive variance reduction</article-title>. In: <source>Advances in Neural Information Processing Systems</source>. Lake Tahoe (<year>2013</year>).</citation>
</ref>
<ref id="B8">
<label>8.</label>
<citation citation-type="other"><person-group person-group-type="author"><name><surname>Csiba</surname> <given-names>D</given-names></name> <name><surname>Richt&#x000E1;rik</surname> <given-names>P</given-names></name></person-group>. <article-title>Coordinate descent face-off: primal or dual?</article-title> arXiv preprint arXiv:160508982 (<year>2016</year>).</citation>
</ref>
<ref id="B9">
<label>9.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Hsieh</surname> <given-names>CJ</given-names></name> <name><surname>Chang</surname> <given-names>KW</given-names></name> <name><surname>Lin</surname> <given-names>CJ</given-names></name> <name><surname>Keerthi</surname> <given-names>SS</given-names></name> <name><surname>Sundarajan</surname> <given-names>S</given-names></name></person-group>. <article-title>A dual coordinate descent method for large-scale linear SVM</article-title>. In: <source>International Conference on Machine Learning</source>. <publisher-loc>Helsinki</publisher-loc> (<year>2008</year>). <pub-id pub-id-type="doi">10.1145/1390156.1390208</pub-id></citation>
</ref>
<ref id="B10">
<label>10.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tak&#x000E1;&#x0010D;</surname> <given-names>M</given-names></name> <name><surname>Bijral</surname> <given-names>A</given-names></name> <name><surname>Richt&#x000E1;rik</surname> <given-names>P</given-names></name> <name><surname>Srebro</surname> <given-names>N</given-names></name></person-group>. <article-title>Mini-batch primal and dual methods for SVMs</article-title>. In: <source>International Conference on Machine Learning</source> (<year>2013</year>).</citation>
</ref>
<ref id="B11">
<label>11.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Richt&#x000E1;rik</surname> <given-names>P</given-names></name> <name><surname>Tak&#x000E1;&#x0010D;</surname> <given-names>M</given-names></name></person-group>. <article-title>Parallel coordinate descent methods for big data optimization</article-title>. <source>Math Progr</source>. (<year>2016</year>) <volume>156</volume>:<fpage>433</fpage>&#x02013;<lpage>84</lpage>. <pub-id pub-id-type="doi">10.1007/s10107-015-0901-6</pub-id></citation>
</ref>
<ref id="B12">
<label>12.</label>
<citation citation-type="other"><person-group person-group-type="author"><name><surname>Fercoq</surname> <given-names>O</given-names></name> <name><surname>Richt&#x000E1;rik</surname> <given-names>P</given-names></name></person-group>. <article-title>Smooth minimization of nonsmooth functions with parallel coordinate descent methods</article-title>. arXiv:13095885 (<year>2013</year>).</citation>
</ref>
<ref id="B13">
<label>13.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Richt&#x000E1;rik</surname> <given-names>P</given-names></name> <name><surname>Tak&#x000E1;&#x0010D;</surname> <given-names>M</given-names></name></person-group>. <article-title>Distributed coordinate descent method for learning with big data</article-title>. <source>J Mach Learn Res</source>. (<year>2016</year>) <volume>17</volume>:<fpage>1</fpage>&#x02013;<lpage>25</lpage>. Available online at: <ext-link ext-link-type="uri" xlink:href="http://www.jmlr.org/papers/v17/15-001.html">http://www.jmlr.org/papers/v17/15-001.html</ext-link></citation>
</ref>
<ref id="B14">
<label>14.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>L</given-names></name> <name><surname>Mahdavi</surname> <given-names>M</given-names></name> <name><surname>Jin</surname> <given-names>R</given-names></name></person-group>. <article-title>Linear convergence with condition number independent access of full gradients</article-title>. In: <source>Advances in Neural Information Processing Systems</source>. <publisher-loc>Lake Tahoe</publisher-loc> (<year>2013</year>).</citation>
</ref>
<ref id="B15">
<label>15.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Friedlander</surname> <given-names>MP</given-names></name> <name><surname>Schmidt</surname> <given-names>M</given-names></name></person-group>. <article-title>Hybrid deterministic-stochastic methods for data fitting</article-title>. <source>SIAM J Sci Comput</source>. (<year>2012</year>) <volume>34</volume>:<fpage>A1380</fpage>&#x02013;<lpage>405</lpage>. <pub-id pub-id-type="doi">10.1137/110830629</pub-id></citation>
</ref>
<ref id="B16">
<label>16.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Deng</surname> <given-names>G</given-names></name> <name><surname>Ferris</surname> <given-names>MC</given-names></name></person-group>. <article-title>Variable-number sample-path optimization</article-title>. <source>Math Progr</source>. (<year>2009</year>) <volume>117</volume>:<fpage>81</fpage>&#x02013;<lpage>109</lpage>. <pub-id pub-id-type="doi">10.1007/s10107-007-0164-y</pub-id></citation>
</ref>
<ref id="B17">
<label>17.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bastin</surname> <given-names>F</given-names></name> <name><surname>Cirillo</surname> <given-names>C</given-names></name> <name><surname>Toint</surname> <given-names>PL</given-names></name></person-group>. <article-title>Convergence theory for nonconvex stochastic programming with an application to mixed logit</article-title>. <source>Math Progr</source>. (<year>2006</year>) <volume>108</volume>:<fpage>207</fpage>&#x02013;<lpage>34</lpage>. <pub-id pub-id-type="doi">10.1007/s10107-006-0708-6</pub-id></citation>
</ref>
<ref id="B18">
<label>18.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Marti</surname> <given-names>K</given-names></name> <name><surname>Fuchs</surname> <given-names>E</given-names></name></person-group>. <article-title>On solutions of stochastic programming problems by descent procedures with stochastic and deterministic directions</article-title>. <source>Methods Operat Res</source>. (<year>1979</year>) <volume>33</volume>:<fpage>281</fpage>&#x02013;<lpage>93</lpage>.</citation>
</ref>
<ref id="B19">
<label>19.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Marti</surname> <given-names>K</given-names></name> <name><surname>Fuchs</surname> <given-names>E</given-names></name></person-group>. <article-title>Rates of convergence of semi-stochastic approximation procedures for solving stochastic optimization problems</article-title>. <source>Optimization</source> (<year>1986</year>) <volume>17</volume>:<fpage>243</fpage>&#x02013;<lpage>65</lpage>. <pub-id pub-id-type="doi">10.1080/02331938608843124</pub-id></citation>
</ref>
<ref id="B20">
<label>20.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kone&#x0010D;n&#x000FD;</surname> <given-names>J</given-names></name> <name><surname>Liu</surname> <given-names>J</given-names></name> <name><surname>Richt&#x000E1;rik</surname> <given-names>P</given-names></name> <name><surname>Tak&#x000E1;&#x0010D;</surname> <given-names>M</given-names></name></person-group>. <article-title>Mini-batch semi-stochastic gradient descent in the proximal setting</article-title>. <source>IEEE J Select Top Signal Process</source>. (<year>2016</year>) <volume>10</volume>:<fpage>242</fpage>&#x02013;<lpage>55</lpage>. <pub-id pub-id-type="doi">10.1109/JSTSP.2015.2505682</pub-id></citation>
</ref>
<ref id="B21">
<label>21.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Nesterov</surname> <given-names>Y</given-names></name></person-group>. <source>Introductory Lectures on Convex Optimization: A Basic Course</source>. <volume>Vol. 87</volume>. <publisher-name>Springer</publisher-name> (<year>2004</year>).</citation>
</ref>
<ref id="B22">
<label>22.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xiao</surname> <given-names>L</given-names></name> <name><surname>Zhang</surname> <given-names>T</given-names></name></person-group>. <article-title>A proximal stochastic gradient method with progressive variance reduction</article-title>. <source>SIAM J Optim</source>. (<year>2014</year>) <volume>24</volume>:<fpage>2057</fpage>&#x02013;<lpage>75</lpage>. <pub-id pub-id-type="doi">10.1137/140961791</pub-id></citation>
</ref>
</ref-list>
<fn-group>
<fn id="fn0001"><p><sup>1</sup>The question of whether or when primal or dual version is better has recently been studied in Csiba and Richt&#x000E1;rik [<xref ref-type="bibr" rid="B8">8</xref>] to which we refer the reader for further details.</p></fn>
<fn id="fn0002"><p><sup>2</sup>We thank Zaid Harchaoui who pointed us to these papers a few days before we posted our work to arXiv.</p></fn>
<fn id="fn0003"><p><sup>3</sup>Since the first version of our work, our proposed algorithm has been extended to apply to a more broader class functions in Kone&#x0010D;n&#x000FD; et al. [<xref ref-type="bibr" rid="B20">20</xref>].</p></fn>
<fn id="fn0004"><p><sup>4</sup>It is possible to get away with computing only a <italic>single</italic> stochastic gradient per inner iteration, namely <inline-formula><mml:math id="M154"><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, at the cost of having to store in memory <inline-formula><mml:math id="M155"><mml:msubsup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> for <italic>i</italic> &#x0003D; 1, 2, &#x02026;, <italic>n</italic>. This, however, can be impractical for big <italic>n</italic>.</p></fn>
<fn id="fn0005"><p><sup>5</sup>Using a single pass of SGD as an initialization strategy was already considered in Roux et al. [<xref ref-type="bibr" rid="B4">4</xref>]. However, the authors claim that their implementation of vanilla SAG did not benefit from it. S2GD does benefit from such an initialization due to it starting, in theory, with a (heavy) full gradient computation.</p></fn>
<fn id="fn0006"><p><sup>6</sup>While S2GD reduces to GD for <italic>m</italic> &#x0003D; 1, our <italic>analysis</italic> does not say anything meaningful in the <italic>m</italic> &#x0003D; 1 case&#x02014;it is too coarse to cover this case. This is also the reason behind the empty space in the &#x0201C;Complexity&#x0201D; box column for GD in Table <xref ref-type="table" rid="T2">2</xref>.</p></fn>
<fn id="fn0007"><p><sup>7</sup>For simplicity, we supress the <inline-formula><mml:math id="M156"><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x000B7;</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> notation here.</p></fn>
<fn id="fn0008"><p><sup>8</sup><ext-link ext-link-type="uri" xlink:href="http://mloss.org/software/view/556/">http://mloss.org/software/view/556/</ext-link></p></fn>
<fn id="fn0009"><p><sup>9</sup>Available at <ext-link ext-link-type="uri" xlink:href="http://www.csie.ntu.edu.tw/&#x0007E;cjlin/libsvmtools/datasets/">http://www.csie.ntu.edu.tw/&#x0007E;cjlin/libsvmtools/datasets/</ext-link>.</p></fn>
<fn id="fn0010"><p><sup>10</sup><ext-link ext-link-type="uri" xlink:href="http://www.di.ens.fr/&#x0007E;mschmidt/Software/minFunc.html">http://www.di.ens.fr/&#x0007E;mschmidt/Software/minFunc.html</ext-link></p></fn>
</fn-group>
</back>
</article>