본문 바로가기

AI 딥러닝65

A2C 알고리즘-1: 크리틱 신경망 강화학습에서 에이전트(agent)가 최대화해야 할 누적 보상의 기댓값 또는 목적함수는 다음과 같다. \[ J(\theta)= \mathbb{E}_{\tau \sim p_\theta (\tau)} \left[ \sum_{t=0}^T \gamma^t r_t (\mathbf{x}_t, \mathbf{u}_t ) \right] \] 여기서 \(p_\theta (\tau)\)는 정책 \(\pi_\theta (\mathbf{u}_t | \mathbf{x}_t )\)로 생성되는 궤적의 확률밀도함수이다. 목적함수를 최대화하는 파라미터 \(\theta\)는 다음과 같이 경사상승법으로 구할 수 있다. \[ \theta \gets \theta + \alpha \nabla_\theta J(\theta) \] 경사상승법 또는 .. 2021. 4. 20.
정책 그래디언트 기반 강화학습의 원리 강화학습에서 에이전트(agent)가 최대화해야 할 누적 보상의 기댓값 또는 목적함수(또는 성능지수)는 다음과 같다. \[ J= \mathbb{E}_{\tau \sim p(\tau)} \left[ \sum_{t=0}^T \gamma^t r_t (\mathbf{x}_t, \mathbf{u}_t) \right] \] 여기서 \(\mathbf{x}_t \in \mathbb{R}^n\)은 환경의 상태변수, \(\mathbf{u}_t \in \mathbb{R}^m\)은 에이전트의 행동(action), \( \gamma \in [0,1]\)는 감가율이다. \(r_t\)는 시간스텝 \(t\)일 때 에이전트가 받는 순간 보상을 나타내는 보상함수다. \(\tau\)는 에이전트의 정책(policy)으로 생성되는 궤적 \(\.. 2021. 4. 13.
강화학습 문제 최적제어 문제는 다음과 같이 이산시간(discrete-time) 차분 방정식(difference equation)으로 표현된 비선형 시스템이 있을 때, \[ \mathbf{x}_{t+1} = \mathbf{f}_t ( \mathbf{x}_t, \mathbf{u}_t) \] 시스템이 어떤 스칼라 성능지수(performance index) \( J_i \)를 최소화하도록 제어변수 \( \mathbf{u}_t \in R^m \)를 결정하는 문제다. 성능지수의 일반적인 형태는 다음과 같다. \[ J_i = \phi (T, \mathbf{x}_T )+ \sum_{t=i}^{T-1} g_t ( \mathbf{x}_t, \mathbf{u}_t) \] 여기서 아래 첨자 \(t \)는 시간스텝을 나타내며 \( \math.. 2020. 11. 8.
강화학습의 한계 강화학습이 비약적으로 발전하고 있지만, 로봇이나 드론 등 실제 물리 시스템의 제어에 적용하기에는 아직 극복해야 할 많은 문제를 가지고 있다. 첫 번째 문제점은 강화학습이 기본 동역학 모델을 알지 못하더라도 환경과의 상호작용을 통해 얻은 데이터만을 가지고 직접 정책을 유도할 수 있다지만, 단순한 작업을 배우는 데에도 너무 많은 시도(try)와 데이터가 필요하다는 점이다. 즉, 샘플 효율성이 매우 떨어진다는 뜻이다. 예를 들어 단순한 강화학습 예제 중의 하나인 진자(pendulum)의 정책을 학습하려면 수 십 또는 수 천회의 정책 실행이 필요하다. 게임이나 컴퓨터 시뮬레이션은 괜찮을지 몰라도, 로봇이나 드론 등 실제 물리 시스템에 대해서는 데이터를 얻기 위해서는 필요한 시간과 비용 등이 터무니없이 클 수 있.. 2020. 10. 28.
[CNN] 컨볼루션과 상관도 LTI 시스템의 임펄스 반응 \( h[n] \)과 입력 신호 \( x[n] \)의 컨볼루션(convolution)은 다음 식으로 정의한다. \[ y[n] = \sum_{k=-\infty}^{\infty} x[k] h[n-k] \]   한편, LSI 시스템의 임펄스 반응 \( h[m,n] \)과 입력 신호 \( x[m,n] \)의 2D 컨볼루션은 다음 식으로 정의한다. \[ y[m,n] = \sum_{k=-\infty}^{\infty} \sum_{l=-\infty}^{\infty} x[k,l] h[m-k, n-l] \]   컨볼루션은 앞에서 설명했듯이 LTI 또는 LSI 시스템에 입력신호가 가해졌을 때 출력신호를 계산하는 식이며, 컨볼루션은 ‘뒤집기와 이동’ 방법을 사용하여 계산할 수 있다.   상관도(c.. 2020. 9. 22.
[CNN] 이미지 필터 설계해 보기 필터를 설계한다는 것은 곧 LSI 시스템의 임펄스 반응 \( h[m,n] \)을 결정하는 것과 같다. 그러면 입력 이미지가 \( x[m,n] \)일 때, 필터링된 출력 이미지 \( y[m,n] \)은 시스템의 임펄스 반응과 입력 이미지의 2D 컨볼루션으로 주어진다.  \[ \begin{align} y[m,n] &= h[m,n]*x[m,n] \\ \\ &= \sum_{k =-\infty}^{\infty} \sum_{l =-\infty}^{\infty} x[k,l] h[m-k,n-l] \end{align} \]  간단히 3개의 이미지 필터를 설계해 보자.    먼저 이미지를 흐릿하게 만드는 스무딩(smoothing) 필터다. 스무딩 필터의 임펄스 반응은 다음과 같이 정할 수 있다.    임펄스 반응을 보면 .. 2020. 7. 29.
[CNN] 2D 컨볼루션 계산하기 1D 컨볼루션과 똑같은 방법으로 '뒤집기와 이동' 방법을 사용하여 2D 컨볼루션을 계산해보자.  2020/07/25 - [CNN의 수학] - 컨볼루션 쉽게 계산하기 공식을 살펴보면,  \[ y[m,n] = \sum_{k=-\infty}^\infty \sum_{l=-\infty}^\infty x[k,l] h[m-k, n-l] \] 우선 \( x[m,n] \)과 \( h[m,n] \)을 \( x[k,l] \)과 \( h[k,l] \)로 바꿔야 한다는 것을 알 수 있다. 그리고 \( h[k,l] \)을 수평축과 수직축을 기준으로 두 번 뒤집어서 \( h[-k,-l] \)로 만든 후, \( m,n \)만큼 수평과 수직으로 이동시켜서 \( h[m-k,n-l] \)을 만들고, \( k,l \)에 대해서 \( x[k.. 2020. 7. 29.
[CNN] 2D 컨볼루션 독립변수가 1개인 함수로 표현되는 신호 \( x[n] \)을 1차원 신호(one-dimensional signal)라고 한다. 여기서 \( n \)은 인덱스로서 정수 값을 갖는다. 이 인덱스는 보통 시간스텝(time step)을 나타낸다. 1차원 신호와 관련된 컨볼루션을 1D 컨볼루션이라고 하거나 그냥 컨볼루션이라고 한다.   독립변수가 2개인 함수로 표현되는 신호 \( x[m,n] \)을 2차원 신호라고 한다. 2차원 신호에서 인덱스는 주로 공간상의 위치를 나타내는 배열 또는 순서를 뜻한다. 2차원 신호는 행렬로 나타내며 \( m \)은 행, \( n \)은 열을 나타낸다. 대표적인 2차원 신호로는 이미지(image) 신호가 있다.    2차원 신호와 관련된 컨볼루션을 2D 컨볼루션이라고 한다. 지금부.. 2020. 7. 28.
[CNN] 이동평균(moving average) 필터 설계해 보기 필터를 설계한다는 것은 곧 LTI 시스템의 임펄스 반응 \( h[n] \)을 결정하는 것과 같다. 주식 차트를 보면 5일 이동평균선, 10일 이동평균선이라는 것이 있다. 5일 이동 평균은 현재부터 과거 5일전까지의 주가 평균을 계산한 것이다. 10일 이동 평균선도 마찬가지로 현재부터 과거 10일전까지의 주가를 평균 낸 것이다.    그러면 주식 차트의 이동평균선과 비슷하게, 입력 신호에 대한 5 포인트(point) 이동평균 필터와 10 포인트 이동평균 필터를 설계해 보자. 입력 신호를 \( x[n] \)으로 하고, 이동 평균 출력 신호를 \( y[n] \)으로 하면 5 포인트 이동평균 필터의 임펄스 반응은 다음과 같이 설계할 수 있다.  \[ \begin{align} h[n] &= \frac{1}{5} .. 2020. 7. 26.
[CNN] 컨볼루션 쉽게 계산하기 일반적으로 많이 쓰이는 ‘뒤집기와 이동’ 방법을 사용하여 컨볼루션을 계산해 보자. 공식을 잘 살펴보면,  \[ y[n] = \sum_{k=-\infty}^\infty h[n-k] x[k] \]  우선 \( x[n] \)과 \( h[n] \)을 \(x[k] \)와 \( h[k] \)로 바꿔야 한다는 것을 알 수 있다. 그리고, \( h[k] \)를 뒤집어서 \( h[-k] \)로 만든 후, \( n \)만큼 이동시켜서 \( h[n-k] \)를 만든 후, \( k \)에 대해서 \( x[k] \)와 \( h[n-k] \)를 곱한 다음, \( k \)에 대해서 \( h[n-k]x[k] \)를 모두 더하면 \( y[n] \)을 계산할 수 있다는 것을 알 수 있다. 그리고, 모든 \( n \)에 대해서 위 과정을.. 2020. 7. 25.