AI Repository 42

[정보 이론] Estimator - MLE, MAP, 수학적 추정

딥러닝을 공부하며 자연스레 최대 우도 추정(MLE)에 대해서 듣지만, 대부분 "최대 우도"까지만 엄밀한 정의를 설명하고 "추정"에 관해서는 다소 직관적인 방식으로 설명을 한다. 사실 Estimate, 특히 static estimation problem은 다음과 같이 "측정 벡터의 집합 z"를 함수로 하는 상수벡터 x의 추정기(estimator)를 설계하는 문제로 표현된다.이는 미지의 상수벡터 x를 어떤 성격으로 규정하느냐에 따라 다음과 같은 분류로 나뉜다.빈도주의(frequentist, non-bayesian) 접근 방법MLE베이지안(bayesian) 접근MAP둘은 상호 배타적이지 않으면, 둘을 모두 사용한 방법 또한 있지만, 둘의 개념을 명확히 잡기 위해서 보통 MLE와 MAP 개념을 자주 설명한다. ..

[정보 이론] KL Divergence (KL 발산) - 크로스 엔트로피를 쓰는 이유

어떤 데이터의 확률밀도함수 p(x)가 있다고 하자.이 함수를 정확히 알 수 없어서 이 함수를 근사적으로 추정한 확률밀도함수 q(x)를 사용한다고 가정하자.그러면 실제 분포인 p(x)로 얻을 수 있는 정보량과 근사적 분포인 q(x)로 얻을 수 있는 정보량은 다를 것이다.이때 둘 사이의 평균 정보량이 얼마나 차이가 나는지 계산한 것을 상대 엔트로피(relative entropy) 또는 KL 발산(Kullback-Leibler divergence)이라고 하며, 다음과 같이 정의한다.여기서 p(x)||q(x)는 p(x)를 기준으로 q(x)를 비교한다는 뜻이다.첫 번째 항은 근사 분포인 q(x)의 정보량을 실제 분포를 사용해 기댓값을 계산한 것(크로스 엔트로피)이다.두번째 항은 실제 분포 p(x)의 평균 정보량(..

[정보 이론] 정보량, 엔트로피와 Cross Entropy의 정의

딥러닝을 학습하며 "크로스 엔트로피 오차"를 아무렇지 않게 사용하고 있었다.그런데 최근 논문을 탐색하면서, "크로스 엔트로피"라는 용어의 정의를 생각보다 엄밀하게 규정해두지 않아 개념들이 잘 이해가 가지 않았다.따라서 다음과 같이 엔트로피의 엄밀한 정의에 대해 서술한다. 항상 일어나는 사건은 새로울 것이 없으므로 여기에서 얻을 수 있는 정보의 양은 매우 적다고 봐도 된다.또한 잘 일어날 것 같지 않는 사건에서는 빈번하게 일어나는 사건에서보다 얻을 수 있는 정보의 양이 더 많다고 봐도 될 것이다. 따라서 정보량은 사건의 발생 빈도의 영향을 받으므로, 확률적인 속성을 가지고 있고, 확률함수로 나타내는 것이 자연스러워진다. 이를 반영해 랜덤벡터 x의 정보량 h(x)를 다음과 같이 정의한다.여기서 p(x)는 x..

[강화학습] A2C

지난 글에선 REINFORCE 알고리즘을 공부했다.이 알고리즘은 간단한 CartPole 예제에는 잘 작동했지만, 좀 더 복잡한 환경의 강화학습에는 그리 잘 통과하지 않는다. 한편, DQN의 경우 이산적인 동작 공간에서 상당히 효과적이지만, 입실론-그리디 정책같은 개별적인 정책 함수가 필요하다는 단점이 있다. 이번 글에서는 REINFORCE의 장점과 DQN의 장점을 합친 actor-critic(행위자-비평자)라는 알고리즘을 소개한다.이 모델은 여러 문제 영역에서 최고 수준의 성과를 낸 바 있다.REINFORCE 알고리즘은 일반적으로 일회적 알고리즘(에피소딕, episodic algorithm)으로 구현된다.이는 에이전트가 하나의 에피소드 전체를 끝낸 후에야 그 에피소드에서 수집한 보상들로 모델의 매개변수들..

[강화학습] Policy Gradient Method

우리가 기존에 알고있던 DQN은 Q 함수를 하나의 신경망으로 근사하는 "정책 외 알고리즘"이다.즉, DQN은 행동을 했을 때 얻을 수 있는 기대 보상을 기준으로 판단하는 알고리즘이다.QN이 예측한 Q value들은 특정 정책에 따라 다음 동작을 선택하는데 쓰인다.동작을 선택하는 정책은 다양한데, 현재 우리는 입실론-그리디 정책 정도만 학습했다.그 외에도 Q value들에 소프트맥스 층을 적용해서 하나의 동작을 선택하는 등 다양한 정책이 가능하다. 그런데 신경망과 정책을 따로 두고 동작을 선택하는 대신, 신경망이 직접 동작을 선택하도록 훈련하면 어떨까?이 경우 신경망은 정책 함수(policy function)의 역할을 한다.이런 신경망을 정책 신경망, 줄여서 정책망(policy network)이라고 부른다..

[강화학습] Target Network를 이용한 안정성 개선

지금까지 우리는 Gridworld 게임을 플레이하도록 심층 강화학습 알고리즘을 훈련하는 데 성공했다.하지만 두 모드의 경우 가능한 4x4 게임판 구성이 아주 많지는 않으므로, 그냥 가능한 모든 게임판 구성을 암기했을 가능성도 있다. 따라서 게임을 이기려면 알고리즘은 게임 플레이 방법을 실제로 배워야 한다.그러나 앞에서 본 잡음이 많은 손실 그래프가 말해 주듯이, 현재 우리의 심층 강화학습 모형은 Gridworld의 무작위 모드를 그리 잘 학습하지 못한다. 그럼 가치 갱신량들을 좀 더 고르게 만드는 또다른 기법을 살펴보자.학습 불안정성DQN 논문에서 딥마인드 팀은 개별 동작마다 QN의 매개변수들을 갱신하다보면 학습이 불안정해질 수 있음을 지적했다.Girdworld 게임처럼 보상이 희소한 환경, 즉 게임..

[강화학습] Experience Replay, ER - Catastrophic Forgetting의 해소

본 내용은 심층강화학습 인 액션 도서를 참고하여 작성되었습니다. 심층 강화학습 인 액션 - 예스24프로젝트로 배우는 심층 강화학습의 이론과 실제!이 책 『심층 강화학습 인 액션』은 환경이 제공하는 직접적인 피드백에 기반해서 환경에 적응하고 자신을 개선해 나가는 에이전트의 구현 방www.yes24.com 우리는 이전 글에서 Gridworld를 학습시켰고, 무사히 학습에 성공한?것을 알 수 있었다.하지만 이것은 게임의 '정적' 모드, 즉 가장 쉬운 버전이었다.mode='random'으로 다시 실험해보면 실망스러운 결과가 나온다.실망스럽지만 흥미로운 결과이다.이 결과를 자세히 살펴보면, 단순히 정적 모드에서의 움직임을 암기했다고 보는게 정확한 수준으로 그대로 움직인다. 학습 또한 'random' 모드로 수행..

[강화학습] DQN

본 내용은 심층강화학습 인 액션 도서를 참고하여 작성되었습니다. 심층 강화학습 인 액션 - 예스24프로젝트로 배우는 심층 강화학습의 이론과 실제!이 책 『심층 강화학습 인 액션』은 환경이 제공하는 직접적인 피드백에 기반해서 환경에 적응하고 자신을 개선해 나가는 에이전트의 구현 방www.yes24.com 과거에도 Q함수를 신경망으로 표현하려던 시도는 있었지만, 이는 다음과 같은 문제가 있어 해결하지 못했다.신경망 학습 연산의 비용이 감당 불가능했다.catastrophic forgetting 문제가 있었다. - ER(Experience Replay)신경망 자체의 편향을 제거하기가 어려웠다. - Target Network시대가 변화하며 GPU의 병렬 연산의 성능이 대폭 향상되었고,구글 딥마인드에서 2013년에..

[강화학습] 강화학습에 신경망 더하기

본 글은 강화학습과 신경망에 대한 기초적인 지식(벨만 방정식, Q-Learning, 퍼셉트론, FNN, CNN, RNN, etc.)이 있다고 가정하고 작성되었습니다.또한, 본 글은 DQN/정책 정사법과 관련된 내용을을 다루지는 않으니 주의해주시기 바랍니다.신경망을 위한 전처리신경망에서 '범주형 데이터'를 다룰 때에는 원-핫 벡터로 변화나는 것이 일반적이다.범주형 데이터: 범주로 묶을 수 있는 것. 혈액형이나 옷 사이즈 등원-핫 벡터: 한 개의 원소만 1이고 나머지는 모두 0인 벡터예를 들자면, 혈액형 A/B/AB/O 를 각각 (1,0,0,0)/(0,1,0,0)/(0,0,1,0)/(0,0,0,1)로 치환하는 것이다.그럼 아래와 같은 문제는 어떻게 원-핫 벡터로 바꿀 수 있을까?3x4 크기의 셀을 각각 범주..

[강화학습] 에이전트 구현 방법 - 분포 모델과 샘플 모델

에이전트 구현 방법에는 크게 '분포 모델'과 '샘플 모델'이 있다.분포 모델분포 모델은 확률 분포를 명시적으로 유지하는 모델이다.그래서 '무작위로 행동하는 에이전트'를 분포 모델로 구현한다면, 다음처럼 구현할 수 있다.이와 같이 각 상태에서의 행동 확률 분포를 self.pi 변수에 유지한다.그리고 실제 행동을 할 때는 이 확률 분포를 토대로 샘플링한다. 이것이 에이전트를 분포 모델로 구현하는 방법이며, 이처럼 확률 분포를 명시적으로 유지한다는 점이 분포 모델의 특징이다.샘플 모델샘플 모델은 '샘플링이 가능하다' 라는 조건만 충족하면 되는 모델이다.확률 분포를 유지할 필요가 없기 때문에 분포 모델보다 간단히 구현할 수 있다.확률 분포 없이 단순히 네 가지 행동 중 하나를 무작위로 선택하도록 구현했다. 이건..