본문 바로가기
인공지능/신경망

진화 알고리즘(Evolutionary Algorithm)

by 베니스스토리 2023. 7. 30.

진화 알고리즘(Evolutionay Algorithm)

진화 알고리즘(Evolutionay Algorithm)은 생물학적 진화의 개념을 모방하여 최적화 문제를 해결하는 컴퓨터 알고리즘입니다. 이 알고리즘은 자연 선택과 유전학적 변이를 활용하여, 해를 찾아가는 과정에서 최적해 또는 좋은 근사해를 찾는 데 사용됩니다. 주로 복잡하고 다양한 조건이 존재하는 최적화 문제에 적용됩니다.
 
진화 알고리즘의 기본 개념
 
유전자(Genes) : 해의 후보를 나타내는 개체들의 표현 방식을 말합니다. 보통 이진 문자여이나 실수 값들의 배열 등으로 표현됩니다.
 
적합도(Fitness) : 각 개체의 해의 후보들이 어마나 좋은지를 평가하는 함수입니다. 이 적합도 함수는 문제에 따라 다르며, 더 좋은 해의 후보에 더 높은 적합도 값을 할당합니다.
 
자연 선택(Natural Selection) : 적합도 함수를 기반으로 개체들을 선택하는 과정을 말합니다. 적합도가 높은 개체들이 더 많이 선택되어 다음 세대로 전달되는 방식으로 진화를 모방합니다.
 
진화 알고리즘 단계
 
초기화(Initialization) : 해의 후보 개체들을 랜덤 하게 생성하여 초기 집단을 구성합니다.
 
적합도 평가(Fitness Evaluation) : 각 개체의 적합도를 측정하여 적합도 함수값으로 변환합니다.
 
선택(Selection) : 적합도를 기반으로 개체들을 선택합니다. 일반적으로 선택 확률은 적합도가 높은 개체일수록 높아지도록 설정됩니다.
 
교차(Crossover) : 선택된 개체들의 유전자를 조합하여 새로운 개체를 생성합니다. 이는 해의 후보들 간의 정보 교환을 모방합니다.
 
돌연변이(Mutation) : 일부 개체들의 유전자를 무작위로 변위시켜 다음 세대에 다양성을 유지합니다. 이는 자연선택과정에서의 변이를 모방합니다.
 
반복(Iteration) : 적합도 평가, 선택, 교차, 돌연변이 과정을 반복하여 새로운 세대를 만들고 최적해를 찾아가는 과정을 진행합니다.
 
이러한 과정을 반복하여 해의 후보들이 점점 더 적합한 방향으로 진화해나가게 되며, 최종적으로 최적해 또는 근사해를 찾을 수 있습니다. 진화 알고리즘은 다양한 최적화 문제에 적용될 수 있으며, 복잡하고 다양한 해를 탐색해야 하는 문제에 특히 유용합니다.
 

신경망의 진화 알고리즘

신경망의 진화 알고리즘은 생물학적 진화 이론에서 영감을 받은 기계 학습 방법입니다. 이 알고리즘은 유전 알고리즘(Genetic Algorithms)과 유전 프로그래밍(Genetic Programming)을 활용하여 신경망을 학습하거나 최적화하는 데 사용됩니다. 이러한 기법들은 복잡하고 비선형적인 문제에 대해 특히 유용하며, 최적화 과정에서 다양한 해를 탐색하는 데 도움이 됩니다.

출처 : 네이버 지식백과

유전 알고리즘(Genetic Algorithms, GA)은 최적화 문제를 해결하기 위해 따라가는 모방적 기계 학습 기술입니다. 이 알고리즘은 유전자의 개념을 이용하여 해의 후보들을 표현하고, 이러한 해 들을 모방항 유전 연산자들을 사용하여 세대마다 해를 선택하고 변형시킵니다. 세대별로 가장 좋은 해들이 생존하며, 이러한 과정이 반복되면서 해의 집합이 점진적으로 최적해로 수렴하게 됩니다. 신경망을 학습시키거나 최적화할 때, GA를 사용하여 최적의 가중치와 편향 값을 찾을 수 있습니다.
 
유전 프로그래밍(Genetic Programming, GP)은 GA의 일종으로서, 프로그램의 구조를 진화시키는 데 사용됩니다. GP는 프로그램을 나타내는 트리 구조를 사용하여 후보 솔루션을 표현합니다. 이 트리 구조를 변형하고 선택하여 프로그램을 발전시키는데, 이는 신경망의 아키텍처를 최적화하는 데 사용될 수 있습니다. GP는 네트워크 어레이, 노드, 활성화 함수 등을 진화시켜 신경망 구조를 찾는 데 활용됩니다.
 
진화 알고리즘은 전역 최적점에 빠지지 않고 다양한 해들을 탐색하는 능력이 있기 때문에, 복잡한 문제에서도 효과적으로 작동할 수 있습니다. 하지만, 진화 알고리즘은 학습 과정이 다수 느리고, 일부 복잡한 문제에서는 다른 최신 기계 학습 기수로가 비교했을 때 성능이 떨어질 수도 있습니다. 따라서 진화 알고리즘은 주로 복잡하고 불규칙적인 문제를 다룰 때 보완적으로 사용되며, 최적화와 하이퍼파라미터 튜닝에 유용하게 적용됩니다.