목록공부 (59)
Broccoli's House
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 학습 관련 기술 : 오버피팅 억제 오버피팅 - 오버피팅(과대적합, Overfitting) : 머신러닝에서 과대적합(Overfitting)은 큰 문제 중에 하나이다. 과대적합이란 머신러닝(여기서는 신경망) 모델이 너무 과한 학습으로 인해 훈련 데이터에만 지나치게 적응되어 그 이외의 시험 데이터에 대해서는 제대로 대응하지 못하는 것을 말한다. - 머신러닝에서는 다양한 상태에 대하여 일반적인 성능을 내는 모델을 지향하므로, 훈련 데이터에 없는 상황이 주어지더라도 올바른 결과를 내는 모델이 더 좋은 모델이다. 따라서 복잡하고 표현력이 좋은 모델을 만들면서도, 과대적합을 억제하는 기술이 중요해지는 것이다. - 위와 같은 모델이 과대적합된 모델이다. 훈련 ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 학습 관련 기술 : 배치 정규화 배치 정규화 - 배치 정규화(Batch Normalization) : 신경망의 골치 아픈 점은 바로 기울기 소실 문제(Gradient Vanishing Problem)이 발생한다는 것이다. 이 문제를 해결하기 위하여 시그모이드(sigmoid)나 하이퍼탄젠트(tanh) 함수에서 렐루(ReLU)로의 활성화 함수 변화, 가중치의 초기값 설정 등의 방식을 채용하였다. 가중치의 초기값을 적절히 설정하면 각 층의 활성화 값 분포가 적당히 퍼지면서 학습이 원활하게 수행된다. 이러한 점에 착안하여 각 층의 활성화 값을 강제로 퍼뜨리는 것이 바로 배치 정규화이다. - 보통의 경우 신경망 모델에 데이터를 입력하기 전에 전체 데이터 ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 학습 관련 기술 : 초기 가중치 설정 가중치의 초깃값 - 가중치의 초깃값을 지정해주는 일은 학습에서 매우 중요한 부분이다. 지정해 주지 않으면 컴퓨터가 무작위로 가중치의 초깃값을 지정하고 학습을 해나가는데, 만약 가중치의 초깃값이 최적값과 멀리 떨어져있다면 학습하는데 오랜 시간이 걸리게 된다. 또한 오래 학습할 경우 과대적합(Overfitting)의 가능성을 내포하고 있으므로 초기 가중치를 설정하여 빠르게 학습하는 것이 매우 중요하다. - 가중치 감소(Weight Decay) : 가중치 감소는, 간단히 말해서 가중치 매개변수의 값이 작아지도록 학습하는 방법이다. 가중치 값을 작게 하여 과대적합이 일어나지 않게 하는 것이다. 특정 가중치 값을 0으..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 학습 관련 기술 : 매개변수 갱신 매개변수 갱신 - 최적화(Optimization) : 학습 모델과 실제 레이블과의 차이는 손실 함수로 표현되며, 학습의 목적은 오차, 손실 함수의 값을 최대한 작게 하도록하는 매개변수(가중치, 편향)를 찾는 것이다. 즉, 매개변수의 최적값을 찾는 문제이며, 이러한 문제를 푸는 것을 최적화라 한다. - 손실 함수를 최소화하는 매개변수를 찾는 방법에는 여러 가지가 있다. 가장 간단하게는 손실 함수의 그래프에서 가장 낮은 지점을 찾아가도록 손실 함수의 기울기를 구해 최적값을 찾아가는 확률적 경사 하강법(SGD)과 이 방법의 단점을 보완한 모멘텀 및 AdaGrad, Adam 방법 등이 있다. 이것들을 하나하나 알아보도록..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 오차역전파법 : 역전파 및 예시 계산 그래프 - 계산 그래프(Computational Graph) : 계산 그래프란 계산 과정을 그래프로 나타낸 것이다. 그래프는 자료구조의 일종으로 여러 개의 노드(node)와 그 노드들을 잇는 선, 엣지(edge)로 표현된다. 덧셈 역전파 - z=x+y 수식을 계산 그래프로 나타내면 왼쪽 위와 같다. 우측은 좌측의 계산 그래프의 역전파이다. 계산 그래프의 최종 출력이 L이라하면, z가 L에 끼치는 영향력은 ∂L/∂z으로 표현된다. 마찬가지로, x가 최종 출력 L에 끼치는 영향력은 ∂L/∂x, y가 최종 출력 L에 끼치는 영향력은 ∂L/∂y이다. ∂L/∂x에 연쇄 법칙을 적용하면 ∂L/∂x는 ∂L/∂z에 ∂z/∂..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 오차역전파법 : 소개 오차역전파법 - 오차역전파법(Back Propagation) : 신경망 학습에서, 신경망의 가중치(weight)에 대한 손실 함수의 기울기를 구하기 위해 미분을 사용했다. 미분 계산은 단순하고 구현하기 쉽지만, 시간이 오래걸리는 단점이 존재한다. 즉 초기 가중치에서의 손실 함수를 계산하고 그것을 미분하여 다음 가중치 계산에 사용하는데, 뉴런이 많아져 각 노드의 매개변수(가중치, 편향)가 많아지면 그 모든 매개변수를 학습시키기란 매우 어렵다는 것이다. 이것을 효율적으로 하기 위한 것이 오차역전파 알고리즘이다. - 학습이란 각 뉴런의 매개변수(가중치, 편향)에 의해 계산된 최종 출력을 토대로 손실함수(데이터의 레이블과 실제 출력..
5회차 - (4) 훈련 데이터 수집 및 저장 훈련 데이터 수집 - 딥러닝 모델을 만들어 학습시키기 위하여 앞서 작성했던 파이썬 코드들을 사용하여 훈련 데이터를 수집한다. 하나의 파이썬 파일 안에 스크린 이미지를 추출하는 코드와 로지텍 G27에서 조향, 엑셀, 브레이크 데이터를 추출하는 코드를 동시에 작성하는 경우, 전체 코드가 복잡해지고 깔끔하지 못하다. 따라서 두 개를 분리하여 다른 파이썬 파일 안에서 작성하고 훈련 데이터를 모으는 파이썬 파일을 새로 만들어, 모듈로써 각 기능을 하는 함수를 불러오도록 한다. 이미지 추출 모듈 및 함수 작성 - 컴퓨터 스크린을 촬영하고 이미지의 크기 조절 및 흑백 처리를 해주는 함수를 작성하고, 이미지를 저장해주는 함수를 따로 작성한다. 그 이유는 훈련 데이터를 다 모..
5회차 - (3) 로지텍 G27에서 조향 데이터 추출 로지텍 G27 자체 API를 통한 데이터 추출 - 로지텍 G27은 차량 시뮬레이터나 레이싱 게임에서 사용할 수 있는 드라이빙 시뮬레이션 기어이다. 로지텍 G27과 관련된 정보는 로지텍 웹사이트(http://support.logitech.com/ko_kr/product/g27-racing-wheel)에서 찾을 수 있다. 로지텍 G27을 컴퓨터에 연결하여 사용하려면 로지텍 게임 소프트웨어를 설치해야 한다.(http://support.logitech.com/ko_kr/product/g27-racing-wheel/downloads)에서 다운로드 받을 수 있다. 로지텍 G27을 컴퓨터에 연결해 놓은 상태에서 설치를 시작하면 인스톨러가 알아서 하드웨어를 인식하여..
5회차 - (2) 파이썬을 이용한 이미지 크기 조절 및 흑백 처리 이미지 크기 조절 - 파이썬의 라이브러리 PIL의 ImageGrab.grab() 함수를 사용해서 스크린 이미지를 추출하면, 모니터의 해상도를 그대로 따르는 이미지가 추출된다. 현재 모니터의 해상도가 (1920X1080) 이므로, 이미지를 가공하기 위해 픽셀마다 어떠한 연산을 가하려면 너무 많은 계산량과 그에 따른 많은 시간이 소요된다. 따라서 이미지의 크기를 줄일 필요가 있다. - 이미지 크기 조절에는 이미지 관련 라이브러리인 OpenCV의 resize 함수를 사용한다. resize 함수를 사용하기 위해서는 스크린 이미지를 추출한 다음 배열로 변경해주어야 한다. 또한 줄이고자 하는 이미지의 크기와 크기를 변경할 때의 보간 방식(interp..
5회차 - (1) 파이썬을 이용한 시뮬레이터(BeamNG Drive) 영상 이미지 추출 직접적 방법 - 앞서 설치 및 환경을 구성한 Microsoft AirSim이나 TORCS에서는 프로그램 소스 코드를 이용하여 게임 이미지를 직접적으로 받아올 수 있다. AirSim의 경우 C언어 기반으로 작성된 시뮬레이터이지만, 서버-클라이언트 방식으로 파이썬에서 시뮬레이터의 이미지를 추출하는 API를 자체적으로 제공한다. 따라서 별 다른 어려움 없이, 예제 코드를 따라하면 그대로 영상을 추출할 수 있다. (https://github.com/Microsoft/AirSim/blob/master/docs/image_apis.md)를 참고하면 된다. - AirSim과는 다르게, TORCS에서 파이썬으로 이미지를 추출하는 것..