본문 바로가기

딥러닝8

딥러닝에 사용하는 확률분포 함수 모델을 학습시키는 과정에서 필요한 확률 분포 함수 중 자주 사용되는 몇 가지만 정리해본다. Softmax 입력으로 가중치를 받아서 각 가중치를 [0, 1]의 확률로 정규화하는 방법 중 하나이다. $$ p_{i} = \frac{e^{z_{i}}}{\sum_{j=1}^{N}e^{z_{j}}} $$ 입력 크기에 단순히 선형 비례하지 않고, $e^{x}$의 값에 비례한다. def softmax(z): e_z = np.exp(z - np.max(z)) return e_z / e_z.sum() softmax 함수에서 최댓값을 모든 가중치에서 빼고 시작하는데, 이는 지수가 커서 발생하는 부작용을 줄이기 위함이다. [1, 2, 3]을 입력으로 실행해보면 지수함수 특성상 값이 클수록 가중치가 높아져 [0.09 0.24 .. 2020. 3. 30.
Keras로 CartPole 강화학습 OpenAI Gym으로 이미 구현되어있는 환경을 이용할 수 있다. 가장 단순해 보이는 CartPole 환경을 가져와서 강화 학습을 시켜보자. cart위에 막대기가 있고 한 끝이 cart에 고정되어 있다. 중력에 의해 막대기는 바닥으로 떨어지려 할 테니 cart를 좌우로 움직여 최대한 오래 지탱하는 것이 목표이다. OpenAI Gym에서는 environment로 cart의 위치, 속도와 막대기의 각도, 속도가 주어지고 이를 판단해서 cart의 움직임을 구해야 한다. environment로 주어지는 모든 상태에 대해 Q-Value를 구한다면 좋겠지만 경우의 수가 무한하기 때문에 구할 수 없다. 따라서 deep learning으로 학습시켜 모델을 만들어 입력으로 주어지는 environment에 대해 cart의.. 2019. 12. 8.
Keras로 모델 저장, 불러오기 열심히 학습시킨 모델이 있다면 매번 다시 할 필요 없이 파일로 모델 정보를 저장할 수 있다. 모델 정보란 layer와 파라미터(가중치), 학습에 필요한 optimzer 등이 있다. keras에서는 대용량 데이터에 용이한 hdf5 포맷으로 이를 지원한다. 모델의 네트워크 구성 저장하기 model_json = model.to_json() with open('model.json', 'w') as json_file : json_file.write(model_json) 불러오기 from keras.models import model_from_json with open('model.json', 'r') as file : model_json = file.read() model = model_from_json(mode.. 2019. 11. 16.
Keras로 간단한 CNN 구현하기 Keras로 가장 기본적인 mnist를 CNN(convolutional neural network)으로 구현하는 방법을 알아보자. 데이터 다운로드 (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() keras가 기본으로 mnist 데이터셋을 지원하기 때문에 바로 사용할 수 있다. load_data()는 s3에 있는 mnist 파일을 다운받아 ~/.keras/datasets 폴더에 캐시 한다. 파일은 .npz 포맷으로 되어 있고, x_train, y_train, x_test, y_test 이름의 배열을 읽어서 tuple로 리턴한다. 데이터 전처리 x_train = x_train.reshape(x_train.shape[0], 28,.. 2019. 11. 13.
알파고의 몬테카를로 방법 바둑에서는 한 수를 두었을 때 그 수의 승률을 판단해야 하는데, 이후에 벌어지는 모든 경우의 수를 탐색할 수가 없다. 이럴 때 몬테카를로(Monte Carlo) 방법을 사용한다. 모든 탐색은 못하지만 빠르게 랜덤 탐색을 반복하면서 통계적인 수치를 얻는 방법이다. 몬테카를로 방법 가장 쉬운 예로 $\pi$를 구하는 방법이 있다. 임의의 정사각형에 점을 찍어 원 안에 포함되는지 판단하는 빠른 탐색을 반복하여 통계적인 $\pi$의 값을 알 수 있다. 실행 횟수를 높일수록 실제 $\pi$값과 일치해가는 것을 볼 수 있다. # 총 개수 -> 원 안에 있는 개수 / 총 개수 * 4 10 -> 2.8 100 -> 3.16 1000 -> 3.028 10000 -> 3.1504 100000 -> 3.13844 10000.. 2019. 11. 10.
알파고의 강화학습 앞에 알파고의 원리에 대해서 간단히 썼던 적이 있는데 알파고의 학습은 인간 고수들이 대국했던 기보를 시작으로 한다. 기보를 입력으로 여러 특징을 더 추출한 뒤 CNN으로 학습시켜 SL policy network를 구한다. 이렇게 학습해서 인간과 얼추 비슷하게 다음 수를 예측할 수 있다. 이렇게 구한 SL policy network를 강화 학습하여 더 좋은 수를 예측하는 RL policy network를 구하고, RL policy network로 현재 형세를 판단하는 value network를 구한다. 여기에서는 강화 학습을 통해 얻는 RL policy network와 value network를 어떤 처리를 통해 구하는지 정리한다. RL policy network 미리 구해둔 SL policy networ.. 2019. 11. 3.