dimension requirements for gaussian random matrix to be a restricted isometry with high probability

[[concept]]

[!themes] Topics

Evaluation Error: SyntaxError: Unexpected token '>'

at DataviewInlineApi.eval (plugin:dataview:19027:21)
at evalInContext (plugin:dataview:19028:7)
at asyncEvalInContext (plugin:dataview:19038:32)
at DataviewJSRenderer.render (plugin:dataview:19064:19)
at DataviewJSRenderer.onload (plugin:dataview:18606:14)
at DataviewJSRenderer.load (app://obsidian.md/app.js:1:1182416)
at DataviewApi.executeJs (plugin:dataview:19607:18)
at DataviewCompiler.eval (plugin:digitalgarden:10763:23)
at Generator.next (<anonymous>)
at eval (plugin:digitalgarden:90:61)

Theorem

Suppose k≥1 and δ∈(0,1) and d≥64klog⁡mδ2. Let G∼N(0,1d)⊗d×m. Then

P[G has (k,δ)-RIP]≥1−2mk

(We want to reduce the number of measurements required to ensure we can recover x from only seeing y=Gx)

Proof

Suppose S⊂[m],|S|=k and x∈Rm. Define

  1. x(S)∈Rk as the restriction to indices in S
  2. G(S)∈Rd×k be the restriction to columns with indices in S

If ||x||0≤k and all non-zero indices are in S, ie supp(x)⊂S, then we have

Gx=G(S)x(S) and ||x||=||x(S)||

In this case, the (k,δ) RIP is equivalent to requiring that
(for all S⊂[m] with |S|=k) we have

(1-\delta)\lvert \lvert x^{(S)} \rvert \rvert { #2} \leq \lvert \lvert G^{(S)}x^{(S)} \rvert \rvert { #2} \leq (1+\delta) \lvert \lvert x^{(S)} \rvert \rvert { #2}

Now, let x^(S):=x(S)||x(S)||. Then

⟺−δ≤x^(S)(G(S)TG(S)−Ik)x^(S)≤δ⟺||G(S)TG(S)−Ik||≤δ

So, applying the union bound, we can see

P[G not (k,δ)-RIP]≤UB∑S⊆[m],|S|=kP[||G(S)TG(S)−I+k||>δ]

Now, Law(G(S))=N(0,1d)⊗d×m. So introduce H∼N(0,1)⊗k×d. Then we have

P[G not (k,δ)-RIP]≤(mk)P[||HHT−dIk||>δd](∗)≤(mk)⋅2exp⁡(−18min{δ2d24d,δd2})

Where we get (∗) from the high probability bound for operator norm of difference for Gaussian covariance matrix we saw last time. And continuing the calculation, we see

P[G not (k,δ)-RIP]≤mk⋅2exp⁡(−δ232d)=2exp⁡(klog⁡m−δ232d)≤2exp⁡(−klog⁡m)=2mk◼

References

References

See Also

Mentions

Mentions

const modules = await cJS()

const COLUMNS = [  
	{ id: "Name", value: page => page.$link },  
	{ id: "Last Modified", value: page => modules.dateTime.getLastMod(page) },
];  
  
return function View() {  
	const current = dc.useCurrentFile();
// Selecting `#game` pages, for example. 
	let queryString = `@page and linksto(${current.$link})`;
	let pages = dc.useQuery(queryString);
	
	// check types
	pages = pages.filter( (p) => !modules.typeCheck.checkAll(p, current) ).sort()
	
	
	return <dc.Table columns={COLUMNS} rows={pages} paging={20}/>;  
}  

const { dateTime } = await cJS()

return function View() {
	const file = dc.useCurrentFile();
	return <p class="dv-modified">Created {dateTime.getCreated(file)}     ֍     Last Modified {dateTime.getLastMod(file)}</p>
}