๐Generative Predictive Control ๋ฆฌ๋ทฐ
- ์ ๋ฌธ๊ฐ ๋ฐ๋ชจ ์์ด ์๋ฎฌ๋ ์ด์ ์ผ๋ก ํ์ต ๊ฐ๋ฅํ ๋์ ์์ ์ ์ํ ์๋ก์ด ์์ฑํ ์์ธก ์ ์ด(Generative Predictive Control, GPC) ํ๋ ์์ํฌ๋ฅผ ์ ์ํฉ๋๋ค.
- GPC๋ ์ํ๋ง ๊ธฐ๋ฐ ์์ธก ์ ์ด(Sampling-based Predictive Control, SPC)๋ฅผ ํตํด ๊ณ ํ์ง ํ๋ จ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํ์ฉํ์ฌ ํ๋ฆ ์ผ์น(flow matching) ์ ์ฑ ์ ๊ฐ๋ ํ์ต ๋ฐฉ์์ผ๋ก ํ์ต์ํต๋๋ค.
- GPC๋ warm-start๋ฅผ ํตํด ๋น ๋ฅธ ๋์ ์์คํ ์์ ๋์ ์ฃผํ์์ ์ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ๋ค์ํ ๋ก๋ด ์์ ์์ SPC์ ์ ์ฌํ๊ฑฐ๋ ๋ ๋์ ์ฑ๋ฅ๊ณผ ํ๋ จ ์์ ์ฑ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.
Brief Review
์ด ๋
ผ๋ฌธ์ ๋ก๋ด ๊ณตํ์์ ๋น ๋ฅธ ๋ค์ด๋ด๋ฏน์ค๋ฅผ ๊ฐ์ง์ง๋ง ์ ๋ฌธ๊ฐ ๋ฐ๋ชจ๋ฅผ ์ป๊ธฐ ์ด๋ ค์ด ์์
๋ค์ ์ํด Generative Predictive Control (GPC)์ด๋ผ๋ ์๋ก์ด ์ง๋ ํ์ต ํ๋ ์์ํฌ๋ฅผ ์ ์ํฉ๋๋ค. ๊ธฐ์กด์ ์์ฑ ์ ์ฑ
๋ค์ ๋ฐ๋ชจ ๋ฐ์ดํฐ์ ํฌ๊ฒ ์์กดํ๊ณ ๋๋ฆฌ๊ฑฐ๋ ์ค์ ์ ์ธ(quasi-static) ์์
์ ํ์ ๋๋ ํ๊ณ๊ฐ ์์์ต๋๋ค. GPC๋ ์ํ๋ง ๊ธฐ๋ฐ ์์ธก ์ ์ด(Sampling-based Predictive Control, SPC)์ ์์ฑ ๋ชจ๋ธ๋ง ์ฌ์ด์ ๊น์ ์ฐ๊ฒฐ์ ํ์ฉํ์ฌ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
ํต์ฌ ๋ฐฉ๋ฒ๋ก ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- SPC์ ์์ฑ ๋ชจ๋ธ๋ง์ ์ฐ๊ฒฐ์ฑ:
- ๋ ผ๋ฌธ์ SPC ์ ๋ฐ์ดํธ ๊ท์น์ด ๋ ธ์ด์ฆ๊ฐ ์๋ ํ๊ฒ ๋ถํฌ์ ์ค์ฝ์ด(score)์ ๋ํ Monte Carlo ์ถ์ ์น์์ ๋ณด์ฌ์ค๋๋ค. ํนํ, ์ด๊ธฐ ์ํ x์ ์กฐ๊ฑดํ๋ ํ๊ฒ ๋ถํฌ p(U | x) \propto g(J(U; x))๋ฅผ ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์ U๋ T ๊ธธ์ด์ ์ก์ ์ํ์ค์ด๊ณ , J(U;x)๋ ๋น์ฉ ํจ์, g(\cdot)๋ SPC ์๊ณ ๋ฆฌ์ฆ๋ณ ๊ฐ์ค ํจ์์ ๋๋ค.
- ๋ ธ์ด์ฆ๊ฐ ์๋ ํ๊ฒ ๋ถํฌ p_\sigma(U | x) \propto E_{\tilde{U} \sim \mathcal{N}(U, \sigma^2)}[g(\tilde{U})]๋ฅผ ์ ์ํ ๋, ์ด ๋ถํฌ์ ์ค์ฝ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ฃผ์ด์ง๋๋ค: \nabla_U \log p_\sigma(U | x) = \frac{1}{\sigma^2} \frac{E_{\tilde{U} \sim \mathcal{N}(U, \sigma^2)}[g(\tilde{U})(\tilde{U} - U)]}{E_{\tilde{U} \sim \mathcal{N}(U, \sigma^2)}[g(\tilde{U})]}
- ์ด๋ SPC ์ ๋ฐ์ดํธ \bar{U}_k = \bar{U}_{k-1} + \sum_{i=1}^N g(J^{(i)})(U^{(i)} - \bar{U}_{k-1}) / \sum_{i=1}^N g(J^{(i)})๊ฐ ์ค์ฝ์ด ์์น(\bar{U}_k \leftarrow \bar{U}_{k-1} + \sigma^2 \nabla_{\bar{U}_{k-1}} \log p_\sigma(\bar{U}_{k-1} | x_{k-1}))์ ๋ํ Monte Carlo ์ถ์ ์น๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด ์ฐ๊ฒฐ์ ํตํด SPC์ ํ๊ท ์ก์ ์ํ์ค \bar{U}_k๋ฅผ ์ํ x_k์ ์กฐ๊ฑดํ๋ ์ต์ ์ก์ ๋ถํฌ p(U|x_k) \propto g(J(U;x_k))์์ ์ถ์ถ๋ ๊ฒ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค.
- GPC ํ๋ ์์ํฌ:
- GPC๋ SPC๋ฅผ ํตํด ์๋ฎฌ๋ ์ด์ ์์ ์์ฑ๋ ๋ฐ์ดํฐ (\bar{U}_k, x_k)๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ฐ ๋งค์นญ(flow matching) ๋ชจ๋ธ์ ํ์ตํฉ๋๋ค. ์ด ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ ๋ฒกํฐ ํ๋๋ฅผ ํ์ตํฉ๋๋ค: \dot{U} = v_\theta(U, x, t)
- ์ด๋ t=0์์์ \mathcal{N}(0, I) ์ํ U_0๋ฅผ t=1์์์ ํ๊ฒ ๋ถํฌ p(U|x_k)๋ก ๋ฐ์ด๋ ๋๋ค. ํ์ต์ ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด๋ถ ํ๋ก์ฐ ๋งค์นญ ์์ค์ ์ต์ํํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค: \mathcal{L}_{GPC}(\theta; U_0, \bar{U}_k, x_k, t) = \left\| v_\theta(t \bar{U}_k - (1-t)U_0, x_k, t) - (\bar{U}_k - U_0) \right\|^2
- ์ฌ๊ธฐ์ \bar{U}_k - \bar{U}_{k-1}์ \bar{U}_k - U_0 ๊ฐ์ ์ฝ์ฌ์ธ ์ ์ฌ๋์ ๊ธฐ๋ฐํ ๊ฐ์ค์น w(\bar{U}_k, \bar{U}_{k-1}, U_0)๋ฅผ ์ถ๊ฐํ์ฌ ํ๋ จ ํจ์จ์ ๋์ ๋๋ค.
- GPC๋ ์๋ฎฌ๋ ์ด์
๊ณผ ๋ชจ๋ธ ํ์ต์ ์ฌ๋ฌ ์ฌ์ดํด์ ์ํํฉ๋๋ค. ๊ฐ ์ฌ์ดํด์์ ๋ถ๋ถ์ ์ผ๋ก ํ๋ จ๋ ํ๋ก์ฐ ๋งค์นญ ์ ์ฑ
์์ ์์ฑ๋ ์ํ์ SPC๋ฅผ ๋ถํธ์คํธ๋ฉํ๋ ๋ฐ ์ฌ์ฉ๋์ด, ๊ฐ์ ๋ ์ํ๋ง ๋ถํฌ์ ๋ ๋์ ํ๋ จ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋
Algorithm 1์ ๋ช ์๋์ด ์์ผ๋ฉฐ, ๋ณ๋ ฌ ์๋ฎฌ๋ ์ด์ ํ๊ฒฝ, ๋ณ๋ ฌ ๋กค์์, ๋ชจ๋ธ ํ๋ จ ๋จ๊ณ์์์ ๋ณ๋ ฌํ๋ฅผ ํตํด ํจ์จ์ฑ์ ๊ทน๋ํํฉ๋๋ค.
- ํ๋ จ๋ GPC ์ ์ฑ
์ ํ์ฉ (Warm-starts):
- ํ๋ จ๋ GPC ์ ์ฑ
์ ์ฌ์ฉํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- GPC (์ง์ ๋ฐฐํฌ): ์ ์ฑ
์ ์ง์ ๋ฐฐํฌํ์ฌ, ํนํ
warm-starts๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ๋(receding-horizon) ๋ฐฉ์์ผ๋ก ์ก์ ์ ์ ์ฉํฉ๋๋ค.warm-starts๋ ํ๋ก์ฐ ์์ฑ ๊ณผ์ ์ U_0 = (1 - \alpha)\mathcal{N}(0, I) + \alpha \bar{U}_{k-1}์์ ์์ํ์ฌ, ์ด์ ์๊ฐ ๋จ๊ณ์ ์ํ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ๋๊ณ , ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ์์ ๋ฐ์ํ ์ ์๋ โjitteringโ ํ์์ ์ค์ฌ์ค๋๋ค. - GPC+ (๋ถํธ์คํธ๋ฉ): ์ ์ฑ ์ํ์ ์ผ๋ฐ์ ์ธ ๊ฐ์ฐ์์ ์ ์ ๋ถํฌ์์ ์จ ์ํ๊ณผ ํจ๊ป SPC์ ํ์ฉํฉ๋๋ค. ์ด๋ ์ถ๋ก ์ ๊ณ์ฐ ๋ฆฌ์์ค๋ฅผ ํ์ฉํ์ฌ ๋ ๋์ ์ฑ๋ฅ์ ๋ฌ์ฑํฉ๋๋ค.
- GPC (์ง์ ๋ฐฐํฌ): ์ ์ฑ
์ ์ง์ ๋ฐฐํฌํ์ฌ, ํนํ
- ํ๋ จ๋ GPC ์ ์ฑ
์ ์ฌ์ฉํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ์ํ ์ธ์ ๋๋ฉ์ธ ๋ฌด์์ํ (Risk-Aware Domain Randomization, DR):
- ๋๊ท๋ชจ ๋ณ๋ ฌ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ํ์ฉํ์ฌ SPC ๋กค์์ ์ ์ฌ๋ฌ ๋ฌด์์ ๋๋ฉ์ธ์์ ๊ฐ ์ก์ ์ํ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํ์ฌ ๋น์ฉ ๋ฐ์ดํฐ J^{(i,d)}๋ฅผ ์์งํฉ๋๋ค.
- ์ด๋ฅผ ํ๊ท (E_d[J^{(i,d)}]), ์ต์ ์ ๊ฒฝ์ฐ(\max_d[J^{(i,d)}]), ๋๋ ์กฐ๊ฑด๋ถ ์ํ ๊ฐ์น(CVaR)์ ๊ฐ์ ์ํ ๋ฉํธ๋ฆญ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ง๊ณํ์ฌ ์ ์ฑ ์ ๊ฒฌ๊ณ ์ฑ์ ๋์ ๋๋ค.
์คํ ๊ฒฐ๊ณผ:
๋
ผ๋ฌธ์ ์ง์(inverted pendulum)๋ถํฐ ์ธ๊ฐํ ๋ก๋ด(humanoid standup)์ ์ด๋ฅด๋ 7๊ฐ์ง ์์คํ
์ ๋ํด GPC๋ฅผ ํ๊ฐํ์ต๋๋ค. GPC๋ Multi-modal ์ถ๋ก ์ด ํ์ํ push-T ์์
๊ณผ ๋น ๋ฅธ ๋์ญํ์ด ํ์ํ double cart-pole๊ณผ ๊ฐ์ ์์
์ ๋์ ์ ์ด ์ฃผํ์์์ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์์ ๋ณด์ฌ์ฃผ์์ต๋๋ค. ํนํ, warm-starts๋ double cart-pole๊ณผ ๊ฐ์ ๋์ ์์คํ
์์ ๋ถ๋๋ฌ์ด ๊ณ ์ฃผํ์ ์ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐ ์ค์ํ์ต๋๋ค. GPC๋ SPC์ ์ ์ฌํ๊ฑฐ๋ ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์๊ณ , GPC+๋ ๋ชจ๋ ์์์์ ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ค์ ์ฑ๋ฅ์ ๋ฅ๊ฐํ์ต๋๋ค. ํ๋ จ ์์ ์ฑ ์ธก๋ฉด์์๋ ์ง๋ ํ์ต์ ์ฅ์ ์ ๋ณด์๊ณ , ์ํ ์ธ์ DR ์ ๋ต์ ๋ชจ๋ธ ์ค์ฐจ๊ฐ ์๋ ์๋๋ฆฌ์ค์์ ์ ์ฑ
์ ๊ฒฌ๊ณ ์ฑ์ ํฅ์์์ผฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ฅ ํฌ๊ณ ์ด๋ ค์ด humanoid standup ์์์์๋ GPC ์ ์ฑ
๋ง์ผ๋ก๋ ์์ ์ ์ธ ์ฑ๋ฅ์ ๋ด๊ธฐ ์ด๋ ค์ ์ผ๋ฉฐ, GPC+๋ง์ด ํจ๊ณผ์ ์ด์์ต๋๋ค. ์ด๋ ํ์ฌ ๋ฐฉ๋ฒ์ ํ์ฅ์ฑ ํ๊ณ๋ฅผ ์์ฌํฉ๋๋ค.
๊ฒฐ๋ก ๋ฐ ํ๊ณ:
GPC๋ ์๋ฎฌ๋ ์ด์
ํ๊ธฐ ์ฝ์ง๋ง ๋ฐ๋ชจํ๊ธฐ ์ด๋ ค์ด ๋์ ์์
์ ๋ํ ํ๋ก์ฐ ๋งค์นญ ์ ์ฑ
์ ํ์ตํ๊ธฐ ์ํ ์ ๋งํ ํ๋ ์์ํฌ์
๋๋ค. SPC์์ ์ฐ๊ฒฐ์ฑ์ ํตํด ์ ๋ฌธ๊ฐ ๋ฐ๋ชจ ์์ด ์ง๋ ํ์ต์ ์ํ ํ๋ จ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ , warm-starts๋ ์๊ฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ฉฐ ์ค์๊ฐ ๊ณ ์ฃผํ์ ์ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ฃผ์ ํ๊ณ๋ก๋ ๊ฐ์ฅ ๋ณต์กํ ์์
์์์ ์ ํ๋ ํจ๊ณผ์ฑ, ๋น๊ต์ ๋์ ์ํ ๋ณต์ก์ฑ(๋จ์ผ ํ๋ จ ๋ฐ์ดํฐ ํฌ์ธํธ ์์ฑ์ N๋ฒ์ ์๋ฎฌ๋ ์ด์
ํ์), ๊ทธ๋ฆฌ๊ณ ์ก์
์ํ์ค ํํ์ ๋จ์์ฑ ๋ฑ์ด ์ธ๊ธ๋์์ต๋๋ค. ํฅํ ์ฐ๊ตฌ๋ ๊ฐ์น ํจ์ ํ์ต ํตํฉ, ํ๋์จ์ด ๊ฒ์ฆ, ์ผ๋ฐํ๋ Multi-task ์ ์ฑ
ํ๋ จ, ๊ทธ๋ฆฌ๊ณ ์ ์ฝ ์กฐ๊ฑด์ด ์๋ ์์ฑ ๋ชจ๋ธ๋ง ๋ฑ์ ํฌํจํ ๊ฒ์
๋๋ค.