티스토리 뷰
강화학습 : Action Sequence(=policy, 팔의 움직임)이 어떻게 귀결되는지에 대한 것
6시그마 품질 관리 - 똑같은 품질로 만들 것인가
유량관리, 품질관리, 원가 관리, 재고관리
대량 생산 체제에 맞추었다.
생산에 대한 모든 시스템을 최적화하는 걸로 배운다.
Q-Learning
Dynamic Programming - 너무 주어진 state가 많으면 풀 수 없다.
Markow Decision Process - OR2, 이 자체가 강화학습이다.
Deep Reinforcement Learning Implementation
State(현재 상황)를 Input layer에 집어넣어 주고,
Action(그에 대한 행동)을 Output으로 얻을 수 있는 딥러닝
그러나 output만으로는 부족하다. 해당 output은 state에 대한 행동만 학습했기 때문.
따라서 몬테카를로 트리 서치를 붙인다.
그것에서 주변을 탐색하면서, 더 나은 수를 찾는다.
그래서 그 평가함수로 확률을 찾는다.
이게 심층 강화 학습(Deep Reinforcement Learning)이다.
Q-Leraning
맛집 찾기
어떠한 목적이 있는 곳이 있을 때, 현재 state의 상태와 다음 state 상태가 있다고 하자.
그럼 모든 곳은 0이지만, 마지막 goal의 관문은 1의 값을 가진다.
반대로 따라가면서, re의 값을 업데이트 한다. 그런데 어떠한 값을 업데이트 할 때, 계속해서 같은 길을 찾아가면 최적해를 찾는데 방해가 된다.
그러면 안되므로 random한 값을 넣어준다. 그게 앱실론이 된다.
그러면 다음 리워드 Q(s,a) = re+ 감마*arg(max Q(s',a'))가 된다.
한마디로 다음쪽에 있는 녀석이 크다면 그 쪽으로 Q(s,a)가 업데이트 된다.
그리고 그 값이 최단거리일수록 좋기 때문에, 감마는 0.9 같은 값을 넣어줘서, 최단거리일수록 더 높은 값을 가지게 한다.
이렇게 맨 끝에서부터 리워드를 검색해가며 전체 맵을 완성시킨다.
# Initialization with Q in Q-table
Q = np.zeros([env.observation_space.n,env.action_space.n]) # (16,4) where 16: 4*4 map, 4: actions
num_episodes = 1000 # Number of iterations
rList = []
successRate = []
def rargmax(vector):
m = np.amax(vector) # Return the maximum of an array or maximum along an axis (0 or 1)
indices = np.nonzero(vector == m)[0] # np.nonzero(True/False vector) => find the maximum indices
return random.choice(indices) # Random selection when multiple argmax values exist
for i in range(num_episodes): # Updates with num_episodes iterations
state = env.reset() # Reset
total_reward = 0 # Reward graph (1: success, 0: failure)
done = None
while not done: # The agent is not in the goal yet
action = rargmax(Q[state, :]) # Find maximum reward among 4 actions, find next action
new_state, reward, done, _ = env.step(action) # Result of the chosen action
Q[state, action] = reward + np.max(Q[new_state, :]) # Q-update
total_reward += reward
state = new_state
rList.append(total_reward) # Reward appending
successRate.append(sum(rList)/(i+1)) # Success rate appending
강화학습은 어떠한 목적이 있는 곳에 사용한다.
로봇 팔 RL(I e., MDP)
- Pros : Optimal - 최적해이다.
- Cons : Pseudo-Polynimial
DRL
- Fast Computation - 학습을 다 끝낸 상태에서 쓰므로 빠르다.
- Non-optimal - 학습 제대로 안 시키면 학습이 아작난다.
강화학습을 쓰는 곳
time seires에서, 어떠한 계속 변하는 상황에서 목표를 달성해야 하는 때에 쓴다.
게임 알고리즘, 자율주행 알고리즘 등등
보상이라는 개념은, 모든 강화학습에서 내가 최대한 해야 할 목적이다.
오차라는 개념은, 강화학습을 학습시킬 때의 gap이다.
보상이 최대가 되게 해야 하는데, 신경망의 학습이 그 보상과의 오차가 있을 때 사용
gym 라이브러리를 이용해서 강화학습을 예시로 볼 수 있다.
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
env.render()
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
# env.step(action)
Inverse Reinforcement Learning
Environment Model(MDP)가 들어가고, Reward Function이 들어갔을 때, 최적의 policy가 나오는 게 강화학습이다.
그런데 이걸 반대로 최적의 policy를 구하려면 어떻게 Reward를 구성해야 하는지를 구하는 게 IRL이다.
R that explains Exper Trajectories
Imitation Learning
expert의 demonstration을 따라할 수 있는 게 Imitation Learning
대표적인 예시로는 프로게이머 AI
Dehivior Cloning
P* = P(s | pi*) 을 정의한다 (expert에 의한 상태의 분포를 정의한다)
Learning objective
Discussion
- P*이 pi 세타(s)의 분포를 거의 따르는 닫힌 상태, 즉, 상황이 거의 비슷한 상태에서는 잘 동작한다.
- 또한 Minimize 1-step deviation error along the expert trajectories이다.
- 즉, expert의 궤적을 따라 1단계 편차 오차를 최소화하는 상태로 동작한다.
자율주행States s=sensorsAction a = steering wheel,brakeTraining set : D = {t :=(s,a) from expertGoal : learn pi theta(s) -> a
LLM
언어모델 > 트랜스포머 > 대규모 언어모델 > 초거대 AI
언어모델 : 통계쩍 언어모델, 인공신경망 언어모델
트랜스포머 : 어텐션 알고리즘, 인코더, 디코더
LLM : BERT(어텐션-인코더 기반), GPT(어텐션 - 디코더 기반)
초거대 AI - GPT3, chatGPT, GPT4, LaMDA, PaLM, Bard, Etc
GPT = Generative Pre-Trained (GPT)
Pre-Trained 모델을 GAN 기반으로 만든다.
1세대 : 딥러닝 이전 기술/task에 딥러닝을 적용
2세대 : 대용량 데이터로부터 일반적 지식을 사전학습하던 시대
3세대: 초거대 AI 모델의 가능성 탐색 시대
트랜스포머 디코더 모델(사전학습 모델을 추가학습 없이 그대로 활용한다. 필요시 예제 제공)
트랜스포머
인코더와 티코더로 이루어져 있다.
어텐션은 RNN 셀의 어느 부분이 의미가 부여되는지에 대해서 디코더에서 한번 더 참조한다.
인코딩 -> 숫자로 바꿔주는 것
디코딩 -> 결과를 문자로 바꿔주는 것
인코더: input이 들어가면 input embedding을 거친다.(숫자로 만든다)
positional encoding은 불용어가 아닌 것들에 대한 가중치를 많이 주는 것
그리고 Multi-Head Attention을 통해 인코더가 셀프 어텐션을 한다.
해당 소스 시퀀스를 압축해서 디코더의 중간층에 보내준다.
feed forward ->
마지막으로는 확률이 높은 걸 뽑아준다.
인코더 이후로
학습을 위한 디코딩(뭐가 중요한지에 대해 알려준다), 추론을 위한 디코딩
강화학습기반 LLM
1. collect demonstration data and train a supervied policy
데이터를 모아서 pretrain을 시킨다.
2. collect comparision data, and train a reard model
비교군 데이터를 해서 성능을 높이기 위해서 튜닝한다.
3. optimize a policy against the reward model using reinforcement learning
데이터 베이스 샘플링하면서 어떤 대답을 해야할지를 계속 학습시킨다.
유사한 데이터일 때 유사한 학습을 시켜준다.
이미 비슷한 내용의 질문을 가지고 있고, 어떤 state action이 가장 reward가 제일 높은지를 학습시킨다.
RLHF
피드백한 경우를 통해서 리워드를 계속해서 업그레이드한다.
캐시랑 비슷하다고 생각하면 된다.
신경망 학습은 한계가 있고,
몬테카를로 트리 서치를 붙인 게 알파고
RLHF를 붙여서 agent의 행동을 유도한 게 GPT이다.
글쓰기 능력, 산술 추론, 언어 추론,
InstructGPT
pre-trained Model이 있으면, instruction-tuned Model이 한 번 output을 더 거른다.
문장을 가지고 구조화를 시킨다.
어떠한 rule에 대한 것들을 가지고 있는 녀석들을 통과시킨다.
2단계 : 사용자 의도 일치(alignment) 학습
LLM이 가지는 의미
Word Prediction과 Memorization
저장된 지식을 적절히 꺼내 온다는 의미이다.
수백 개의 위키피디아를 서칭하는 것을 최적화한 것과 똑같은 것
ReAct :synergizing Reasoning and Acting in Language Models
향후 연구방향 : multi agent, personalization, robot intelligence