본문 바로가기

분류 전체보기

(90)
8. 카트폴 DQN 강화학습 카트폴 DQN 강화학습 예제 기본 구성 폴이 바닥으로 쓰러지지 않도록 카트를 좌우로 움직이는 게임인 카트폴 DQN 학습 과정은 두 단계로 구성된다. 학습 데이터의 시간적 상관관계를 없애기 위한 리플레이 메모리를 생성하는 단계와 리플레이 메모리에서 데이터를 무작위로 추출해 학습하는 미니 배치 단계가 그것이다.기본 개념 리플레이 메모리 생성 단계는 우선 (1)-1 카트폴을 초기화 함으로써 무작위 행동을 유발하고 임의의 상태(state)를 출력한다. (1)-2 다음으로 초기화된 인공신경망 모델에 상태를 입력해 큐 값을 출력으로 반환 받아 (1)-3 입실론 탐욕 정책을 통해 적절한 행동을 출력한다. (1)-4 다음으로 앞에서 얻어진 모든 데이터를 종합해서 리플레이 메모리에 저장하고 (1)-5 새로운 상태를 인공..
7. 텐서플로우 심층 신경망 네트워크 구성 및 손실 함수 정의 단일 신경망은 성능이 좋지 않기 때문에 사용되지 않는다. 레이어가 여러 개 있는 신경망을 심층 신경망이라 하며 심층 신경망부터 딥러닝이라 한다. 단일 신경망 코드를 심층 신경망으로 만들기 위해서는 다른 부분은 모두 동일하고 레이어 여러 개 추가하는 몇 줄의 코드만 입력하면 된다. 테스트를 위해 하나의 레이어만 추가하도록 하겠다. 지금 만들고자 하는 심층 신경망은 2개의 레이어에 각각 10개의 노드를 가지고 있는 신경망이다. (1) 레이어가 두 개 이기 때문에 가중치와 편향을 2개씩 생성했다. 심층 신경망은 단일 신경망 보다는 성능이 좋기 때문에 초기 설정 값에 영향을 덜 받으므로 random_uniform 함수를 사용해 변수를 초기화 했다. (2) 이제 레이저를 선언할 ..
6. 텐서플로우 단일 신경망 회귀분석 모델 전체 코드 데이터를 이진 분류하는 기본적인 인공신경망을 만들어보자. 이진 분류를 하기 위해서는 먼저 데이터를 나눌 수 있는 일차 함수를 찾고 다시 시그모이드 함수를 통해 결과를 분류해야 한다. 테스트 데이터 생성을 위해 sk-learn 패키지에서 제공하는 make_classfication함수를 사용해보자. (1) 인수로 들어가는 n_features와 n_informative는 몇 개의 분류로 나눌 것인지 결정한다. 2로 설정했기 때문에 이진 분류 데이터를 생성한다. (2) 특징은 x1과 x2개 이고 데이터에 대한 분류 정보는 y에 들어간다. (3) scatter 그래프를 통해 데이터 분포를 살펴보면 흰색과 검은색 데이터가 명확하게 분류되어 있는 것을 확인할 수 있다. 모델 생성 및 손실함수..
5 텐서플로우 회귀분석 모델 테스트 데이터 만들기 앞 장에서 1차 방정식을 사용해서 머신 러닝 개념에 대해 알아봤다. 1차 방정식에서 가중치와 편항을 예측하는 회귀분석 모델을 만들기 위해 먼저 테스트 데이터를 만들어보자. 다양한 방법이 있겠지만 sklearn 패키지에서 제공하는 make_regression 함수를 사용하면 아주 쉽게 테스트 데이터를 만들 수 있다. (1) n_features 인자는 몇 개의 변수를 사용할 지 결정한다. 우리가 만들고자 하는 것은 변수를 1개 사용하는 1차원 함수이므로 1로 지정한다. noise는 1차원 그래프에서 데이터가 얼마나 벗어날지를 결정한다. 숫자가 클 수록 데이터가 직선 그래프에서 많이 벗어난다. 4로 설정한다. (2) 만들어진 데이터를 저장하기 위해 pandas 패키지에서 제공하는 Data..
4. 텐서플로우 기본 예제 텐서플로우 기본 예제 단순한 곱하기 연산을 통해 텐서플로우 기본 구조를 알아보자. 텐서플로우에서 모든 데이터는 텐서 형태로 표현된다. (1) 정수 6을 사용하기 위해 tf.constant 명령어를 사용해 상수형 텐서를 선언했다. 텐서플로우에서는 텐서에 이름을 지정할 수 있고 나중에 텐서보드에서 시각화에 사용된다. (2) 6X7 연산을 만들기 위해 텐서플로우에서 제공하는 multiply 함수를 사용했다. 연산에 필요한 텐서를 인자로 넣고 이름을 지정했다. (1)번과 (2)번 과정을 완료하면 그래프가 생성된다. 지금은 시각적으로 보이지 않지만 텐서플로우 내부적으로 그래프 구조가 자동적으로 생성된다. (3) 이제 만들어진 그래프를 실행할 순서이다. 그래프를 실행하기 위해 필요한 세션 객체를 먼저 생성하고 (4..
3. 텐서플로우 개념 구글에서 개발한 텐서플로우는 데이터 플로우 그래프를 사용하는 수치 연산용 오픈소스 소프트웨어 라이브러리이다. 텐서플로우는 개념적으로 인공신경망에 알맞게 설계되어 있다. 그렇다고 회귀분석과 분류분석과 같은 기본적인 머신러닝 기능을 지원하지 않는 것은 아니다. 하지만 텐서플로우에서 제공하는 아키텍쳐는 인공신경망 기반 알고리즘을 활용하기에 적합한 구조로 되어있다. 텐서플로우는 성능향상을 위해 GPU 사용을 지원한다. 컴퓨터에 장착된 CPU에는 많아야 8개 정도의 중앙처리장치가 있지만 게임용 GPU만 해도 수백 개 이상의 중앙처리장치가 있어 병렬처리에 유리하기 때문이다. 텐서플로우의 가장 큰 장점은 텐서 보드를 활용해서 학습 과정을 시각화할 수 있다는 것이다. 딥러닝에는 수많은 노드와 레이어를 사용되고 알고리즘..
2. 첫 머신 러닝 프로그램 만들기 주피터 노트북 실행 주피터 노트북은 대화형으로 파이썬 프로그램을 실행할 수 있도록 지원하는 대화형 개발 도구이다. 아나콘다를 설치하면 별도의 설치 과정이 필요 없이 주피터 노트북을 사용할 수 있다. 파이썬 어플리이션을 개발하기에는 다소 무리가 있지만, 전체 프로그램이 아니라 프로그램의 일부분만 실행할 수 있기 때문에 중간에 데이터를 자주 확인해야 하는 데이터 분석 업무에 적합한 툴이다. 주피터 노트북을 실행하기 위해서는 프로그램을 저장할 디렉토리로 이동한 후 rlearning 실행 환경을 활성화 한 다음 [jupyter notebook] 명령어를 사용하면 된다. 윈도우 명령어 창 하단에 주피터 노트북이 실행되는 주소가 나오며 웹브라우저가 자동으로 열리면서 주피터 노트북을 사용할 수 있게 된다. 파이썬 프..
1. 개발환경 설치 아나콘다는 데이터 사이언스와 머신러닝에 필요한 다양한 파이썬과 R 관련 모듈을 모아 놓은 무료 배포 패키지이다. 파이썬을 사용해서 머신러닝을 할 때 pandas, numpy, tensorflow 등 다양한 패키지가 필요하다. 하지만 아나콘다만 설치하면 이 모든 패키지들이 기본적으로 설치되어 있기 때문이 다른 프로그램을 추가로 설치할 필요가 없다. 아나콘다 설치 아나콘다 리파지토리 페이지에 가면 다양한 아나콘다 버전을 다운로드할 수 있다. ML 에이전트를 실행하기 위해서는 호환되는 버전을 설치해야 하는데 ML 에이전트 0.5 버전과는 아나콘다 3 5.1 버전이 적합하다. 다음 사이트에서 https://repo.anaconda.com/archive/ 윈도우 64bits용 아나콘다 5.1 버전을 받아서 설치하..