After analyzing the proof of Güntürk and Li (2021), Theorem 2.4, I believe I found explicit error bounds for the Micchelli–Felbecker polynomials (iterated Bernstein polynomials) when $f(x)$ has a given number of continuous derivatives. In the table below, let— - $||f(x)||_{C^k} = \max(\max_{0\le x \le 1} |f(x)|, \max_{0\le x \le 1, 1\le i\le k} |f^{(i)}(x)|),$ - $I$ be the identity operator, and - $B_n$ be the Bernstein operator of degree $n$. | No. of continuous derivatives | Polynomial | Error bound | --- | --- | --- | | 3 | $I-(I-B_n)^2$ | 0.5771 $||f(x)||_{C^3}/n^{3/2}$ | | 4 | $I-(I-B_n)^2$ | 0.3571 $||f(x)||_{C^4}/n^2$ | | 5 | $I-(I-B_n)^3$ | 4.0421 $||f(x)||_{C^5}/n^{5/2}$ | | 6 | $I-(I-B_n)^3$ | 4.8458 $||f(x)||_{C^6}/n^3$ | Providing the full proof for these error bounds is a bit tedious, so here is a sketch. The proof involves finding upper bounds for binomial moments (discussed later), then plugging them in to estimates for the Bernstein polynomial approximation error, as used in the paper's proof of Theorem 2.4, as well as derivatives for a function denoted as $F_{n,\alpha}$, along with the bound, mentioned in the proof of Theorem 2.3, that $||(B_n-I)^k|| \le 2^k$ for every $k\ge 1$. See later for Python code that calculates these error bounds. I would appreciate any corrections. ----- Finding these bounds relies, in part, on finding upper bounds for the $d$-th central moments of the binomial($n$, $p$) distribution. This is discussed in Molteni (2022); before Molteni there were almost no works on upper bounds for those moments. When $d$ is even, the moment is no greater than $A_d n^{d/2}$, where $A_d$ is a constant that depends on $d$ (DeVore and Lorentz 1993). The goal here is to find this constant. The $d$-th moment is upper bounded by $\frac{d!}{(d/2)!8^{d/2}} n^{d/2}$ for even $r\le 44$ (Molteni 2022). In addition: - The 3rd moment is bounded by $\frac{\sqrt{3}}{18\sqrt{n}} n^{3/2}$, so is bounded by $\frac{\sqrt{3}}{18} n^{3/2} < (963/10000) n^{3/2}$ for every $n\ge 1$. - Proof: The critical points of the moment are at $p=0$, $p=1$, $p=1/2-\sqrt{3}/6$, and $p=1/2+\sqrt{3}/6$. The moment equals 0 at the points 0 and 1, so that leaves the last two. Since the odd moments are antisymmetric (Skorski 2020), it's enough to take the third critical point, where the moment is positive. By inspection, the third moment at that critical point is decreasing for every $n\ge 1$. - The 5th moment is bounded by $0.083 n^{5/2}$. - Proof: Follows from evaluating the moment for each $1\le n \le 303$ at their critical points (resulting in $< 0.083 n^{5/2}$ for every such $n$), and for each $n\ge 304$, applying the bound $n/4+2 {n \choose 2}$ based on the upper bound given in sec. 3.1 of Skorski (2020). This latter bound, when divided by $n^{5/2}$, decreases with $n$, so it's enough to take its value at 304, namely $92188 < 0.05722/n^{5/2}$ for every $n\ge 304$. ------ The following is Python code I used to calculate the error bounds for the iterated Bernstein polynomials. It uses the SymPy computer algebra library. ``` def tna(r): if r%2==0 and r<=44: return (factorial(r)/(factorial(S(r)//2)*8**(S(r)//2))) if r==1: return 0 if r==3: return (S(963)/10000) if r==5: return (S(83)/1000) return 2*factorial(S(r)/2) raise ValueError def bnr(n,rr,derivs): # r=s-1, s is no. of cont. deriv. s=len(derivs)-1 # No. of continuous derivatives r=S(s-1) if r==0: # 1 cont. deriv; ordinary Bernstein with Sikkema constant return (S(108989)/100000)*Max(*derivs)/sqrt(n) if r==1: # 2 cont. deriv; ordinary Bernstein return Max(*derivs)/(S(8)*n) b=2**(S(r)/2)*Max(*derivs)/n**(S(r+1)/S(2)) c=tna(r+1)/S(factorial(r+1)) fnmd=[0 for i in range(r+1)] for m in range(2,r+1): fnmd[r+1-m]=Max(*derivs)*2**(r+1-m)*tna(m) rr2=((r+1+1)//2)-1 ret=S(0) for m in range(2,r+1): dd=[fnmd[r+1-m] for i in range((r+1-m)+1)] if rr2==1 and len(dd)-1>=2: ret+=(Max(*dd)/(S(8)*n))/n**(S(m)/2) elif rr2==1: ret+=((S(108989)/100000)*Max(*dd)/sqrt(n))/n**(S(m)/2) else: ret+=2**ceiling(S(m-1)/S(2))*bnr(n,rr2,dd)/n**(S(m)/2) ret+=b*c return ret n=symbols('n',nonnegative=True,integer=True) d0,d1,d2,d3,d4,d5,d6=symbols('d0 d1 d2 d3 d4 d5 d6',real=True,positive=True) print(bnr(n,2,[d0,d1,d2,d3]).simplify().n()) print(bnr(n,2,[d0,d1,d2,d3,d4]).simplify().n()) print(bnr(n,3,[d0,d1,d2,d3,d4,d5]).simplify().n()) print(bnr(n,3,[d0,d1,d2,d3,d4,d5,d6]).simplify().n()) ``` ## References - C.S. Güntürk, W. Li, "[Approximation of functions with one-bit neural networks](https://arxiv.org/pdf/2112.09181.pdf)", arXiv:2112.09181 [cs.LG], 2021/2023. - Skorski, Maciej. "Handy formulas for binomial moments." arXiv preprint arXiv:2012.06270 (2020). - DeVore, R.A., Lorentz, G.G., Constructive approximation, 1993. - Molteni, Giuseppe. "Explicit bounds for even moments of Bernstein’s polynomials." Journal of Approximation Theory 273 (2022): 105658.