카테고리 없음

패스트캠퍼스 환급챌린지 23일차 : 스크래치부터 시작하는 강화학습의 모든 것 강의 후기

dev-self 2025. 3. 27. 15:12

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

|내용 정리|

<Policy Iteration 파이썬 코드 구현>

핵심코드 1 - 정책 평가 함수 (Policy Evaluation)


코드설명

함수 정의: 환경, 현재 가치 벡터, 정책을 입력으로 받는다.

초기화: 변화량 임계값을 전역 수렴 기준 delta(1e-3)로 설정한다.

카운터 초기화: 반복 횟수를 추적할 카운터를 시작합니다.

수렴 루프: 값의 최대 변화가 임계값보다 작아질 때까지 계속한다.

최대 변화량 초기화: 각 반복마다 최대 변화량을 0으로 재설정한다.

새 가치 벡터 생성: 업데이트된 상태 가치를 저장할 벡터를 초기화한다.

상태 루프: 환경의 각 상태와 그 인덱스를 반복한다.

상태 가치 초기화: 현재 상태의 가치를 0으로 시작한다.

행동 루프: 이 상태에서 가능한 각 행동에 대해 반복한다.

다음 상태 루프: 상태 s에서 행동 a를 취한 후 가능한 모든.다음 상태를 고려한다.

정책 확률: 정책에 따라 상태 s에서 행동 a를 취할 확률을 가져온다.

전이 확률: 상태 s에서 행동 a를 취한 후 상태 s_next로 전이할 확률을 가져온다.

보상: 상태-행동-다음상태 전이에 대한 보상을 가져온다.

벨만 업데이트: 이 상태-행동-다음상태 조합의 가중치 기여도를 상태 가치에 더한다.    

    - 가중치에는 전이 확률과 정책 확률이 포함.
    - 가치에는 즉각적인 보상과 할인된 미래 가치가 포함.

업데이트된 가치 저장: 이 상태에 대해 새로 계산된 가치를 저장한다.

변화량 계산: 이 상태의 가치가 얼마나 변했는지 계산한다.

최대 변화량 업데이트: 모든 상태에서 가장 큰 변화를 추적한다.

가치 벡터 업데이트: 이전 가치 벡터를 새로 계산된 벡터로 교체한다.

카운터 증가: 반복 횟수를 늘린다.

진행 상황 보고: 현재 가치 벡터를 출력하고, 더 좋은 시각화를 위해 4x4 그리드로 재구성하여 표시한다.

결과 반환: 수렴에 도달하면 최종 가치 벡터를 반환한다.


핵심코드 2 - 정책 개선 함수 (Policy Improvement)


코드설명

함수 정의: 환경, 가치 벡터, 현재 정책을 입력으로 받는다.

상태 루프: 환경의 각 상태를 반복한다.

행동 가치 초기화: 이 상태에서 각 행동의 가치를 저장할 배열을 생성한다.

다음 상태 루프: 가능한 모든 다음 상태를 고려한다

전이 확률: 상태 s에서 행동 a를 통해 s_next로 전이할 확률을 가져온다.

기대 수익 계산: 상태 s에서 행동 a를 취했을 때의 기대 수익을 계산한다. 즉각적인 보상과 할인된 미래 가치를 포함하며, 전이 확률로 가중치를 부여한다.

행동 가치 저장: 이 행동의 기대 수익을 저장한다.

최적 행동 찾기: 가장 높은 기대 수익을 가진 행동을 식별한다.

정책 초기화: 이 상태에 대한 모든 행동 확률을 0으로 설정한다.

정책 업데이트: 최적 행동의 확률을 1로 설정한다.(결정론적 정책)

결과 반환: 개선된 정책을 반환한다.


핵심코드 3 - 메인 실행 코드


코드설명

메인 실행 확인: 스크립트가 직접 실행될 때만 아래 코드를 실행한다.

환경 생성: Env 클래스의 인스턴스를 생성한다.

가치 함수 초기화: 모든 상태의 초기 가치를 0으로 설정한다.

정책 초기화: 각 상태에 대한 균등한 확률 정책을 생성합니다. 모든 행동(위, 오른쪽, 아래, 왼쪽)이 동일한 확률(0.25)을 가진다.

정책 반복 루프: 정책이 수렴할 때까지 계속한다.

정책 평가 호출: 현재 정책에 대한 가치 함수를 계산한다.

최대 변화량 계산: 가치 함수의 가장 큰 변화를 찾는다.

정책 개선 조건: 가치 함수가 아직 충분히 수렴하지 않았다면, 가치 함수를 업데이트하고 정책을 개선한다.

종료 조건: 가치 함수가 충분히 수렴했다면 루프를 종료한다.


"이 전체 코드는 강화학습의 기본 알고리즘인 정책 반복(Policy Iteration)을 구현한 것이다. 정책 평가와 정책 개선을 번갈아 수행하면서 환경에 대한 최적 정책을 찾아가며 이 과정은 정책이 더 이상 개선되지 않을 때까지 반복된다."

-

아래와 같이 정책 반복을 통해 최적의 해를 찾는 것을 디버깅해 볼 수 있다.

 

 

 

|인증|

 

 

-------

패스트캠퍼스 링크

https://bit.ly/4hTSJNB