다음과 같은 게임이 있다. S에서 출발하여 G에 도착하는 게임인데 F는 지나갈 수 있고 H에 가게되면 빠져 죽는 게임이라고 한다. 이 게임에 대해서 알고리즘을 Agent가 environment에서 action을 취하며 돌아다닐 것이다. 이 action에 따라서 enviroment는 상태를 돌려준다. 여기서는 index를 state로서 되돌려 줄 것이다. 그리고 reward는 G에 도착하게 되었을때 점수를 줄 것이다. 예를 들어보자. 만약 S에서 오른쪽으로 한 칸 움직였다면, state:1, reward:0이 된다. 이것을 일반화 하면 Frozen Lack 뿐만 아니라 거의 모든 환경에 적용할 수 있다. OpenAI Gym에 가면 많은 정보를 얻을 수 있다. gym.openai.com/ OpenAI를 사용..
Reinforcement가 어떤 의미를 가지고 있는지, Reinforceabling이 뭐하는 것인지, 어떤 문제를 풀 수 있는지 개략적으로 알아보겠다. reinforcement는 굉장히 폭넓은 분야에서 사용되고 있는데 그 중 하나가 어떤 것을 훈련시킬때 사용된다. 우리의 삶에서 어떤 것을 배울 때 하는 행동들이 Reinforcement와 유사하다. 환경속에서 상태 변경되면 내가 어떤 행동을 할 때 마다 상태가 업데이트 된다. 치즈를 찾는게 목표인데 돌아다니며 매 순간마다 잘했다 못했다라는 것은 주어지지 않지만 마지막에 운이 좋아서 치즈를 발견하게 된다면 보상으로 받게 된다. 이런 형태의 환경으로 구성할 수 있는 것이 Reinforcement Learning이다. Reinforcement는 최근들어 나와있..
In [1]: import nltk In [2]: !pip3 show nltk Name: nltk Version: 3.4.1 Summary: Natural Language Toolkit Home-page: http://nltk.org/ Author: Steven Bird Author-email: stevenbird1@gmail.com License: Apache License, Version 2.0 Location: c:\users\whanh\appdata\local\continuum\anaconda3\lib\site-packages Requires: six Required-by: In [3]: sentence = """At eight o'clock on Thursday morning Arthur..
powered bt AWS 아마존 웹서비스를 이용할 수 있는 지원을 받는 방법 (광고 아님;;) Deep Network의 특징 1. Takes a long time for training - Many forward/backward propagation and weight updates - Many metrics multiplications 2. Very quick for testing and use in practice - One simple forward propagation Takes a long time for training을 해결하기 위한 방법 중 하나로 GPU를 사용하는 것이다. GPU는 Metrics 계산을 병렬적으로 아주 빠르게 처리할 수 있다. 텐서플로우 같은 경우 binary를 배포할때..
RNN을 이용하여 Stock Marcket과 같은 time series를 예측하는 방법에 대해 이야기 해보겠다.¶ time series data란 무엇일까? 어떤 시간에 따라 변화하는 값을 의미한다. x축은 시간 y축은 value가 될 것이다. 대표적인 예로 다음과 같은 주식시간의 데이터를 들 수 있겠다. 오픈때 가격, 최대가, 최저가, 판매량, 닫힐때 가격인데, 이것이 매일 기록되니 time series data라 할 수 있다. RNN을 가지고 어떻게 분석할까? 우리가 7일치의 데이터를 가지고 있다고 해보자. 그러면 이 데이터들을 쭉 배열하고 8일째의 가격을 예측해 보는 것이다. 이런 문제를 many to one이라고 한다. 이런 형태의 예측은 7일의 데이터만 가지고 예측하는 것보다 이전의 데이터들을 ..
텐서플로우의 또 다른 기능¶ RNN의 가장 강력한 점은 sequence data를 처리할 수 있다는 것이다. 이전의 예에서 sequence는 크기가 딱 정해져 있었다. 그런데 실전에서 data를 받게 되면 정해져 있지 않을 때가 많다. 예를 들어보자. 번역을 해야하는데 어떤 사람은 20개의 문자열을 어떤사람은 500개의 문자열을 준다. 이렇게 문자열의 개수는 가변하는데, 우리가 편하게 하기 위해서 항상 번역을 할때는 20개의 문자열로 고정시키라고 한다면 사용자들이 굉장히 불편해 할 것이다. 그래서 RNN은 대부분 가변하는 sequence를 입력으로 받아들여야 하는데 어떻게 할 수 있을까? 다음과 같이 hello, hi, why와 같이 다른 값에 다른 길이의 문자열을 준다고 해보자. 어떻게 처리해야 할까?..
Long Sequence RNN 지난번에 긴 문장을 RNN을 이용하여 자동화 했었는데 좋은 결과가 나오지 않았다. 그 이유는 복잡하고 많은 데이터를 다루기에는 RNN 셀이 너무 작았기 때문이다. 그래서 기본적으로 딥러닝의 핵심적인 아이디어는 wide하고 deep하게 가야 한다는 것이다. 우리는 RNN cell이 한 층밖에 없었는데, 이것을 더 쌓는 방법은 없을까? Stacked RNN¶ X = tf.placeholder(tf.int32, [None, seq_length]) Y = tf.placeholder(tf.int32, [None, seq_length]) # One-hot encoding X_one_hot = tf.one_hot(X, num_classes) print(X_one_hot) # check..
전 시간에 hihello라는 데이터를 RNN으로 학습시켰다. 이것을 학습시킬때 숫자로 고치는 과정이라던지 원핫인코딩이라던지 손으로 일일히 했다. 하지만 이게 쉬운 단어가 아니라 책과 같은 많은 양의 문자를 다뤄야 할때는 어떻게 해야 할까? Better data creation¶ sample = "if you want you" idx2char = list(set(sample)) # index -> char , set으로 유니크한 문자열이 나오면 list로 만들어버림 char2idx = {c: i for i, c in enumerate(idx2char)} # char -> idx sample_idx = [char2idx[c] for c in sample] # char to index x_data = [sam..