유전자 알고리즘의 정지 점을 정의하면 알고리즘의 목적이 무효화됩니까?


11

Wikipedia는 GA의 종료 지점을 다음과 같이 정의합니다.

일반적으로 알고리즘은 최대 세대 수가 생성되거나 인구에 대한 만족스러운 체력 수준에 도달하면 종료됩니다. 최대 세대 수로 인해 알고리즘이 종료 된 경우 만족스러운 솔루션에 도달했거나 도달하지 않았을 수 있습니다.

이제 만족스러운 체력 수준에 도달했을 때 종료되고 그 체력 수준을 정의하는 사람이라면, 특성을 이미 알고 있기 때문에 처음부터 "완벽한"게놈을 만들 수없는 이유는 무엇입니까? 이 완벽한 게놈의?

나는 여기서 약간 혼란스러워합니다. 나는 GA의 목적이 우리가 생각했던 것보다 더 나은 해결책을 지속적으로 발전시키고 보여줄 수있는 것이라고 생각했으며, 우리의 체력 기능은 우리가 받침대에 놓인 것이 아니라 그 길을 따라 도움이 된 것입니다. 완벽한 "상태. 그것이 요점을 파괴하지 않습니까?


1
아마도 cstheory에 더 적합 할 것입니다.
Karl Bielefeldt

그것은
없었지만

1
@ 칼 : 질문은 cstheory에 약간 부드럽습니다. 아마도 닫힐 것입니다.
Robert Harvey

2
감사합니다, @Robert. 나는 왜 내가 그곳을 방문하지 않았는지 기억합니다. 나는 이것이 "균열 사이"질문 중 하나라고 생각합니다.
Karl Bielefeldt

1
당신은 이미 "완벽한 배우자"의 특성을 알고 있습니다 : 그들은 당신을 완벽하게 행복하게 만들 것입니다! 그러나 그것들을 찾기에는 충분하지 않습니다 (혼자서 처음부터 구성하십시오 ...). 실험도 필요합니다.
Kilian Foth

답변:


17

피트니스 함수는 알고리즘 의 출력 을 평가합니다 . 이상적인 출력을 볼 수는 있지만 주어진 입력에서 해당 출력을 생성하는 단계는 알 수 없습니다. 유전자 알고리즘이 가장 유용한 곳입니다.

예를 들어, GA의 일반적인 재미있는 응용 프로그램은 가상 생물을 효율적으로 움직일 수있는 애니메이션을 만드는 것입니다. 생물이 비교적 직선으로 일정한 속도로 움직이고 있는지 쉽게 알 수 있습니다. 그것이 당신의 피트니스 기능입니다. "근육"운동의 정확한 순서를 말하기가 훨씬 어렵습니다.


3
또한 GA가 최적의 체력 점수를 만족시키지 않는 지역 최소 / 최대 값에 '고착'되어 GA가 무기한으로 회전 할 수 있기 때문에 x 세대 후에 중지하는 경우가 종종 있습니다. 선택 / 크로스 오버 / 돌연변이 기능이 문제 세트에 맞게 제대로 조정되지 않은 경우 발생할 수 있습니다.
Steven Evers

@ 칼 나는 첫 번째 Malbolge "Hello World"를 생산하는 Andrew Cooke의 유전자 알고리즘 솔루션을 기억하고 그에게 이메일로 더 나은 솔루션을 잃어 버렸습니다. stackoverflow.com/questions/5338627/…
pageman

8

솔루션의 적합성을 결정할 수 있지만 솔루션 자체를 직접 결정할 수없는 경우가 종종 있습니다. 빠른 토끼를 진화 시키려고 노력하고 있으며 토끼 속도에 영향을 미치는 소수의 유전자가 있습니다. 토끼 속도를 테스트 할 수 있지만 속도 관련 유전자의 모든 조합을 열거하는 것은 비현실적입니다. 이 경우 토끼를 경주하고 가장 빠른 토끼를 낳는 GA가있을 수 있습니다. 당신은 그것을 영원히 할 수 있지만 다음과 같은 경우에 멈추기를 선호 할 것입니다.

  • X보다 빠른 토끼를 찾았거나
  • n 세대에 대한 점진적 개선이 일부 임계 값 아래로 떨어 졌거나
  • 당신은 m 세대를 통해 토끼를 사육했습니다

5

GA의 전체 요점 해당 피트니스 수준 의 문제에 대한 솔루션 을 제공하는 것 입니다. 이 솔루션은 다른 기존 검색 알고리즘을 사용하여 찾기가 매우 어려우므로 일반적으로 처음에 GA를 사용하는 이유입니다.

또는 운동량 한도 대신 달리기를 원하는 세대 수를 결정할 수 있습니다. 예를 들어 여행하는 세일즈맨 문제에서 통과해야 할 도시 사이에서 가장 비용이 저렴한 경로를 찾으십시오.

정지 조건이 허용 가능한 특정 체력 수준인지 또는 특정 시간 제약 조건 (최대 시간 동안 GA를 실행하거나 길 찾기 또는 AI 응용 프로그램과 같은 시간이 중요한 응용 프로그램의 제한된 수의 세대)은 일반적으로 문제에 의해 결정됩니다. 도메인.


3

직관적으로, 유전자 알고리즘의 목적은 간단한 논리 분석에 적합하지 않은 문제에 대한 알고리즘 솔루션을 공식화하는 것입니다. 해당 목표가 ​​달성되면 GA는 더 이상 추구 할 필요가 없습니다.

물론, 더 나은 "적합성"을 원한다면 유전자 알고리즘을 계속 실행하여보다 최적화 된 솔루션을 찾을 수 있는지 확인하거나 유전자 알고리즘 자체를 조정하여 더 나은 솔루션으로 수렴되는지 확인할 수 있습니다.


2

유전자 알고리즘은 더 좋은 전파로 좋은 유전자를 보상 할 방법이 필요합니다. 나쁜 유전자에서 좋은 유전자를 말할 방법이 없다면 유전자 알고리즘을 전혀 사용할 수 없었습니다.

유전자 알고리즘이 작동하려면 적합하지 않은 솔루션보다 선호도가 높은 솔루션을 우선적으로 재생산해야합니다. 그렇지 않으면 임의의 솔루션을 시도하고 있습니다.

다음은 제 자신의 경험에서 얻은 전형적인 예입니다. 최초의 음성 다이얼링 시스템 중 하나를 개발하면서 음성 이름을 같은 이름의 저장된 사본과 일치시키는 알고리즘을 찾는 데 어려움을 겪었습니다. 우리는 25 명 중 하나의 이름을 고르는 95 %의 정확도로 충분하다고 들었습니다. 우리는 25 명의 이름을 각각 10 번씩 말하는 사람들이 모여있었습니다.

먼저, 우리는 몇 개의 정규화 된 청크에서 구어의 길이와 주파수 에너지를 측정하는 입력 시스템을 개발했습니다. 그런 다음 해당 매개 변수의 일치 항목에 가중치를 할당하고 해당 가중치를 통해 두 매개 변수 집합을 비교하는 알고리즘을 개발했습니다.

이제 우리는 마지막 단계를 가졌습니다. 그 무게의 가치는 무엇입니까?

우리는 1,000 개의 무작위 가중치를 생성하고 코퍼스에 대해 테스트했습니다. 최악의 성능을 발휘 한 500을 버렸습니다. 나머지 500 명에 대해, 우리는 각각을 복제하고 그중 하나에서 가중치 중 하나를 무작위로 올리거나 내 렸습니다.

우리는 95 % 정확도 기준을 만족하는 일련의 무게를 가질 때까지 약 2 주 동안 컴퓨터에서이 과정을 반복했습니다. 그런 다음 코퍼스가 아닌 데이터에서 테스트했습니다. 약 92 % 정확했습니다. 우리는 말뭉치에서 98 %의 정확도를 달성하기 위해 더 오래 달렸으며, 그 가중치 세트는 말뭉치가 아닌 데이터에서 95 %의 정확도를 생성했습니다.

따라서 요점은 유전자 알고리즘을 실행하려면 피트니스 기능이 있어야한다는 것입니다. 나쁜 유전자에서 좋은 유전자를 말할 방법이 없다면, 좋은 유전자를 재생산하고 나쁜 유전자가 그렇지 않은지 어떻게 확인할 수 있습니까?


0

솔루션이 이전의 반복과 크게 다르지 않을 때까지 반복하십시오. 고정밀 공차를 이해하십시오.

Solution in iteration n-6: 600
Solution in iteration n-5: 800
Solution in iteration n-4: 768
Solution in iteration n-3: 780 
Solution in iteration n-2: 778
Solution in iteration n-1: 778.23
Solution in iteration n: 780.18
Solution in iteration n+1: 780.1815

이 예에서 고정 허용 오차가 0.01 인 경우 abs (solution (n + 1) -solution (n)) <0.01이므로 (n + 1)은 중지하라는 메시지를 표시합니다.

다시 시작하면 알고리즘이 말할 수있을 때 : 이것은 나아지지 않을 것입니다!


0

주요 질문에 대한 빠른 답변 : 달성하고자하는 것을 아는 것과 도착하는 방법을 아는 것에는 큰 차이가 있습니다.

예를 들어 유전 / 진화 알고리즘을 사용하여 해결 된 가장 인기있는 문제 중 하나 인 일반적으로 클래스 사례 연구에서 그래프에서 최적의 경로를 찾습니다. 이것은 종종 한쪽 끝에서 다른 끝까지 가장 저렴한 경로를 찾기 위해 네트워킹에서 사용됩니다. 비용 (홉 수, 각 홉의 비용 등)을 정의 할 때 결과에 ​​만족하는 목표 비용 (적합 수준)도 정의합니다. 알고리즘이 가장 적합하지는 않지만 알고리즘 적으로 허용 가능한 최적을 찾습니다. 이는 더 나은 답변을 찾는 비용 / 혜택 관계가 금지됨을 의미합니다.

GA / EA를 사용하면 95 % 이상의 최적 답변을 매우 빠르게 찾는 것이 정상적인 행동이지만 마지막 5 %를 좁히는 것은 기하 급수적으로 비용이 많이 듭니다. 따라서 이론은 최소한의 시간으로 최상의 결과를 달성하기 위해 허용 가능한 최적을 정의하는 것입니다. 검색 비용 (예 : 상위 1 %)이 상위 5 %보다 이점을 능가 할 수 있으므로 허용 가능한 최적을 정의하십시오.

요약하면, 이제는 특정 문제에 대한 답이 아니라 문제별로 적절한 최적의 결과를 제시하여 더 나은 답을 찾는 것이 실용적이지 않은 지점을 정의하는 것입니다.


0

부정적인 코드와 긍정적 인 테스트 사례를 피트니스 함수로 제공하고 깨진 코드를 입력으로 제공 하여 유전자 알고리즘 으로 C의 버그수정 하는 연구가 있습니다 . 이것은 인간에 의해 해결 될 수 있는 문제의 예 이지만, 유전자 알고리즘으로는하기 쉽습니다. 다음 사항에 유의하십시오.

이 백서에 설명 된 방법은 새로운 프로그램을 처음부터 발전 시키지는 않지만 기존 소프트웨어를 발전시켜 기존 결함을 복구하는 방법을 보여줍니다.

그러나 새로운 프로그램 C가 아닌 처음부터 새로 개발되었다. Malbolge 밀교 프로그래밍 언어로 작성된 몇 안되는 사소한 프로그램 은 모두 내가 아는 바에 따라 발전된 것이 아니라 발전되었다. 이 언어는 프로그래머가 사용하기에는 너무 복잡하고 논리만으로 프로그램을 효율적으로 추론하기에는 너무 복잡하기 때문에 그 언어로 작성된 프로그램의 대부분은 유전자 알고리즘에 의해 생성되었습니다. 피트니스 기능은 일반적으로 예상 출력까지의 편집 거리입니다.

이것은 어떤 방식 으로든 원형입니다. 복잡한 유전자 코드가 진화 과정에 의해 작성되는 것을 관찰함으로써, 우리는 코드가 어떻게 작동하는지 알지 않고도 진화 과정을 시뮬레이션하여 다른 복잡한 언어로 코드를 생성 할 수 있습니다!

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