목록공부 (59)
Broccoli's House
4회차 - (5) TORCS : SCR-패치 클라이언트 설정 클라이언트 - 클라이언트 : TORCS의 SCR-패치를 통해 서버가 열려있는 상태에서, 서버를 통해 게임의 데이터를 읽거나 쓰려면 메모리 영역을 읽어올 수 있는 클라이언트가 있어야 한다. 다른 어떤 언어로도 클라이언트를 만들 수 있으나, 여기에서는 C++과 파이썬으로 구성된 클라이언트를 소개하고자 한다. C++ 클라이언트 - 유튜브 (https://www.youtube.com/watch?v=mFo98deSk4Q)를 보면 자세한 과정을 알 수 있다. - URL (https://sourceforge.net/projects/cig/)에서 동일한 클라이언트를 다운받을 수 있다. 압축 파일을 받은 후에, 압축을 해제한다. 클라이언트는 게임 외부에서 작동..
4회차 - (4) TORCS : SCR-패치 서버 설정 SCR-패치 - SCR(Simulated Car Racing) 패치 : TORCS는 매년 게임 내에서 튜닝된 차량들이 경쟁하는 대회(Simulated Car Racing Championship)를 개최한다. 차량을 튜닝하기 위해서는 TORCS 게임 내 차량의 여러 데이터들을 받아와야 하는데, 그저 설치만 완료한 게임은 독립적이라 접근하여 게임 속 차량에 관련된 데이터들을 읽어들일 수가 없다. 따라서 차량의 데이터를 받아올 수 있도록 게임과 외부의 통로를 만들어주는 것이 SCR-패치이다. 관련된 자세한 내용과 여러 운영체제에 대한 설치 방법에 대해서 다음 문서에 잘 나와있다. 여기에서는 Windows 10 환경에서의 패치만을 다룬다. - SCR-패치를..
4회차 - (3) TORCS : 설치 및 설정 TORCS - TORCS(The Open Racing Car Simulator) : TORCS는 리눅스, 윈도우같은 여러 운영체제에서 사용할 수 있는 오픈 소스로 된 3D 차량 레이싱 시뮬레이터이다. C++로 만들어졌으며, OpenGL로 그래픽을 렌더링한다. 20년 전인 1997년도에 만들어졌지만 현재까지도 여러 차량 시뮬레이션에 사용되는 프로그램이다. - 20년 전의 게임인 만큼, 그래픽이 Microsoft의 AirSim만큼 화려하지 않고 오히려 매우 단조롭다. 그렇기 때문에 오히려 영상 처리나 학습 모델을 만들어 학습하는 것이 편리할 수 있다. 또한 출시된 기간이 오래되었으므로 여러 예제들이 존재하고, 대회가 있어 아직도 커뮤니티가 존재한다. 가장 중요한..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 신경망 학습 : 경사 하강법 경사법 - 경사법(Gradient Method) : 머신러닝 모델은 학습 시에 최적의 매개변수(가중치와 편향)를 찾는다. 최적이란, 손실 함수가 최솟값이 될 때의 매개변수 값이다. 따라서 기울기를 이용하여 손실 함수의 최솟값을 찾으려는 것이 바로 경사법이다. 일반적으로 기계 학습을 최적화하는데 사용되고, 특히나 신경망 학습에 많이 사용된다. - 손실함수의 첫 위치에서 기울기를 구한다. 기울기가 (+)이면 음의 방향으로, (-)이면 양의 방향으로 일정 거리만큼 이동한 다음, 그 위치에서의 기울기를 다시 구한다. 그리고 그것을 토대로 다시 일정 거리를 이동하는 것을 반복하여, 손실 함수의 값을 점차적으로 줄여나가는 것이 ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 신경망 학습 : 손실 함수 손실 함수 - 손실 함수(cost function) : 손실 함수란 신경망이 학습할 수 있도록 해주는 지표이다. 머신러닝 모델의 출력값과 사용자가 원하는 출력값의 차이, 즉 오차를 말한다. 이 손실 함수 값이 최소화되도록 하는 가중치와 편향을 찾는 것이 바로 학습이다. 일반적인 손실 함수로 평균 제곱 오차나 교차 엔트로피 오차를 사용한다. 평균 제곱 오차 - 평균 제곱 오차(Mean Squared Error : MSE) : 계산이 간편하여 가장 많이 사용되는 손실 함수이다. 기본적으로 모델의 출력 값과 사용자가 원하는 출력 값 사이의 거리 차이를 오차로 사용한다. 그러나 오차를 계산할 때 단순히 거리 차이를 합산하여 평..
4회차 - (2) Microsoft AirSim Car Simulator : 환경 구성 언리얼 환경 구성 - Github(https://github.com/Microsoft/AirSim/blob/master/docs/unreal_custenv.md)에 언리얼 환경 구성에 대한 단계별로 자세한 설명이 있으나, 오류가 발생하여 다른 방법으로 대체한다. 유튜브에 동일한 방식의 언리얼 환경 구성이 영상으로 올라와있다(https://www.youtube.com/watch?v=1oY8Qu5maQQ&feature=youtu.be). 영상을 먼저 따라하기 보다는 Github의 설명이 더 최신이므로, Github의 지시 사항을 그대로 따라해보고 오류가 발생하는 경우 영상을 따라하기 바란다. (1). 에픽 게임 런처를 실..
4회차 - (1) Microsoft AirSim Car Simulator : 설치 Microsoft AirSim - AirSim은 Microsoft사에서 자율 주행, 영상 처리, 강화 학습, 인공 지능 알고리즘 등의 연구를 위하여 개발한, 언리얼 엔진(Unreal Engine)을 기반으로 하는 드론 및 자동차 시뮬레이터이다. 오픈 소스이며, 차량이나 드론의 상태와 관련된 API를 제공한다. (https://github.com/Microsoft/AirSim) AirSim 바이너리 설치 (Windows 10 환경) - 언리얼 엔진 홈페이지(https://www.unrealengine.com/ko/blog)에서 에픽 게임 런처를 다운 받는다. 다운 완료된 런처를 실행하여 최신 버전의 언리얼 엔진을 다운로드 한..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 신경망 학습 학습 - 학습(Learning) : 신경망의 각 노드들은 입력에 가중치를 곱하여 편향을 더한 값을 활성화 함수를 거쳐 출력한다. 학습이란, 신경망 모델의 출력이 사용자가 원하는 값에 수렴하도록 수많은 노드들이 가지고 있는 각각의 가중치와 편향들을 자동으로 획득하는 것을 말한다. 즉, 사용자가 원하는 출력과 모델의 출력이 동일시되거나 수긍할만한 오차에 수렴하는 가중치와 편향을 알아서 찾아가는 것이 바로 머신러닝의 학습이다. - 손실함수(cost function) : 손실 함수는 신경망이 학습할 수 있도록 해주는 지표이다. 사용자가 원하는 출력과 머신러닝 모델 출력 값의 차이 즉, 오차를 말한다. 일반적으로 이 손실 함수 값이 최소화되도..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 군집 알고리즘 : DBSCAN DBSCAN - DBSCAN(Density-Based Spatial Clustering of Applications with Noise) : DBSCAN은 밀도를 기반으로 하여 군집화하는 매우 유용한 군집 알고리즘이다. k-평균 군집이나 계층적 군집 알고리즘의 경우 데이터 간의 거리를 이용하여 클러스터를 나누는데에 반해, DBSCAN 알고리즘은 데이터 포인트가 세밀하게 몰려 있어 밀도가 높은 부분을 군집화하는 방식이다. - 먼저 DBSCAN 알고리즘은 특성 공간(Feature Space)에서 데이터가 밀집해있는 지역의 포인트를 찾는다. 이러한 지역을 특성 공간의 밀집 지역(Dense Region)이라 한다. 이러한 ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 군집 알고리즘 : 병합 군집 병합 군집 - 병합 군집(Agglomerative Clustering) : 각각의 데이터 포인트를 하나의 클러스터로 지정하고, 지정된 개수의 클러스터가 남을 때까지 가장 비슷한 두 클러스터를 합쳐 나가는 알고리즘. 두 클러스터를 합쳐 나가는 방식에는 모든 클러스터 내의 분산을 가장 작게 증가시키는 두 클러스터를 합치는 방식(Ward), 클러스터 포인트 사이의 평균 거리가 가장 짧은 두 클러스터를 합치는 방식(Average), 클러스터 포인트 사이의 최대 거리가 가장 짧은 두 클러스터를 합치는 방식(Complete) 등이 있다. Ward 방식이 대부분의 데이터 세트에 알맞게 동작한다. - 초기에는 각 포인트가 하나의 클..