유전자 알고리즘은 무엇이며 어떤 종류의 문제가 좋은가요?


16

이 사이트에 대한 몇 가지 질문에 유전자 알고리즘이 언급되어 있으며 실제로 그에 대해 많이 알지 못한다는 것을 알게되었습니다.

나는 이전에 그 용어를 들었지만, 내가 사용한 것은 아니기 때문에, 그들이 어떻게 작동하고 무엇이 좋은지에 대해 많이 모른다. 내가 아는 것은 그것들이 일종의 진화와 무작위로 변화하는 가치를 포함한다는 것입니다.

기본 원리를 설명하는 실용적인 예를 포함하여 짧은 설명을 해 주시겠습니까?

답변:


11

진화 알고리즘은 다윈의 자연 선택 원리에 기반한 최적화 알고리즘의 계열이다 . 자연 선택의 일부로서, 주어진 환경에는 생존과 재생산을 위해 경쟁하는 개인이 있습니다. 각 개인이 이러한 목표를 달성 할 수있는 능력은 아동을 가질 수있는 기회, 즉 유전자를 차세대 개인에게 전달할 수있는 기회를 결정합니다. 두 가지 목표.

세대에 걸쳐 지속적으로 개선되는 이러한 원칙은 문제에 대한 솔루션을 최적화하기 위해 진화 알고리즘에 의해 취해집니다. 에서 초기 세대 상이한 구성된 인구 개인 랜덤 또는 다른 방법에 의해 생성된다. 개인은 문제에 대한 해결책, 다소 좋은 것입니다. 문제와 관련하여 개인의 질을 fitness 라고합니다 . 이는 해결해야 할 문제에 대한 솔루션의 적절성을 반영합니다. 개인의 체력이 높을수록 유전자형의 일부 또는 전부가 다음 세대의 개인에게 전달 될 가능성이 높습니다.

개인은 유전자형 으로 코딩되며 ** 비트 벡터 ( 유전자 알고리즘 ) 또는 실제 벡터 (진화 전략) 와 같은 모든 모양을 가질 수 있습니다 . 각 유전자형은 개체를 평가할 때, 즉 적합성이 계산 될 때 표현형 으로 변환됩니다 . 어떤 경우에는 표현형이 유전자형과 동일합니다 : 직접 코딩 이라고합니다. 그렇지 않으면 코딩을 간접이라고합니다. 예를 들어, 길이, 높이 및 너비로 정의 된 직육면체의 크기를 최적화한다고 가정합니다. 예제를 단순화하기 위해이 3 개의 수량이 0과 15 사이의 정수라고 가정합니다. 그런 다음 4 비트 이진수를 사용하여 각 수량을 설명 할 수 있습니다. 가능한 해결책의 예는 유전자형 0001 0111 01010 일 수 있습니다. 해당 표현형은 길이 1, 높이 7 및 너비 10의 평행 육면체입니다.

구세대에서 신세대로 전환하는 동안 변형 이라고 연산자 operator ) , 그 목적은 개인을 조작하는 것입니다. 변형 연산자에는 두 가지 유형이 있습니다.

  • 돌연변이 사업자 유전 적 돌연변이로, 동일한 개인 내 변화를 소개하는 데 사용됩니다;
  • 크로스 오버 연산자 사용 사육 유전 십자가, 적어도 두 가지 다른 유전자형을 교차.

진화 알고리즘은 운영 연구, 로봇 공학, 생물학, 뉘앙스 또는 암호화와 같은 다양한 분야에서 입증되었습니다. 또한 여러 대물 렌즈를 동시에 최적화 할 수 있으며, 수학적 모델의 특성을 최적화하지 않기 때문에 블랙 박스로 사용할 수 있습니다. 그들의 유일한 제한은 계산 복잡성입니다.

여기에 이미지 설명을 입력하십시오


여기에 답해 주셔서 감사합니다! 개인적으로 이것이 AI SE에 대한 이상적인 질문이라고 생각하지만, 기본적이고 "높은 수준"이기 때문에 OP 및 독자가 해당 스택에 적합한 주제에 대한 고급 질문에 대해 Cross Validated로 지시하는 것을 부끄러워하지 마십시오. .
DukeZhou

8

유전자 알고리즘은 문제에 대한 여러 시도 된 솔루션을 임의로 생성하는 알고리즘입니다. 이 시도 된 솔루션을 "인구"라고합니다.

그런 다음 주어진 체력 함수를 사용하여 이러한 솔루션이 문제를 얼마나 잘 해결하는지 확인합니다 . 최고의 피트니스 가치를 가진 시도 된 솔루션 은 새로운 인구를 생성하는 데 사용됩니다. 시도한 솔루션을 약간 변경 (돌연변이)하거나 기존 시도한 솔루션을 결합하여 수행 할 수 있습니다 (크로스 오버).

아이디어는 시간이 지남에 따라 문제를 해결하기에 충분한 체력 가치를 가진 시도 된 솔루션이 등장한다는 것 입니다.

이것에 대한 영감은 진화론에서 나왔다. 가장 적합한 솔루션은 살아남고 생성합니다.

실시 예 1

나무 조각에서 여러 가지 모양을 잘라내는 가장 효율적인 방법을 찾고 있다고 가정 해 봅시다. 가능한 적은 목재를 낭비하고 싶습니다.

시도한 해결책은 나무 조각에 이러한 모양을 무작위로 배치하는 것입니다. 적합성 은이 배열에 따라 모양을 자른 후 얼마나 적은 목재가 남을지에 의해 결정됩니다.
나무가 적을수록 시도한 해결책이 더 좋습니다.

실시 예 2

여러 점을 통과하는 다항식을 찾으려고한다고 가정하십시오. 시도한 솔루션은 임의 다항식입니다. 이러한 다항식
적합도 를 결정하려면 주어진 다항식이 얼마나 잘 맞는지 결정합니다. (이 특별한 경우에는 다항식이 점에 얼마나 잘 맞는지 결정하기 위해 최소 제곱 법을 사용합니다). 여러 번의 시도를 통해 점에 충분히 다항식이 나올 때까지 점에 더 적합한 다항식을 얻게됩니다.


솔루션 이란 무엇입니까 ? 특정 문제가있는 실제적인 예를 들어 주시면 어떻게 보일지 더 잘 상상할 수 있습니까?
마력 추출 루커

@InquisitiveLurker 예제를 추가했습니다. 그들이 명확하지 않은 경우 알려주세요; 답변을 업데이트하게되어 기쁩니다.
SL 바스 – 복원 모니카

6

이 답변은 하나가 어떻게 사용될 수 있는지에 대한 실제적인 예를 요청하며, 다른 답변과 함께 제공하려고 시도 할 것입니다. 그들은 유전자 알고리즘이 무엇인지 설명하는 데 아주 좋은 직업으로 보입니다. 예를 들어 보겠습니다.

주어진 입력에서 일부 출력을 생성하는 신경망이 있다고 가정 해 봅시다 (단, 네트워크의 유일한 응용 프로그램은 아니지만). 유전자 알고리즘은 이들의 모집단을 생성 할 수 있으며, 어떤 출력이 가장 좋은지 확인하여 모집단 구성원을 번식시키고 제거합니다. 결국, 신경망이 충분히 복잡하다면 신경망을 최적화해야합니다.

여기에 내가 작성한 데모가 잘못 코딩되었지만 이해하는 데 도움이 될 수 있습니다. http://khrabanas.github.io/projects/evo/evo.html 진화 버튼을 누르고 목표를 어지럽히십시오.

그것은 간단한 유전자 알고리즘을 사용하여 어떤 개체군이 생존 하는지를 번식, 돌연변이 및 결정합니다. 입력 변수 설정 방법에 따라 네트워크는 어느 정도 가까운 수준에 도달 할 수 있습니다. 이러한 방식으로 모집단은 결국 목표와 유사한 동종 집단이 될 것입니다.

유전자 알고리즘은 RGB를 사용하여 출력 색상을 생성하는 일종의 "신경망"을 만들려고합니다. 먼저 무작위 모집단을 생성합니다. 그런 다음 모집단에서 임의의 3 명의 무작위 구성원을 가져 와서 가장 낮은 체력을 가진 구성원을 선택하고 모집단에서 제거합니다. 체력은 최고 목표 제곱 차이와 최저 목표 제곱 차이와 같습니다. 그런 다음 나머지 두 개를 함께 번식시키고 죽은 구성원과 같은 위치에 아이를 추가합니다. 짝짓기가 발생하면 돌연변이가 발생할 가능성이 있습니다. 이 돌연변이는 값 중 하나를 무작위로 변경합니다.

참고로, 설정 방법으로 인해 상대적 근접성에 도달하더라도 많은 경우 완전히 수정하는 것은 불가능합니다.


6

여기에는 유전자 알고리즘이 무엇인지 설명하고 응용 프로그램을 제공하는 여러 가지 좋은 답변이 있습니다. 나는 그들이 유익한 것에 대해 일반적인 조언을 추가하고 그것을 사용해서는 안되는 경우를 추가하고 있습니다. 내 말투가 거칠다면 적절하지 않은 섹션의 사례에 GA를 사용하면 논문이 최고 저널에서 즉시 거부되기 때문입니다.

먼저, 문제는 최적화 문제 여야합니다. 최적화하려는 "피트니스 기능"을 정의해야하며이를 측정 할 방법이 필요합니다.

좋은:

  • 크로스 오버 기능은 정의하기 쉽고 자연 스럽습니다 . 특정 종류의 데이터를 처리 할 때 크로스 오버 / 돌연변이 기능을 쉽게 정의 할 수 있습니다. 예를 들어, 두 개의 후보 스트링을 스 플라이 싱하여 새로운 스트링을 획득함으로써 스트링 (예를 들어, DNA 또는 유전자 서열)을 쉽게 돌연변이시킬 수있다 (이는 자연이 유전자 알고리즘을 사용하는 이유이다). 한 나무의 가지를 다른 나무의 가지로 대체함으로써 나무 (계통 발생 나무 또는 파서 나무와 같은)도 접합 될 수 있습니다. 모양에 그리드를 그리거나 부모와 다른 그리드 섹션을 결합하여 자식을 얻으면 모양 (비행기 날개 또는 보트 모양과 같은)을 쉽게 변경할 수 있습니다. 일반적으로 이는 문제가 서로 다른 부분으로 구성되어 있고 별개의 솔루션에서 부품을 모으는 것이 유효한 후보 솔루션임을 의미합니다.
    • 즉, 좌표에 특별한 의미가없는 벡터 공간에 문제가 정의되어 있으면 GA를 선택하지 않아도됩니다. GA로 문제를 공식화하기 어려운 경우 가치가 없습니다.
  • 블랙 박스 평가 : 응시자의 경우, 신체 기능이 컴퓨터 외부에서 평가되는 경우 GA를 사용하는 것이 좋습니다. 예를 들어, 공기 터널에서 날개 모양을 테스트하는 경우 유전자 알고리즘을 사용하면 유용한 후보 모양을 생성 할 수 있습니다.
    • 예외 : 시뮬레이션 . 피트니스 기능이 노즐 설계의 성능을 측정하고 각 노즐 모양에 대한 유체 역학을 시뮬레이션해야하는 경우 GA가 적합 할 수 있습니다. 시간이 지남에 따라 물리적 시스템을 시뮬레이션하고 작업 과정에서 설계가 얼마나 잘 수행되는지에 관심이있는 경우에도 작동 할 수 있습니다. 운동 패턴 모델링 . 그러나, 부분 미분 방정식을 제약으로서 사용하는 방법은 예를 들어 문헌에서 개발되고있다. PDE가 최적화를 제한 했기 때문에 향후 변경 될 수 있습니다.

적절하지 않은:

  • 함수 의 그라디언트계산할 수 있습니다. 함수의 그라디언트에 액세스 할 수있는 경우 일반적으로 GA보다 훨씬 효율적인 그라디언트 디센트를 수행 할 수 있습니다. 그라디언트 디센트는 (GA와 마찬가지로) 로컬 최소값에 문제가있을 수 있지만이를 완화하기 위해 많은 방법이 연구되었습니다.
  • 피트니스 기능을 닫힌 형태로 알고 있습니다. 그러면 그래디언트를 계산할 수 있습니다. 많은 언어에는 자동 차별화를 지원하는 라이브러리가 있으므로 수동으로 수행 할 필요도 없습니다. 함수를 차별화 할 수없는 경우, 하위 그라데이션 하강을 사용할 수 있습니다 .
  • 최적화 문제는 선형 프로그램 또는 2 차 프로그램 과 같은 알려진 형식입니다 . GA (및 일반적으로 블랙 박스 최적화 방법)는 평가해야하는 후보자 수 측면에서 매우 비효율적이며 가능한 경우 피하는 것이 가장 좋습니다.
  • 솔루션 공간이 작습니다 . 검색 공간을 효율적으로 모을 수 있다면 최상의 솔루션을 찾았 음을 확인하고 솔루션 공간의 등고선 플롯을 작성하여 추가로 탐색해야하는 영역이 있는지 확인할 수 있습니다.

마지막으로, GA를 고려하고 있다면, 진화 전략에 대한 최신 연구를 고려하십시오. 나는 CMA-ES에 편향되어 있는데, 이것은 전통적인 GA 가하지 않는 방식으로 피트니스 환경에서 그라디언트의 개념을 포착하는 좋은 간단한 알고리즘이라고 생각합니다.


CMA-ES는 솔루션을 실수 벡터로 표현할 수있는 문제에 적합합니다.
NietzscheanAI

5

다른 답변에서 볼 수 있듯이, GA (Genetic Algorithms)를 적용하기 위해 필요한 것은 크로스 오버 및 돌연변이의 형태로 문제에 대한 잠재적 인 솔루션을 나타내는 것입니다. 이상적으로, 피트니스 기능은 단순히 '건초 더미의 바늘'이 아니라 솔루션의 품질에 대한 부드러운 피드백을 제공합니다.

다음은 유전자 알고리즘 ( 일반적 으로 메타 휴리스틱 스 )이 좋은 문제의 특징입니다.

  • NP- 완료-문제에 대한 가능한 솔루션의 수는 기하 급수적이지만 솔루션의 적합성을 확인하는 것은 비교적 저렴합니다 (기술적으로 입력 크기의 시간 다항식).
  • 블랙 박스-GA는 해결해야 할 문제에 대해 특별히 정보가있는 모델이 없더라도 합리적으로 작동합니다. 이는 이러한 접근 방식이 문제 해결을위한 '빠른 프로토 타이핑'접근 방식으로도 유용하다는 것을 의미합니다.

그러나 이러한 목적으로 널리 사용되었지만 GA는 실제로는 아닙니다. 기능 최적화 - GA 메커니즘 먼 고품질의 해결책을 찾기위한 희망으로 검색 공간의 '외곽'지역을 탐험하는 것이 아니라 주변 이상의 클러스터하지 않는 경향이 '피트니스 풍경'에서 쉽게 얻을 수있는 피크.

GA의 적용 가능성에 대한 자세한 내용은 유명한 초기 논문 인 "유전자 알고리즘에 문제를 야기시키는 요인"에 나와 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.