유전 학습 이란?
유전이란 말은 수도 없이 들어 봤을 것이다. 살아오면서 부모에게 유전받았다. 라는 소리를 말이다.
이 글을 읽는 모든 분들도 부모나 조상에게 물려받은 특징들이 있을 것이다. 그렇기에, 아버지를 닮았다는 소리나 어머니를 닮았다는 소리를 들을 것이다. 유전 알고리즘은 이런 자연환경의 현상을 바탕으로 만들어진 알고리즘이라고 생각하면 된다.
유전 학습은 자연세계의 진화 과정을 기초로 하여 만들어진 알고리즘이다. 생물의 진화과정을 모방하여 문제를 해결하는 기법중의 하나이다. 유전이라 함은 부모에게 자녀가 어떠한 형질을 물려받는 것을 말한다. 그렇게 실제로 진화하면서 우성적으로 진화할 수 도 열성적으로 진화할 수도 돌연변이가 발생할 수 도 있는 문제이지만, 여기서 유전 학습은 점점 답을 찾기위한, 즉 우성, 우월한 유전자를 갖기 위한 알고리즘이 유전 알고리즘이다.
굉장히 어렵게 들렸을 수도 있습니다. 저도 현재 공부 중에 있는 사람이라 잘 설명을 못했을 수도 있는데, 같이 하나하나 알아가 보기로 합시다.
유전알고리즘 기초
유전알고리즘을 구현하기 위해서는 먼저 유전자를 정의해야 합니다. 여러분들이 물려받은 유전자 형질을 봅시다. 가장 보편적으로 유/무를 따질 수 있는데요, 사각턱일수도, 쌍커풀이 있을수도 없을 수도 등 여러 유전적 성향을 띕니다. 이러한 것들을 아래 와 같이 1과 0으로만 구성을 합니다.
1 0 0 0 1 1 0 1
각 숫자는 유전자의 정보를 뜻합니다. 예를 들어 첫 번째 칸이 사각턱의 유무, 두 번째가 쌍커풀의 유무 이런 식으로 말이죠, 저러한 유전정보들을 모아 유전자라고 합니다. 여기서 유전정보를 유전자좌(Gene locus)라고 하고 저렇게 모인것을 유전자라고 합니다.
그럼 저러한 유전자들이 다수로 모여있는 것을 뭐라고 할까요?
유전자들의 집합을 유전자 풀 이라고 합니다. 이 유전자를 코딩 규칙에 따라 읽어 들이면 문제의 해가 됩니다. 그리고 유전자 풀에 포함되는 유전자 개수를 풀 사이즈라고 합니다. 유전자는 문제 조건과 비교해서 우열을 평가할 수 있습니다. 우월한 유전자는 지속적으로 살아남을 것이고, 열성은 도태되어 사라질 것입니다. 그리고 생물과 동일하게 세대가 거듭될 수록 유전자는 변화하고, 환경에 적응하게 될 것입니다.
그럼 진화한 유전자의 좋고 나쁨을 계산하는 것을 무엇이라고 할까요? 이 유전자가 주변 환경에 얼마나 적합하게 적응했는지에 대해 평가하는 것을 적합도 함수(fitness fuction)이라고 합니다. 이 부분을 절대 간과해서는 안되는 부분인데!! 이 유전자들이 환경에 제대로 적응을 하고있는지 등에 대해 평가를 함으로써 적응도가 높은 유전자 다시 말해, 좋은 유전자를 선별할 수 있는 중요한 과정 입니다. 위에서 말했듯이 이 평가에 의해 좋지 못한 유전자를 판별하고 그 유전자는 도태되어 버립니다.
단 두가지만 있을 뿐입니다. 선택 과 도태 말입니다.
그럼 여기서 좋은 유전자를 평가하는 즉 선택하는 방법에는 무엇이 있을까요??
선택 방식에는 여러가지가 있습니다. 여러분들이 어떠한 선택을 할때 가끔 사용되는 룰렛 선택, 그리고 순위를 매기는 랭크선택, 그리고 유전자 개수를 적당히 랜덤하게 선택해 그 중 가장 높은 적응도를 보이는 유전자를 선택하는 토너먼트 선택 등 굉장히 다양한 방법들이 존재합니다.
자 이제 이렇게 선택된 유전자들을 어떻게 해야 할까요?
자손에게 물려줘야 합니다.!
글을 요즘들어 정리해서 올리려니 굉장히 힘드네요; 다음 내용은 다음시간에 연속해서 하겠습니다 !!
'AI > Machine Learning' 카테고리의 다른 글
퍼지 시스템 - #1. 퍼지(Fuzzy)란? (0) | 2014.06.02 |
---|---|
유전 학습 - 2 (0) | 2014.05.23 |
지도 학습 - 1 (0) | 2014.05.21 |
n-gram 출현빈도에 기초한 텍스트 데이터 학습 - 2 (0) | 2014.05.19 |
n-gram 출현빈도에 기초한 텍스트 데이터 학습 - 1 (0) | 2014.05.18 |