학습 방법 기본

유전 알고리즘Genetic Algorithm

여러 후보를 섞고 조금 바꾸며 골라 가는 방법

핵심 정리
  • 유전 알고리즘은 후보를 한 번에 여러 벌 만들어 놓고, 잘된 것을 골라 섞고 조금 바꾸는 일을 되풀이하는 방법이에요.
  • 후보 하나는 설정값을 나열한 목록이에요. 그 목록을 점수로 줄 세우고, 위쪽만 다음 판으로 넘겨요.
  • 섞기는 잘된 두 후보의 항목을 나눠 받아 새 후보를 만드는 일이고, 한 군데를 일부러 어긋나게 바꾸는 일도 함께 해요.
  • 기울기를 구할 수 없거나 설정이 뚝뚝 끊긴 값일 때 쓸모가 커요. 대신 후보 수만큼 시험을 해야 해서 느려요.
  • 다양성이 사라지면 그 자리에서 멈춰요. 그래서 일부러 뒤처진 후보도 조금 남기고 바꾸는 폭을 조절해요.
목차

1비유로 이해하기

캠핑장에 도착해 그늘막을 치는데 정답이 하나가 아니에요. 폴대를 얼마나 높일지, 줄을 몇 도로 벌릴지, 팩을 몇 개나 박을지, 어느 쪽을 바람 쪽으로 둘지. 조합이 수십 가지예요. 한 벌씩 차례로 시험하는 대신 여섯 자리에 여섯 가지 방식으로 한꺼번에 쳐 보면 저녁 바람 한 번에 여섯 개의 답이 나와요. 그중 잘 버틴 둘을 골라, 한쪽의 폴대 높이와 다른 쪽의 줄 각도를 가져와 새로 쳐요. 여기에 팩 개수 하나만 일부러 다르게 해 보고요. 다음 날 저녁이면 처음보다 훨씬 튼튼한 방식이 손에 남아요. 유전 알고리즘이 이 방식을 그대로 옮긴 것이에요.

2자세히 알아보기

하나가 아니라 한 무리를 다뤄요

보통의 학습은 답 하나를 붙들고 조금씩 고쳐 나가요. 유전 알고리즘은 시작부터 후보를 수십 개에서 수백 개까지 만들어 놓고 함께 굴려요. 이 무리를 집단이라고 불러요.

후보 하나는 설정값을 죽 늘어놓은 목록이에요. 그늘막이라면 폴대 높이, 줄 각도, 팩 개수 같은 항목이 순서대로 적힌 줄이죠. 항목을 어떻게 정하느냐가 문제 풀이의 절반이에요. 항목이 너무 잘게 나뉘면 조합이 감당 못 하게 늘고, 너무 뭉뚱그리면 좋은 답이 목록 안에 들어 있지 않게 돼요.

점수로 줄을 세우고 위쪽만 남겨요

후보마다 실제로 시험해 점수를 매겨요. 이 점수를 적합도라고 불러요. 그늘막이라면 바람에 버틴 시간, 주차 문제라면 목표 자리에 얼마나 가까웠는지가 되겠죠. 여기서 중요한 점은 점수를 매기는 규칙만 있으면 된다는 것이에요. 어떻게 고쳐야 좋아지는지 알 필요가 없어요.

점수순으로 줄을 세운 뒤 위쪽 몇을 다음 판의 부모로 삼아요. 다만 항상 1등만 고르지는 않아요. 몇 개를 뽑아 그중 나은 것을 고르는 식으로 조금 느슨하게 뽑아야, 초반에 우연히 좋았던 후보가 무리 전체를 잡아먹지 않아요. 가장 좋은 후보 한둘은 손대지 않고 그대로 다음 판에 넘기기도 해요.

섞기와 한 군데 바꾸기

새 후보는 두 부모의 목록을 나눠 받아 만들어요. 앞쪽 절반은 한쪽에서, 뒤쪽 절반은 다른 쪽에서 가져오는 식이에요. 항목마다 동전을 던져 어느 쪽에서 받을지 정하기도 하고요. 서로 다른 강점을 가진 둘을 붙여 더 나은 하나를 노리는 장치예요.

여기에 한 가지를 더해요. 만들어진 목록에서 항목 하나를 골라 값을 조금 어긋나게 바꾸는 거예요. 이게 없으면 처음 만든 후보들 안에 없던 값은 영영 나타나지 않아요. 바꾸는 폭이 너무 작으면 제자리를 맴돌고, 너무 크면 애써 찾은 좋은 조합이 매번 흐트러져요. 섞기는 가진 것을 조합하는 일이고, 바꾸기는 없던 것을 들여오는 일이에요.

세대가 쌓이면

한 판을 세대라고 불러요. 세대가 넘어갈수록 점수의 평균이 올라가고, 무리 안의 후보들이 서로 닮아 가요. 어느 순간부터 아무리 돌려도 점수가 더 오르지 않으면 거기서 멈춰요.

문제는 너무 일찍 닮아 버리는 경우예요. 초반에 눈에 띄게 좋은 후보가 하나 나오면 그 자손이 무리를 채워 버리고, 더 좋은 답이 다른 쪽에 있어도 찾아갈 후보가 남지 않아요. 그래서 뽑기를 느슨하게 하고, 바꾸는 비율을 조금 올리고, 무리를 여러 덩어리로 나눠 따로 굴리다 이따금 섞는 방법을 써요.

어디에 쓸까요

기울기를 구할 수 있는 문제라면 보통은 경사하강법 계열이 훨씬 빨라요. 유전 알고리즘의 자리는 그 반대편이에요. 점수를 매길 수는 있는데 어느 쪽으로 고쳐야 좋아지는지 알 수 없는 문제, 설정이 개수나 순서처럼 뚝뚝 끊긴 값인 문제, 좋은 답이 여러 군데 흩어져 있는 문제에서 쓸모가 커요.

값은 시험 횟수예요. 세대마다 후보 수만큼 시험해야 하니 한 번 시험이 오래 걸리면 감당하기 어려워요. 그래서 시험이 빠른 문제나 여러 대를 동시에 굴릴 수 있는 문제에서 주로 쓰고, 신경망의 설정값을 고르는 일이나 형태를 설계하는 일에 종종 쓰여요.

3조금 더 정확하게

유전 알고리즘(Genetic Algorithm)은 진화의 선택·교차·변이를 본떠 만든 탐색 방법이에요. 후보 하나를 개체, 설정 목록을 유전자, 후보 무리를 집단, 점수를 적합도라고 불러요. 부모를 고르는 방식은 토너먼트 선택이나 순위 기반 선택이 흔하고, 상위 후보를 그대로 넘기는 것을 엘리트 보존이라고 해요. 목적 함수의 기울기를 쓰지 않기 때문에 미분할 수 없는 문제에도 적용되지만, 최적해를 찾는다는 보장은 없어요.

비유가 어긋나는 지점도 있어요. 그늘막은 사람이 눈으로 보고 어느 쪽이 왜 잘 버텼는지 짐작하지만, 유전 알고리즘은 이유를 따지지 않고 점수만 봐요. 그래서 사람이 보기에 이상한 조합이 살아남기도 해요. 또 캠핑은 저녁 한 번에 여섯 가지를 시험하면 끝나지만, 실제 문제에서는 같은 후보라도 조건에 따라 점수가 달라져서 여러 번 시험해 평균을 내야 하는 경우가 많아요.

4직접 해보기

5흔한 오해

  • 유전 알고리즘은 학습의 한 종류라고 생각하기 쉽지만, 실제로는 데이터에서 규칙을 배우는 것이 아니라 좋은 설정을 찾아내는 탐색 방법이에요.

  • 세대를 오래 돌리면 반드시 최고의 답에 닿는다고 여기기 쉽지만, 실제로는 무리가 일찍 닮아 버리면 그 자리에서 멈춰요.

  • 바꾸는 비율은 높을수록 좋다고 믿기 쉽지만, 실제로는 너무 높으면 애써 찾은 좋은 조합이 매번 흐트러져 점수가 오르지 않아요.

7한 줄 요약

그러니까유전 알고리즘은 후보를 여러 벌 만들어 점수로 줄 세운 뒤 잘된 것을 섞고 한 군데씩 바꿔 가며 답을 다듬는 방법이에요.

잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02