﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<?xml-stylesheet href="xbl-shape-bindings.css" type="text/css"?>

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:mml="http://www.w3.org/1998/Math/MathML"
	xmlns:svg="http://www.w3.org/2000/svg" 
	xmlns:xlink="http://www.w3.org/1999/xlink"
	xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>

<head>
  <title>Tighter Bounds for Random Projections of Manifolds</title>
<!-- metadata -->
  <meta name="generator" content="S5" />
  <meta name="version" content="S5 1.1" />
  <meta name="presdate" content="20050128" />
  <meta name="author" content="Ken Clarkson &bull;" />
  <meta name="company" content="IBM Almaden" />
<!-- configuration parameters -->
  <meta name="defaultView" content="slideshow" />
  <meta name="controlVis" content="hidden" />
<!-- style sheet links -->
  <link rel="stylesheet" href="ui/default/slides.css" type="text/css"
 media="projection" id="slideProj" />
  <link rel="stylesheet" href="ui/default/outline.css" type="text/css"
 media="screen" id="outlineStyle" />
  <link rel="stylesheet" href="ui/default/print.css" type="text/css"
 media="print" id="slidePrint" />
  <link rel="stylesheet" href="ui/default/opera.css" type="text/css"
 media="projection" id="operaFix" />
<!-- embedded styles -->
  <style type="text/css" media="all">
.imgcon {width: 525px; margin: 0 auto; padding: 0; text-align: center;}
#anim {width: 270px; height: 320px; position: relative; margin-top: 0.5em;}
#anim img {position: absolute; top: 42px; left: 24px;}
img#me01 {top: 0; left: 0;}
img#me02 {left: 23px;}
img#me04 {top: 44px;}
img#me05 {top: 43px;left: 36px;}
  </style>
  <style type="text/css" media="all">
     .demo {display: block; padding: 0.5em 0.5em 0.5em; margin: 0 1.5em 0.5em; font-size: 90%;}
    .floatright {float : right;}
  </style>
  
      <style>
      [class~="circle"] 
      {
        stroke: red;
        stroke-width: 2;
        fill: red;
        fill-opacity: 0.1;
      }
     <style>
		[class~="circ_control"]:hover {stroke:black; stroke-width:2; fill-opacity:0.2;}
	</style>
    </style>

  <script src="ASCIIMathML.js" type="text/javascript" />
   <script src="impl.js" type="text/javascript" />
 <!-- S5 JS -->
  <script src="ui/default/slides.js" type="text/javascript" />
  <script type="text/javascript">
	AMsymbols = AMsymbols.concat([
	{input:">>", tag:"mo", output:"\u226B", tex:"gg"},
	{input:"ll", tag:"mo", output:"\u226A", tex:"ll"},
	{input:"sgn",  tag:"mo", output:"sgn", tex:null, ttype:CONST},
	{input:"exp",  tag:"mo", output:"exp", tex:null, ttype:CONST},
	{input:"Prob",  tag:"mo", output:"Prob", tex:null, ttype:CONST},
	{input:"argmax",  tag:"mo", output:"argmax", tex:null, ttype:UNDEROVER},
	]);
  </script>
</head>
<body>
<div class="layout">
   <div id="controls">
    <form action="#" id="controlForm" onmouseover="showHide('s');" onmouseout="showHide('h');">
      <div id="navLinks" class="hideme">
        <a accesskey="t" id="toggle" href="javascript:toggle();">&#216;</a>
        <a accesskey="z" id="prev" href="javascript:go(-1);">&laquo;</a>
        <a accesskey="x" id="next" href="javascript:go(1);">&raquo;</a>
      <div id="navList" ><select id="jumplist" onchange="go('j');"></select></div>
      </div>
    </form>
  </div>
<div id="currentSlide"><!-- DO NOT EDIT --></div>
<div id="footer">
   <h1>JL for Manifolds</h1>
   <h2>Ken Clarkson</h2>
</div>

</div>

<ol class="xoxo presentation">

  <li class="slide">
    <h1>Tighter Bounds for Random Projections of Manifolds</h1>
	<br/>
    <h3>Ken Clarkson<br/>IBM Almaden</h3>
      <div width="400" style="position:absolute; bottom:0.75in; right:2in;">
		<canvas id="title_canvas" width="300" height="300"></canvas>
<!--	<applet code="jvLite.class" archive="../../../web/enets/javaView/jvLite.jar" name="JavaView"
				width="350" height="350" style="float:right;" hspace="10" vspace="10" codebase="./">
		<param name="Model" value="javaView/sphere.jvx"/>
		<param name="displayFile" value="javaView/sphere.jvd"/>
		<param name="autoRotate" value="Show"/> 
		<param name="background" value="255;255;255"/>
		<param name="Border" value="Hide"/>
		<param name="Antialias" value="Show"/>
		<param name="Depthcue" value="Hide"/>
      </applet>-->

     </div>
  </li>


      <li class="slide">
        <h1>Overview</h1>
        <ul>
            <li>Dimensionality reduction</li>
            <li>Random projection</li>
            <ul><li>For finite sets, for infinite sets</li></ul>
            <li>Smooth manifolds</li>
            <ul><li>Complexity measures of manifolds</li><li>The "tighter bound"</li></ul>
            <li>Parts of the proof</li>
            <ul>
                <ul><li>Distance measures, dimension, measure, `epsilon`-nets</li></ul>
                <li>Reduction theorem: from infinite sets to finite sets</li>
                <li>Application of the reduction theorem to smooth manifolds</li>
            </ul>
        </ul>
    </li>

 
      <li class="slide">
        <h1>Dimensionality Reduction</h1>
        <ul >
            <li>Given a high-dimensional dataset, in `\RR^m`, map it to a lower-dimensional space</li>
            <li class="incremental">Maybe just drop some coordinates</li>
            <ul><li class="incremental">Some dimensions are <em>features</em>, others are not</li></ul>
            <li class="incremental">Or, rotate the data first, then drop coordinates, or do something even more complicated</li>
            <ul>
                <li class="incremental">SVD (PCA, LSI, EigenFace*), SDP, ICA, MDS, ETC</li>
                <li class="incremental">*See also: EigenEyebrow, EigenEye, EigenNose, EigenMouth, EigenHead....</li>
                <li class="incremental">EigenHand, EigenBody,  EigenHeart...</li>
                 <li class="incremental">EigenSign, EigenImage, EigenFish, EigenForm, EigenTracking, EigenWindow, EigenGait,
                    EigenLightField, EigenSurface, EigenFeature, Eigen Lightfield, Eigen-Scale-Space, Eigen Nodule, Eigen-Prosody,
                    EigenShape, EigenTree, EigenEdge, EigenEdginess, EigenHills,   Eigen (grapefruit) stems,
                    EigenCharacter, EigenSignature, EigenWord, EigenSign, EigenLetter, EigenScrabble**</li>
                <li class="incremental">**Not: EigenCluster, EigenMonkey</li>
            </ul>
        </ul>
    </li>


      <li class="slide">
        <h1>Random projection</h1>
        <ul>
            <li>Procedure:</li>
            <ul>
                <li>Apply a random rotation to `v in RR^m`</li>
                <li>Drop all but `k` coordinates</li>
                <li>Scale (multiply by a scalar) appropriately</li>
            </ul>
            <li>Equivalently: pick a random subspace of dimension `k`, project `v` onto it, then scale</li>
            <li>Johnson-Lindenstrauss (JL) Lemma: this preserves length, approximately:</li>
            <ul>
                <li>Let a <em>`k`-map</em> `bb P` be a random projection from `\RR^m` to `\RR^k`, as above</li>
                <li>If `k >= epsilon^{-2} C log (1//delta)`, then with probability at least `1-delta`,
                    <blockquote>`(1-epsilon)||v|| le ||bb P v|| le (1+epsilon)||v||`</blockquote>
                </li>
            </ul>
            <li>Since `bb P` is linear, `||alpha bb P v|| = alpha || bb P v||` for `alpha ge 0`, so WLOG `||v||=1`</li>
        </ul>
    </li>
      
      
       <li class="slide">
        <h1>From one point to many</h1>
        <ul>
            <li>Point <em>drafting</em>: for one vector (point) `v`, the probability of failure is
                <blockquote>` \delta le exp(-k epsilon^2//C)`</blockquote></li>
            <li>Finite set <em>drafting</em>: for set `S` of `n` points, probability of failure for all points is
                <blockquote>`delta le n exp(-k epsilon^2//C)`</blockquote>
                </li>
            <li>Finite set <em>embedding</em>: for `S - S := {x-y quad | quad x,y in S}`,
                <blockquote>`delta le n^2 exp(-k epsilon^2//C)`</blockquote></li>
            <ul>
                <li>`k = O( epsilon^{-2} log (n//delta))`</li>
                <li>That is, preserving distances</li>
                </ul>
            <li>Angles preserved also [M]</li>
        </ul>
      </li>
      
      
      <li class="slide">
        <h1>Random projection : why?</h1>
        <ul>
            <li>It works</li>
            <li>Existence proof: if a random projection works this well, what if we really try to get a good projection?</li>
            <li>There are many similar algorithms with the same properties</li>
            <ul><li>Multiply by a `k times m` matrix of random `pm 1`, or of Gaussians</li></ul>
            <li>Obliviousness: the random projection is chosen without looking at the data at all</li>
             <ul>
                <li>...and so is called "universal feature reduction"</li>
                <li>Feature reduction without "feedback": no loops</li>
                <li>Brain may work this way; a recent model of the brain [SOP]:</li>
                <ul>
                    <li>Is a "feedforward" neural network</li>
                    <li>Uses randomness for feature reduction in a similar way</li>
                </ul>
            </ul>
        </ul>
    </li>
       
       
       <li class="slide">
        <h1>From many to infinite</h1>
        <ul>
            <li>Subspace JL [Sar]: for `d`-dimensional linear subspace `F`,
                <blockquote>`delta = O(1)^d exp(-k epsilon^2//C)`</blockquote></li>
            <li>Hint:</li>
            <ul>
                <li>It helps that if `x,y in F`, so is `x-y`, and so is `alpha x`</li>
                <li>There is a finite subset of `F` so that drafting it `=>` drafting `F`</li>
            </ul>
            <li>"Doubling" JL [AHY][IN]: Bounds for sets in `RR^m` of bounded doubling dimension</li>
            <ul><li>Mostly, additive approximation bounds on distance approximation, not relative</li></ul>
            <li>Manifold JL [AHY][BW], here: for a <em>(smooth, connected)</em> <br/> `d`-dimensional manifold,
                <blockquote>`delta = O(epsilon^{-d} exp(-k epsilon^2//C))`</blockquote></li>
            <ul><li>Main bounds of [AHY] additive, or drafting only</li></ul>
        </ul>
      </li>
     
     
       <li class="slide">
        <h1>(What's a `d`-manifold?)</h1>
        <ul>
            <li>A manifold is a set that looks, close up, like a linear subspace</li>
            <li>A curve is a 1-manifold</li>
            <li>A surface is a 2-manifold in 3 dimensions</li>
            <li>If `f : RR^d -> RR^m` is a nice function, `{f(x) | x in P subset RR^d}` is a `d`-manifold in `RR^m`</li>
            <li>Given a collection of `m` radio antennas,<br/>
                if signal strength at point `p` is
                `(s_1(p), ..., s_m(p))`,<br/>
                then `{(s_1(p), ..., s_m(p)) | p in RR^2}` is a 2-manifold in `RR^m`</li>            
        </ul>
      </li>

       <li class="slide">
        <h1>(When is the input to a program infinite?)</h1>
        <ul>
            <li>It isn't</li>
            <li>But: bounds hold for any finite subset of the infinite set</li>
            <li>So: for a set of `n` points on a manifold, are better when `n` is very large</li>
        </ul>
      </li>

   <li class="slide">
    <h1>"All `d`-manifolds are not the same"</h1>
    
    <ul>
        <li>If `delta = O(epsilon^{-d} exp(-k epsilon^2//C))`, or `k = O(\epsilon^{-2} (d log(1//\epsilon)+log(1//\delta)))`,
                what more is there to say?</li>
        <li>Lower-order terms matter:</li>
    </ul>
        <center><div>
        <div style="float:left; margin-right:5em">
            <div id="anim" >
                <img src="f/cir1.png"/>
                <img src="f/cir2.png" class="incremental"/>
            </div>
        </div>
	<div id="anim" style="float:left; position: relative; bottom: 50px">
           <img src="f/hil1.png" class="incremental"/>
            <img src="f/hil2.png" class="incremental"/>
 	</div>
	</div></center>

 <!--        <div id="anim" style="float:left">
            <img src="f/cir1.png"/>
            <img src="f/cir2.png" class="incremental"/>
        </div>
       <div id="anim" style="float:right">
            <img src="f/hil1.png" class="incremental"/>
            <img src="f/hil2.png" class="incremental"/>
        </div>
-->
    </li>
   
   
   
    <li class="slide">
        <h1>Measures of manifold complexity</h1>
        <ul>
            <li>`mu_I(M)` here denotes the surface area</li>
            <ul>
                <li>For a curve (manifold of dimension one): its length</li>
                <li>Determines:</li>
                <ul>
                    <li>Expected hits by a random line, when `d=m-1`</li>
                    <li>Cost of minimum spanning trees, TSP, and other extremal graphs</li>
                    <li>Vector quantization bounds</li>
                </ul>
            </ul>
            <li>`mu_{:III:}(M)` here denotes the <em>total absolute curvature</em></li>
            <ul>
                <li>For a curve, the total turning angle</li>
                <li>Determines:</li>
                <ul>
                    <li>Expected number of critical points of a random height function</li>
                    <li>A bound on the sum of the Betti numbers</li>
                </ul>
            </ul>
        </ul>
    </li>
   
   
   
    <li class="slide">
        <h1>Measures of manifold complexity, II</h1>
        <ul>
            <li>`mu_{:II:}(M)` denotes the <em>total root curvature</em></li>
            <ul>
                <li>Intermediate between `mu_I{M)` and `mu_{:III:}(M)`</li>
                <li>Determines:</li>
                <ul><li>Complexity of best mesh approximating a surface</li></ul>
            </ul>
         </ul>
      </li>
   
        <li class="slide">
        <h1>Manifold JL</h1>
        <ul>
            <li>Baraniuk and Wakin result has additional term for `k` of (roughly):<br/>
                `quad O(epsilon^{-2}(d log(m mu_I ( M)//rho)))`<br/>
            is enough for failure probability `delta`, where: </li>
            <ul class="incremental">
                <li>`m` is (as before) the ambient dimension</li>
                <li>`1//rho` bounds the maximum (directional) curvature</li>
            </ul>
            <li class="incremental">My result has additional term (roughly):<br/>
                `quad O(epsilon^{-2}(log(mu_I(M)//tau^d + mu_{:III:}(M) )))`<br/>
                where:</li>
            <ul class="incremental">
                 <li>`tau(M)` is a low-torsion-path threshold: if `a,b in M`  have  `||a-b|| le tau`
                        then there is a low-curvature <em>or</em> low-torsion path between them</li>
            </ul>            
        </ul>
      </li>
  
    <li class="slide">
        <h1>Why is this an improvement or interesting?</h1>
        <ul>
            <li>Removed dependence on ambient dimension `m` entirely</li>
            <li>Roughly, replaced `(1//rho)`, a supremum over `M`,
                by a sum `mu_{:III:}(M)` and allowing low torsion as well</li>
            <li>Also showed: can use curvature measure `mu_{:II:}(M)` instead of surface area `mu_{:I:}(M)`</li>
            <ul>
                <li>`mu_{:II:}(M)` can be `ll mu_{:I:}(M)`</li>
             </ul>
            <li>Places "JL complexity" among other properties of `M` bounded by integral measures `mu_X(M)`</li>
         </ul>
    </li>
         
    
    <li class="slide">
        <h1>Areas of proof: the rest of the talk</h1>
        <ul>
            <li>`epsilon`-nets, packings, coverings, measures</li>
            <li>Reduction theorem for drafting: from infinite sets to finite sets</li>
            <ul>
                <li>Use a sequence of finite sets to approximate the infinite set</li>
                <li>Use JL for all sets of the sequence</li>
            </ul>
            <li>From drafting to embedding smooth manifolds</li>
            <ul>
                <li>Call `a-b`, for `a,b in M` a <em>chord</em></li>
                <ul><li>Embedding `equiv` drafting all the chords</li></ul>
                <li>Call chords shorter than some parameter, <em>short</em>, otherwise <em>long</em></li>
                <li>For embedding: hard to handle short chords</li>
                <ul>
                    <li>Why some previous results are only additive</li>
                    <li>For smooth sets, use tangent vectors to approximate short chords</li>
                    <li>Smoothness allows relative bounds for manifolds, instead of additive</li>
                </ul>
            </ul>
        </ul>
    </li>
    
    
    <li class="slide">
            <h1>`epsilon`-nets</h1>
            <ul>
                    <li>`N subset S` is an `epsilon`-net if it is both an:</li>
                    <ul>
                            <li>`epsilon`-covering: every point on `S` is within `epsilon` of some point of `N`</li>
                            <li>`epsilon`-packing: points in `N` are at least `epsilon` from each other</li>
                    </ul>
                    <div id="anim" style="position:relative;bottom:1em;left:5em">
                        <img src="f/covering_start.png"/>
                        <img src="f/covering.png" class="incremental" id="anim1"/>
                        <img src="f/packing.png" class="incremental" id="anim2" />
                    </div>
        </ul>
    </li>
    
    
    <li class="slide">
            <h1>`epsilon`-nets and measures</h1>
            <ul>
                    <li>`epsilon`-net of `d`-dimensional set has size `C(S,epsilon) approx mu(S)//epsilon^d`</li>
                    <li>This relation can <em>define</em> the dimension and the measure, for different metric spaces:</li>
                    <ul>
                        <li>Dimension is `d` such that `C(S,epsilon) = 1//epsilon^{:d+o(1):}` as `epsilon -> 0`</li>
                        <li>`mu(S) approx C(S,epsilon) epsilon^d` as `epsilon -> 0`</li>
                    </ul>
                    <li>On a manifold `M`:</li>
                    <ul>
                        <li>Arc length `D_I(a,b)` corresponds to surface area `mu_I(M)`</li>
                        <ul><li>`D_I(a,b) ge ||a-b|| =>` `epsilon`-net of `M` with respect to Euclidean distance has size `=O(mu_I(M)//epsilon^d)`</li></ul>
                        <li>Total curvature `D_{III}` corresponds to total absolute curvature `mu_{:III:}`</li>
                    </ul>
            </ul>
    </li>
        
    <li class="slide">
        <h1>Getting to infinite</h1>
        
        (Very similar to [AHY], inspired by [IN])
        <ul>
            <li>Theorem: an infinite set `S` of unit vectors is `epsilon`-drafted by `k`-map:</li>
            <ul>
                <li>That is, with prob. `1 - delta`, for all `a in S`, `1 - epsilon le ||bb P a || le 1 + epsilon`</li>
                <li>Where `k` depends on `log\ C(S,\epsilon')`, for `epsilon' le epsilon`</li>
            </ul>
            <li>The proof (omitted here) uses a sequence of `epsilon_i`-nets, with `epsilon_i -> 0`</li>
        </ul>
    </li>
       
    
    <li class="slide">
        <h1>From drafting to embedding:<br/> applying the theorem</h1>
        
        <ul>
            <li>To apply the theorem, need `epsilon`-nets for the normalized chords
                `S = U(M-M) := { (a-b)/{:||a-b||:} | quad a,b in M}`</li>
            </ul>
      <div id="anim" style="position:relative;bottom:1em;left:5em">
        <img src="f/long-short1.png"/>
        <img src="f/long-short2.png" class="incremental"/>
        </div>
      
    </li>
    
    
    <li class="slide">
        <h1>From drafting to embedding: long chords</h1>
        
        `epsilon`-nets for long chords:
        <ul>
                <li>For `U_lambda(M-M) := { (a-b)/{:||a-b||:} | quad a,b in M, ||a-b|| ge lambda}`,</li>
                <li>If `N` is an `epsilon lambda`-cover of `M` (with respect to Euclidean distance), </li>
                <li>Then `U(N-N)` is a `4epsilon`-cover of `U_lambda(M-M)`</li>
        </ul>
        <center><div><img src="f/long-chord-net.png"/></div></center>
    </li>
    
    <li class="slide">
        <h1>From drafting to embedding: short chords</h1>
        
        <ul>
            <li>`U(N-N)` does not approximate the short chords</li>
            <li>Tangent vectors approximate very short chords
            <br/><br/><center><div><img src="f/curv-n-tangent.png"/></div></center>
            </li>
            <li>If total curvature from a curve from `b` to `a` is `le epsilon`,<br/>
                unit tangent vector at `b` is within `O(epsilon)` of  `(a-b)//||a-b||`</li>
            <ul>
                <li>Implies dependence on upper bound for curvature</li>
            </ul>
        </ul>
    </li>
    
    <li class="slide">
        <h1>From drafting to embedding: short chords, II</h1>
        
        <ul>
            <li>So `epsilon`-cover for all unit tangent vectors <br/>`=>epsilon`-cover for all `U(a-b)`, `a,b in M`
                on a low curvature path</li>
            <li>Cover of tangents: pick a collection of tangent subspaces</li>
            <ul><li>Cover `v` by some vector in nearby tangent subspace</li></ul>
            <li>Collection of size `O(mu_{:III:}( M )//epsilon^d)`</li>
            <ul><li>(`epsilon`-net in Gauss map image of `M` in Grassmann manifold)</li></ul>
        </ul>
            <br/><center><div><img src="f/tangent-enet.png"/></div></center>
    </li>
    
    <li class="slide">
        <h1>Short chords, tangents, reach</h1>
        
        <ul>
            <li>Suppose `a,b in M` very close in Euclidean distance, but very far in arc length</li>
            <li>Then tangent at `a` or `b` has nothing to do with `a-b`</li>
            <li>This can happen when the <em>reach</em> `rho` of `M` is small</li>
            <ul>
                <li>Smallest distance of point `p` to `M`, when `p` has two nearest neighbors in `M`</li>
                <li>A.K.A., reciprocal <em>condition number</em> of `M`</li>
            </ul>
            <li>Can dependence on reach be avoided?</li>            
         </ul>
        <br/>
        <center><div><img src="f/reach.png"/></div></center>
    </li>
    
    
    <li class="slide">
        <h1>Tangent vectors `approx` short chords : planar curves</h1>
        
        <ul>
            <li>How else to approximate short chords with tangent vectors of `M`?</li>
            <li>When `a,b in M` are connected by a <em>planar</em> curve in `M`,
                    that curve has a tangent vector parallel to `a-b`</li>
            <ul><li>"Planar" := contained in a plane (2-flat).</li></ul>
                <center><div><img src="f/planar-curve.png"/></div></center>
            <li>When `M` is a pure quadric, every `a,b in M` connected by a planar curve</li>
        </ul>
    </li>
    
    <li class="slide">
        <h1>Tangent vectors `approx` short chords: <br/>low-torsion curves</h1>
        
        <ul>
            <li>The condition "connected by a planar curve" is too strong</li>
                                <!--<div><img style="float:right" src="f/Frenet2.png"/></div>-->
            <li>What if `a,b in M` are connected by an "almost planar" curve?</li>
            <ul><li>Is there a tangent vector almost parallel" to `a-b`?</li></ul>
            <li>Yes, when "almost planar" is: total torsion of curve is small</li>
            <li>Torsion == twisting of osculating plane
            <ul><li>Curve with total torsion 0 is planar</li></ul></li>
            <li>So: `a,b in M` connected by low-curvature or low-torsion curve in `M`</li>
            <ul><li>`=>`nearby tangent vector</li><li>`=>`cover by tangent subspaces</li><li>`=>` short chords covered</li><li>`=>` bound for projection dimension `k`</li></ul>
        </ul>
    </li>
    
        <li class="slide">
        <h1>Concluding Remarks</h1>
        
        <ul>
            <li>Results here can only be an upper bound</li>
            <li>Easy to understand effect of Gaussian perturbations of subset</li>
            <li>Newer, similar schemes to JL [AC] also work: need only be linear, and preserve vector length w.h.p</li>
            <li>Better bound would be based entirely on average conditions</li>
            <li>Probably extendible to polyhedral manfolds</li>
            <li>Can we tell if projection dimension `k` is right one?</li>
            <ul><li>For example, via statistical tests on sample</li></ul>
        </ul>
        <br/><center style="color:red">Thank you for your attention</center>
    </li>



         <li class="slide">
            <h1>1024 by 764 Screen Size</h1>
            <div width="400" style="position:absolute; top:0; left:0;">
               <svg:svg>
                  <svg:rect width="1020" height="764" y="0" x="0" style="fill:blue;" />
               </svg:svg>
            </div>
         </li>
         
         
         
</ol>
</body>
</html>
