6.1 강화학습의 또 다른 접근 방식

“에이전트 하나를 만들어서 학습시키는 대신, 진화론을 채용해서 자연선택으로 에이전트들을 진화시키면 어떨까?”

→ 매개변수들이 서로 다른 여러 에이전트들을 환경에 풀어놓고 성과가 좋은 것들을 ‘교배’시켜서 부모의 좋은 형질들을 물려받은 새 에이전트를 만들자 !

스크린샷 2025-05-20 오후 6.18.38.png

→ 개별 에이전트의 학습이 필요하거나, 경사 하강법에 의존하지 않는다. ⇒ 기울기 무관 알고리즘

6.2 진화를 이용한 강화학습

6.2.1 진화론의 개요

스크린샷 2025-05-20 오후 6.19.57.png

스크린샷 2025-05-20 오후 6.20.17.png

  1. 무작위로 매개변수 벡터들을 만듦. 각 매개변수 벡터는 개체에 해당, 이들의 집합은 개체군임
  2. 개체군의 각 개체로 신경망을 만들어서 Gridworld 게임을 실행, 보상으로 계산한 적합도를 해당 개체에 배정
  3. 개체군에서 두 개체를 무작위로 선책하되 적합도가 높을수록 선택될 확률이 높게 만듦 → 하나의 번식 개체군을 만듦 (확률분포를 만들고 거기서 부모 추출)
  4. 개체들을 교배해서 자손 생산 → 새 개체군을 만듦
  5. 유전적 다양성을 위해 무작위로 변이 시킴
  6. 진화가 수렴할때까지 반복

6.2.2 간단한 진화 예제

문자열과 유전알고리즘을 이용한 예시

“hello world!”라는 예시를 만들어내기 위한 유전알고리즘

교차/재교합을 이용해서 두 개의 자손 문자열을 만들어냄

스크린샷 2025-05-20 오후 6.20.34.png

그 뒤로는 유전알고리즘을 이용해서 문자열을 만드는 거 실습 코드들임

유전 알고리즘 실습코드

6.3 CartPole을 위한 유전 알고리즘

 [유전 알고리즘 CartPole 실습 코드](<https://colab.research.google.com/drive/1A1o8l3Xsgk_cQ3XbDauZfxkFrdE4bz_D?usp=sharing>)

6.4 진화 알고리즘의 장단점

6.4.1 탐험이 강하게 작용한다.

기존의 엡실론 탐욕 전략 등과 다르게 무작위로 생성한 에이전트들을 진화시키는 것이기 때문에 탐험성이 더 짙다.

변이 비율을 절충하는 문제는 여전히 존재한다.

너무 낮게 잡으면 수렴이 더 일찍 일어나서 개체군이 거의 동일한 개체들로 채워진다.

6.4.2 표집 비용이 아주 크다.

진화를 위해서는 세대마다 개체군의 모든 개체를 환경에서 실제로 실행해서 적합도를 평가해야 한다

→ 개체군을 한번 갱신하기 위해 계산작업을 개체의 수 만큼 해야 한다.

→ 데이터 효율성이 나쁘다.

what if, 개체군의 크기를 줄인다면?

계산 비용은 낮출 수 있다!

but, 부모로 선택될 개체들이 적다는 뜻

→ 덜 적합한 개체들이 다음 세대의 자손들을 남길 가능성 커짐