Genetic Programming Series

수식이 살아있는 코드가 되는 법:
유전 프로그래밍의 기초

수학적 수식을 단순한 결과값이 아닌, 스스로 진화하는 '살아있는 코드'로 재정의하는 과정을 AI 소프트웨어 교육 공학자의 시선으로 탐구합니다.

01. 유전 프로그래밍(GP)의 본질

기호 회귀 (Symbolic Regression)

단순히 수치를 조정하는 것을 넘어, 문제의 내면에 숨겨진 '수학적 구조'를 스스로 발견하는 혁신적인 방법론입니다.

실무적 가치

복잡한 제어 시스템이나 수학적 해법이 필요한 현장에서, 인간의 개입 없이 최적의 알고리즘을 생성합니다.

02. 수식의 구성 요소: 함수 집합과 인수 집합

수식을 디지털 세계로 옮기기 위해, 구성 요소들을 논리적인 집합으로 분류해야 합니다. 식(4.1)과 (4.2)에 따라 수식은 함수 집합(F)인수 집합(F₀)으로 구분됩니다.

집합 구분 기호 역할 및 특징
인수 집합 (Argument Set) F₀ 변수($x_1, x_2$)와 파라미터($a, b, c$). 인수가 없는 기본 요소 (Terminal Nodes).
함수 집합 (Function Set) Fᵢ 연산 수행($+, \times, \exp, \cos$ 등). $i$개의 인수를 받아 계산을 실행.

예시 수식의 구성: $y_1 = \exp(-ax_1)\cos(bx_2+c)$

  • F₀ (인수 집합): $\{f_{0,1}=x_1, f_{0,2}=x_2, f_{0,3}=a, f_{0,4}=b, f_{0,5}=c\}$
  • F₁ (단항 함수): $\{f_{1,1}(z)=-z, f_{1,2}(z)=\exp(z), f_{1,3}(z)=\cos(z)\}$
  • F₂ (이항 함수): $\{f_{2,1}(z_1, z_2)=z_1+z_2, f_{2,2}(z_1, z_2)=z_1 \cdot z_2\}$

03. 디지털로 번역된 수식: 전위 표기법

인간은 '중위 표기법'(Infix Notation)에 익숙하지만, 컴퓨터는 괄호가 필요 없는 '전위 표기법'(Prefix Notation)을 훨씬 효율적으로 처리합니다.

주요 장점

연산 순서 결정을 위한 복잡한 스택 메모리 관리가 필요 없습니다. 괄호 없이도 한 번의 스캔으로 계산이 가능합니다.

최종 조합 결과
f_{2,2}, f_{1,2}, f_{2,2}, f_{1,1}, f_{0,3}, f_{0,1}, f_{1,3}, f_{2,1}, f_{2,2}, f_{0,4}, f_{0,2}, f_{0,5}

04. 수식의 계층적 구조: 연산 트리

전위 표기법으로 나열된 요소들은 시각적으로 계층적인 '연산 트리(Computational Tree)'를 형성합니다.

  • Node 연산을 수행하는 부모 노드. 함수 집합(F₁, F₂, ...)의 요소들로 채워집니다.
  • Leaf 데이터가 입력되는 말단 노드. 변수나 상수가 위치하는 인수 집합(F₀)의 영역입니다.
Data Flow
Bottom-up
Leaf to Root

05. 최종 변환: 정수 벡터 인코딩

유전 알고리즘이 수식을 조작할 수 있도록 각 함수를 정수 벡터 $\mathbf{s} = [s_1, s_2]^T$로 변환합니다.

첫 번째 성분 ($s_1$)
Arity (인수의 개수)
두 번째 성분 ($s_2$)
고유 식별자 (ID)
수식 $y_1$의 매핑 데이터 ($S_1$)
순서 벡터 $[s_1, s_2]^T$ 함수/변수 의미
1[2, 2]ᵀ$f_{2,2}$곱셈 (Root node)
2[1, 2]ᵀ$f_{1,2}$지수 함수 (exp)
3[2, 2]ᵀ$f_{2,2}$곱셈
... 중략 ...
12[0, 5]ᵀ$f_{0,5}$파라미터 $c$

Expert Tip: $[s_1, s_2]^T$ 형식의 표현은 유전 알고리즘이 $s_1$값만으로 자식 노드의 개수를 즉시 파악하게 합니다. 이는 '교차 변이(Crossover)' 과정에서 잘라낼 서브트리의 크기를 효율적으로 결정하는 핵심 정보가 됩니다.

결론: 진화하는 수식의 미래

01

구조화 (Structuring)

복잡한 수식을 단순한 정수 리스트로 변환하여 메모리 효율을 극대화합니다.

02

논리화 (Logicalization)

전위 표기법을 통해 연산 순서를 명확히 하고 모호성을 제거합니다.

03

자동화 (Automation)

정수 벡터화된 수식은 이제 인간의 개입 없이 스스로 최적해를 찾는 진화의 과정에 진입합니다.

"추상적인 수학의 언어가 인공지능의 코드로 진화하는 것,
그것이 바로 유전 프로그래밍이 지향하는 미래입니다."