In[]:=
deploy
Thu 23 Feb 2023 11:24:27
In[]:=
Quit
Main
Main
In[]:=
d=1000;numSamples=200000;batchSizes=Range[1,101,10];If[d==100,AppendTo[batchSizes,d]];(*Wishartchecks*)outer2[x_]:=Outer[Times,x,x];standardColors=ColorData[97,"ColorList"];nf[x_]:=NumberForm[x,{3,2}];h=Table[,{i,1,d}]//N;sigma=DiagonalMatrix[h];mu=Table[0/d,d];H=sigma+outer2[mu];Assert[Total[mu]==0];gaussianSampler[diag_]:=With{d=Length[diag]},Compile{{n,_Integer}},Module{vals},vals=;Ef1=+2Tr[H.H]-2;Efinf=Tr[H.H];harmonicMean[min_,max_,b_]:=+;values=Table[expectation[1/f[#]&,b],{b,batchSizes}];predictVal[b_]:=harmonicMean[1/Ef1,1/Efinf,b];predictedPlot=Plot[predictVal[b],{b,Min[batchSizes],Max[batchSizes]},PlotRange->All,PlotStyle->standardColors[[2]],PlotLegends->{"predicted"}];observedPlot=ListPlot[Thread[{batchSizes,values}],Filling->Axis,PlotLegends->{"observed"},PlotRange->All];Print"FractionBox[\(1\), \(E || x\*SuperscriptBox[\(||\), \(4\)]\)]=",nf@;Print"=",nf@;Print[StringForm["observed for d=`` and b=`` is ``",nf@d,nf@Last@batchSizes,nf@Last@values]];boundsPlot=PlotLabeled,"FractionBox[\(1\), \(E || x\*SuperscriptBox[\(||\), \(4\)]\)]",Above,Labeled,"",Above,{x,Min[batchSizes],Max[batchSizes]},PlotStyle->Dashed;ShowpredictedPlot,observedPlot,boundsPlot,PlotRange->0,,PlotLabel->StringForm["Frobenius norms in d=`` dimensions",d],AxesLabel->{"b","Ef(b"},AxesOrigin->{0,0}]
-1
i
diag
*#&/@RandomVariate[NormalDistribution[],{n,d}];sampler=gaussianSampler[h];(*estimatesaveragevalueoffunconsamplesizes*)expectation[func_,s_]:=With[{numBatches=Max[1,Floor[Sqrt[s]*numSamples/(s*d)]]},Nest[func[sampler@s]+#&,0.,numBatches]/numBatches];f[x_]:=2
(Norm[x.x/Length[x],"Frobenius"])
2
Tr[H]
2
(mu.mu)
-1
1
min
1
b
1
max
b-1
b
1
Ef1
1
Tr()
2
H
1
Efinf
1
Ef1
1
Efinf
1
Tr()
2
H
1.2
Efinf
2
-1
)\),
FractionBox[\(1\), \(E || x\*SuperscriptBox[\(||\), \(4\)]\)]=0.02
1
Tr()
2
H
observed for d=1000 and b=101 is 0.44
Out[]=
In[]:=
f[x_]:=;Ef1=Tr[H];Efinf=Norm[H];values=Table[bexpectation[1/f[#]&,b],{b,batchSizes}];predictVal[b_]:=harmonicMean[1/Ef1,1/Efinf,b];Print"FractionBox[\(1\), \(E || x\*SuperscriptBox[\(||\), \(2\)]\)]=",nf@;Print"FractionBox[\(1\), \(\(||\)\(H\)\(||\)\)]=",nf@;boundsPlot=PlotLabeled,"FractionBox[\(1\), \(E || x\*SuperscriptBox[\(||\), \(2\)]\)]",Above,Labeled,"FractionBox[\(1\), \(\(||\)\(H\)\(||\)\)]",Above,{x,Min[batchSizes],Max[batchSizes]},PlotStyle->Dashed;predictedPlot=Plot[predictVal[b],{b,Min[batchSizes],Max[batchSizes]},PlotRange->All,PlotStyle->standardColors[[2]],PlotLegends->{"predicted"}];observedPlot=ListPlot[Thread[{batchSizes,values}],Filling->Axis,PlotLegends->{"observed"},PlotRange->All,AxesOrigin->{0,0}];ShowpredictedPlot,observedPlot,boundsPlot,PlotRange->0,,PlotRange->All,PlotLegends->{"observed"},PlotLabel->StringForm["Spectral norms in d=`` dimensions",d],AxesLabel->{"b","b Eg(b"},AxesOrigin->{0,0}]
2
Norm[x]
1
Ef1
1
Efinf
1
Ef1
1
Efinf
1.2
Efinf
2
-2
)\),
FractionBox[\(1\), \(E || x\*SuperscriptBox[\(||\), \(2\)]\)]=0.13
FractionBox[\(1\), \(\(||\)\(H\)\(||\)\)]=1.00
Out[]=
Effective rank R
Effective rank R
In[]:=
numSamples=10000;batchSizes=Range[1,101,10];effRankR[X_]:=;values=Table[expectation[effRankR,b],{b,batchSizes}];R=;predictVal[b_]:=;predictedPlot=PlotpredictVal[b],{b,Min[batchSizes],Max[batchSizes]},PlotRange->All,PlotStyle->standardColors[[2]],PlotLegends->"";observedPlot=ListPlot[Thread[{batchSizes,values}],Filling->Axis,PlotLegends->{"observed"},PlotRange->All,AxesOrigin->{0,0}];boundsPlot=Plot[{Labeled[R,"R",Above],Labeled[1,"1",Above]},{x,Min[batchSizes],Max[batchSizes]},PlotStyle->Dashed];Show[predictedPlot,observedPlot,boundsPlot,PlotLabel->"Effective rank R of wishart matrices",AxesLabel->{"b",""}]
2
Tr[X.X]
Tr[X.X.X.X]
2
Total[h]
Total[h*h]
bR+2
b+R+1
bR+2
b+R+1
e
R
Effective rank r
Effective rank r
Equivalence with WishartMatrixDistribution
Equivalence with WishartMatrixDistribution
Symbolic solution + checks
Symbolic solution + checks