목록2024/05 (10)
버티의 블로그
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kJtrv/btsHtiFMTX1/UTnB7Dr7W6hxEEJRhesXvk/img.png)
MDP에 대한 정보를 모두 알고 있을 때, 이들을 사용하여 policy를 개선하는 과정을 MDP Planning이라고 한다. 이러한 최적의 policy를 찾는 이유는 에이전트가 받게 되는 보상을 최대화하기 위함이다. 이 MDP Planning은 크게 Policy Iteration과 Value Iteration이 있다.Policy IterationPolicy Iteration은 크게 두 과정으로 나뉘고 이를 최적의 policy를 찾기 전까지 계속 반복하는 형태이다.Policy Evaluation : 정해진 Policy로 state value값들을 업데이트하는 단계Policy Improvement : 업데이트된 state value로 새로운 policy를 결정하는 단계1) Policy Evaluation초기..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/biK80E/btsHuQAQ3PS/Q02Kz9354WFtY1l64O8nNK/img.png)
Markov Decision Process기존 MRP는 상태 전이가 확률적으로만 결정됐지만, MDP는 에이전트가 행동을 선택하는 것을 추가하여 이에 따른 상태 변화와 보상이 달라지는 환경을 뜻한다. MDP는 아래 4가지 요소로 구성된다.S : 에이전트의 상태A : 에이전트가 취할 수 있는 모든 가능한 actionP : 특정 s에서 특정 a를 취했을 때 다음 s로 전이될 확률, P(s′∣s,a)가 이 의미이다.R : 특정 s에서 특정 a를 취했을 때 받는 보상, R(s,a,s′)로 표기한다. π : 에이전트가 행동을 결정하는 규칙으로, 상태 s에서 행동 a를 선택할 확률을 π(a∣s)로 나타낸다.Bellman Expectation Equation 1장에서 살펴본 state value function은 특정..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ccCEAq/btsHqxu61MS/rV9L7ljDdlFTRgmFf1hBUk/img.png)
앞장에서 배운 Synchronization Tools로 어떤 문제들을 해결할 수 있는지 알아본다.Bounded-Buffer Problem제한된 버퍼에 데이터를 채우고 가져가는 문제, 생산자-소비자 문제와 동일사이즈 n의 버퍼, 3개의 Semaphore 사용한다.mutex : 초기값 1, binaryfull : 데이터가 있는 부분의 양, 초기값 0, 0~nempty : 데이터가 없는 부분의 양, 초기값 n, 0~n 생산자는 비어있는 상태를 보고 데이터를 추가해야하므로, empty를 고려한다.wait(empty) : 데이터 하나를 추가할 것이므로 empty를 1 감소wait(mutex) : mutex가 1이면 mutex를 1 감소시키고 critical section으로 접근critical section(ad..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cuyKuc/btsHgB6swcA/n7YapEkVm8SMmzjCcVKNH0/img.png)
기존의 counter++를 하려면, 메모리에 존재하는 counter 변수 값을 CPU 내 레지스터 R1에 복사해온 다음, R1에서 증가시키고 다시 counter에 넘겨준다. 이처럼 high-level language인 counter++는 low-level language(assembly language)로 3개의 명령어로 쪼개져 실행된다. 여기서 문제는 위처럼 프로세스가 동시에 실행됐을 때이다. 명령어 실행 순서가 랜덤하므로 항상 다른 값이 나올 수 있다. 누가 마지막에 counter를 write했느냐에 따라 값이 변경되는데, 이런 상황을 race condition이라고 한다. OS에서도 같은 문제가 발생할 수 있다. 위 그림처럼 두 프로세스가 동시에 fork를 요청하면 생성된 프로세스 pid가 같을 수..