(WIP)Policy Gradient
Policy Gradient
Policy Gradient
아래 두 자료를 바탕으로 작성된 자료이다.
아래 설명중 나오는 게임들의 예시는 다음과 같다
(수정중… 지속적으로 수정될 예정)
스네이크 게임은 정해진 그리드 격자 배열 안에서 뱀을 움직이면서 1개 이상의 아이템을 먹으면서 몸을 키우는 게임이다. 아이템을 먹으면 몸이 1칸 늘어나게 된다. 자기 몸에 박거나 벽에 박게 되면 게임이 종료된다.
ShangtongZhang github
Woodoku는 특정 게임의 이름입니다. 좋은 이름이 떠오르지 않아 환경 또한 Woodoku로 이름지었습니다. 비슷한 게임이 여럿 있는 것으로 알고있지만 어떤 게임이 원조인지는 모릅니다. Woodoku 이름 관련하여 문제가 있을 경우 왼쪽 프로필의 이메일로 연락 주시길 바랍니다.
2048 게임을 정복하기 위해 gym-game2048 강화학습 환경을 만들고 그것을 정복하기 위해 시도한 시행착오를 적어놓은 일지이다.
ShangtongZhang github
ShangtongZhang github
ShangtongZhang github
ShangtongZhang github
ShangtongZhang github
유용하다 생각했던 강화학습 관련 Q&A를 정리하는 글이다. 답변자의 신뢰도는 고려하지 않으니 참고할 때 유의하기 바란다.
Prioritized Experience Replay, Schaul et al, 2015. Algorithm: Prioritized Experience Replay (PER).
Dueling Network Architectures for Deep Reinforcement Learning, Wang et al, 2015. Algorithm: Dueling DQN.
gym이 gymnasium으로 바뀌었으나 서술의 편의를 위하여 gym으로 서술하겠다.
ShangtongZhang github
강화학습 논문들에서 검증수단으로 활용되는 환경들에 대해서 설명한다. 게임의 경우 공략법보다는 간단한 특징에 주목한다.
강화학습 알고리즘/논문 구현시 겪었던 고충들을 늘어놓고 해결할 때마다 업데이트 하기 위한 글이다. 지속적으로 업데이트 할 예정이다.
외국 대학 CS 285, UC Berkeley CS 234, Stanford CS 6789, Cornell
해당 포스트는 아래 글로 새로 업데이트 되었습니다. 삭제하기 아까워 남깁니다.
ShangtongZhang github
Target Networks
DQN은 $Q$함수를 근사하는 가치 기반 시간차(value-based temporal difference (TD)) 알고리즘이다. 학습된 $Q$ 함수를 이용하여 행동을 선택한다. DQN은 이산적 행동 공간을 갖는 환경에만 적용할 수 있다. SARSA와 달리 최적 $Q$ 함수를 학습...
[figure 2.3]
좋은 결과를 초래한 행동이 더 높은 확률로 선택되도록 에이전트를 학습시켜야 한다. 행동 확률이 정책 경사(policy gradient)를 따라 변하기 때문에 REINFORCE는 정책 경사 알고리즘으로 알려져 있다.
스터디 중 stationary 관련하여 설명하였다, 그런데 설명 후 그것은 deterministic이라는 지적을 받았다. 생각해보니 그 두개를 혼재하며 사용하고 있었다는 것을 느껴 관련하여 정리하기 위하여 이 글을 쓴다.
ShangtongZhang github
활성 정책으로부터 상태가치 함수를 추정하는 과정을 서술한다
n-step TD $G_{t:t+n} \doteq R_{t+1}+\gamma R_{t+2}+ \cdots + \gamma^{n-1}R_{t+n}+\gamma V_{t+n-1}(S_{t+n})$
```python class Test:
경로 찾기같은 문제에서 격자형 공간이 주어질 때가 있다.
쓸 때마다 헷갈려서 정리하는 글이다.
파이썬 리스트 선언 방법에는 여러 가지가 있다. 실험을 통해 각각의 속도를 비교해보자
파이썬에서 리스트를 깊은 복사하는 방법에는 두 가지가 있다.
파이썬 표준 라이브러리에는 이진 탐색을 위한 bisect 가 있다.
파이썬 3 바이블을 참고하였다.
파이썬 3 바이블을 참고하였다.
파이썬에서 list를 사용시에 가장 오른쪽에 있는 요소를 제거하는 방법은 여러 가지가 있다.
파이썬에는 큐를 구현하는 방법이 세 가지가 있다.
1. namedtuple 1-1. 기본 설명 namedtuple 인스턴스는 일반 튜플과 마찬가지로 메모리 효율적이다. 인스턴스마다 딕셔너리를 포함하고 있지 않기 때문이다. 각 namedtuple은 namedtuple() 팩토리 함수를 사용해 생성되는 자신의 클래스로 표현할 수 있다...
기본형 operator new/delete의 경우 1 Widget *pw = new Widget; 위에서는 함수 두 개가 호출된다. 메모리 할당을 위해 operator new가 호출되고 그 뒤를 이어 Widget의 기본 생성자가 호출된다.
operator new 반환 값이 제대로 되어 있어야 하고, 가용 메모리가 부족할 경우에는 new 처리자 함수를 호출해야 한다.
new 및 delete의 기본 제공 버전을 다른 것으로 대체하는 작업을 언제 해야 의미가 있는가
아무 생각 없이 템플릿을 사용하면 코드 비대화(code bloat)가 초래될 수 있다. 똑같은 내용의 코드와 데이터가 여러 벌로 중복되어 이진 파일로 구워진다는 뜻이다.
합성 합성이란, 어떤 타입의 객체들이 그와 다른 타입의 객체들을 포함하고 있을 경우에 성립하는 그 타입들 사이의 관계를 말한다.
ex1) 사각형을 추상화한 Rectangle 클래스를 만들었는데, 이 클래스의 객체를 썼을 때의 메모리 부담을 최대한 줄이고 싶다.
타입 에러가 생기지 않도록 보장하는것이 C++ 동작 규칙의 바탕 철학이나 캐스트(cast)가 사용될 경우 찾아내기 어려울 경우가 많다. C++ 캐스팅은 조심해서 써야하는 기능이다.
생성자 혹은 소멸자를 끌고 다니는 타입으로 변수를 정의하면 반드시 물게 되는 비용
XGBoost는 매우 뛰어난 부스팅 알고리즘이지만 XGBoost에서 GridSearchCV로 수행시간이 너무 오래 걸려서 많은 파라미터를 튜닝하기에 어려움을 겪을 수밖에 없다.
앙상블 방법은 예측기가 가능한 한 서로 독립적일 때 최고의 성능을 발휘한다. 다양한 분류기를 얻는 한 가지 방법은 각기 다른 알고리즘으로 학습시키는 것이다. 이렇게 하면 매우 다른 종류의 오차를 만들 가능성이 높기 때문에 앙상블 모델의 정확도를 향상시킨다.
Cross Entropy
1 WHERE 절에서 = NULL 이 아니라 IS NULL로 찾아야 한다. 반대는 IS NOT NULL
문자 데이터 고정 길이 문자열 1 char(20) /* fixed-length */ 공백으로 오른쪽이 채워지고 항상 동일한 수의 바이트를 사용
Login / LogOut 1 mysql -u root -p 루트 계정을 사용하여 로그인
볼츠만 머신
배치 정규화 정규화는 머신 러닝 모델에 주입되는 샘플들을 균일하게 만드는 광범위한 방법이다. 이 방법은 모델이 학습하고 새로운 데이터에 잘 일반화되도록 돕는다. 데이터 정규화의 일반적인 형태는 다음과 같다.
활성화 함수의 필요성 활성화 함수는 비선형성(non-linearity)라고도 부른다. 활성화 함수가 없다면 Dense층은 선형적인 연산인 점곱과 덧셈 2개로 구성된다
경사 하강법
경사 하강법, gradient descent
앞 내용(1~20)은 “알고리즘 PS 오답노트/팁”에서 찾아볼 수 있다.
뒷 내용(21~40)은 “알고리즘 PS 오답노트/팁 2”에서 찾아볼 수 있다.
1. torch.tenosr는 grad 를 제거한다.
Categorical
3분 매매법 3분 양봉이 나오면 다음 1분 시작시에 매수하고 1분이 끝날 때 매도하는 방법
『텐서플로2와 머신러닝으로 시작하는 자연어 처리』 책을 보고 정리하기 위해 쓴 글이다.
단단한 심층 강화학습을 보고 아래의 두 코드를 보았다.
1. 한 메트릭의 스칼라는 100K 이하여야 한다.
Tensor
자동 미분 계산 그래프를 연습한다.
컴퓨터 이외의 분야는 관련된 것을 최대한 남김