728x90

AI | ML 43

[RL] 테트리스 강화학습 시도 내용

예전에 다양한 시도를 해보면서 겪었던 걸 적었던 글이였는데 오랜만에 발견해서 적어본다. 강화학습을 공부하면서 어디에 적용하면 재밌을까 생각해보다가 테트리스에 적용해보기로 했다. 처음에는 아는 게 DQN밖에 없어서 DQN으로 시도해봤는데, 학습이 전혀 되지 않았다. 나중에 검색해보니, 테트리스가 의외로 search space가 큰 환경이라 단순화해서 접근해보는 것부터 시도해보자고 생각해,블록을 네모로만 한정시켜 보상을 쉽게 줄 수 있도록 적용해봤는데 결과가 아래 그림처럼 좋지 않았다. 왜 그런지 생각해보다가 보상이 제대로 되지 못했거나, 모델이 맵을 읽지 못한다는 생각이 들어 각각 시도해 보았다. 아래와 같이 보상 체계를 한번 변경해봤다. 라인을 지우는 경우 보상 2배로 강화 보상 체계 변경 score →..

[RL] DQN(Deep Q-Network) 논문 리뷰

제목 + 링크: Playing Atari with Deep Reinforcement Learning ‌ 1. Introduction ‌ 기존 RL은 hand-craft 기반으로 진행해왔는데, 성능이 feature quality에 의존적 주변 분야(CV, NLP)에서 딥러닝을 이용해 많은 발전이 있어 RL에도 이점이 있을 것 같다고 생각 RL 환경에서 CNN을 기반으로 atari 게임 raw video input을 학습해 control이 가능한지 시도 ‌ 2. Background ‌ 강화학습에서 agent는 상태에 따라 행동을 정해야 하는데, 현재 상태는 이전 상태와 연관되어 있다. 이는 MDP(Markov Decision Process)를 떠오르게 하고, 따라서 논문에서는 MDP의 방법을 RL에서도 적용..

[RL] Beginner Guide

Background Knowledge 강화학습이란, 제한된 환경 안에서 설정된 에이전트가 현재의 상태를 인식하고, 선택 가능한 행동들 중 보상을 최대화하는 행동 또는 행동 순서를 선택하는 방법을 말한다. 여기서 강화(Reinforcement)란 심리학에서 생물이 어떤 자극에 의해 미래의 행동을 바꾸는 것을 말한다. Environment : 관측이 가능하고, 통제할 수 있는 닫힌 공간 Interpreter : 환경에서 Agent으로 가기 전, 확인하는 버퍼 단계로 보아도 무방하다 (프로그래머) Agent : 환경 내에서 제어되는 객체 State : 환경 내에서 관측되는 Agent의 상태, Observation이라고 표현되기도 한다 Action : Agent가 행동한 결과 Policy : Agent가 취할 ..

Attention is all you need (Transformer) 리뷰

최근에 논문을 너무 안 읽은 것 같아 논문을 읽어보려고 하다가 어텐션이 많이 들어가서 파악이 잘 안 됐다. 트랜스포머가 좋은 논문이라고 해서 많이 듣기는 했는데 이것부터 읽어보지 않으면 다음 논문을 읽어볼 수 없을 것 같아 트랜스포머를 읽어보았다. 그동안 트랜스포머에 대해 간략하게 들어보면서 내가 궁금했던 것은 이렇다. NLP 에서 Transformer 가 이전과의 차이점이 무엇인지? 학습 구조 트랜스포머 내에서 Query, Key, Value 라는 단어가 왜 쓰였는지? 그리고 아래는 내가 트랜스포머 논문을 읽으면서 간략하게 요약해보면서 적었다. 1. Introduction RNN 모델 특성 상 길어질수록 메모리의 제약이 생김 이 문제를 해결하기 위해 분해 트릭이나 조건부 연산 같은 연구가 있었고, 후자..

AI | ML/NLP 2022.06.01

[MetaFlow] ModuleNotFoundError: No module named 'fcntl'

Windows10 환경에서 MetaFlow 실행 시 fcntl 이라는 모듈이 없다는 문제가 생긴다. 찾아보면 fcntl 라이브러리는 리눅스에서만 지원된다고 한다. ModuleNotFoundError: No module named 'fcntl' 추가로 MetaFlow 홈페이지에서 검색해본 결과, 윈도우는 지원할 계획이 아예 없다고 한다. (할말을 잃었다) 참고 https://github.com/Netflix/metaflow/issues/10

[Python] TFLite to ONNX 변환

1. pip install tf2onnx 2. python -m tf2onnx.convert --opset 13 --tflite {tflite_file} --output {onnx_file} 3. pip install onnxruntime ( gpu 사용 시, onnxruntime-gpu) 4. onnx 모델 실행 결과 예시 Onnx 모델 실행 코드 (Python) import onnxruntime import numpy as np import cv2 def load_onnx_model(path, use_gpu): ort_session = onnxruntime.InferenceSession(path) if use_gpu: ort_session.set_providers(['CUDAExecutionProvi..

[Windows] Onnxruntime Visual Studio C++ Build

1. Visual Studio Nuget 다운로드 2. VS include, lib path 설정 includePath $(ProjectDir)/packages/Microsoft.ML.OnnxRuntime.Gpu.1.8.1/build/native/include LibPath $(ProjectDir)/packages/Microsoft.ML.OnnxRuntime.Gpu.1.8.1/runtimes/win-x64/native dll → 프로젝트 경로에 import 3. GPU 이용 시, 다음의 코드 변경 core/framework/provider_options.h → provider_options.h 4. 테스트 코드 작성 후 테스트

[Onnx] C++ GPU Inference

OS : Windows 10 GPU : RTX 2080 Tools : Visual Studio 2019 16 CUDA : 11.0 CUDNN : 8.0.6 Onnxruntime version : 1.8.1 CUDA는 매우 호환이 까다로운 녀석이다. 많은 고생을 덜기 위해선 아래의 사양을 꼭 참고해서 진행해야 한다. https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html 나의 경우에는 CUDA 11.0으로 설치되어 있기 때문에 Onnx version을 1.8.1로 진행하였다. 아래는 CPU 모델을 GPU로 변경할 때 추가로 들어가는 코드이다. OrtCUDAProviderOptions options; options.device_..

[TensorRT] Windows 환경 onnx -> trt 변경

나는 CUDA, CUDNN 이 설치되어 있다는 가정하에서 진행하였다. ( CUDA : 11.0, CUDNN: 8.02, VS : 2019 ) CUDA 환경이나, tensorflow, pytorch 등의 환경이 다르다면 아래의 링크를 기준으로 다른 버전을 참고해야 한다. https://docs.nvidia.com/deeplearning/tensorrt/release-notes/index.html 1. tensorRT 홈페이지에 들어가 환경에 맞는 zip 파일을 다운로드 받는다. (나는 8.2.1 GA 버전을 설치하였다) https://developer.nvidia.com/nvidia-tensorrt-download 2. 적당한 곳에 압축을 푼다. (난 D 드라이브에 설치하였고, {path} 라고 표현) 3..

[TensorRT] Windows 10 C++ 설치

나는 CUDA, CUDNN 이 설치되어 있다는 가정하에서 진행하였다. ( CUDA : 11.0, CUDNN: 8.02, VS : 2019 ) CUDA 환경이나, tensorflow, pytorch 등의 환경이 다르다면 아래의 링크를 기준으로 다른 버전을 참고해야 한다. https://docs.nvidia.com/deeplearning/tensorrt/release-notes/index.html 1. tensorRT 홈페이지에 들어가 환경에 맞는 zip 파일을 다운로드 받는다. (나는 8.2.1 GA 버전을 설치하였다) https://developer.nvidia.com/nvidia-tensorrt-download 2. 적당한 곳에 압축을 푼다. 3. Visual Studio를 열고, 속성 페이지에 들어간..

728x90