์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ํ์ด์ฌ์ ๊ฐ๋ ฅํจ์ ํ์ฉํ์ธ์. ์งํ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ, ํต์ฌ ๊ฐ๋ , ์ค์ ์ ์ฉ ์ฌ๋ก ๋ฐ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๊ตฌํ์ฌ ๋ณต์กํ ๊ธ๋ก๋ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ธ์.
ํ์ด์ฌ ์ ์ ํ๋ก๊ทธ๋๋ฐ: ๋ณต์กํ ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์งํ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ
๋ณต์กํ ๋ฐ์ดํฐ์ ์ญ๋์ ์ธ ํ๊ฒฝ์ผ๋ก ์ ์ ๋ ํ์ฑ๋๋ ์ธ์์์ ์ ํต์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ ๊ทผ ๋ฐฉ์์ ์ข ์ข ํ๊ณ์ ๋ถ๋ชํ๋๋ค. ๊ธ๋ก๋ฒ ๊ณต๊ธ๋ง ์ต์ ํ๋ถํฐ ์๋ก์ด ๊ณผํ์ ๊ฐ์ค ๋ฐ๊ฒฌ, ์ ์ํ ์ธ๊ณต์ง๋ฅ ์ค๊ณ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ง์ ๊ณผ์ ๋ ๊ธฐ์กด์ ๊ท์น ๊ธฐ๋ฐ ๋๋ ์ฒ ์ ํ ๊ฒ์ ๋ฐฉ๋ฒ์ผ๋ก๋ ํด๊ฒฐํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ ์ ํ๋ก๊ทธ๋๋ฐ(GP)์ด ๋ฐ๋ก ์ฌ๊ธฐ์ ์์ต๋๋ค. ์ด๋ ์์ฐ ์งํ์ ์๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์๋์ผ๋ก ์์ฑํ๋ ๊ฐ๋ ฅํ ํจ๋ฌ๋ค์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ด๋ฒ์ํ ์ฑํ๊ณผ ํ์ ์ ์ค์ฌ์๋ ๊ฐ๋ ์ฑ, ๋ค์ฌ๋ค๋ฅํจ, ํ๋ถํ ๊ณผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํ๊ณ๋ก ์ ๋ช ํ ์ธ์ด์ธ ํ์ด์ฌ์ด ์์ต๋๋ค.
์ด "์ข ํฉ" ๊ฐ์ด๋๋ ํ์ด์ฌ ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ๋งคํน์ ์ธ ์์ญ์ ํ๊ตฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์งํ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ์ ๊ธฐ๋ฐ์ด ๋๋ ๊ธฐ๋ณธ ๊ฐ๋ ์ ํ์ํ๊ณ , GP ์์คํ ๊ตฌ์ถ์ ์ค์ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉฐ, ๋ค์ํ ๊ธ๋ก๋ฒ ์ ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ณ , ์ด ์ต์ฒจ๋จ ๋ถ์ผ๋ฅผ ์ง์ํ๋ ์ฃผ์ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๊ฐํฉ๋๋ค. ๋ฐ์ดํฐ ๊ณผํ์, ์ํํธ์จ์ด ์์ง๋์ด, ์ฐ๊ตฌ์ ๋๋ ๋จ์ํ ๊ธฐ์ ์ ํธ๊ฐ์ด๋ , ํ์ด์ฌ์ผ๋ก GP๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ธ๋ฅ์ ๊ฐ์ฅ ์๊ธํ ๋ฌธ์ ์ ๋ํ ํ์ ์ ์ธ ์๋ฃจ์ ์ ๋ฌธ์ ์ด์ด์ค ๊ฒ์ ๋๋ค.
์ ์ ํ๋ก๊ทธ๋๋ฐ์ด๋ ๋ฌด์์ธ๊ฐ? ์งํ์ ๊ด์
์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์ฐฐ์ค ๋ค์์ ์์ฐ ์ ํ ์ด๋ก ์์ ์๊ฐ์ ๋ฐ์ ์งํ ๊ณ์ฐ์ ํ์ ๋ถ์ผ์ ๋๋ค. GP๋ ์๋ฃจ์ ์ ๋ช ์์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ๋ ๋์ , ์ ํ, ๊ต์ฐจ(์ฌ์กฐํฉ), ๋์ฐ๋ณ์ด์ ๊ฐ์ ์๋ฌผํ์ ์งํ์ ์ ์ฌํ ๊ณผ์ ์ ํตํด ํ๋ณด ํ๋ก๊ทธ๋จ์ ์ง๋จ์ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ ํฉ๋๋ค. ๋ชฉํ๋ ์ต์ ์ ํ๋ก๊ทธ๋จ์ ์ ํํ ํน์ฑ์ด ์๋ ค์ง์ง ์์ ๊ฒฝ์ฐ์๋ ์ง์ ๋ ์์ ์ ์ต์ ์ผ๋ก ๋๋ ๊ฑฐ์ ์ต์ ์ผ๋ก ์ํํ๋ ํ๋ก๊ทธ๋จ์ ์ฐพ๋ ๊ฒ์ ๋๋ค.
์ ์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ ์ ์๊ณ ๋ฆฌ์ฆ(GA)์ ๊ตฌ๋ถ
์ข ์ข ํผ๋๋์ง๋ง, ์ ์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ ์ ์๊ณ ๋ฆฌ์ฆ(GA)์ ์ฐจ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ ๋ค ์งํ ์๊ณ ๋ฆฌ์ฆ์ด์ง๋ง, ๋ฌด์์ ์งํ์ํค๋๊ฐ์์ ์ฐจ์ด๊ฐ ๋ฉ๋๋ค:
- ์ ์ ์๊ณ ๋ฆฌ์ฆ(GA): ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ์ ๋งค๊ฐ๋ณ์ ๋๋ ํน์ ์๋ฃจ์ ์ ๋ํ๋ด๋ ๊ณ ์ ๊ธธ์ด ๋ฌธ์์ด(์ข ์ข ์ด์ง ๋๋ ์ซ์)์ ์งํ์ํต๋๋ค. ์๋ฅผ ๋ค์ด, GA๋ ์ ๊ฒฝ๋ง์ ๊ฐ์ค์น๋ฅผ ์ต์ ํํ๊ฑฐ๋ ์ ์กฐ ์์ ์ ์ผ์ ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์๋ฃจ์ ์ ๊ตฌ์กฐ๋ ๋ฏธ๋ฆฌ ์ ์๋์ด ์์ผ๋ฉฐ, ๊ฐ๋ง ์งํํฉ๋๋ค.
- ์ ์ ํ๋ก๊ทธ๋๋ฐ(GP): ํฌ๊ธฐ, ๋ชจ์, ๋ณต์ก์ฑ์ด ๋ค์ํ ์ ์๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ ์์ฒด๋ฅผ ์งํ์ํต๋๋ค. ์ด๋ฌํ ํ๋ก๊ทธ๋จ์ ์ข ์ข ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ํํ๋๋ฉฐ, ๋ด๋ถ ๋ ธ๋๋ ํจ์(์: ์ฐ์ ์ฐ์ฐ์, ๋ ผ๋ฆฌ ์กฐ๊ฑด)์ด๊ณ ๋ฆฌํ ๋ ธ๋๋ ํฐ๋ฏธ๋(์: ๋ณ์, ์์)์ ๋๋ค. GP๋ ์ต์ ์ ๋งค๊ฐ๋ณ์๋ฟ๋ง ์๋๋ผ ์ต์ ์ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ฅผ ํ์ํฉ๋๋ค. ์์์ ๊ตฌ์กฐ๋ฅผ ์งํ์ํฌ ์ ์๋ ์ด ๋ฅ๋ ฅ์ GP๋ฅผ ํด๊ฒฐ์ฑ ์ ํํ๊ฐ ์๋ ค์ง์ง ์์๊ฑฐ๋ ๋งค์ฐ ๊ฐ๋ณ์ ์ธ ๋ฌธ์ ์ ๋ํ ์๋ก์ด ํด๊ฒฐ์ฑ ์ ๋ฐ๊ฒฌํ๋ ๋ฐ ๋งค์ฐ ๊ฐ๋ ฅํ๊ฒ ๋ง๋ญ๋๋ค.
๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ค๋ช
ํ๋ ์ต์์ ์ํ์ ๊ณต์์ ์ฐพ์ผ๋ ค๊ณ ํ๋ค๊ณ ์์ํด ๋ณด์ธ์. GA๋ ๋ฏธ๋ฆฌ ์ ์๋ ๋คํญ์, ์๋ฅผ ๋ค์ด ax^2 + bx + c์ ๊ณ์๋ฅผ ์ต์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ GP๋ ์ ์ฒด ๊ณต์์ ์งํ์์ผ sin(x) * log(y) + 3*z์ ๊ฐ์ ๊ฒ์ ์ฌ์ ๊ฐ์ ์์ด ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด GP์ ๊ทผ๋ณธ์ ์ธ ํ์
๋๋ค.
์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ํ์ด์ฌ์ ํ์ํ ํ
์ธ๊ณต์ง๋ฅ, ๋จธ์ ๋ฌ๋, ๊ณผํ ์ปดํจํ ๋ถ์ผ์์ ํ์ด์ฌ์ด ์ง๋ฐฐ์ ์ธ ์ธ์ด๋ก ๋ถ์ํ ๊ฒ์ ์ฐ์ฐ์ด ์๋๋๋ค. ํ์ด์ฌ์ ๊ณ ์ ํ ํน์ฑ์ ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ๊ณ ์คํํ๋ ๋ฐ ์ด์์ ์ธ ํ๊ฒฝ์ ๋ง๋ญ๋๋ค:
- ๊ฐ๋ ์ฑ๊ณผ ๋จ์์ฑ: ํ์ด์ฌ์ ๋ช ํํ๊ณ ์์ด์ ์ ์ฌํ ๊ตฌ๋ฌธ์ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๋ ์ธ์ง ๋ถํ๋ฅผ ์ค์ฌ ์ฐ๊ตฌ์๊ณผ ๊ฐ๋ฐ์๊ฐ ์์ฉ๊ตฌ ์ฝ๋๋ณด๋ค๋ ์งํ ๋ ผ๋ฆฌ์ ์ง์คํ ์ ์๊ฒ ํฉ๋๋ค.
- ๊ด๋ฒ์ํ ์ํ๊ณ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ๊ณ ํ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐฉ๋ํ ์ปฌ๋ ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํนํ GP์ ๊ฒฝ์ฐ, DEAP(Python์ ๋ถ์ฐ ์งํ ์๊ณ ๋ฆฌ์ฆ)์ ๊ฐ์ ํ๋ ์์ํฌ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ๋ฉฐ ํจ์จ์ ์ธ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. NumPy, SciPy, Pandas์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ณผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ํฉ๋ ํจ์ ํ๊ฐ์ ํ์์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์์น ์ฐ์ฐ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
- ์ ์ํ ํ๋กํ ํ์ดํ ๋ฐ ์คํ: GP ์ฐ๊ตฌ์ ๋ฐ๋ณต์ ์ธ ํน์ฑ์ ํ์ด์ฌ์ด ์๋ก์ด ์์ด๋์ด์ ๊ฐ์ค์ ์ ์ํ๊ฒ ๊ฐ๋ฐํ๊ณ ํ ์คํธํ ์ ์๋ ๋ฅ๋ ฅ์ผ๋ก๋ถํฐ ํฐ ์ด์ ์ ์ป์ต๋๋ค. ์ด๋ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ, ์์ ๋ฐ ํ๊ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํฉ๋๋ค.
- ๋ค์ฌ๋ค๋ฅํจ ๋ฐ ํตํฉ: ํ์ด์ฌ์ ๋ค์ฌ๋ค๋ฅํจ์ GP ์๋ฃจ์ ์ด ์น ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๋๋ ๋จธ์ ๋ฌ๋ ํ๋ ์์ํฌ๋ฅผ ํฌํจํ๋ ๋ ํฐ ์์คํ ์ ์ํํ๊ฒ ํตํฉ๋ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๊ธ์ต์์ ์๋ฃ, ์์ง๋์ด๋ง์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์ฐ์ ๋ถ์ผ์ ์ค์ ํ๋ก๋์ ํ๊ฒฝ์์ ์งํ๋ ์๋ฃจ์ ์ ๋ฐฐํฌํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ์ปค๋ฎค๋ํฐ ์ง์: ํฌ๊ณ ํ๋์ ์ธ ๊ธ๋ก๋ฒ ์ปค๋ฎค๋ํฐ๋ ํ์ด์ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ฌธ์ ๋ฐ ๋ฌธ์ ํด๊ฒฐ ํฌ๋ผ์ ๊ธฐ์ฌํ์ฌ GP์ ์ด๋ณด์์ ๊ณ ๊ธ ์ค๋ฌด์ ๋ชจ๋์๊ฒ ๊ท์คํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ์ฅ์ ๋ค์ด ๊ฒฐํฉ๋์ด ํ์ด์ฌ์ ์ ์ธ๊ณ ๋๋ฅ๊ณผ ํ๋ฌธ์ ๊ฑธ์ณ ํ์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ํ์ ์ฐ๊ตฌ ๋ฐ ์ฐ์ ์์ฉ ๋ชจ๋์ ์ ํธ๋๋ ์ธ์ด๊ฐ ๋์์ต๋๋ค.
์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์งํ ์๊ณ ๋ฆฌ์ฆ ํต์ฌ ๊ฐ๋
ํจ๊ณผ์ ์ธ ์งํ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ ค๋ฉด GP์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ฅผ ์ดํดํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ์ด๋ฌํ ํต์ฌ ๊ตฌ์ฑ ์์๋ฅผ ๋ถํดํด ๋ด ์๋ค:
1. ๊ฐ์ฒด ๋ฐ ํ๋ก๊ทธ๋จ ํํ
GP์์ "๊ฐ์ฒด"๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ์๋ํ๋ ํ๋ณด ํ๋ก๊ทธ๋จ์
๋๋ค. ์ด๋ฌํ ํ๋ก๊ทธ๋จ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ํํ๋ฉ๋๋ค. (X + 2) * Y์ ๊ฐ์ ๊ฐ๋จํ ์ํ์ ํํ์ ์๊ฐํด ๋ณด์ธ์. ์ด๋ ํธ๋ฆฌ๋ก ํํ๋ ์ ์์ต๋๋ค:
*
/ \
+ Y
/ \
X 2
- ๋ด๋ถ ๋
ธ๋(ํจ์): ํ๋ ์ด์์ ์ธ์๋ฅผ ๋ฐ์ ๊ฐ์ ๋ฐํํ๋ ์ฐ์ฐ์
๋๋ค. ์๋ก๋ ์ฐ์ ์ฐ์ฐ์(
+,-,*,/), ์ํ ํจ์(sin,cos,log), ๋ ผ๋ฆฌ ์ฐ์ฐ์(AND,OR,NOT) ๋๋ ๋๋ฉ์ธ๋ณ ํจ์๊ฐ ์์ต๋๋ค. - ๋ฆฌํ ๋
ธ๋(ํฐ๋ฏธ๋): ํ๋ก๊ทธ๋จ์ ์
๋ ฅ ๋๋ ์์์
๋๋ค. ์๋ก๋ ๋ณ์(
X,Y), ์ซ์ ์์(0,1,2.5) ๋๋ ๋ถ์ธ ๊ฐ(True,False)์ด ์์ต๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ํจ์์ ํฐ๋ฏธ๋ ์งํฉ์ "๊ธฐ๋ณธ ์งํฉ"์ ํ์ฑํฉ๋๋ค. ์ด๋ GP ์๊ณ ๋ฆฌ์ฆ์ ๊ฒ์ ๊ณต๊ฐ์ ์ ์ํ๋ ์ค์ํ ์ค๊ณ ์ ํ์ ๋๋ค. ๊ธฐ๋ณธ ์งํฉ์ ์ ํ์ ์งํ๋ ์ ์๋ ํ๋ก๊ทธ๋จ์ ๋ณต์ก์ฑ๊ณผ ํํ๋ ฅ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ ์ ํ๋ ๊ธฐ๋ณธ ์งํฉ์ ํจ๊ณผ์ ์ธ ์๋ฃจ์ ์ ์ฐพ์ ๊ฐ๋ฅ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ผ๋ฉฐ, ์๋ชป ์ ํ๋ ๊ธฐ๋ณธ ์งํฉ์ GP์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
2. ๊ฐ์ฒด๊ตฐ
์งํ ์๊ณ ๋ฆฌ์ฆ์ ๋จ์ผ ํ๋ก๊ทธ๋จ์ด ์๋ ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๊ตฐ์ผ๋ก ์๋ํฉ๋๋ค. ์ด๋ฌํ ๋ค์์ฑ์ ๊ฒ์ ๊ณต๊ฐ์ ํจ๊ณผ์ ์ผ๋ก ํ์ํ๋ ๋ฐ ํต์ฌ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฐ์ฒด๊ตฐ ํฌ๊ธฐ๋ ์์ญ์์ ์์ฒ ๊ฐ์ ๊ฐ์ฒด๊น์ง ๋ค์ํ ์ ์์ต๋๋ค. ๊ฐ์ฒด๊ตฐ์ด ํด์๋ก ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ง์ ๋ค์์ฑ์ ์ ๊ณตํ์ง๋ง, ์ธ๋๋น ๋ ๋์ ๊ณ์ฐ ๋น์ฉ์ด ๋ญ๋๋ค.
3. ์ ํฉ๋ ํจ์: ์๋ด ๋์นจ๋ฐ
์ ํฉ๋ ํจ์๋ ๋ชจ๋ ์งํ ์๊ณ ๋ฆฌ์ฆ, ํนํ GP์ ๊ฐ์ฅ ์ค์ํ ๊ตฌ์ฑ ์์์ผ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฐ์ฒด ํ๋ก๊ทธ๋จ์ด ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ์ผ๋ง๋ ์ ํด๊ฒฐํ๋์ง ์ ๋ํํฉ๋๋ค. ๋ ๋์ ์ ํฉ๋ ๊ฐ์ ๋ ๋์ ์ฑ๋ฅ์ ๊ฐ์ง ํ๋ก๊ทธ๋จ์ ๋ํ๋ ๋๋ค. ์ ํฉ๋ ํจ์๋ ์งํ ๊ณผ์ ์ ์๋ดํ์ฌ ์ด๋ค ๊ฐ์ฒด๊ฐ ์์กดํ๊ณ ๋ฒ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง ๊ฒฐ์ ํฉ๋๋ค.
ํจ๊ณผ์ ์ธ ์ ํฉ๋ ํจ์๋ฅผ ์ค๊ณํ๋ ค๋ฉด ์ ์คํ ๊ณ ๋ ค๊ฐ ํ์ํฉ๋๋ค:
- ์ ํ๋: ๊ธฐํธ ํ๊ท ๋๋ ๋ถ๋ฅ์ ๊ฐ์ ์์ ์ ๊ฒฝ์ฐ, ์ ํฉ๋๋ ์ข ์ข ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅ ์์ธก ๋๋ ๋ฐ์ดํฐ ํฌ์ธํธ ๋ถ๋ฅ ์ ํ๋์ ์ง์ ๊ด๋ จ๋ฉ๋๋ค.
- ์์ ์ฑ: ๋ฌธ์ ์ ๋ชจ๋ ๊ด๋ จ ์ธก๋ฉด์ ํฌํจํด์ผ ํฉ๋๋ค.
- ๊ณ์ฐ ํจ์จ์ฑ: ์ ํฉ๋ ํจ์๋ ์ ์ฌ์ ์ผ๋ก ์๋ฐฑ๋ง ๋ฒ ํ๊ฐ๋ ๊ฒ์ด๋ฏ๋ก ๊ณ์ฐ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
- ์๋ด: ์ด์์ ์ผ๋ก๋ ์ต์ ์ ์ผ๋ก ๊ฐ๋ ์ ํํ ๊ฒฝ๋ก๋ ์ ์ ์๋๋ผ๋ ์งํ ๊ฒ์์ ๊ธฐ์ธ๊ธฐ๋ฅผ ์ ๊ณตํ ์ ์๋๋ก ์ ํฉ๋ ์งํ์ด ์ถฉ๋ถํ ๋ถ๋๋ฌ์์ผ ํฉ๋๋ค.
- ํ๋ํฐ: ๋๋๋ก ํ๋ก๊ทธ๋จ ๋ณต์ก์ฑ("๋ธ๋กํธ"๋ฅผ ์ํํ๊ธฐ ์ํด) ๋๋ ์ ์ฝ ์กฐ๊ฑด ์๋ฐ๊ณผ ๊ฐ์ ๋ฐ๋์งํ์ง ์์ ํน์ฑ์ ๋ํ ํ๋ํฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
์ ํฉ๋ ํจ์ ์์:
- ๊ธฐํธ ํ๊ท: ํ๋ก๊ทธ๋จ ์ถ๋ ฅ๊ณผ ๋์ ๊ฐ ๊ฐ์ ํ๊ท ์ ๊ณฑ ์ค์ฐจ(MSE) ๋๋ ์ ๊ณฑ๊ทผ ํ๊ท ์ ๊ณฑ ์ค์ฐจ(RMSE)์ ๋๋ค.
- ๋ถ๋ฅ: ์ ํ๋, F1 ์ ์, ์์ ์ ์ด์ ํน์ฑ(ROC) ๊ณก์ ์๋ ๋ฉด์ ์ ๋๋ค.
- ๊ฒ์ AI: ๊ฒ์์์ ๋ฌ์ฑํ ์ ์, ์์กด ์๊ฐ, ๊ฒฉํํ ์๋๋ฐฉ ์์ ๋๋ค.
- ๋ก๋ณดํฑ์ค: ์ด๋ ๊ฑฐ๋ฆฌ, ์๋์ง ํจ์จ์ฑ, ์์ ์๋ฃ์จ์ ๋๋ค.
4. ์ ํ: ๋ถ๋ชจ ์ ํ
๊ฐ์ฒด๊ตฐ ๋ด ๋ชจ๋ ๊ฐ์ฒด์ ์ ํฉ๋๋ฅผ ํ๊ฐํ ํ, ์ ํ ๋ฉ์ปค๋์ฆ์ด ๋ค์ ์ธ๋์ ๋ถ๋ชจ ์ญํ ์ ํ ํ๋ก๊ทธ๋จ์ ๊ฒฐ์ ํฉ๋๋ค. ๋ ์ ํฉํ ๊ฐ์ฒด๋ ์ ํ๋ ํ๋ฅ ์ด ๋์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ ํ ๋ฐฉ๋ฒ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ํ ๋๋จผํธ ์ ํ: ๊ฐ์ฒด๊ตฐ์์ ์์๋ก ์ ํ๋ ์์์ ๊ฐ์ฒด("ํ ๋๋จผํธ ํฌ๊ธฐ")๊ฐ ์์ผ๋ฉฐ, ๊ทธ ์ค ๊ฐ์ฅ ์ ํฉํ ๊ฐ์ฒด๊ฐ ๋ถ๋ชจ๋ก ์ ํ๋ฉ๋๋ค. ํ์ํ ์์ ๋ถ๋ชจ๊ฐ ์ ํ๋ ๋๊น์ง ์ด ๊ณผ์ ์ด ๋ฐ๋ณต๋ฉ๋๋ค. ๊ฒฌ๊ณ ํ๊ณ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฃฐ๋ ํ ์ ํ(์ ํฉ๋ ๋น๋ก ์ ํ): ๊ฐ์ฒด๋ ์ ํฉ๋์ ๋น๋กํ๋ ํ๋ฅ ๋ก ์ ํ๋ฉ๋๋ค. ๊ฐ๋ ์ ์ผ๋ก ๋ฃฐ๋ ํ ์ด ํ์ ํ๋ฉฐ, ๊ฐ ๊ฐ์ฒด๋ ์ ํฉ๋์ ๋น๋กํ๋ ์กฐ๊ฐ์ ์ฐจ์งํฉ๋๋ค.
- ์์ ๊ธฐ๋ฐ ์ ํ: ๊ฐ์ฒด๋ ์ ํฉ๋๋ก ์์๊ฐ ๋งค๊ฒจ์ง๋ฉฐ, ์ ํ ํ๋ฅ ์ ์ ๋ ์ ํฉ๋ ๊ฐ๋ณด๋ค๋ ์์์ ๊ธฐ๋ฐํฉ๋๋ค. ์ด๋ ์์์ ๋งค์ฐ ์ ํฉํ ๊ฐ์ฒด๋ก ์ธํ ์กฐ๊ธฐ ์๋ ด์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
5. ์ ์ ์ฐ์ฐ์: ์๋ก์ด ๊ฐ์ฒด ์์ฑ
๋ถ๋ชจ๊ฐ ์ ํ๋๋ฉด, ์ ์ ์ฐ์ฐ์๊ฐ ์ ์ฉ๋์ด ๋ค์ ์ธ๋์ ์์์ ๋ง๋ญ๋๋ค. ์ด๋ฌํ ์ฐ์ฐ์๋ ๋ค์์ฑ์ ๋์ ํ๊ณ ๊ฐ์ฒด๊ตฐ์ด ์๋ก์ด ์๋ฃจ์ ์ ํ์ํ๋๋ก ํฉ๋๋ค.
a. ๊ต์ฐจ (์ฌ์กฐํฉ)
๊ต์ฐจ๋ ๋ ๋ถ๋ชจ ํ๋ก๊ทธ๋จ์ ์ ์ ๋ฌผ์ง์ ๊ฒฐํฉํ์ฌ ํ๋ ์ด์์ ์๋ก์ด ์์ ํ๋ก๊ทธ๋จ์ ๋ง๋ญ๋๋ค. ํธ๋ฆฌ ๊ธฐ๋ฐ GP์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํํ๋ ํ์ ํธ๋ฆฌ ๊ต์ฐจ์ ๋๋ค:
- ๋ ๋ถ๋ชจ ํ๋ก๊ทธ๋จ์ด ์ ํ๋ฉ๋๋ค.
- ๊ฐ ๋ถ๋ชจ์์ ์์์ ํ์ ํธ๋ฆฌ๊ฐ ์ ํ๋ฉ๋๋ค.
- ์ด ์ ํ๋ ํ์ ํธ๋ฆฌ๊ฐ ๋ถ๋ชจ ๊ฐ์ ๊ตํ๋์ด ๋ ๊ฐ์ ์๋ก์ด ์์ ํ๋ก๊ทธ๋จ์ด ์์ฑ๋ฉ๋๋ค.
๋ถ๋ชจ 1: (A + (B * C)) ๋ถ๋ชจ 2: (D - (E / F)) ๋ถ๋ชจ 1์์ ํ์ ํธ๋ฆฌ (B * C) ์ ํ ๋ถ๋ชจ 2์์ ํ์ ํธ๋ฆฌ (E / F) ์ ํ ์์ 1: (A + (E / F)) ์์ 2: (D - (B * C))
๊ต์ฐจ๋ ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ ์์์ ์๋ก์ด ์กฐํฉ์ ํ์ํ๊ณ ์ฑ๊ณต์ ์ธ ๋น๋ฉ ๋ธ๋ก์ ์ธ๋์ ๊ฑธ์ณ ์ ํํ ์ ์๋๋ก ํฉ๋๋ค.
b. ๋์ฐ๋ณ์ด
๋์ฐ๋ณ์ด๋ ๊ฐ์ฒด ํ๋ก๊ทธ๋จ์ ๋ฌด์์ ๋ณ๊ฒฝ์ ๋์ ํ์ฌ ์ ์ ์ ๋ค์์ฑ์ ๋ณด์ฅํ๊ณ ์ง์ญ ์ต์ ์ ํ์ถ์ ๋์ต๋๋ค. ํธ๋ฆฌ ๊ธฐ๋ฐ GP์์ ์ผ๋ฐ์ ์ธ ๋์ฐ๋ณ์ด ์ ํ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ํ์ ํธ๋ฆฌ ๋์ฐ๋ณ์ด: ํ๋ก๊ทธ๋จ ๋ด์ ์์์ ํ์ ํธ๋ฆฌ๊ฐ ์๋ก ์์ฑ๋ ๋ฌด์์ ํ์ ํธ๋ฆฌ๋ก ๋์ฒด๋ฉ๋๋ค. ์ด๋ ์๋นํ ๋ณ๊ฒฝ์ ๋์ ํ ์ ์์ต๋๋ค.
- ์ ๋์ฐ๋ณ์ด: ํฐ๋ฏธ๋์ด ๋ค๋ฅธ ํฐ๋ฏธ๋๋ก ๋์ฒด๋๊ฑฐ๋, ํจ์๊ฐ ๋์ผํ ์๋ฆฌํฐ(์ธ์์ ์)๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ํจ์๋ก ๋์ฒด๋ฉ๋๋ค. ์ด๋ ๋ ์๊ณ ๊ตญ์์ ์ธ ๋ณ๊ฒฝ์ ๋์ ํฉ๋๋ค.
์๋ณธ ํ๋ก๊ทธ๋จ: (X * (Y + 2))
ํ์ ํธ๋ฆฌ ๋์ฐ๋ณ์ด ((Y + 2)๋ฅผ ์ ๋ฌด์์ ํ์ ํธ๋ฆฌ (Z - 1)๋ก ๋์ฒด):
์ ํ๋ก๊ทธ๋จ: (X * (Z - 1))
์ ๋์ฐ๋ณ์ด ('*'๋ฅผ '+'๋ก ๋์ฒด):
์ ํ๋ก๊ทธ๋จ: (X + (Y + 2))
๋์ฐ๋ณ์ด์จ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฎ์์ ํ์์ ํ์์ฑ๊ณผ ์ข์ ์๋ฃจ์ ๋ณด์กด ์ฌ์ด์ ๊ท ํ์ ๋ง์ถฅ๋๋ค.
6. ์ข ๋ฃ ๊ธฐ์ค
์งํ ๊ณผ์ ์ ์ง์ ๋ ์ข ๋ฃ ๊ธฐ์ค์ด ์ถฉ์กฑ๋ ๋๊น์ง ๊ณ์๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ธฐ์ค์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ์ต๋ ์ธ๋ ์: ์๊ณ ๋ฆฌ์ฆ์ ๊ณ ์ ๋ ์์ ๋ฐ๋ณต ํ ์ค์ง๋ฉ๋๋ค.
- ์ ํฉ๋ ์๊ณ๊ฐ: ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ฒด๊ฐ ๋ฏธ๋ฆฌ ์ ์๋ ์ ํฉ๋ ์์ค์ ๋๋ฌํ๋ฉด ์ค์ง๋ฉ๋๋ค.
- ์๊ฐ ์ ํ: ์๊ณ ๋ฆฌ์ฆ์ ํน์ ๊ณ์ฐ ์๊ฐ์ด ๊ฒฝ๊ณผํ ํ ์ค์ง๋ฉ๋๋ค.
- ๊ฐ์ ์์: ์๊ณ ๋ฆฌ์ฆ์ ์ผ์ ์์ ์ธ๋ ๋์ ๊ฐ์ฒด๊ตฐ์์ ์ต๊ณ ์ ์ ํฉ๋๊ฐ ๊ฐ์ ๋์ง ์์ผ๋ฉด ์ค์ง๋ฉ๋๋ค.
์งํ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ: ํ์ด์ฌ์ ์ฌ์ฉํ ๋จ๊ณ๋ณ ๊ฐ์ด๋
ํ์ด์ฌ์ ์ฌ์ฉํ์ฌ ์ ์ ํ๋ก๊ทธ๋๋ฐ ์์คํ ์ ์ค๊ณํ๊ณ ๊ตฌํํ๋ ์ค์ ๋จ๊ณ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฃผ๋ก ์งํ ๊ณ์ฐ์ ์ํ ํ์ด์ฌ์ ์ฌ์ค์ ํ์ค์ธ DEAP ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ๊ฐ๋ ๊ณผ ๊ตฌ์กฐ๋ฅผ ์ฐธ์กฐํ ๊ฒ์ ๋๋ค.
1๋จ๊ณ: ๋ฌธ์ ๊ณต์ํ ๋ฐ ๋ฐ์ดํฐ ์ค๋น
ํด๊ฒฐํ๋ ค๋ ๋ฌธ์ ๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ์ญ์์ค. ๊ธฐํธ ํ๊ท, ๋ถ๋ฅ, ์ ์ด ๋๋ ๋ค๋ฅธ ๊ฒ์ธ๊ฐ์? ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ์ฌ์ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ธฐํธ ํ๊ท์ธ ๊ฒฝ์ฐ ์ ๋ ฅ ๋ณ์(ํน์ฑ)์ ํด๋น ๋์ ๊ฐ์ด ํ์ํฉ๋๋ค.
2๋จ๊ณ: ๊ธฐ๋ณธ ์งํฉ ์ ์ (ํจ์ ๋ฐ ํฐ๋ฏธ๋)
์ฌ๊ธฐ์ ํ๋ก๊ทธ๋จ์ด ๊ตฌ์ฑ๋ ๋น๋ฉ ๋ธ๋ก์ ์ง์ ํฉ๋๋ค. ๋ฌธ์ ์ ๊ด๋ จ๋ ์ํ ์ฐ์ฐ์, ๋
ผ๋ฆฌ ํจ์ ๋ฐ ์
๋ ฅ ๋ณ์/์์๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. DEAP์์๋ PrimitiveSet์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํฉ๋๋ค.
์์: ๊ธฐํธ ํ๊ท
f(x, y) = ?์ ๊ฐ์ ํจ์๋ฅผ ์ฐพ์ ์ผ๋ถ ์ถ๋ ฅ z๋ฅผ ๊ทผ์ฌํํ๋ ๋ฌธ์ ์ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ ์งํฉ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค:
- ํจ์:
add,sub,mul,div(0์ผ๋ก ๋๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ณดํธ๋ ๋๋์ ) - ํฐ๋ฏธ๋:
x,y, ๊ทธ๋ฆฌ๊ณ ์ํ๋จธ๋ด ์์(๋ฒ์ ๋ด์์ ๋ฌด์์๋ก ์์ฑ๋ ์ซ์)์ผ ์๋ ์์ต๋๋ค.
from deap import gp
import operator
def protectedDiv(left, right):
try:
return left / right
except ZeroDivisionError:
return 1 # ๋๋ ๋ค๋ฅธ ์ค๋ฆฝ ๊ฐ
pset = gp.PrimitiveSet("main", arity=2) # x, y ์
๋ ฅ์ ๋ํด arity=2
pset.addPrimitive(operator.add, 2) # add(a, b)
pset.addPrimitive(operator.sub, 2) # sub(a, b)
pset.addPrimitive(operator.mul, 2) # mul(a, b)
pset.addPrimitive(protectedDiv, 2) # protectedDiv(a, b)
pset.addTerminal(1) # ์์ 1
# ๋ช
ํ์ฑ์ ์ํด ์ธ์ ์ด๋ฆ ๋ณ๊ฒฝ
pset.renameArguments(ARG0='x', ARG1='y')
3๋จ๊ณ: ์ ํฉ๋ ํจ์ ์ ์
๊ฐ์ฒด ํ๋ก๊ทธ๋จ(ํธ๋ฆฌ๋ก ํํ๋จ)์ ๋ฐ์ ์ ํฉ๋ ๊ฐ์ ๋ฐํํ๋ ํ์ด์ฌ ํจ์๋ฅผ ์์ฑํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ํ๋ก๊ทธ๋จ ํธ๋ฆฌ๋ฅผ ์คํ ๊ฐ๋ฅํ ํ์ด์ฌ ํจ์๋ก ์ปดํ์ผํฉ๋๋ค.
- ํ๋ จ ๋ฐ์ดํฐ๋ก ์ด ํจ์๋ฅผ ์คํํฉ๋๋ค.
- ํ๋ก๊ทธ๋จ ์ถ๋ ฅ๊ณผ ๋์ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ฅ ๋๋ ์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
๊ธฐํธ ํ๊ท์ ๊ฒฝ์ฐ, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ํ๊ท ์ ๊ณฑ ์ค์ฐจ(MSE)๋ฅผ ๊ณ์ฐํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. DEAP๋ ์ ํฉ๋ ๊ฐ์ ํํ๋ก ๊ธฐ๋ํ๋ฏ๋ก(์: ๋จ์ผ ๋ชฉํ ์ต์ ํ์ ๊ฒฝ์ฐ (mse,)) ํํ๋ก ๋ฐํํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.
import numpy as np
# ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ํ ํ๋ ์ด์คํ๋. ์ค์ ์๋๋ฆฌ์ค์์๋ ๋ก๋๋ฉ๋๋ค.
training_data_points = [(i, i*2) for i in range(-5, 5)] # ์์ ์
๋ ฅ
training_data_labels = [p[0]**2 + p[1] for p in training_data_points] # ์์ ๋์ (x^2 + y)
def evalSymbReg(individual, points, labels):
# GP ํธ๋ฆฌ๋ฅผ ํ์ด์ฌ ํจ์๋ก ๋ณํ
func = gp.compile(individual, pset)
# ์
๋ ฅ 'points'์์ ํ๋ก๊ทธ๋จ ํ๊ฐ
# ์งํ๋ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ํ ์ ์๋ ๋ฐํ์ ์ค๋ฅ ์ฒ๋ฆฌ (์: ์ํ ๋๋ฉ์ธ ์ค๋ฅ)
sqerrors = []
for p, l in zip(points, labels):
try:
program_output = func(p[0], p[1])
sqerrors.append((program_output - l)**2)
except (OverflowError, ValueError, TypeError): # ์ผ๋ฐ์ ์ธ ์ค๋ฅ ํฌ์ฐฉ
sqerrors.append(float('inf')) # ์ ํจํ์ง ์์ ์ถ๋ ฅ์ ๋์ ํ๋ํฐ ๋ถ์ฌ
if float('inf') in sqerrors or not sqerrors: # ๋ชจ๋ ์ค๋ฅ๊ฐ ๋ฌดํ์ด๊ฑฐ๋ ๊ณ์ฐํ ์ ์๋ ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ
return float('inf'), # ๋ฌดํ ์ ํฉ๋ ๋ฐํ
return np.mean(sqerrors), # ํํ๋ก ๋ฐํ
4๋จ๊ณ: DEAP ํด๋ฐ์ค ์ค์
DEAP Toolbox๋ ๊ฐ์ฒด ์์ฑ, ๊ฐ์ฒด๊ตฐ ์์ฑ, ์ ํฉ๋ ํ๊ฐ, ์ ํ, ๊ต์ฐจ ๋ฐ ๋์ฐ๋ณ์ด๋ฅผ ํฌํจํ์ฌ ์งํ ์๊ณ ๋ฆฌ์ฆ์ ํ์ํ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ฑ๋กํ๊ณ ๊ตฌ์ฑํ๋ ์ค์ ๊ตฌ์ฑ ์์์
๋๋ค.
from deap import base, creator, tools
# 1. ์ ํฉ๋ ๋ฐ ๊ฐ์ฒด ์ ํ ์ ์
# ์ ํฉ๋ ์ต์ํ (์: ํ๊ท ์ ๊ณฑ ์ค์ฐจ). ์ต์ํ๋ฅผ ์ํด weights=(-1.0,), ์ต๋ํ๋ฅผ ์ํด (1.0,)
creator.create("FitnessMin", base.Fitness, weights=(-1.0,))
# ๊ฐ์ฒด๋ gp ๋ชจ๋์ PrimitiveTree์ด๋ฉฐ, ์ ์๋ ์ ํฉ๋ ์ ํ์ ๊ฐ์ง
creator.create("Individual", gp.PrimitiveTree, fitness=creator.FitnessMin)
# 2. ํด๋ฐ์ค ์ด๊ธฐํ
toolbox = base.Toolbox()
# 3. ๊ตฌ์ฑ ์์ ๋ฑ๋ก
# ์ด๊ธฐ ๊ฐ์ฒด๊ตฐ์ ์ํ 'expr' ์์ฑ๊ธฐ (์: ramped half-and-half ๋ฐฉ๋ฒ)
# min_=1, max_=2๋ ํธ๋ฆฌ์ ๊น์ด๊ฐ 1๊ณผ 2 ์ฌ์ด์์ ์๋ฏธ
toolbox.register("expr", gp.genHalfAndHalf, pset=pset, min_=1, max_=2)
# 'individual' ์์ฑ๊ธฐ: 'PrimitiveTree' ์ ํ๊ณผ 'expr' ์์ฑ๊ธฐ๋ฅผ ๊ฒฐํฉ
toolbox.register("individual", tools.initIterate, creator.Individual, toolbox.expr)
# 'population' ์์ฑ๊ธฐ: ๊ฐ์ฒด ๋ชฉ๋ก
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
# ํน์ ๋ฐ์ดํฐ๋ก ํ๊ฐ ํจ์(์ ํฉ๋ ํจ์) ๋ฑ๋ก
toolbox.register("evaluate", evalSymbReg, points=training_data_points, labels=training_data_labels)
# ์ ์ ์ฐ์ฐ์ ๋ฑ๋ก
toolbox.register("select", tools.selTournament, tournsize=3) # ํ ๋๋จผํธ ์ ํ (ํฌ๊ธฐ 3)
toolbox.register("mate", gp.cxOnePoint) # ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ํ 1์ ๊ต์ฐจ
# ๋์ฐ๋ณ์ด: ์์์ ํ์ ํธ๋ฆฌ๋ฅผ ์ ๋ฌด์์ ์์ฑ ํ์ ํธ๋ฆฌ๋ก ๋์ฒด
toolbox.register("mutate", gp.mutUniform, expr=toolbox.expr, pset=pset)
5๋จ๊ณ: ํต๊ณ ๋ฐ ๋ก๊น ์ค์
์งํ ์๊ณ ๋ฆฌ์ฆ์ ์งํ ์ํฉ์ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํด ๊ฐ์ฒด๊ตฐ์ ๋ํ ํต๊ณ(์: ์ต๊ณ ์ ํฉ๋, ํ๊ท ์ ํฉ๋, ํ๋ก๊ทธ๋จ ํฌ๊ธฐ)๋ฅผ ์์งํ๋ ๊ฒ์ด ํ์์ ์
๋๋ค. DEAP์ Statistics ๊ฐ์ฒด์ HallOfFame์ ์ด๋ฅผ ์ํด ์ ์ฉํฉ๋๋ค.
mstats = tools.Statistics(lambda ind: ind.fitness.values)
# ๊ฐ ์ธ๋์ ๋ํ ๋ค์ํ ํต๊ณ๋ฅผ ๊ณ์ฐํ๊ณ ์ ์ฅํ๊ธฐ ์ํด ํจ์ ๋ฑ๋ก
mstats.register("avg", np.mean)
mstats.register("std", np.std)
mstats.register("min", np.min)
mstats.register("max", np.max)
hof = tools.HallOfFame(1) # ์งํ ์ค์ ๋ฐ๊ฒฌ๋ ๋จ์ผ ์ต๊ณ ๊ฐ์ฒด๋ฅผ ์ ์ฅ
6๋จ๊ณ: ๋ฉ์ธ ์งํ ๋ฃจํ ์คํ
์ฌ๊ธฐ์ ์งํ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ช
๋ ฅ์ ์ป์ต๋๋ค. DEAP๋ ํ์ค ์ธ๋ ์งํ ํ๋ก์ธ์ค๋ฅผ ์บก์ํํ๋ eaSimple๊ณผ ๊ฐ์ ๊ณ ์์ค ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ฒด๊ตฐ, ํด๋ฐ์ค, ์ ์ ์ฐ์ฐ์ ํ๋ฅ , ์ธ๋ ์ ๋ฐ ํต๊ณ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ง์ ํฉ๋๋ค.
NGEN = 50 # ์งํ๋ฅผ ์คํํ ์ธ๋ ์
POP_SIZE = 300 # ๊ฐ์ฒด๊ตฐ ํฌ๊ธฐ (๊ฐ์ฒด ์)
CXPB = 0.9 # ๊ฐ์ฒด์ ๊ต์ฐจ๋ฅผ ์ ์ฉํ ํ๋ฅ
MUTPB = 0.1 # ๊ฐ์ฒด์ ๋์ฐ๋ณ์ด๋ฅผ ์ ์ฉํ ํ๋ฅ
population = toolbox.population(n=POP_SIZE) # ์ฒซ ๋ฒ์งธ ์ธ๋ ์ด๊ธฐํ
# ์งํ ์๊ณ ๋ฆฌ์ฆ ์คํ
# eaSimple์ ๊ธฐ๋ณธ์ ์ธ ์ธ๋ ์งํ ์๊ณ ๋ฆฌ์ฆ ๋ฃจํ์
๋๋ค.
population, log = tools.algorithms.eaSimple(population, toolbox, CXPB, MUTPB, NGEN,
stats=mstats, halloffame=hof, verbose=True)
# ๋ชจ๋ ์ธ๋์ ๊ฑธ์ณ ๋ฐ๊ฒฌ๋ ์ต๊ณ ์ ํ๋ก๊ทธ๋จ์ hof[0]์ ์ ์ฅ๋ฉ๋๋ค.
best_program = hof[0]
print(f"๋ฐ๊ฒฌ๋ ์ต๊ณ ์ ํ๋ก๊ทธ๋จ: {best_program}")
7๋จ๊ณ: ๊ฒฐ๊ณผ ๋ถ์ ๋ฐ ์ต๊ณ ์ ํ๋ก๊ทธ๋จ ํด์
์งํ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋ ํ ๋ก๊ทธ์ HallOfFame์์ ์ฐพ์ ์ต๊ณ ์ ๊ฐ์ฒด๋ฅผ ๋ถ์ํฉ๋๋ค. ์งํ๋ ํ๋ก๊ทธ๋จ ํธ๋ฆฌ๋ฅผ ์๊ฐํํ๊ณ , ์ปดํ์ผํ์ฌ ๋ณด์ด์ง ์๋ ๋ฐ์ดํฐ์ ๋ํ ์ฑ๋ฅ์ ํ
์คํธํ๊ณ , ๋
ผ๋ฆฌ๋ฅผ ํด์ํด ๋ณผ ์ ์์ต๋๋ค. ๊ธฐํธ ํ๊ท์ ๊ฒฝ์ฐ, ์ด๋ ๋ฐ๊ฒฌ๋ ์ํ์ ํํ์ ๊ฒํ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
# ํ๋ จ ๋ฐ์ดํฐ์ ๋ํด ์ต๊ณ ์ ํ๋ก๊ทธ๋จ์ ํ๊ฐํ์ฌ ์ ํฉ๋ ํ์ธ
final_fitness = toolbox.evaluate(best_program)
print(f"์ต๊ณ ํ๋ก๊ทธ๋จ์ ์ต์ข
ํ๋ จ ์ ํฉ๋: {final_fitness}")
# ์ ํ์ ์ผ๋ก, ์๋ก์ด ๋ณด์ด์ง ์๋ ๋ฐ์ดํฐ์ ๋ํด ์ปดํ์ผํ๊ณ ํ
์คํธํ์ฌ ์ผ๋ฐํ ํ์ธ
# new_test_points = [(6, 12), (7, 14)]
# new_test_labels = [6**2 + 12, 7**2 + 14]
# test_fitness = evalSymbReg(best_program, new_test_points, new_test_labels)
# print(f"์ต๊ณ ํ๋ก๊ทธ๋จ์ ํ
์คํธ ์ ํฉ๋: {test_fitness}")
# ํธ๋ฆฌ๋ฅผ ์๊ฐํํ๋ ค๋ฉด (graphviz๊ฐ ์ค์น๋์ด ์๊ณ ๊ฒฝ๋ก์์ ํธ์ถ ๊ฐ๋ฅํด์ผ ํจ)
# from deap import gp
# import matplotlib.pyplot as plt
# nodes, edges, labels = gp.graph(best_program)
# import pygraphviz as pgv
# g = pgv.AGraph()
# g.add_nodes_from(nodes)
# g.add_edges_from(edges)
# g.layout(prog='dot')
# for i in nodes: g.get_node(i).attr['label'] = labels[i]
# g.draw('best_program.pdf')
ํ์ด์ฌ ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์ค์ ์ ์ฉ ์ฌ๋ก (๊ธ๋ก๋ฒ ์์)
GP์ ํ๋ก๊ทธ๋จ ์๋ ์์ฑ ๋ฅ๋ ฅ์ ์ ์ธ๊ณ ๋ค์ํ ์ฐ์
๋ฐ ์ฐ๊ตฌ ๋ถ์ผ์์ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ์
๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ค๋๋ ฅ ์๋ ๊ธ๋ก๋ฒ ์์์
๋๋ค:
1. ๊ธฐํธ ํ๊ท: ๋ฐ์ดํฐ์์ ์จ๊ฒจ์ง ๊ด๊ณ ๋ฐ๊ฒฌ
์ค๋ช
: ์
๋ ฅ-์ถ๋ ฅ ์์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ๊ณตํ๋ฉด GP๋ ๊ด๊ณ๋ฅผ ๊ฐ์ฅ ์ ์ค๋ช
ํ๋ ์ํ์ ํํ์ ์งํ์ํฌ ์ ์์ต๋๋ค. ์ด๋ ์๋ ๊ณผํ ๋ฐ๊ฒฌ๊ณผ ์ ์ฌํ๋ฉฐ, ์ฐ๊ตฌ์๋ค์ ์ฌ์ ๊ฐ์ ์์ด ๊ทผ๋ณธ์ ์ธ ๋ฒ์น์ ๋ฐ๊ฒฌํ ์ ์๋๋ก ํฉ๋๋ค.
๊ธ๋ก๋ฒ ์ํฅ:
- ๊ธฐํ ๊ณผํ: ๋ค์ํ ์ง๋ฆฌ์ ์ง์ญ์์ ์์ง๋ ์ผ์ ๋ฐ์ดํฐ์์ ์๋ก์ด ๊ธฐํ ๋ชจ๋ธ์ ๋ฐ๊ฒฌํ์ฌ, ์๋ง์กด ์ด๋์ฐ๋ฆผ๋ถํฐ ๋ถ๊ทน ๋นํ๊น์ง ๋ค์ํ ์ํ๊ณ์ ํ๊ฒฝ ๋ณํ ์ํฅ์ ์์ธกํ๊ฑฐ๋ ์ผ๊ธฐ ํจํด์ ์์ธกํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
- ๊ฒฝ์ ๋ฐ ๊ธ์ต: ์ฃผ์ ์์ฅ ์์ง์, ์ํ ๊ฐ๊ฒฉ ๋๋ ๊ฑฐ์ ๊ฒฝ์ ์งํ์ ๋ํ ์์ธก ๊ณต์์ ๋์ถํ์ฌ, ๊ธ์ต ๋ถ์๊ฐ์ ์ ์ฑ ์ ์์๊ฐ ๋ค์ํ ๊ธ๋ก๋ฒ ์์ฅ(์: ์ ํฅ ์์ฅ์ ์ธํ๋ ์ด์ ๋๋ ์ฃผ์ ํตํ ๊ฐ ํ์จ ๋ณ๋ ์์ธก)์์ ๋์์ ๋ฐ์ ์ ์์ต๋๋ค.
- ๋ฌผ๋ฆฌํ ๋ฐ ๊ณตํ: ์คํ ๋ฐ์ดํฐ์์ ๋ฌผ๋ฆฌ ๋ฒ์น ๋๋ ๊ณตํ ์ค๊ณ ๋ฐฉ์ ์์ ์๋์ผ๋ก ๋์ถํ์ฌ, ์ฌ๋ฃ ๊ณผํ ๋๋ ๋ณต์กํ ์์คํ ์ค๊ณ ์ฐ๊ตฌ๋ฅผ ๊ฐ์ํํ๋ฉฐ, ์ ๋ฝ์์ ์์์๊น์ง ํญ๊ณต ์ฐ์ฃผ ๊ณตํ์ ์ฌ์ฉ๋ฉ๋๋ค.
2. ๋จธ์ ๋ฌ๋: ์๋ํ๋ ๋ชจ๋ธ ์ค๊ณ ๋ฐ ํน์ฑ ๊ณตํ
์ค๋ช : GP๋ ๋จธ์ ๋ฌ๋ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑ ์์๋ฅผ ์งํ์ํค๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, ์์ ํ ์ธ๊ฐ์ด ์ค๊ณํ ๋ชจ๋ธ๋ณด๋ค ๋ ๊ฐ๋ ฅํ๊ณ ๋ง์ถคํ๋ ์๋ฃจ์ ์ผ๋ก ์ด์ด์ง๋๋ค.
๊ธ๋ก๋ฒ ์ํฅ:
- ์๋ํ๋ ํน์ฑ ๊ณตํ(AutoFE): ์์ ๋ฐ์ดํฐ์์ ์๋ก์ด, ๋งค์ฐ ์์ธก์ ์ธ ํน์ฑ์ ์งํ์์ผ, ๊ธฐ์กด ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ฃ ๋ถ์ผ์์ GP๋ ์ํ๋ฆฌ์นด์ ์์์์ ์ง๋ฃ์์์ ์์ง๋ ํ์์ ์์ฒด ์ ํธ๋ฅผ ๊ฒฐํฉํ์ฌ ์ง๋ณ ์งํ์ ๋ ์ ๋ํ๋ด๋ ํน์ฑ์ ์์ฑํ๊ณ , ์ ์ธ๊ณ ์ง๋จ ์ ํ๋๋ฅผ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๋ชจ๋ธ ์ ํ ๋ฐ ํ์ดํผํ๋ผ๋ฏธํฐ ์ต์ ํ: GP๋ ์ต์ ์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ์ํคํ ์ฒ(์: ์ ๊ฒฝ๋ง ํ ํด๋ก์ง) ๋๋ ํ์ดํผํ๋ผ๋ฏธํฐ ์ค์ ์ ๊ฒ์ํ์ฌ, ์๊ฐ ์๋ชจ์ ์ธ ๋ชจ๋ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ ์ ์์ต๋๋ค. ์ด๋ ์ ์ธ๊ณ ์กฐ์ง์ด AI ์๋ฃจ์ ์ ๋ ๋น ๋ฅด๊ฒ ๋ฐฐํฌํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ๊ฒฐ์ ํธ๋ฆฌ/๊ท์น ์งํ: ์ ๋ฌธ๊ฐ์ ์์ฌ ๊ฒฐ์ ์ ๋์์ด ๋๋ ๋งค์ฐ ํด์ ๊ฐ๋ฅํ ๋ถ๋ฅ ๋๋ ํ๊ท ๊ท์น์ ์์ฑํ์ฌ, ๋ค์ํ ๊ตญ๊ฐ ๊ฒฝ์ ์ ๋ฐ์ ์ ์ฉ ์ํ ํ๊ฐ ๋๋ ์ ์ธ๊ณ ๊ณต์ค ๋ณด๊ฑด ์์คํ ์ ์ง๋ณ ๋ฐ์ ์์ธก๊ณผ ๊ฐ์ ๋ถ์ผ์์ ํ์ฉ๋ฉ๋๋ค.
3. ๋ก๋ณดํฑ์ค ๋ฐ ์ ์ด ์์คํ : ์ ์ํ ์์จ ์์ด์ ํธ
์ค๋ช : GP๋ ํนํ ๋ช ์์ ํ๋ก๊ทธ๋๋ฐ์ด ์ด๋ ค์ด ๋์ ์ด๊ฑฐ๋ ๋ถํ์คํ ํ๊ฒฝ์์ ๋ก๋ด ๋ฐ ์์จ ์์ด์ ํธ์ ๋ํ ์ ์ด ์ ์ฑ ๋๋ ๋์์ ์งํ์ํค๋ ๋ฐ ํ์ํฉ๋๋ค.
๊ธ๋ก๋ฒ ์ํฅ:
- ์์จ ํ์: ๋ชจ๋ ๋น์ ์ํฉ์ ๋ช ์์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ์ง ์๊ณ ๋, ๋ถ๋ฏธ์ ๋์ ํ๊ฒฝ๋ถํฐ ํธ์ฃผ์ ์ธ๋ด ๋์ ์ง์ญ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์งํ์์ ์๋ํ๋ ๋ฌด์ธ ํญ๊ณต๊ธฐ(UAV) ๋๋ ์ง์ ๋ก๋ด์ ๋ํ ์ ์ด ํ๋ก๊ทธ๋จ์ ์งํ์ํต๋๋ค.
- ์ฐ์ ์๋ํ: ๋ ์ผ์ ์๋์ฐจ ๊ณต์ฅ์์ ํ๊ตญ์ ์ ์์ ํ ์กฐ๋ฆฝ ๋ผ์ธ์ ์ด๋ฅด๊ธฐ๊น์ง ์ ์กฐ ๊ณต์ฅ์ ํจ์จ์ฑ๊ณผ ์ ๋ฐ๋๋ฅผ ์ํ ๋ก๋ด ํ ์์ง์์ ์ต์ ํํ์ฌ, ์์ฐ์ฑ์ ๋์ด๊ณ ํ๊ธฐ๋ฌผ์ ์ค์ ๋๋ค.
- ์ค๋งํธ ์ธํ๋ผ: ๋์ฟ๋ ๋ญ๋ฐ์ด์ ๊ฐ์ ๋ฒ์กํ ๋๋์๋ฅผ ์ํ ์ ์ํ ๊ตํต ์ ์ด ์์คํ ์ ๊ฐ๋ฐํ์ฌ, ๊ตํต ์ฒด์ฆ๊ณผ ์ค์ผ์ ์ค์ด๊ธฐ ์ํด ์ค์๊ฐ์ผ๋ก ๊ตํต ํ๋ฆ์ ์ต์ ํํฉ๋๋ค.
4. ๊ฒ์ AI ๋ฐ ์๋ฎฌ๋ ์ด์ : ์ง๋ฅ์ ์ด๊ณ ์ ์์ ์ธ ์๋
์ค๋ช : GP๋ ๊ฒ์์ ์ํ ๋ณต์กํ๊ณ ์ธ๊ฐ์ ์ธ AI๋ฅผ ๋ง๋ค๊ฑฐ๋ ์๋ฎฌ๋ ์ด์ ๋ด์์ ๋์์ ์ต์ ํํ์ฌ, ๋ ๋งค๋ ฅ์ ์ธ ๊ฒฝํ ๋๋ ๋ ์ ํํ ์์ธก ๋ชจ๋ธ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ํฅ:
- ๋์ ๊ฒ์ ํ๋ ์ด: ํ๋ ์ด์ด ์ ๋ต์ ์ค์๊ฐ์ผ๋ก ์ ์ํ๋ AI ์๋๋ฅผ ์งํ์์ผ, ์ ์ธ๊ณ ํ๋ ์ด์ด๋ค์๊ฒ ๋ ๋์ ์ ์ด๊ณ ๊ฐ์ธํ๋ ๊ฒ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์บ์ฃผ์ผ ๋ชจ๋ฐ์ผ ๊ฒ์๋ถํฐ ๊ฒฝ์์ ์ธ e์คํฌ์ธ ๊น์ง ๋ค์ํฉ๋๋ค.
- ์ ๋ต ์๋ฎฌ๋ ์ด์ : ๊ฒฝ์ ๋๋ ๊ตฐ์ฌ ์๋ฎฌ๋ ์ด์ ์ ์ํ ์ ๊ตํ ์์ด์ ํธ๋ฅผ ๊ฐ๋ฐํ์ฌ, ๋ถ์๊ฐ๋ค์ด ๋ค์ํ ์ ๋ต์ ํ ์คํธํ๊ณ ๊ตญ์ ๊ฐ๋ฐ ํ๋ก๊ทธ๋จ์ ์ง์ ํ์ ์๋๋ฆฌ์ค ๋๋ ์์ ๊ด๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ ์ ์๋๋ก ํฉ๋๋ค.
5. ๊ธ์ต ๋ชจ๋ธ๋ง: ๊ฑฐ๋ ์ ๋ต ๋ฐ ์ํ ๊ด๋ฆฌ ์งํ
์ค๋ช : GP๋ notoriously ๋ณต์กํ๊ณ ๋น์ ํ์ ์ธ ๊ธ์ต ์์ฅ์์ ์๋ก์ด ํจํด์ ๋ฐ๊ฒฌํ๊ณ ์์ธก ๋ชจ๋ธ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ํฅ:
- ์๋ํ๋ ๊ฑฐ๋ ์ ๋ต: ๋ค์ํ ์์ฅ ์กฐ๊ฑด๊ณผ ๊ท์ ํ๊ฒฝ์ ์ ์ํ๋ฉฐ, ๋ค์ํ ๊ฑฐ๋์(์: ๋ด์ ์ฆ๊ถ ๊ฑฐ๋์, ๋ฐ๋ ์ฆ๊ถ ๊ฑฐ๋์, ๋์ฟ ์ฆ๊ถ ๊ฑฐ๋์)์ ๋ค์ํ ๊ธ์ต ์ํ์ ๋ํ ์์ต์ฑ ์๋ ์ง์ ๋ฐ ํด์ถ ์ง์ ์ ์๋ณํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์งํ์ํต๋๋ค.
- ์ํ ํ๊ฐ: ๋ค์ํ ๊ฒฝ์ ์ ๊ฐ์ธ ๋๋ ๊ธฐ์ ์ ๋ํ ์ ์ฉ ์ํ์ ํ๊ฐํ๊ธฐ ์ํ ๋ชจ๋ธ์ ๊ฐ๋ฐํ์ฌ, ์ง์ญ ๋ฐ ๊ธ๋ก๋ฒ ๊ฒฝ์ ๋ณ์๋ฅผ ๊ณ ๋ คํ๊ณ , ์ํ ๋ฐ ๊ธ์ต ๊ธฐ๊ด์ด ๊ตญ์ ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ ๋ณด์ ์ ๊ฐํ ์์ฌ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๋๋ก ์ง์ํฉ๋๋ค.
6. ์ฝ๋ฌผ ๋ฐ๊ฒฌ ๋ฐ ์ฌ๋ฃ ๊ณผํ: ๊ตฌ์กฐ ๋ฐ ํน์ฑ ์ต์ ํ
์ค๋ช : GP๋ ๊ด๋ํ ์ค๊ณ ๊ณต๊ฐ์ ํ์ํ์ฌ ์ฝ๋ฌผ ํจ๋ฅ์ ์ํ ๋ถ์ ๊ตฌ์กฐ ๋๋ ์ํ๋ ํน์ฑ์ ์ํ ์ฌ๋ฃ ๊ตฌ์ฑ์ ์ต์ ํํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ํฅ:
- ์ ์ฝ ํ๋ณด ์์ฑ: ํน์ ์ํ๋ ํน์ฑ(์: ํ์ ๋จ๋ฐฑ์ง์ ๋ํ ๊ฒฐํฉ ์นํ๋)์ ๊ฐ์ง ํํ ํํฉ๋ฌผ์ ์งํ์์ผ, ํฌ๋ฐ๋ฏน ๋๋ ํ์ง๊ตญ ์ง๋ณ๊ณผ ๊ฐ์ ๊ธ๋ก๋ฒ ๊ฑด๊ฐ ๋ฌธ์ ๋ฅผ ์ํ ์ฝ๋ฌผ ๋ฐ๊ฒฌ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํฉ๋๋ค.
- ์ ์์ฌ ์ค๊ณ: ํญ๊ณต ์ฐ์ฃผ ๋ถํ์์ ์ง์ ๊ฐ๋ฅํ ์๋์ง ๊ธฐ์ ์ ์ด๋ฅด๊ธฐ๊น์ง ์์ฉ ๋ถ์ผ์ ๋ํ ํฅ์๋ ํน์ฑ(์: ๊ฐ๋, ์ ๋์ฑ, ์ด ์ ํญ)์ ๊ฐ์ง ์๋ก์ด ์ฌ๋ฃ ๊ตฌ์ฑ ๋๋ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฒฌํ์ฌ, ์ ์กฐ ๋ฐ ๋ น์ ์๋์ง ๋ถ์ผ์ ๊ธ๋ก๋ฒ ํ์ ์ ๊ธฐ์ฌํฉ๋๋ค.
์ธ๊ธฐ ์๋ ์ ์ ํ๋ก๊ทธ๋๋ฐ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
GP ๋ถ์ผ์์ ํ์ด์ฌ์ ๊ฐ์ ์ ๊ฐ๋ฐ์๊ฐ ๋ฌธ์ ์ ํน์ ์ธ๋ถ ์ฌํญ์ ์ง์คํ ์ ์๋๋ก ๋ง์ ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ์ถ์ํํ๋ ์ ๋ฌธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
1. DEAP (Python์ ๋ถ์ฐ ์งํ ์๊ณ ๋ฆฌ์ฆ)
DEAP๋ ํ์ด์ฌ์์ ์งํ ๊ณ์ฐ์ ์ํ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์ ์ฐํ ํ๋ ์์ํฌ์ ๋๋ค. ์ ์ ํ๋ก๊ทธ๋๋ฐ, ์ ์ ์๊ณ ๋ฆฌ์ฆ, ์งํ ์ ๋ต ๋ฑ ๋ค์ํ ์ ํ์ ์งํ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ ์ํ ํฌ๊ด์ ์ธ ๋๊ตฌ ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ:
- ์ ์ฐํ ์ํคํ ์ฒ: ๋งค์ฐ ๋ชจ๋ํ๋์ด ์์ด ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ์ ํ ์ฐ์ฐ์, ๊ต์ฐจ ๋ฐฉ๋ฒ, ๋์ฐ๋ณ์ด ์ ๋ต ๋ฐ ์ข ๋ฃ ๊ธฐ์ค์ ๊ฒฐํฉํ ์ ์์ต๋๋ค.
- ํธ๋ฆฌ ๊ธฐ๋ฐ GP ์ง์:
PrimitiveSet๋ฐ ํน์ ์ ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ํธ๋ฆฌ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋จ ํํ์ ๋ํ ํ๋ฅญํ ์ง์์ ์ ๊ณตํฉ๋๋ค. - ๋ณ๋ ฌ ์ฒ๋ฆฌ: ๊ณ์ฐ ์ง์ฝ์ ์ธ GP ์์ ์ ์ค์ํ ๋ณ๋ ฌ ๋ฐ ๋ถ์ฐ ํ๊ฐ๋ฅผ ์ํ ๋ด์ฅ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- ํต๊ณ ๋ฐ ๋ก๊น : ์ธ๋์ ๊ฑธ์ณ ๊ฐ์ฒด๊ตฐ ํต๊ณ ๋ฐ ์ต๊ณ ์ ๊ฐ์ฒด๋ฅผ ์ถ์ ํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํํ ๋ฆฌ์ผ ๋ฐ ๋ฌธ์: ๊ด๋ฒ์ํ ๋ฌธ์์ ์์ ๋ ํ์ต ๋ฐ ๊ตฌํ์ ์ ๊ทผํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- DEAP๋ฅผ ์ ํํ๋ ์ด์ ? ์งํ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ธ๋ฐํ ์ ์ด๋ฅผ ํ์๋ก ํ๊ณ ๊ณ ๊ธ GP ๊ธฐ์ ์ ํ์ํ๋ ค๋ ์ฐ๊ตฌ์ ๋ฐ ๊ฐ๋ฐ์์๊ฒ DEAP๋ ์ ์ฐ์ฑ๊ณผ ๊ฐ๋ ฅํจ ๋๋ฌธ์ ์ ํธ๋๋ ์ ํ์ ๋๋ค.
2. PyGAD (๋ฅ๋ฌ๋ ๋ฐ ๋จธ์ ๋ฌ๋์ ์ํ ํ์ด์ฌ ์ ์ ์๊ณ ๋ฆฌ์ฆ)
์ฃผ๋ก ๋งค๊ฐ๋ณ์(์: ์ ๊ฒฝ๋ง์ ๊ฐ์ค์น) ์ต์ ํ๋ฅผ ์ํ ์ ์ ์๊ณ ๋ฆฌ์ฆ(GA)์ ์ด์ ์ ๋ง์ถ๊ณ ์์ง๋ง, PyGAD๋ ๋ฌธ์ ๋๋ฉ์ธ์ด ๊ทธ๋ฌํ ํํ์ ํ์ฉํ๋ ๊ฒฝ์ฐ "ํ๋ก๊ทธ๋จ"์ด ํ๋์ ๊ณ ์ ๊ธธ์ด ์ํ์ค๋ก ํํ๋ ์ ์๋ค๋ฉด, ๋ ๊ฐ๋จํ GP์ ์ ์ฌํ ์์ ์ ์ ์๋ ์ ์๋ ์ฌ์ฉ์ ์นํ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ:
- ์ฌ์ฉ ์ฉ์ด์ฑ: ๋ ๊ฐ๋จํ API๋ก ๊ธฐ๋ณธ GA๋ฅผ ์ค์ ํ๊ณ ์คํํ๋ ๋ฐ ๋งค์ฐ ๋น ๋ฆ ๋๋ค.
- ๋ฅ๋ฌ๋ ํตํฉ: ๋ชจ๋ธ ์ต์ ํ๋ฅผ ์ํด Keras ๋ฐ PyTorch์ ๊ฐ์ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ์์ ํตํฉ์ ์ค์ ์ ๋ก๋๋ค.
- ์๊ฐํ: ์ธ๋์ ๋ฐ๋ฅธ ์ ํฉ๋ ํ๋กํ ๊ธฐ๋ฅ์ ํฌํจํฉ๋๋ค.
- GP์ ๋ํ ๊ณ ๋ ค ์ฌํญ: ์ ํต์ ์ธ ํธ๋ฆฌ ๊ธฐ๋ฐ ์๋ฏธ์ "์ ์ ํ๋ก๊ทธ๋๋ฐ" ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋์ง๋ง, PyGAD๋ ์ฐ์ฐ ์ํ์ค ๋๋ ๊ตฌ์ฑ ์ค์ ์ ์งํ์ํค๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, ์ด๋ ๋ฌธ์ ๋๋ฉ์ธ์ด ๊ทธ๋ฌํ ํํ์ ํ์ฉํ๋ ๊ฒฝ์ฐ ์ ํ ์ ์ ํ๋ก๊ทธ๋จ๊ณผ ์ ์ฌํ ์ ์์ต๋๋ค. ๊ตฌ์กฐ๊ฐ ๋ค์ ๊ณ ์ ๋์ด ์๊ณ ๋งค๊ฐ๋ณ์๊ฐ ์งํ๋๋ ๋ฌธ์ ์ ๋ ์ ํฉํฉ๋๋ค.
3. GpLearn (Scikit-learn์์์ ์ ์ ํ๋ก๊ทธ๋๋ฐ)
GpLearn์ Scikit-learn ํธํ ์ ์ ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ฃผ์ ์ด์ ์ ๊ธฐํธ ํ๊ท ๋ฐ ๋ถ๋ฅ์ด๋ฉฐ, ๊ธฐ์กด Scikit-learn ๋จธ์ ๋ฌ๋ ํ์ดํ๋ผ์ธ์ ์ํํ๊ฒ ํตํฉ๋ ์ ์๋๋ก ํฉ๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ:
- Scikit-learn API: ์น์ํ
.fit()๋ฐ.predict()๋ฉ์๋๋ก ML ์ค๋ฌด์๊ฐ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ๊ธฐํธ ํ๊ท ๋ฐ ๋ถ๋ฅ: ์๋ ํน์ฑ ๊ณตํ ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ด๋ฌํ ์์ ์ ํนํ๋์ด ์์ต๋๋ค.
- ๋ด์ฅ ํจ์: ๊ธฐ๋ณธ์ ์ธ ์ํ ๋ฐ ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ์ข์ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Scikit-learn API: ์น์ํ
- GpLearn์ ์ ํํ๋ ์ด์ ? ์ฃผ์ ์์ฉ ๋ถ์ผ๊ฐ ๊ธฐํธ ํ๊ท ๋๋ ๋ถ๋ฅ์ด๊ณ ์ด๋ฏธ Scikit-learn ์ํ๊ณ ๋ด์์ ์์ ํ๊ณ ์๋ค๋ฉด, GpLearn์ ์๋นํ ์์ฉ๊ตฌ ์์ด GP๋ฅผ ์ ์ฉํ ์ ์๋ ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
ํ์ด์ฌ ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ๊ณ ๊ธ ์ฃผ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
GP๋ฅผ ๋ ๊น์ด ํ๊ณ ๋ค๋ฉด์, ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ๊ณผ ์ ์ฉ ๊ฐ๋ฅ์ฑ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ช ๊ฐ์ง ๊ณ ๊ธ ์ฃผ์ ์ ๊ณ ๋ ค ์ฌํญ์ด ๋ํ๋ฉ๋๋ค.
1. ํ๋ก๊ทธ๋จ ๋ธ๋กํธ ๊ด๋ฆฌ
GP์์ ํํ ๋ฐ์ํ๋ ๋ฌธ์ ์ค ํ๋๋ "๋ธ๋กํธ"์ ๋๋ค. ์ด๋ ์งํ๋ ํ๋ก๊ทธ๋จ์ด ์ ํฉ๋์ ํด๋น ์ฆ๊ฐ ์์ด ์ง๋์น๊ฒ ํฌ๊ณ ๋ณต์กํด์ง๋ ๊ฒฝํฅ์ ๋๋ค. ํฐ ํ๋ก๊ทธ๋จ์ ํ๊ฐํ๋ ๋ฐ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ ์ข ์ข ํด์ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ธ๋กํธ์ ๋์ฒํ๊ธฐ ์ํ ์ ๋ต์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ํฌ๊ธฐ/๊น์ด ์ ํ: ํ๋ก๊ทธ๋จ ํธ๋ฆฌ์ ์ต๋ ๊น์ด ๋๋ ๋ ธ๋ ์์ ๋ช ์์ ์ธ ์ ํ์ ๋ก๋๋ค.
- ๊ฐ๊ฒฐ์ฑ ์๋ ฅ: ๋ ํฐ ํ๋ก๊ทธ๋จ์ ํ๋ํฐํ๋ ์ ํฉ๋ ํจ์๋ฅผ ์์ ํ์ฌ, ๋ ๋จ์ํ ์๋ฃจ์
์ ์ฅ๋ คํฉ๋๋ค (์:
fitness = accuracy - alpha * size). - ๋์ฒด ์ ํ ๋ฉ์ปค๋์ฆ: Lexicase ์ ํ ๋๋ ๋์ด-์ ํฉ๋ Pareto ์ต์ ํ์ ๊ฐ์ด, ๋์ผํ๊ฒ ์ ํฉํ ๊ฐ์ฒด๋ณด๋ค ์์ ๊ฐ์ฒด๋ฅผ ์๋ฌต์ ์ผ๋ก ์ ํธํ๋ ์ ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
- ์ฐ์ฐ์ ์ค๊ณ: ์ง๋์น๊ฒ ํฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ์ ์ ๊ต์ฐจ ๋ฐ ๋์ฐ๋ณ์ด ์ฐ์ฐ์๋ฅผ ์ค๊ณํฉ๋๋ค.
2. ๋ชจ๋์ฑ ๋ฐ ์๋ ์ ์ ํจ์ (ADF)
์ ํต์ ์ธ GP๋ ๋จ์ผ ๋ฉ์ธ ํ๋ก๊ทธ๋จ์ ์งํ์ํต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ํ๋ก๊ทธ๋จ์ ์ข ์ข ๋ชจ๋์ฑ์ ์ด์ ์ ์ป์ต๋๋ค. ์ฆ, ํ์ ๋ฃจํด์ ์ ์ํ๊ณ ์ฌ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์๋ ์ ์ ํจ์(ADF)๋ GP๋ฅผ ํ์ฅํ์ฌ ๋ฉ์ธ ํ๋ก๊ทธ๋จ์ด ํธ์ถํ ์ ์๋ ํ๋ ์ด์์ ํ์ ํ๋ก๊ทธ๋จ(ํจ์)๋ฟ๋ง ์๋๋ผ ๋ฉ์ธ ํ๋ก๊ทธ๋จ ์์ฒด๋ฅผ ์งํ์ํต๋๋ค. ์ด๋ฅผ ํตํด ๊ณ์ธต์ ๋ฌธ์ ํด๊ฒฐ, ํฅ์๋ ์ฝ๋ ์ฌ์ฌ์ฉ, ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ ์ผ๋ก ๋ ๊ฐ๊ฒฐํ๊ณ ํจ์จ์ ์ธ ์๋ฃจ์ ์ ์ป์ ์ ์์ผ๋ฉฐ, ์ด๋ ์ธ๊ฐ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ณต์กํ ์์ ์ ๋ถํดํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค.
3. ๋ณ๋ ฌ ๋ฐ ๋ถ์ฐ GP
GP๋ ํนํ ๋๊ท๋ชจ ๊ฐ์ฒด๊ตฐ ๋๋ ๋ณต์กํ ์ ํฉ๋ ํจ์์ ๊ฒฝ์ฐ ๊ณ์ฐ๋์ด ๋ง์ ์ ์์ต๋๋ค. ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฐ ๋ถ์ฐ ์ปดํจํ ์ GP๋ฅผ ํ์ฅํ์ฌ ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ ๋ต์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ํฌ๊ธฐ ๋จ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ (์ฌ ๋ชจ๋ธ): ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ GP ๊ฐ์ฒด๊ตฐ("์ฌ")์ ๋ณ๋ ฌ๋ก ์คํํ๊ณ , ๋๋๋ก ๊ฐ์ฒด ๊ฐ์ ์ด๋ํฉ๋๋ค. ์ด๋ ๋ค์์ฑ์ ์ ์งํ๊ณ ๋ค๋ฅธ ๊ฒ์ ๊ณต๊ฐ ๋ถ๋ถ์ ๋์์ ํ์ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๋ฏธ์ธ ๋จ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ: ์ฌ๋ฌ ์ฝ์ด ๋๋ ๋จธ์ ์ ๊ฑธ์ณ ๊ฐ์ฒด ํ๊ฐ ๋๋ ์ ์ ์ฐ์ฐ์ ์ ์ฉ์ ๋ถ์ฐํฉ๋๋ค. DEAP์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฉํฐํ๋ก์ธ์ฑ ๋๋ Dask๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์คํ์ ์ํ ๋ด์ฅ ์ง์์ ์ ๊ณตํฉ๋๋ค.
4. ๋ค์ค ๋ชฉํ ์ ์ ํ๋ก๊ทธ๋๋ฐ
๋ง์ ์ค์ ๋ฌธ์ ๋ ์ฌ๋ฌ, ์ข ์ข ์์ถฉ๋๋ ๋ชฉํ๋ฅผ ๋์์ ์ต์ ํํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ง๋์ด๋ง ์ค๊ณ ์์ ์์ ๋น์ฉ์ ์ต์ํํ๋ฉด์ ์ฑ๋ฅ์ ์ต๋ํํ๊ณ ์ถ์ ์ ์์ต๋๋ค. ๋ค์ค ๋ชฉํ GP๋ ์ด๋ค ๋ชฉํ๋ ๋ค๋ฅธ ๋ชฉํ๋ฅผ ์ ํ์ํค์ง ์๊ณ ๊ฐ์ ํ ์ ์๋ ํ๋ ํ ์ต์ ์๋ฃจ์ ์งํฉ์ ์ฐพ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. NSGA-II(๋น์ง๋ฐฐ ์ ๋ ฌ ์ ์ ์๊ณ ๋ฆฌ์ฆ II)์ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ฌํ ์๋๋ฆฌ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด GP์ ๋ง๊ฒ ์กฐ์ ๋์์ต๋๋ค.
5. ๋ฌธ๋ฒ ์๋ด ์ ์ ํ๋ก๊ทธ๋๋ฐ (GGGP)
ํ์ค GP๋ ๋๋๋ก ๊ตฌ๋ฌธ์ ์ผ๋ก ๋๋ ์๋ฏธ์ ์ผ๋ก ์ ํจํ์ง ์์ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค. ๋ฌธ๋ฒ ์๋ด GP๋ ํ์ ๋ฌธ๋ฒ(์: Backus-Naur Form ๋๋ BNF)์ ์งํ ๊ณผ์ ์ ํตํฉํ์ฌ ์ด๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ ์์ฑ๋ ํ๋ก๊ทธ๋จ์ด ๋ฏธ๋ฆฌ ์ ์๋ ๊ตฌ์กฐ์ ๋๋ ๋๋ฉ์ธ๋ณ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ํ๋๋ก ํ์ฌ, ๊ฒ์์ ๋ ํจ์จ์ ์ผ๋ก ๋ง๋ค๊ณ ์งํ๋ ํ๋ก๊ทธ๋จ์ ๋ ์๋ฏธ์๊ฒ ๋ง๋ญ๋๋ค. ์ด๋ ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํ๋ก๊ทธ๋จ์ ์งํ์ํค๊ฑฐ๋ SQL ์ฟผ๋ฆฌ ๋๋ ๋ถ์ ๊ตฌ์กฐ์ ๊ฐ์ด ์๊ฒฉํ ๊ท์น์ด ์๋ ๋๋ฉ์ธ์ ๊ฒฝ์ฐ ํนํ ์ ์ฉํฉ๋๋ค.
6. ๋ค๋ฅธ AI ํจ๋ฌ๋ค์๊ณผ์ ํตํฉ
AI ๋ถ์ผ ๊ฐ์ ๊ฒฝ๊ณ๋ ์ ์ ๋ ํ๋ ค์ง๊ณ ์์ต๋๋ค. GP๋ ๋ค๋ฅธ AI ๊ธฐ์ ๊ณผ ํจ๊ณผ์ ์ผ๋ก ๊ฒฐํฉ๋ ์ ์์ต๋๋ค:
- ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ ๋ฐฉ์: ์ ๊ฒฝ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๊ณต๊ธํ๊ธฐ ์ ์ ํน์ฑ ๊ณตํ์ ์ํด GP๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ์ํคํ ์ฒ๋ฅผ ์งํ์ํค๊ธฐ ์ํด GP๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ ๊ฒฝ ์งํ: ์ธ๊ณต ์ ๊ฒฝ๋ง์ ๊ฐ์ค์น, ์ํคํ ์ฒ ๋ฐ ํ์ต ๊ท์น์ ์งํ์ํค๊ธฐ ์ํด ์งํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ํ์ ๋ถ์ผ์ ๋๋ค.
ํ์ด์ฌ ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ๊ณผ์ ๋ฐ ํ๊ณ
๋๋ผ์ด ๊ฐ๋ ฅํจ์๋ ๋ถ๊ตฌํ๊ณ , ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ ค์์ด ์๋ ๊ฒ์ ์๋๋๋ค:
- ๊ณ์ฐ ๋น์ฉ: GP๋ ํนํ ๋๊ท๋ชจ ๊ฐ์ฒด๊ตฐ, ๋ง์ ์ธ๋ ๋๋ ๋ณต์กํ ์ ํฉ๋ ํจ์ ํ๊ฐ์ ๊ฒฝ์ฐ ์๋นํ ๊ณ์ฐ ๋ฅ๋ ฅ๊ณผ ์๊ฐ์ด ํ์ํ์ฌ ๋งค์ฐ ์์ ์ง์ฝ์ ์ผ ์ ์์ต๋๋ค.
- ์ ํฉ๋ ํจ์ ์ค๊ณ: ์ ์ ํ๊ณ ํจ๊ณผ์ ์ธ ์ ํฉ๋ ํจ์๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข ์ข ๊ฐ์ฅ ์ด๋ ค์ด ๋ถ๋ถ์ ๋๋ค. ์๋ชป ์ค๊ณ๋ ์ ํฉ๋ ํจ์๋ ๋๋ฆฐ ์๋ ด, ์กฐ๊ธฐ ์๋ ด ๋๋ ์ต์ ์ด ์๋ ์๋ฃจ์ ์ ์งํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ํด์ ๊ฐ๋ฅ์ฑ: GP๋ (๋ถํฌ๋ช ํ ์ ๊ฒฝ๋ง๊ณผ ๋ฌ๋ฆฌ) ํด์ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ ๋ฐ๊ฒฌํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ์ง๋ง, ์งํ๋ ํธ๋ฆฌ๋ "๋ธ๋กํธ"๋ก ์ธํด ์ธ๊ฐ์ด ์ดํดํ๊ฑฐ๋ ๋๋ฒ๊ทธํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค ์ ๋๋ก ๋ณต์กํด์ง ์ ์์ต๋๋ค.
- ๋งค๊ฐ๋ณ์ ์กฐ์ : ๋ค๋ฅธ ์งํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, GP๋ ์ต์ ์ ์ฑ๋ฅ์ ์ํด ์ ์คํ ์กฐ์ ์ด ํ์ํ ๋ง์ ํ์ดํผํ๋ผ๋ฏธํฐ(์: ๊ฐ์ฒด๊ตฐ ํฌ๊ธฐ, ๊ต์ฐจ ํ๋ฅ , ๋์ฐ๋ณ์ด ํ๋ฅ , ์ ํ ๋ฐฉ๋ฒ, ๊ธฐ๋ณธ ์งํฉ ๊ตฌ์ฑ ์์, ๊น์ด ์ ํ)๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ข ์ข ๊ด๋ฒ์ํ ์คํ์ ํตํด ์กฐ์ ๋ฉ๋๋ค.
- ์ผ๋ฐํ ๋ ๊ณผ์ ํฉ: ์งํ๋ ํ๋ก๊ทธ๋จ์ ํ๋ จ ๋ฐ์ดํฐ์์ ๋งค์ฐ ์ ์ํ๋ ์ ์์ง๋ง ๋ณด์ด์ง ์๋ ๋ฐ์ดํฐ์๋ ์ผ๋ฐํํ์ง ๋ชปํ ์ ์์ต๋๋ค. ๊ต์ฐจ ๊ฒ์ฆ ๋ฐ ์ ํฉ๋ ํจ์์ ๋ช ์์ ์ธ ์ ๊ทํ ํญ๊ณผ ๊ฐ์ ์ ๋ต์ด ์ค์ํฉ๋๋ค.
ํ์ด์ฌ์ ์ด์ฉํ ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ๋ฏธ๋ ๋ํฅ
์ ์ ํ๋ก๊ทธ๋๋ฐ ๋ถ์ผ๋ ์ปดํจํ ๋ฅ๋ ฅ์ ๋ฐ์ ๊ณผ ํ์ ์ ์ธ ์ฐ๊ตฌ์ ํ์ ์ด ๊ณ์ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ๋ฏธ๋ ๋ํฅ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ๋ฅ๋ฌ๋ ํตํฉ: GP๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ ๊ฒฝ๋ง ์ํคํ ์ฒ๋ฅผ ๋ฐ๊ฒฌํ๊ณ , ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ์ต์ ํํ๊ฑฐ๋, ๋ฐ์ดํฐ ์ฆ๊ฐ ์ ๋ต์ ์์ฑํ์ฌ, ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ์์ ํตํฉ์ ๊ฐํํฉ๋๋ค. ์ด๋ ๋ ๊ฐ๋ ฅํ๊ณ ์์จ์ ์ธ AI ์์คํ ์ ์๋ก์ด ์ธ๋๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ์๋ํ๋ ๋จธ์ ๋ฌ๋ (AutoML): GP๋ ํน์ฑ ๊ณตํ, ๋ชจ๋ธ ์ ํ, ํ์ดํผํ๋ผ๋ฏธํฐ ์ต์ ํ๋ฅผ ํฌํจํ ๋จธ์ ๋ฌ๋ ํ์ดํ๋ผ์ธ์ ๋ค์ํ ๋จ๊ณ๋ฅผ ์๋ํํ ์ ์์ผ๋ฏ๋ก AutoML์ ์์ฐ์ค๋ฝ๊ฒ ์ ํฉํฉ๋๋ค. ์ด๋ AI๋ฅผ ๋น์ ๋ฌธ๊ฐ์๊ฒ ๋ ๋๋ฆฌ ๋ณด๊ธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ค๋ช ๊ฐ๋ฅํ AI (XAI) for GP: ๋ณต์กํ ์งํ๋ ํ๋ก๊ทธ๋จ์ ์ธ๊ฐ ์ฌ์ฉ์์๊ฒ ๋ ํด์ ๊ฐ๋ฅํ๊ณ ์ค๋ช ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ฐํ์ฌ, ์๋ฃ ๋ฐ ๊ธ์ต๊ณผ ๊ฐ์ ์ค์ํ ์์ฉ ๋ถ์ผ์์์ ์ ๋ขฐ์ ์ฑํ์ ์ฆ๊ฐ์ํต๋๋ค.
- ์๋ก์ด ํํ: GP์ ๋ฒ์์ ํจ์จ์ฑ์ ํ์ฅํ๊ธฐ ์ํด ๊ทธ๋ํ ๊ธฐ๋ฐ ํํ, ๋ฌธ๋ฒ ๊ธฐ๋ฐ ์์คํ ๋๋ ์ ๊ฒฝ ํ๋ก๊ทธ๋จ ํํ๊ณผ ๊ฐ์ ์ ํต์ ์ธ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋์ด์๋ ๋์์ ์ธ ํ๋ก๊ทธ๋จ ํํ์ ํ์ํฉ๋๋ค.
- ํ์ฅ์ฑ ๋ฐ ํจ์จ์ฑ: ์ ์ ๋ ํฌ๊ณ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ณ๋ ฌ, ๋ถ์ฐ ๋ฐ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ GP ๊ตฌํ์ ์ง์์ ์ธ ๋ฐ์ .
๊ฒฐ๋ก : ํ์ด์ฌ์ผ๋ก ์งํ ์ง๋ฅ ์์ฉ
ํ์ด์ฌ์ ๋ค์ฌ๋ค๋ฅํจ์ผ๋ก ๊ตฌ๋๋๋ ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์งํ ์๋ฆฌ์ ์ง์์ ์ธ ํ์ ๋ณด์ฌ์ฃผ๋ ์ฆ๊ฑฐ์ ๋๋ค. ์ด๋ ๊ธฐ์กด ๋ฐฉ๋ฒ์ด ์คํจํ๋ ๊ณณ์์ ์๋กญ๊ณ ์์์น ๋ชปํ ์๋ฃจ์ ์ ๋ฐ๊ฒฌํ ์ ์๋ ๋ ํนํ๊ณ ๊ฐ๋ ฅํ ๋ฌธ์ ํด๊ฒฐ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ๊ณผํ ๋ฐ์ดํฐ์ ๋ฏธ์คํฐ๋ฆฌ๋ฅผ ํ๊ณ , ์ง๋ฅํ ์์ด์ ํธ๋ฅผ ์ค๊ณํ๊ณ , ๋ค์ํ ๊ธ๋ก๋ฒ ์ฐ์ ์ ๋ฐ์ ๊ฑธ์ณ ๋ณต์กํ ์์คํ ์ ์ต์ ํํ๋ ๊ฒ์ ์ด๋ฅด๊ธฐ๊น์ง, ํ์ด์ฌ์ ์ฌ์ฉํ GP๋ ์ธ๊ณต ์ง๋ฅ์์ ๊ฐ๋ฅํ ๊ฒ์ ๊ฒฝ๊ณ๋ฅผ ๋ํ ์ ์๋๋ก ์ค๋ฌด์๋ค์๊ฒ ํ์ ์ค์ด์ค๋๋ค.
ํต์ฌ ๊ฐ๋ ์ ์ดํดํ๊ณ , ์ ํฉ๋ ํจ์์ ๊ธฐ๋ณธ ์งํฉ์ ์ธ์ฌํ๊ฒ ์ค๊ณํ๊ณ , DEAP์ ๊ฐ์ ๊ฐ๋ ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํจ์ผ๋ก์จ, ์ธ๊ณ์์ ๊ฐ์ฅ ๊น๋ค๋ก์ด ๊ณ์ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์งํ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฌ๋ ฅ์ ํ์ฉํ ์ ์์ต๋๋ค. ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ ์ ๋ฐ๊ฒฌ, ํ์ ๋ฐ ์ง์์ ์ธ ์ ์์ ์ฌ์ ์ด๋ฉฐ, ์ฌ๊ธฐ์ ์ฌ๋ฌ๋ถ์ ์ฝ๋๋ ๋จ์ํ ๋ช ๋ น์ ์คํํ๋ ๊ฒ์ด ์๋๋ผ ์ง๋ฅ์ ์ผ๋ก ์ฝ๋๋ฅผ ์งํ์ํต๋๋ค. ํ์ด์ฌ์ ํ๊ณผ ์งํ์ ์ฐ์ํจ์ ๋ฐ์๋ค์ด๊ณ , ์ค๋๋ ์ฌ๋ฌ๋ถ์ ์ฐจ์ธ๋ ์ง๋ฅํ ์๋ฃจ์ ์ค๊ณ๋ฅผ ์์ํ์ญ์์ค.