현재 유전자 알고리즘을 연구 중입니다. "왜 유전 알고리즘은 의사 결정 트리와 같은 다른 기계 학습 기술보다 많은 메모리를 필요로합니까?"라는 질문이 있습니다. 나는 인터넷 검색으로도 답을 찾을 수 없다. 누구든지 답을주고 줄 수 있습니까?왜 유전 알고리즘은 다른 기계 학습 기술보다 많은 메모리를 필요로합니까?
답변
유전 알고리즘은 어려운 최적화 문제에 대한 해결책을 "진화"하기 위해 자연 선택 과정을 모방합니다. 일반적으로 알고리즘은 먼저 임의의 "개인"(즉, 해결하려는 문제에 대한 솔루션)을 생성하고 피트니스 기능으로 "피트니스"를 계산하여 작동합니다. 더 잘 맞는 개체는 생존하기 위해 선택되며 차세대 개체를 생산하기 위해 "번식"을 통해 "DNA"를 교환 할 수 있습니다. 이 프로세스는 정지 조건에 도달 할 때까지 반복되며, 이는 달성 된 수준의 적합성 또는 최대 세대 수에 도달 할 수 있습니다. 피트니스 기능은 일반적으로 개인의 "특성"을 모두 처리하고 적합성을 출력해야하므로 (매우 스칼라 일 수도 있음) 매우 복잡한 기능입니다. 많은 문제에서 알고리즘의 복잡성의 관점에서는 불가능하므로 피트니스 근사가 대신 사용됩니다. 어느 쪽이든, GA의 반복적 인 특성, 적합성 함수의 복잡성, 주어진 순간에 수많은 개인이 RAM으로 표현된다는 사실은 까다로운 알고리즘을 만듭니다.
시뮬레이션 된 어닐링과 같은 다른 기술은 시간과 메모리에서 더 적은 자원을 필요로합니다. 시뮬레이션 어닐링의 특정 경우에는 고유 한 연산자로 변이를 사용하는 요소 만 사용합니다. SA의 경우 메모리는 일반적으로 문제가되지 않습니다. 계산 시간은 문제의 특성에 따라 분명히 조절됩니다.
GA는 유연성이 뛰어나지 만 SA는 리소스 부족으로 많은 문제에 잘 작동하는 좋은 기술입니다.
유전 알고리즘이 더 많은 메모리를 필요로하는 가장 큰 이유는 솔루션 전체를 유지해야하기 때문입니다. 힐 클라이밍, 금식 검색, 빔 검색 및 시뮬레이션 어닐링과 같은 다른 검색 방법은 한 번에 하나의 솔루션 만 처리합니다. 예를 들어 솔루션에 1MB의 RAM이 필요하다면 인구 규모가 100 인 GA는 솔루션 모집단을 나타내는 데 100MB의 RAM이 필요합니다.
Treker가 언급했듯이 모집단의 모든 솔루션을 평가해야하는 경우에도 추가 메모리 비용이 추가 될 수 있습니다.
유전자 알고리즘은 시뮬레이션과 그 중 많은 부분을 실행합니다. 하나씩 (표준이 아닌) 하나의 자식을 생성하지 않는 한, 파일에 쓰지 않는 한 많은 수의 메모리가 메모리에 저장됩니다. 이러한 자손에 대한 시뮬레이션 실행은 매우 집중적 일 수 있습니다. 특히 테스트 할 많은 기능이있는 경우 특히 그렇습니다. – JDong
[Wikipedia article] (http://en.wikipedia.org/wiki/Genetic_algorithm)에 있습니다. "유전 알고리즘이 복잡성으로 잘 확장되지 않는다"로 시작하는 "제한 사항"의 두 번째 글 머리 기호 단락을 참조하십시오. 그 후에 문장이 답이됩니다. –