[강화학습] DQN Q-learning은 가장 기본적인 value-based 방법으로, 주어진 state에서 어떤 action을 선택해야 가장 큰 reward을 받을 수 있을지를 학습한다. 그러나 Q-table을 직접 저장하는 방식은 state-action 공간이 커질수록 비효율적이고, 이미지처럼 고차원 입력을 다룰 수 없다는 근본적인 한계를 가진다. 이러한 한계를 극복하기 위해 나온 것이 바로 Deep Q-Network (DQN) 이다. DQN은 Q-learning에 딥러닝을 접목시켜, 신경망을 통해 Q값을 근사함으로써 복잡한 환경에서도 policy를 학습할 수 있게 만든다. DQN은 이를 해결하기 위해 Q값을 출력하는 DNN을 도입한다. 즉, 입력으로는 state를, 출력으로는 가능한 각 action에 대한 Q값 $Q(.. 2025. 4. 27. [강화학습] TD: SARSA vs Q-learning TD learning은 다음 스텝의 정보를 바탕으로 value function을 업데이트하는 방식이다. TD learning 중 on-policy는 SARSA, off-policy는 Q-learning이 대표적이다. SARSA는 policy를 따르며 학습하는 on-policy 알고리즘으로, 학습에 사용하는 행동도 현재 사용하는 policy에서 선택된 행동이다.$$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha \left[ r_t + \gamma Q(s_{t+1},a_{t+1}) - Q(s_t,a_t)\right]$$$$Q(s_t,a_t) \leftarrow (1-\alpha)Q(s_t,a_t) + \alpha \left( r_t + \gamma Q(s_{t+1},a_{t+1}).. 2025. 4. 8. [강화학습] Monte Carlo & Temporal Difference 강화학습의 가장 기초적인 알고리즘으로 자주 소개되는 Dynamic Programming(DP) 은 매우 강력하지만 한 가지 큰 전제가 필요하다. environment의 $P(s′∣s,a)$ 와 $R(s,a)$를 모두 알고 있어야 한다는 점이다. 예를 들어, FrozenLake 환경에서 '오른쪽으로 가면 80% 확률로 미끄러지고, 20%는 멈춘다'는 사실을 DP는 미리 알고 있어야 한다. (앞서 구현했던 예제에서는 미끄러지지 않는 환경이었다.)하지만 실제 현실 세계에서 그런 확률이나 보상을 정확히 알 수 있는 경우는 거의 없다. 이러한 모델 기반(Model-Based) 접근 방식의 한계를 극복하기 위해 등장한 것이 바로 Monte Carlo 방식의 Model-Free 강화학습이다. dynamic prog.. 2025. 4. 5. [강화학습] Dynamic Programming 다음으로 dynamic programming을 알아보자. dynamic programming은 쉽게 말하면 어려운 문제를 쪼개서 푸는 것을 말한다. 이는 transition probability / dynamics를 알 때만 사용할 수 있으며, 모르면 dynamic programming으로 해결할 수 없다. dynamic programming은 value function을 구하는 policy evaluation과 더 좋은 policy를 구하는 policy improvement로 이루어진다. 이들을 bellman equation에 대입해서 반복하면 policy iteration이다.policy evaluation특정 state에 대해서 value function을 구하고 그를 bellman equation.. 2025. 4. 5. [강화학습] Markov Decision Process 강화학습의 기초가 되는 Markov Decision Process을 알아보자.먼저, action을 하는 agent와 그를 둘러싼 모든 환경 environment를 중심으로 학습이 이루어진다. 이렇게 말하면 잘 와닿지 않으니 그림과 함께 알아보자. discrete time step t에 대해 현재 state $S_t$를 agent가 받으면 그에 대해 특정 action $A_t$를 하여 나타나는 다음 state $S_{t+1}$를 바탕으로 reward $R_{t+1}$를 제공한다. agent는 reward을 많이 받는 action을 하도록 학습되기 때문에 return은 현재 시점부터 그 이후의 미래까지 누적된 reward이 되고, 우리의 학습 목표는 이 return의 기댓값을 최대로 만드는 것이다. 이때,.. 2025. 4. 3. 250402 프로그래머스 파이썬 Lv.0 Today : 14등차수열의 특정한 항만 더하기def solution(a, d, included): answer = 0 for i in range(len(included)): answer += (a + d * i) * int(included[i]) return answerBoolean으로 표현된 included 리스트는 int로 나타내면 if문 생략 가능하다!내 답안def solution(a, d, included): answer = 0 for i in range(len(included)): if included[i]: answer += a+d*i return answer그림 확대def solution(picture, k): .. 2025. 4. 2. 250401 프로그래머스 파이썬 Lv.0 Today : 16주사위 게임3def solution(a, b, c, d): l = [a,b,c,d] c = [l.count(x) for x in l] if max(c) == 4: return 1111*a elif max(c) == 3: return (10*l[c.index(3)]+l[c.index(1)])**2 elif max(c) == 2: if min(c) == 1: return eval('*'.join([str(l[i]) for i, x in enumerate(c) if x == 1])) else: return (max(l) + min(l)) * abs(max(l) - min(l)).. 2025. 4. 2. 250331 프로그래머스 파이썬 Lv.0 Today : 22문자열 정수의 합sum(map(int, list(num_str)))num_str 리스트에 대해 int를 수행한 후 그들을 모두 합함.map(function, iterable1, iterable2, ...) : iterables에 대해 function을 함내 답안def solution(num_str): answer = 0 for i in num_str: i = int(i) answer += i return answer문자열 바꿔서 찾기int(pat in myString.replace('A', 'C').replace('B', 'A').replace('C', 'B'))string에서 두 문자를 바꾸고 싶으면 .replace()를 사용하면 됨내 답안de.. 2025. 3. 31. 250330 프로그래머스 파이썬 Lv.0 Today : 22맨날 지피티와 함께.. 혹은 그냥 있는 코드에서 수정만 하다보니 알고리즘을 많이 까먹어서 프로그래머스로 코테 연습 시작합니다. c,c++,matlab 등 이것저것 섞어서 하다보니 기본 문법도 많이 헷갈려서 Lv.0부터 시작!꼬리문자열''.join(filter(lambda x: ex not in x, str_list))lamda : 매개변수 x에 대해 어떤 표현식을 행할 것인지?filter : 앞에 해당하는 애들을 뒤에서 뽑아냄'string'.join : string을 사이사이에 끼워넣어서 합침ex가 x에 있지 않는 경우에 x에 대해 str_list에서 filtering하여 각각을 합침내 답안def solution(str_list, ex): answer = '' for i in.. 2025. 3. 31. 이전 1 2 3 다음