ImageAiCon PP진행중Unreal ImageRetargeting 코드제작TCP방식으로 데이터 통신처리를 진행1. 서버커넥팅을 위한 TCP프로토콜 제작중...테스트 진행중. 간단한 구조도 GameMode -> GameServer Chack GameServer == NULL ? CreateCallServer.py Run : ConnectionServer; 쓰레드 형태로 AIControler를 생성. TCP통신으로 현재 뷰 타겟이미지의 데이터를 TCP로 DQN 알고리즘에 데이터를 넘긴다.그후에 DQN에서 결과값을 리턴한다. 객체의 Controler의 버퍼를 감지하여, 값을 받았을 경우 쓰레드 반환 후 메세지버퍼에 데이터를 기입. 쓰레드 반환시, DQN알고리즘에 해당 학습가중치의 결과값을 반환후 End..
ImageAiCon PP진행중Unreal ImageRetargeting 코드제작TCP방식으로 데이터 통신처리를 진행1. 서버커넥팅을 위한 TCP프로토콜 제작중... 간단한 구조도 GameMode -> GameServer Chack GameServer == NULL ? CreateCallServer.py Run : ConnectionServer; 쓰레드 형태로 AIControler를 생성. TCP통신으로 현재 뷰 타겟이미지의 데이터를 TCP로 DQN 알고리즘에 데이터를 넘긴다.그후에 DQN에서 결과값을 리턴한다. 객체의 Controler의 버퍼를 감지하여, 값을 받았을 경우 쓰레드 반환 후 메세지버퍼에 데이터를 기입. 쓰레드 반환시, DQN알고리즘에 해당 학습가중치의 결과값을 반환후 End한다. 학습이 완..
ImageAiCon PP진행중Unreal ImageRetargeting 코드제작뷰타겟에 따른 엑터의 머티리얼 변환 작업 진행 예정 작업Unreal ImageRetargeting 코드제작 언리얼 함수 상으로 지정된 카메라의 타겟뷰를 이미지값으로 저장 반환하는 방식이 존재함.TCP방식으로 데이터 통신처리를 진행TensorFlow를 사용하여 전달받은 이미지로 학습 알고리즘 연산.연산결과를 다시 언리얼로 전달하여 학습된 데이터를 갱신.4번과 3번을 반복학습결과확인 후 재학습 5와 6을 원하는 AI행동패턴이 나타날때까지 반복목표TensorFlow를 사용하여 알고리즘이 동작하는지 직접적인 확인을 진행.TensorFlow 를 사용하지 않고, 스스로의 C++코드로 알고리즘 함수 구현부를 직접 제작하여 사용하는것(파이썬..
ImageAiCon PP진행중Unreal의 ImageAI공부하기알고리즘 관련 강의 학습사전지식더보기https://inradestrt.tistory.com/695 $ \epsilon - Greedy $Q-Learning 및 강화학습을 적용할 때 보통 $ \epsilon - Greedy $ 라는 기법을 함께 적용한다. 에이전트가 항상 최대 Q값으로 행동하게 되면 데이터 수집과정에서 다양성이 감소하고 이로인해 최대 학습inradestrt.tistory.comhttps://inradestrt.tistory.com/696 Exploration & Exploitation Trade-Off강화 학습 알고리즘은 학습을 위한 데이터가 에이전트가 어떤 행동을 하느냐에 따라 달라진다. 따라서 강화학습 알고리즘은 데이터를 잘..
import tensorflow as tfimport numpy as npimport randomimport mathimport os"""# 설정값 지정"""# 학습에 필요한 설정값들을 선언합니다.epsilon = 1 # epsilon-Greedy 기법에 사용할 최초의 epsilon값epsilonMinimumValue = 0.001 # epsilon의 최소값 (이 값 이하로 Decay하지 않습니다)num_actions = 3 # 에이전트가 취할 수 있는 행동의 개수 - (좌로 움직이기, 가만히 있기, 우로 움직이기)num_epochs = 2000 # 학습에 사용할 반복횟수hidde..
DQN Q-Table을 업데이트하지 않고, 현재 상태값을 입력값으로 받고 현재 상태에서 취할 수 있는 행동들에 대한 Q값을 예측하는 인공신경망을 만들어서 사용하는 Q-NetWorks기법이다. Q-Networks를 학습시킬 때, 타겟 데이터는 Q-Learning알고리즘으로 구한 최적의 행동가치 함수값인 $ Q*(s_{t}, a_{t}) = R_{t+1} + \gamma \underset{a+1}{max}Q(s_{t+1}, a_{t+1}) $ 으로 지정하고 상태값을 입력받아 신경망이 예측한 $ Q(s_{t}, a_{t}) $ 와 타겟 데이터의 평균제곱오차(MSE)으로 손실함수를 정의해서 최적화를 수행한다. $ MSE = \frac{1}{2n}\sum_{i=1}^{n}(Q^{*}(s_{t},a_{t}) - ..
일반적인 ANN구조처럼 손실 함수에 대한 옵티마이저를 선언하고 학습을 진행하면 적절한 Q값을 예측하는 Q-Networks를 학습시킬 수 있다.
$ \epsilon - Greedy $
Q-Learning 및 강화학습을 적용할 때 보통 $\epsilon - Greedy $ 라는 기법을 함께 적용한다.
에이전트가 항상 최대 Q값으로 행동하게 되면 데이터 수집과정에서 다양성이 감소하고 이로인해 최대 학습 결과가 Local Optima에 빠질 확률이 높아진다.
따라서 $\epsilon - Greedy $ 기법은 에이전트가 $\epsilon $ 확률로 최적의 행동이 아닌 랜덤한 행동을 하게 하고, 다시 $ ( 1 -\epsilon ) $ 확률로 최적의 행동을 하게 함으로써 에이전트가 다양한 상태를 경험하고 수집할 수 있게 한다.
결과적으로 학습이 끝난 후에 더 좋은 성능을 발휘할 수 있다. 하지만 계속해서 랜덤한 행동을 하도록 할 수는 없음으로 학습 초반에는 $\epsilon $ 값을 크게 설정했다가 학습이 진행될 수록 점차 $\epsilon $ 값을 감소시켜 준다.