군집 기반 최적화는 수리적 최적화의 한 방법론으로써, 군집 기반 최적화에서는 여러 개의 optimizer가 서로 정보를 교환하며 동시에 최적화를 수행한다. 그림 1은 경사하강법 (gradient descent method)와 같은 single agent optimization과 PSO와 같은 swarm-based optimization의 차이를 개념적으로 보여준다.

Single agent optimization에서는 주어진 법칙에 따라 최적해를 찾아간다. 대표적으로 경사하강법에서는 함수의 gradient를 따라 최적해를 찾아간다. 반면에 PSO와 같은 swarm-based optimization에서는 주어진 법칙에 더하여 agent 들이 저장하고 있는 정보를 조합하여 최적해를 찾아간다. 이러한 swarm-based optimization은 계산량이 많다는 단점이 존재하지만, 각 agent가 서로 정보를 교환하면서 최적화를 수행하기 때문에 하나의 agent가 local optimum에 빠지더라도 전체적으로는 global optimum에 수렴할 수도 있다는 장점이 있다. 아래의 그림 2는 군집 기반 최적화를 통해 2차원 함수의 최적점을 찾아가는 과정을 보여준다.

PSO에서는
이때 속도는 그림 3과 같이 해당 입자의 현재 속도

PSO는 크게 알고리즘 초기화, 속도 계산, 위치 업데이트, 점수 평가라는 4가지 과정으로 구성된다. 알고리즘 초기화 이후에는 속도 계산, 위치 업데이트, 점수 평가라는 3가지 과정을 반복하여 최적해를 찾는다. 각 과정에 대한 자세한 설명은 아래에 있다.
랜덤 함수를 이용하여 입자의 초기 위치
입자들의 현재 위치와 속도에 대해 다음 시간에서의 속도를 계산한다. 속도를 계산한다는 것은 현재 solution이 업데이트될 방향을 결정하는 것이기 때문에 경사하강법에서 목적 함수의 gradient를 구하는 것과 동일한 작업이다. 그러나 PSO에서는 그림 3과 같이 해당 입자의 상태만을 이용하는 것이 아니라, 군집에 속하는 모든 입자들로부터 만들어지는 정보를 같이 활용한다. PSO에서는
이때
계산된
위의 식에서

그림 4는 식 (4)의 속도 업데이트 방식에 대한 기하학적 의미를 보여준다. 그림 4-a는 하나의 예시로써 속도 업데이트에서 고려되는 변수들의 위치 및 크기 등을 나타낸다. 그림 4-b에서는 입자 개인이 그동안 관측했던 최적 위치인
이전 단계에서 계산한 속도
업데이트된 위치
만약 식 (6)을 만족하는 경우에는 업데이트된
평가 단계가 끝나면 사용자가 설정한 종료 조건을 확인한다. 종료 조건이 만족되는 경우에는 PSO를 종료하고, 아닌 경우에는 2.2의 속도 계산으로 돌아가 속도 계산, 위치 업데이트, 평가의 단계를 반복한다.
아래의 알고리즘 1은 앞에서 설명한 PSO의 각 과정을 코드 형식으로 정리한 것이다. PSO를 정리하자면 PSO는 목적 함수

이 글에서 설명한 기본적인 PSO 이외에도 식 (4)의
[1] Bonyadi, M. R. and Michalewicz, Z. (2017). Particle Swarm Optimization for Single Objective Continuous Space Problems: A Review. Evolutionary Computation. 25 (1): 1-54.
[2] Dan Simon (2013). Evolutionary Optimization Algorithms. Wiley.
'지능형시스템 > 최적화' 카테고리의 다른 글
[최적화/전역 최적화] Tabu Search (0) | 2016.09.28 |
---|---|
[수리적 최적화] 유전 알고리즘 (Genetic Algorithm)과 전역 최적화 (8) | 2016.09.16 |
라그랑주 승수법 (Lagrange Multiplier Method) (9) | 2016.09.01 |