Scores: (Drag to change)
Random Perturbation Checkbox
Code:
// Change this line to switch between functions. // f1: Hard Top-K. Discontinuous. // f2: Top-K shifted by rank_3. Continuous. // f3: Top-K shifted by average(rank[5:7]). Solves gradient explosion. window.fn = f1; function f1(x) { let y = [...x]; let k = 3; let idx = [...y.keys()].sort((a,b)=>y[b]-y[a]).slice(0,k); for (let i = 0; i < y.length; i++) if (!idx.includes(i)) y[i]=0; return y; } function f2(x) { let y = [...x]; let k = 3; let t = [...y].sort()[y.length - k - 1]; y = y.map(v => Math.max(0, v - t)); return y; } function mean(array) { return array.reduce((a, b) => a + b, 0) / array.length; } function f3(x) { let y = [...x]; let sorted = [...y].sort(); let t = mean(sorted.slice(5, 7)); y = y.map(v => Math.max(0, v - t)); return y; }
Transformed Scores: