1. 진화 하드웨어 (Evolvable Hardware)

본 연구에서는 유전자 프로그래밍을 이용한 진화 하드웨어의 동적 재구성 알고리즘 구현을 구체적인 목표로 한다. 진화 하드웨어는 수행 임무의 변화나 환경 변화에 맞추어 동적으로 실행 시간 중에 구성 회로를 변경할 수 있는 새로운 개념의 하드웨어이다. 동적 재구성이 가능하다는 진화 하드웨어의 특징은 범용 프로세서나 사용자 주문형 프로세서 (ASIC)의 한계를 극복할 수 있는 대안으로서 진화 하드웨어의 가능성을 높여주고 있다.
진화 하드웨어의 주된 응용 분야는 적응 시스템 (Adaptive system), 결함 허용 시스템 (Fault-tolerant system), 디자인 자동화 (Design automation)등이다. 적응 하드웨어는 ASIC의 빠른 계산 속도와 범용 프로세서의 범용성을 합치려는 시도로, 환경 변화에 따른 프로그램의 변화를 하드웨어 회로에 반영하여 빠른 계산 속도와 범용성을 동시에 제공하는 것을 목표로 하고 있다. 결함 허용 시스템은 진화 하드웨어의 동적 재구성 능력을 이용하여 임무의 계속적인 수행을 보장하려 한다. 최근의 연구 경향을 보면 결함이 발생한 블록의 함수를 redundant block에 구현하여 결함의 존재하에서도 계속적인 임무의 수행을 보장하려는 방향의 연구가 이루어져 있다. 디자인 자동화는 진화 연산의 탐색 능력을 이용하여, 인간 디자이너가 고려하지 못할 수 있는 영역의 성격을 이용한 회로를 만들려는 시도이다.

2. 유전자 프로그래밍 (Genetic Programming)

유전자 프로그래밍은 추론적 학습 임무에 적합한 확률적인 탐색 방법이다. 유전자 프로그래밍은 트리 모양 개체 구조를 사용하며, function node와 terminal node를 이용하여 원하는 함수를 표현한다. 유전자 프로그래밍은 기존의 결정론적 알고리즘으로 해를 찾기 어려운 큰 탐색 공간을 가진 문제에 적용하는 진화 연산의 한 방법론으로, 점이 아닌 군 중심의 탐색 방법이다. 유전자 프로그래밍에서는 하나 하나의 탐색점을 개체로 생각하여 잠정적인 해를 나타내는 개체군을 구성하고, 각 개체의 적합도에 따라 유전 연산자를 사용하여 더 향상된 개체를 갖는 개체군으로 진화시킨다.
유전자 프로그래밍은 crossover, mutation operator와 fitness, selection operator등을 주된 연산자로 사용한다. Crossover는 두 개체의 서브 트리를 교환하여 새로운 형질의 개체를 만드는 연산자이며, mutation은 개체를 구성하는 노드의 종류를 변경하여 새로운 형질의 개체를 만드는 연산자이다. fitness operator와 selection operator는 개체군에 선택압을 작용하기 위한 연산자로, 개체가 원하는 형질에 얼마나 접근하였는지를 수치화하며, 그 결과에 따라 다음 세대를 구성하는 개체를 선택할 때 선택압을 작용하여 원하는 형질에 보다 근사한 개체가 다음 세대를 구성하도록 하는 연산자들이다.

3. 진화 하드웨어와 유전자 프로그래밍

본 연구에서는 유전자 프로그래밍에 기반하여 온라인 적응 학습이 가능한 진화 하드웨어의 동적 재구성 알고리즘을 구성하고자 한다. 진화 하드웨어의 동적 재구성 알고리즘으로는 유전 알고리즘에 기반한 방법들이 많이 사용되어 왔다. 이는 유전자 프로그래밍의 트리 구조가 갖는 구조적 약점과 유전 알고리즘과 기반 하드웨어간의 유사성 (기반 하드웨어의 Configuration logic stream을 유전 알고리즘의 개체로 사용가능하다는 점)에 기반한 유전 알고리즘의 장점에서 그 이유를 찾을 수 있다. 그러나 유전자 프로그래밍은 특유의 트리 구조를 프로세스의 합으로 해석할 수 있다는 점과 Data flow analysis 없이 프로세스의 구분을 쉽게 할 수 있다는 장점이 있어 적응 시스템에의 적용에 있어 잠재적 가능성을 지니고 있다. 본 연구에서는 유전자 프로그래밍의 장점과 하드웨어의 접목을 통하여 진화 하드웨어의 응용 영역을 넓히는 한편 진화 하드웨어에 바탕한 지능형 적응 시스템의 구현을 목표로 하고 있다.

4. 참고 문헌 및 도움이 되는 사이트들