- AI Dev - 인공지능 개발자 모임
- 정보공유
- 유전 알고리즘
유전 알고리즘은 1975년 John Holland에 의해 개발된 기법입니다. 신경망이 인간의 두뇌를 모사했듯이, 유전 알고리즘은 자연의 진화를 시뮬레이션했습니다.
먼저 01101 같은 유전자형을 만들고, 각 자리수마다 어떤 의미를 뜻하는지 표현형을 구현합니다. 예를 들어, 미로찾기라면 각 갈림길마다 0이면 왼쪽, 1이면 오른쪽으로 정할 수 있습니다. 그다음 실제 환경에서 각 개체를 수행하고, 그 결과를 적합도 수치로 뽑아냅니다. 만약 100개의 개체라면 적합도가 높은 상위 10개만 선택하여 교차와 돌연변이를 적용합니다. 교차는 두 유전자를 잘라 서로 붙이는 것이고, 돌연변이는 특정 위치의 유전자 몇개만 값을 바꿉니다. 이런 방법으로 새로 90개를 만들어 총 100개를 채우고 다시 돌립니다. 이렇게 세대가 지날수록 환경에 잘 적응한 개체로 진화합니다.
1994년에 Karl Sims이 Evolved Virtual Creatures를 발표합니다. 한 마디로 인공생명체를 만드는 것입니다. 크리처의 외형과 행동 모두를 유전자로 만들고 진화 알고리즘으로 환경에 적응하도록 했습니다.
최근에 스탠포드대에서 Unimals라는 비슷한 프로젝트를 공개했습니다. 다만 외형은 유전 알고리즘으로 진화하지만, 행동은 강화학습으로 결정하는 차이점이 있습니다. 다양한 태스크를 수행했는데 상당히 흥미롭습니다.
예전에 저는 진정한 인공지능은 진화에서부터 시작한다고 믿었습니다. 지구와 비슷한 가상환경을 만들고 세포단계부터 진화를 시킵니다. 그리고 인공두뇌를 가진 가상 생명체가 등장할때까지 시뮬레이션을 계속 진행합니다. 문제는 그런 가상환경을 만들고 설계하는게 과연 가능하냐는 것입니다. 지금은 딥러닝처럼 사람이 직접 신경망의 구조와 학습방식을 개발하는게 더욱 빠른 길이 아닐까 하는 생각을 합니다.