
user_NN = tf.keras.models.Sequential([
tf.keras.layers.Dense(256, activation='relu’),
tf.keras.layers.Dense(128, activation='relu’),
tf.keras.layers.Dense(32)])
# 세 개의 Dense layer를 결합한 것
# 기본적으로 ReLu 함수를 많이 씀
item_NN = tf.keras.models.Sequential([
tf.keras.layers.Dense(256, activation='relu’),
tf.keras.layers.Dense(128, activation='relu’),
tf.keras.layers.Dense(32)])
# create the user input and point to the base network
input_user = tf.keras.layers.Input(shape=(num_user_features))
vu = user_NN(input_user) # vu라는 레이어를 정의; inputUser를 연결하고(붙이고) vu라고 정의
vu = tf.linalg.l2_normalize(vu, axis=1)
# normalize |vu| to 1 (학습을 잘하기 위해서 배치하는 것)
# create the item input and point to the base network
input_item = tf.keras.layers.Input(shape=(num_item_features))
vm = item_NN(input_item)
vm = tf.linalg.l2_normalize(vm, axis=1) # normalize |vm| to 1
# measure the similarity of the two vector outputs
output = tf.keras.layers.Dot(axes=1)([vu, vm]) # special layer
# specify the inputs and output of the model
model = Model([input_user, input_item], output)
# Specify the cost function
cost_fn = tf.keras.losses.MeanSquaredError()
| 1의 방향 | ||
|---|---|---|
| 0의 방향 | 0 | 0 |
| 0 | 0 |
머신러닝의 세 가지 기둥
왜 강화학습인가?
강화학습의 용어
(S, a) pair : 너무 많은 경우가 있어서 하나하나 정의하기 어려움
R(s) : 이 경우에는 가능함!

화성 탐험 예제
1번 state는 유용한 광물이 많다고 판단, reward 100 지정
6번 state는 1번 만큼은 아니라고 판단, reward 40 지정
action : 가능한 동작(행동)들을 정의함. 이 예제에서는 left, right
S에 대해서 어떤 action을 취해야 할 지 학습함
reward는 state마다 주어짐
reward를 어떻게 합칠지 (state별로 reward가 달라지기 때문에) 문제인데 가장 기본적인 것 중 하나는 뒤로 갈 수록 reward를 (가치를) 떨어뜨림
S -[a선택]-> S'로 바뀜 -[b선택-]> S''로 바뀜 -[a선택]-> S'''
𝑠: a state
𝑎: an action
𝑅(𝑠) : the reward from the state 𝑠
𝑠' : a new state resulting from the action a
The concept of a return
Return
이러한 모습을 Discount Factor(지금 얻는 것과 나중에 얻는 것이 달라질 때)라고 함 (이러한 개념이 통하는 경우가 많음. 만약 전부 1로 결정할 경우 solution이 수렴되지 않는 경우가 종종 있음)
Discount factor
우리의 목표는 어떤 state에서 출발하든 return을 높이고 싶은 것
State: 4 → 5 → 6 ➔ return = 0 + (0.5)0 + (0.5)240 = 10
– State: 5 → 6 ➔ return = 0 + (0.5)40 = 20
– State: 6 ➔ return = 40
– State: 3 → 4 → 5 → 6 ➔ return = 0 + (0.5)0 + (0.5)20 + (0.5)340 = 5
– State: 2 → 3 → 4 → 5 → 6 ➔ return = 0 + (0.5)0 + … + (0.5)440 = 2.5
– State: 1 ➔ return = 100
Examples (𝛾 = 0.5)
– State: 1 ➔ return = 100
– State: 2 → 1 ➔ return = 0 + (0.5)100 = 50
– State: 3 → 2 → 1 ➔ return = 0 + (0.5)0 + (0.5)2100 = 25
– State: 4 → 3 → 2 → 1 ➔ return = 0 + (0.5)0 + (0.5)20 + (0.5)3100 = 12.5
– State: 5 → 6 ➔ return = 0 + (0.5)40 = 20
– State: 6 ➔ return = 40
강화 학습에서의 반환(Return)
어떤 action을 취해야 가장 return이 높아질까?
Formalization of Reinforcement Learning (강화 학습 알고리즘이 어떻게 행동을 선택하는지를 공식화)
policy
Quick Review of Key Concepts
Markov Decision Process (MDP)
강화 학습의 형식화는 마르코프 결정 프로세스에 기반
마르코프 결정 프로세스(Markov Decision Process, MDP)는 강화 학습에서 사용되는 수학적인 프레임워크. 이는 순차적인 의사 결정 과정을 모델링하는데 사용. MDP는 다음과 같은 주요 요소로 구성:
상태(State): 시스템이 존재할 수 있는 상황이나 조건
행동(Action): 에이전트가 특정 상태에서 취할 수 있는 선택지
보상(Reward): 특정 상태에서 특정 행동을 취했을 때 주어지는 보상
상태 전이 확률(State Transition Probability): 에이전트가 특정 상태에서 특정 행동을 취했을 때 다음 상태로 이동할 확률
MDP는 마르코프 속성을 따름. 이는 미래 상태의 예측이 현재 상태에만 의존하며, 과거의 모든 행동이나 상태 변화는 현재 상태로부터 예측하는 데 필요하지 않다는 것을 의미
지금 state에서 어떤 action을 취하면 어떤 reward가 들어오는지
State-Action Value Function (Q-Function)
Using Q(s,a)
What is the Bellman Equation?
지금까지 공부한 것을 다시 정리해보자
만약 상태-행동 가치 함수 𝑄(𝑠, 𝑎) 를 계산할 수 있다면, 각 상태 𝑠에서 좋은 행동 𝑎를 선택할 수 있는 방법을 제공 (단순히 𝑄(𝑠, 𝑎) 값이 가장 큰 행동 𝑎를 선택)
어떻게 𝑄(𝑠, 𝑎)를 계산할까? 벨만 방정식!