지난 시간에 이어서 계속해 보겠습니다.
우수한 유전자들을 선택하는 방법까지 알아보았습니다. 이번에는 그 선택된 유전자를 이용해서 !! 자손을 만들어야겠죠. 하지만 부모와 자식이 100% 동일한 유전자를 가질 수는 없는법 ! 그렇기에 유전자 조작을 통해 자손을 만들어야 합니다.
유전자 조작은 부모가 되는 유전자 정보를 바탕으로 복제와 일부 개량을 통해 자식 유전자를 만들어 낼 수 있습니다. 이런 유전자 조작 방법은 교차(crossover)와 돌연변이(mutation)이 있습니다.
부모해를 이용하여 자식해를 만드는 교차의 방법에는 1점교차, 다점교차, 균등교차, 순서교차, 싸이클 교차 등 여러가지 방법으로 자식해를 만들어 냅니다.
1점교차는 하나의 점을 기준으로 나누는 것입니다.
예를 들어 부모 1과 부모2를 아래와 같다고 생각해 봅시다.
부모 1 : 1 1 0 1 | 0 1 1 1
부모 2 : 0 1 0 1 | 1 0 0 1
위의 부모들 사이에 하나의 교차점을 두개 되면 저 교차점을 기준으로 교차를 시킵니다. 그럼 부모1의 앞쪽 4개의 유전자와 부모2의 뒤쪽4개의 유전자, 부모1의 뒤쪽 4개의 유전자와 부모2의 앞쪽 4개의 유전자가 결합된 자식이 나오게 됩니다.
자식 1 : 1 1 0 1 1 0 0 1
자식 2 : 0 1 0 1 0 1 1 1
그렇다면 2점 교차는? 여러분이 생각한 것 그대로 입니다. 교차 점이 두개가 되어 서로 교차를 시키는 방식이죠. 아래 그림은 그림 그리기가 힘들어... 다른 곳에서 빌려왔습니다 ^^;;
이제 좀 이해 되시나요? 그럼 균등 교차는 무엇일까요?
위의 부모를 다시 데려와 봅시다 !!
부모 1 : 1 1 0 1 0 1 1 1
부모 2 : 0 1 0 1 1 0 0 1
위의 부모 유전자 중 밑 줄 쳐진 부분이 보이십니까? 이렇게 밑줄 친 부분만 교환을 하게 되죠 그럼 아래와 같은 자식 유전자가 나오게 됩니다.!!
자식 1 : 1 1 0 1 1 0 1 1
자식 2 : 0 1 0 1 0 1 0 1
그 외 교차 기법들도 알아보시면 매우 다양한 기법들이 있습니다.
그럼 돌연변이는 뭘까요? 돌연변이는 특정 확률로 유전자의 정보가 랜덤으로 바꿔서 조작하는 방법입니다.
적당한 확률로 유전자를 반전시킨다든지 등등을 이용해서 돌연변이를 만들어 내게 됩니다. 이렇게 유전자 알고리즘은 선택, 교차, 돌연변이등의 유전적 조작을 통해 더욱 더 환경에 더 잘 적응해 나가는 유전자를 만들어 내게 되고, 적응도가 향상됩니다.
유전자 알고리즘은 일반적으로 최상의 해를 구하는 것을 목표로 하기보다는, 어느 정도의 임계치 이상에 해당하는 결과를 빠르게 구하기 위한 방법으로 많이 사용되고 있습니다.
그럼 다음 시간에는 SGA(Simple GA)를 이용한 문제를 한번 풀어 보도록 하겠습니다.
'AI > Machine Learning' 카테고리의 다른 글
Display Panel Tensorboard (0) | 2017.05.27 |
---|---|
퍼지 시스템 - #1. 퍼지(Fuzzy)란? (0) | 2014.06.02 |
유전 학습 - 1 (0) | 2014.05.22 |
지도 학습 - 1 (0) | 2014.05.21 |
n-gram 출현빈도에 기초한 텍스트 데이터 학습 - 2 (0) | 2014.05.19 |