본문 바로가기

분류 전체보기66

[python] 이중리스트 할당을 조심하세요! 오늘 코드를 짜다 아주아주 화가 나는 오류를 겪다가 드디어 이유를 알아냈다. 너무 기본적인 실수라 너무 부끄럽지만 다시는 안하기 위해 공개 처형...😂 다음과 같이 이중 for문을 사용하는데 계속 같은 값이 동시에 들어가는 것이다!!!! x = [[]]*5 for i in range(5): for j in range(3): x[i-1].append(j) 문제는 바로 리스트 선언에 있었다. x = [[]]*5 for i in range(5): print(id(x[i])) 모든 내부 리스트의 주소값이 같았던 것! 이중 리스트 할당은 무조건... 리스트 컨프리헨션으로 합시다... x = [[] for i in range(5)] for i in range(5): print(id(x[i])) 정신차리기... 2023. 7. 5.
A2C 알고리즘 A2C 알고리즘 목적함수 그래디언트는 샘플링 기법을 이용하면 다음과 같이 근사적으로 계산할 수 있다. M = 에피소드 개수, m = 에피소드 인덱스 $$ \nabla_\theta J(\theta) \approx \sum\limits_{t=0}^M \left[ {1 \over M} \sum\limits_{m=1}^{M} \left( \nabla_\theta log \pi_\theta(u_t^{(m)}|x_t^{(m)}) A^{\pi_\theta}(x_t^{(m)},u_t^{(m)}) \right) \right] $$ 어드밴티지 함수를 계산하기 위해 행동가치 함수의 식을 이용해 보자 $$ Q^\pi(x_t,u_t) = r(x_t,u_t) + \mathbb{E}{x{t+1} \ \sim \ p(x_{t+1}|.. 2023. 6. 27.
[python] 피팅한 분포에서 랜덤 값 뽑기 일하면서 데이터의 분포 별로 랜덤 값을 뽑아야 했었는데, 기억해두면 유용할 것 같아 작성한다. 원하는 분포에 맞는 함수를 선택하고, 가진 데이터 분포에 대해 피팅하면 된다. 피팅된 함수에서 랜덤 샘플을 뽑는 방식은 직접 pdf 값을 계산하여 확률을 choice에 지정해주는 방식으로 구현하였다. 아래와 같은 그림으로 피팅된다. 아래는 코드이다. from scipy.optimize import curve_fit def gaussian(x, A, mu, sigma): return A*np.exp(-(x-mu)**2/2./sigma**2) # 피팅을 원하는 분포 저장하기 hist, bins, _ = ax.hist(data, bins=30) # 데이터 범위 저장하기 data_range = (data.min(), .. 2023. 6. 23.
강화학습의 키, 가치함수 가치함수 어쩌다보니, 기본 개념인 가치 함수에 대한 포스팅을 늦게 작성하게 되었다..ㅎ 하지만 강화학습을 이해하는 데 있어 없어서는 안 될 개념이니 찬찬히 알아보자. 가치함수는 상태가치함수 $V^\pi$와 행동가치함수 $Q^\pi(x_t,u_t)$가 있다. 상태가치함수 $V^\pi$ 상태가치 : 어떤 상태변수 $x_t$에서 정책 $\pi$에 의해 행동이 가해졌을 때 기대할 수 있는 반환값 상태변수 $x_t$에서 정책 $\pi$에 의해 행동이 가해졌을 때 기대할 수 있는 미래 보상의 총 합 \begin{matrix} V^\pi &=& \mathbb{E}_{\tau_{u_t:u_T \sim p(\tau_{u_t:u_T}|x_t)}} \left[ \sum\limits_{k=t}^T \gamma^{k-t}r(x.. 2023. 6. 21.