|
|
|
@ -9,7 +9,7 @@ |
|
|
|
title: "Diffusion and joint laws", |
|
|
|
subtitle: ["And how time might help learn them"], |
|
|
|
authors: ("Ramon"), |
|
|
|
info: [#link("https://unige.ch")], |
|
|
|
info: [Code: #link("https://git.ramoncalvo.com/noctrog/flow-points")], |
|
|
|
) |
|
|
|
|
|
|
|
// #table-of-contents() |
|
|
|
@ -30,21 +30,63 @@ |
|
|
|
#image("./results/p_data.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Norm. flow after 500.000 steps")[ |
|
|
|
- Samples drawn from the Flow after training for 500.000 steps |
|
|
|
#image("./results/mlp_l4_h64/scatter_500000.png") |
|
|
|
#slide(title: "Flow matching after 1.000.000 steps")[ |
|
|
|
#image("./results/mlp_l4_h64/scatter_1000000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Brownian motion p_init")[ |
|
|
|
- Generation process: sample form $z_0 ~ p_"init"$, do 1 brownian step and $z_1 ~ z_0 + cal(N)(0, sigma^2)$ |
|
|
|
#slide(title: "Flow matching after 2.000.000 steps")[ |
|
|
|
#image("./results/mlp_l4_h64/scatter_2000000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Flow matching after 3.000.000 steps")[ |
|
|
|
#image("./results/mlp_l4_h64/scatter_3000000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Flow matching after 4.000.000 steps")[ |
|
|
|
#image("./results/mlp_l4_h64/scatter_4000000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Flow matching after 5.000.000 steps")[ |
|
|
|
#image("./results/mlp_l4_h64/scatter_4900000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Brownian motion p_data")[ |
|
|
|
- Generation process: sample form $z_0 ~ p_"data"$, do 1 brownian step and $z_1 ~ z_0 + cal(N)(0, sigma^2)$ |
|
|
|
#image("./results/brownian.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Brownian motion after 1.000.000 steps ")[ |
|
|
|
#image("./results/mlp_b_l4_h64/scatter_1000000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Brownian motion after 2.000.000 steps ")[ |
|
|
|
#image("./results/mlp_b_l4_h64/scatter_2000000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Brownian motion after 3.000.000 steps ")[ |
|
|
|
#image("./results/mlp_b_l4_h64/scatter_3000000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Brownian motion after 4.000.000 steps ")[ |
|
|
|
#image("./results/mlp_b_l4_h64/scatter_4000000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Brownian motion after 5.000.000 steps ")[ |
|
|
|
#image("./results/mlp_b_l4_h64/scatter_4900000.png") |
|
|
|
] |
|
|
|
|
|
|
|
#slide(title: "Brownian motion training")[ |
|
|
|
- The vanilla Flow maching loss is: |
|
|
|
$ |
|
|
|
cal(L)_"CFM" = EE_(t ~ cal(U)(0, 1) \ z ~ p_"data" \ x ~ p_t (dot | z))[ || u_t^theta (x) - u_t^"target" (x | z) ||^2 ] |
|
|
|
$ |
|
|
|
- The new Flow Matching loss becomes: |
|
|
|
$ |
|
|
|
cal(L)_"CFM" = EE_(t ~ cal(U)(0, 1), z_0 ~ p_"data", z_1 ~ z_0 + cal(N)(0, sigma^2), x ~ p_t (dot, z_1))[ ||u_t^theta (x | z_0) - u_t^"target" (x | z_1) ||^2 ] |
|
|
|
cal(L)_"CFM" = EE_(t ~ cal(U)(0, 1) \ z_0 ~ p_"data" \ z_1 ~ z_0 + cal(N)(0, sigma^2) \ x ~ p_t (dot | z_1))[ ||u_t^theta (x | z_0) - u_t^"target" (x | z_1) ||^2 ] |
|
|
|
$ |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
#slide(title: "Vanilla Flow Matching vs. Brownian Mov. Flow Matching (BFM)")[ |
|
|
|
- BFM: worse annulus constraint compliance, better wedge constraint compliance. |
|
|
|
#image("./results/grouped_experiments_constraint_stats.png") |
|
|
|
] |
|
|
|
|