유전 연산자(Genetic Operators)

개요

유전 알고리즘에서 개체를 진화시키기(?) 위해서 유전 연산자를 이용하고 있습니다.

유전 연산자에는 선택, 교배, 변이가 있습니다.


 선택은, 높은 적합도를 보이는 상위 염색체들을 확률적으로 선택하여 다음 세대에 사용합니다.

 교배는, 선택된 염색체들을 서로간 교배를 통하여 새로운 구조를 가지는 염색체를 만들어냅니다.

 변이는, 교배를 통한 재조합이 끝난 후 일부를 바꾸어주는 과정(자연계 생명체 유전자의 돌연변이 과정)


선택, 교배, 변이의 각각의 과정들은 다양한 방법과 형태들이 있으나, 저는 제가 아는 지식의 범위 내에서 대표적으로 판단되는 몇가지들을 소개하고자 합니다.


 

 

선택 연산자(Selection)


Roulette wheel selection

각 염색체의 적합도에 비례하는 만큼 roulette의 영역을 할당한 다음, roulette을 돌려 화살표가 가리키는 영역의 염색체를 선택합니다.

적합도가 높은 것은 선택될 확률이 그만큼 많고 적합도가 낮을 것은 선택될 확률이 상대적으로 낮아집니다.


Ranking selection

적합도의 크기 순서에 따라 순위를 매기고 순위에 따라 확률을 결정합니다.

여기서의 확률은 Roulette wheel selection과 달리 순위에 의해 사전에 결정된 확률입니다.


Elitist preserving selection

가장 적합도가 높은 개체는 다음 세대에도 그대로 살려둡니다.


Tournament selection

임의의 수의 개체를 무작위로 선택하며, 그 가운데 접합도가 높은 개체를 다음 세대로 넘깁니다.


 

 

교배 연산자(Crossover)

단순교차(Simple Crossover)

하나의 교차위치 설정하며, 그 전후를 기준으로 부모의 유전자형을 교환합니다.


복수점교차(Simple Crossover)

교차위치가 복수인 경우이며, 그림과 같이 기준을 전후로 부모의 유전자형을 교환합니다.


일정교차(Uniform Crossover)

마스크를 사용하여 어느 쪽의 유전자를 받아들일지 결정합니다.

예를 들어 마스크에서 ‘0’인경우는 그대로 유전자를 전달하며, ‘1’인 경우, 유전자를 교환합니다.

일명 필터링이라고도 합니다.


산술교배(Arithmetic Crossover)

실수 표현(Value Encoding)일 경우 사용 가능하며, 염색체의 각 위치에 대해 두 부모 염색체 유전자의 평균값을 이용합니다.

일반적으로 매우 빠른 수렴을 보이므로, 변이 등을 적절히 조절하여 설익은 수렴이 되지 않도록 주의해야합니다.


 

 

변이 연산자(Mutation)

유전자를 일정한 확률로 변화시키는 조작입니다.


부모해가 가지지 못한 성질을 부여하여 탐색범위를 확보합니다. 이는 전역적 탐색효과를 극대화 시킵니다(Maximize Global Search).

변이는 집단의 다양성 증대시킵니다. 돌연변이가 없다면, 초기 유전자 조합 이외에 공간을 탐색할 수 없기 때문에 적절하지 않은 초기 조합을 선택하게 되면 원하는 해를 구할 수 없습니다(Local Optimum 방지).




각 유전자 별로 난수를 발생하여 미리 설정한 변이 확률보다 작으면 변이시킵니다.

일반적으로 정적변이와 정적변이가 있습니다.

 정적 변이는 돌연변이의 확률을 일정하게 고정합니다.

 동적 변이는 초기 품질이 좋지 않은 해가 많으므로 변이의 강도를 높이며, 후반에는 변이가 강할 경우 품질 향상이 일어나지 않으므로 변이의 강도를 낮춥니다.


변이의 확률이 높아지면,

다양한 해 생성에 의해 유전 알고리즘의 역동성이 높아집니다.

그러나 반대로 수렴성이 떨어져 수행 시간이 많이 걸립니다.


사진출처 : https://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/27178/versions/1/previews/html/gaPeaksExample.html


 

 

1. 유전학과  유전 알고리즘 개요

유전 알고리즘은?

1975년 미국 미시간 대학의 John Holland 교수가 세포작용을 연구하던 중 제안하였습니다.

모든 생물은 주어진 다양한 환경 속에서 적응함으로서 살아남는다는 Darwin의 적자생존(Survival of the fittest)의 이론을 기본으로 하고 있습니다.

 생물은 환경에 잘 적응할 수 있다면 생명의 존속과 증식이 가능함

 증식을 할 때에는 자기 자신이 가지고 있는 유전 정보를 자손들에게 전달

 적응도가 낮은 개체는 수명이 짧고, 증식을 할 수 없게 되며, 자연 도태됨

이러한 원리에 기초하여 세대를 거듭해가며 환경에 적응도가 높은 개체가 많아지는 거죠.




예를 들어볼까요?

어느 지역에 선인장 집단이 존재하고 있었습니다. 이 지역의 기온이 올라갈수록 더위에 강한 선인장들은 살아남고 존속과 증식을 이어나가나, 더위에 약한 선인장들은 수명이 짧아지고 도태하게 됩니다. 이러한 환경이 반복되며 점차 더위에 강한 선인장들의 개체가 많아지는 거죠.


 

 

2. 유전 알고리즘(Genetic Algorithm) 구조

앞서 말씀드린 선인장 예로 간단하게 유전 알고리즘 구조를 다음과 같이 나타낼 수 있습니다.

여기서 유전 알고리즘을 대표할 수 있는 연산자들이 있는데요, 선택(Selection), 교대(Crossover), 변이(Mutation)입니다.

 선택(Selection) : 선택 연산자는 집단 중에서 적응도에 따라 단게로 교배를 행하는 개체의 생존 본포를 결정합니다. 적응도가 높은 개체일수록 보다 많은 자손을 남기기 쉽죠.

 교대(Crossover) : 교배 연산자는 부모로부터 유전자를 받아 하나의 개체를 생성하는데요, 이때 교배를 어떻게 하느냐에 따라 새로운 개체의 형태가 달라집니다.

 변이(Mutation) : 변이 연산자는 유전자의 어떤 부분을 강제적으로 변화시키는 것으로, 돌연변이라고 생각하시면 됩니다. 이는 유전자 집단으로서의 다양성을 유지하는데 필요하죠.


사용자 계정트롤(UAC) 어디서 설정할까?




[시작]에서 '사용자 계정~'으로 타이핑하신후, 상단에 '사용자 계정 컨트롤 설정 변경'을 클릭하시면 됩니다.


무엇을 어떻게 설정할까?


사용자계정 설정에서는 프로그램이 컴퓨터를 변경하려고 할 때 알림이 표시하는데,

설정을 조정하여 알림 빈도를 제어할 수 있습니다.

다음은 각각의 설정에 따른 내용보안에 미칠 수 있는 영향에 대하여 설명하였습니다.


1. 항상알림

  • 프로그램에서 관리자 사용 권한이 필요한 컴퓨터 변경 작업 또는 Windows 설정 변경 작업을 수행하기 전에 알림이 표시됩니다.
  • 알림을 받으면 바탕 화면이 흐리게 표시되고 사용자 계정 컨트롤(UAC) 대화 상자의 요청을 승인하거나 거부하기 전에는 컴퓨터에서 다른 작업을 수행할 수 없습니다.
  • 바탕 화면이 흐려진 동안에는 다른 프로그램이 실행될 수 없으므로 바탕 화면이 흐려지는 것을 보안된 데스크톱이라고 합니다.
  • 보안상 가장 안전한 설정입니다.

2. 프로그램에서 컴퓨터를 변경하려는 경우에만 알림

  • 프로그램에서 관리자 사용 권한이 필요한 컴퓨터 변경 작업을 수행하기 전에 알림이 표시됩니다.
  • 사용자가 관리자 사용 권한이 필요한 Windows 설정 변경 작업을 수행하려고 하는 경우에는 알림이 표시되지 않습니다.
  • Windows 외부의 프로그램이 Windows 설정을 변경하려고 하는 경우에는 알림이 표시됩니다.
  • 일반적으로는 알림을 받지 않고 Windows 설정을 변경할 수 있도록 허용해도 안전합니다.
  • 그러나 Windows와 함께 제공되는 특정 프로그램에 명령이나 데이터가 전달될 수 있으며 악성 소프트웨어가 컴퓨터에서 이러한 프로그램을 사용하여 파일을 설치하거나 설정을 변경하는 방식으로 이 기회를 이용할 수 있습니다.
  • 따라서 컴퓨터에서 프로그램이 실행될 수 있도록 허용할 때는 항상 주의해야 합니다.



3. 프로그램에서 컴퓨터를 변경하려는 경우에만 알림(바탕 화면을 흐리게 표시하지 않음)

  • 프로그램에서 관리자 사용 권한이 필요한 컴퓨터 변경 작업을 수행하기 전에 알림이 표시됩니다.
  • 사용자가 관리자 사용 권한이 필요한 Windows 설정 변경 작업을 수행하려는 경우에는 알림이 표시되지 않습니다.
  • Windows 외부의 프로그램이 Windows 설정을 변경하려고 하는 경우에는 알림이 표시됩니다.
  • 이 설정은 "프로그램에서 컴퓨터를 변경하려는 경우에만 알림"과 동일하지만 보안된 데스크톱에서는 알림이 표시되지 않습니다.
  • 이 설정을 사용하면 사용자 계정 컨트롤(UAC) 대화 상자가 보안된 데스크톱에 있지 않으므로 다른 프로그램이 대화 상자의 시각적 모양에 방해가 될 수 있습니다.
  • 컴퓨터에서 악성 프로그램이 이미 실행 중인 경우 이 설정은 보안상 약간 위험합니다.


4. 알리지 않음

  • 컴퓨터에 대한 변경 작업이 수행되기 전에 알림이 표시되지 않습니다.
  • 관리자로 로그온한 경우 프로그램에서 무단으로 컴퓨터를 변경할 수 있습니다.
  • 표준 사용자로 로그온한 경우에는 관리자 사용 권한이 필요한 모든 변경 작업이 자동으로 무시됩니다.
  • 이 설정을 선택하는 경우 컴퓨터를 다시 시작하여 UAC를 해제하는 과정을 완료해야 합니다.
  • UAC가 해제되면 관리자로 로그온한 사용자가 항상 관리자 사용 권한을 가집니다.
  • 가장 안전하지 않은 설정입니다. UAC에서 알림을 표시하지 않도록 설정하는 경우 컴퓨터가 보안 위험에 노출될 수 있습니다.
  • UAC에서 알림을 표시하지 않도록 설정하는 경우 실행하는 프로그램이 보호된 시스템 영역, 사용자 개인 데이터, 저장된 파일 및 컴퓨터에 저장된 기타 항목을 읽거나 변경하는 등 사용자와 동일한 권한으로 컴퓨터에 액세스하게 되므로 프로그램을 실행할 때 주의해야 합니다.
  • 또한 이들 프로그램은 인터넷을 비롯하여 컴퓨터가 연결되어 있는 모든 대상과 통신하고 정보를 주고받을 수 있습니다. 


+ Recent posts