Update logbook: Repro - Solving Positive Linear Programs with Differential Privacy
Browse files
logbook.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
| 10 |
"icml2026-repro",
|
| 11 |
"paper-zlSioMUQ2Y"
|
| 12 |
],
|
| 13 |
-
"updated_at": "2026-07-17T10:
|
| 14 |
"root": {
|
| 15 |
"slug": "index",
|
| 16 |
"title": "Repro - Solving Positive Linear Programs with Differential Privacy",
|
|
@@ -66,6 +66,6 @@
|
|
| 66 |
}
|
| 67 |
]
|
| 68 |
},
|
| 69 |
-
"agent_view_tokens":
|
| 70 |
-
"revision": "
|
| 71 |
}
|
|
|
|
| 10 |
"icml2026-repro",
|
| 11 |
"paper-zlSioMUQ2Y"
|
| 12 |
],
|
| 13 |
+
"updated_at": "2026-07-17T10:22:36+00:00",
|
| 14 |
"root": {
|
| 15 |
"slug": "index",
|
| 16 |
"title": "Repro - Solving Positive Linear Programs with Differential Privacy",
|
|
|
|
| 66 |
}
|
| 67 |
]
|
| 68 |
},
|
| 69 |
+
"agent_view_tokens": 18253,
|
| 70 |
+
"revision": "1784283756347641000"
|
| 71 |
}
|
pages/claim-5-mwu-variants-for-mixed-packing-covering-algorithms-3-4/page.md
CHANGED
|
@@ -92,3 +92,49 @@ Each iteration is two truncated-softmax bisections plus two matvecs over 2M rows
|
|
| 92 |
- Algorithm 3 end-to-end under privacy, at non-vacuous scale: **0 / 4M violations** β
|
| 93 |
- The scale-selection step is **not** broken β it was simply being asked to work below the scale its guarantee addresses β
|
| 94 |
- **Algorithm 4** (data-independent variant): implemented, exponents exact (`d^3`, `alpha^-6`), but **only checked at bound level** β its `s ~ d^3/(alpha^6 eps)` needs a far larger `n` than we tested to bite. This is the one part of Claim 5 that remains unverified end-to-end.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
- Algorithm 3 end-to-end under privacy, at non-vacuous scale: **0 / 4M violations** β
|
| 93 |
- The scale-selection step is **not** broken β it was simply being asked to work below the scale its guarantee addresses β
|
| 94 |
- **Algorithm 4** (data-independent variant): implemented, exponents exact (`d^3`, `alpha^-6`), but **only checked at bound level** β its `s ~ d^3/(alpha^6 eps)` needs a far larger `n` than we tested to bite. This is the one part of Claim 5 that remains unverified end-to-end.
|
| 95 |
+
|
| 96 |
+
|
| 97 |
+
---
|
| 98 |
+
<!-- trackio-cell
|
| 99 |
+
{"type": "markdown", "id": "cell_8e037c665cac", "created_at": "2026-07-17T10:22:33+00:00", "title": "β
Algorithm 4 verified β Claim 5 fully reproduced"}
|
| 100 |
+
-->
|
| 101 |
+
# β
Algorithm 4 verified too β Claim 5 is now **fully reproduced**
|
| 102 |
+
|
| 103 |
+
The update above closed Algorithm 3 but left Algorithm 4 (the data-independent variant) as 'checked at bound level only β its `s ~ d^3/(alpha^6 eps)` needs a far larger `n` than we tested'. **That was wrong as well**, and this one was not even expensive: **89 seconds total.**
|
| 104 |
+
|
| 105 |
+
**Job:** [`6a5a01d7bee6ee1cf4ecd1cf`](https://huggingface.co/jobs/txus/6a5a01d7bee6ee1cf4ecd1cf) Β· 1Γ L4 Β· **~$0.02**
|
| 106 |
+
|
| 107 |
+
### Why it was cheap, and why we assumed otherwise
|
| 108 |
+
|
| 109 |
+
We had lumped Algorithm 4 in with Algorithm 3's cost. But their iteration counts are structurally different:
|
| 110 |
+
|
| 111 |
+
| | T | at n = 4e6, d = 6, alpha = 0.5 |
|
| 112 |
+
|---|---|---|
|
| 113 |
+
| **Alg 3** (data-dependent) | `Theta((S+R) V log n / alpha^3)` | 140,623 iters (~18 min) |
|
| 114 |
+
| **Alg 4** (data-independent) | `Theta(log n Β· d^2 / alpha^4)` | **8,757 iters (~63 s)** |
|
| 115 |
+
|
| 116 |
+
Algorithm 4's `T` carries **no `V` and no `S+R`** β that is the whole point of the data-independent construction, and it means the expensive part of Algorithm 3 simply is not there. We never checked; we inherited the assumption.
|
| 117 |
+
|
| 118 |
+
### Result β all three configurations non-vacuous, all at full uncapped T
|
| 119 |
+
|
| 120 |
+
| alpha | T | s | **s/n** | scale-EM error | MaxEstimator filtered | **violations @ private scale** |
|
| 121 |
+
|---|---|---|---|---|---|---|
|
| 122 |
+
| **0.8** | 1,337 | 1.35e5 | **0.034** β | 6,202 (**0.16%** of n) β | 0 rows | **1 / 4,000,000** |
|
| 123 |
+
| **0.7** | 2,280 | 3.15e5 | **0.079** β | 8,276 (**0.21%** of n) β | 0 rows | **0 / 4,000,000** |
|
| 124 |
+
| **0.5** | 8,757 | 2.64e6 | **0.660** β | 17,179 (**0.43%** of n) β | 0 rows | **0 / 4,000,000** |
|
| 125 |
+
|
| 126 |
+
Algorithm 4 β with its `MaxEstimator` pre-processing (Lemma 22), per-column filtering (Lemma 23) and the `C_ij <- min{C_ij + alpha M_j/d, 40 d M_j/alpha}` clip β satisfies Theorem 11.2 at a scale where the theorem is **asserting something**: it permits 134,800 violations at `alpha = 0.8` and the algorithm produces **one**.
|
| 127 |
+
|
| 128 |
+
`MaxEstimator` filtered **0 rows** in every run, which is the correct behaviour here rather than a no-op: it estimates `M_j = max_i P_ij` privately and drops rows at or above it, and our `P` has no outlier rows, so nothing should be dropped. Lemma 23 bounds the filtered count by `O(d^2(log log M/m + log d/beta) log(M/m)/eps)` β it is an upper bound, and 0 is consistent with it.
|
| 129 |
+
|
| 130 |
+
### Claim 5: **reproduced**
|
| 131 |
+
|
| 132 |
+
| | status |
|
| 133 |
+
|---|---|
|
| 134 |
+
| Alg 3 MWU engine (Lemma 21 ratio) | β
holds locally at full T and at n = 4e6 |
|
| 135 |
+
| Alg 3 end-to-end, private, non-vacuous | β
**0 / 4,000,000** |
|
| 136 |
+
| Alg 4 implemented incl. MaxEstimator | β
|
|
| 137 |
+
| Alg 4 exponents (`d^3`, `alpha^-6`) | β
exact |
|
| 138 |
+
| Alg 4 end-to-end, private, non-vacuous | β
**0β1 / 4,000,000** |
|
| 139 |
+
|
| 140 |
+
Both algorithms of Section 5 exist, are implementable from the pseudocode, have the stated bounds, and deliver their guarantee at scale. **Nothing in Claim 5 remains unverified.**
|