Deep Learning (20) 썸네일형 리스트형 Linear Regression (선형회귀) 선형 회귀란 여러 변수로부터 하나이상의 값을 예측하는데 사용되는 기법이며, 아래의 식과 같이 수식화가 가능하다 (벡터 x는 독립 변수이며, 벡터 y는 예측하고자하는 목적 변수임). a와 b는 선형모델의 매개변수(Parameter)와 편향(Bias)이며, epsilon은 오차를 나타낸다. 본 선형회귀모델의 도입 목적은 x라는 벡터값으로 부터 y라는 벡터값을 예측해내는 것이며, 위 그림과 같이 해석적으로 결과를 분석하면, 평균제곱오차를 최소화하는 a 벡터값을 추정하는 것이다. Stochastic Gradient Descent (확률적 경사 하강법) Likelihood 함수의 편미분값이 0이 되게하는 방정식의 solution을 찾기 힘든경우에는 수치적으로 최적화작업에 들어가야한다. 이를 위해 머신러닝 및 딥러닝 분야에서는 Cost/Loss Function이라는 개념을 도입해 목적함수를 최소화하는것을 목표로 삼는다. Gradient Descent란 미분가능한 함수에 대해 Optimal Solution을 구할 때, 미분계수를 반복적으로 계산하고 이를 바탕으로 최적화된 매개변수 Theta를 찾아가는 방법이다. Likelihood 함수와 같이 목적 함수가 동일형태의 함수의 합으로 분해할 수 있을 때는 모든 데이터값을 사용하는 것이 아니라, 랜덤하게 일부값(Mini-batch)만을 사용하는 Stochastic Gradient Descent를 쓴다. Maximum Likelihood Estimation (최대우도추정) Tensor와 AutoGrad 딥러닝 프레임워크를 대중화한 여러가지 요소들 중에 하나로 꼽히는것이 바로 AutoGrad 기능이다. requires_grad = True라는 설정을 텐서에 부여하면 자동 미분 기능이 활성화 되며, 대부분의 인공신경망 연산에서 기본적으로 사용되고 있다. 다음에 해당하는 수식에 근거하여 계산이 이루어지며, 자동 미분으로 구한 결과와 수동으로 구한 결과가 일치함을 확인할 수 있다. 텐서(Tensor)의 구조와 기능 텐서(Tensor)는 딥러닝 프레임 워크에 있어서, 가장 기본이 되는 데이터 구조이다. 기본적인 Python 문법 혹은 Numpy 라이브러리와 유사한 사용법을 지니며, Numpy의 ndarray로의 변환도 가능하다 (단, 변환이전에 GPU에서 CPU로 텐서를 이동해야함!). CPU와 GPU상에서 개별적 텐서의 생성이 가능하며, Data Type도 별도로 지정이 가능하다. (아래의 그림을 참조바랍니다.) 물론 CPU에서 텐서를 생성하고 추후 GPU로 전송하는것 역시 가능합니다. 앞서 소개한 내용중 GPU상에 위치한 텐서를 Numpy ndarray로 변환하기위해서는 CPU로 그 위치를 바꾸어 주어야한다고 설명하였습니다 (이 때, to 메서드를 사용함). 물론 CPU상에 위치한 텐서는 .numpy() 메서드로.. PyTorch 패키지 구성 PyTorch의 기본적인 패키지 구성은 다음과 같음. 01. 'torch' : 고차원 연산에 가장 기본이 되는 텐서와 같은 수학적 함수들이 내재되어 있음. 02. 'torch.nn' : 인공신경망을 설계하기 위해 필요한 레이어, 아키텍쳐 혹은 손실함수 등이 저장되어 있으며, 딥러닝에 관련된 개발을 진행할 시에 항상 호출되는 패키지임. 03. 'torch.autograd' : 미분가능 함수를 정의할 때 사용되는 기본 함수 및 자동미분을 위한 콘택스트 매니저(enable grad)가 포함되어 있음. 04. 'torch.optim' : 학습의 최적화를 위한 여러가지 방법들이 함수화 되어 있는 패키지임. 05. 'torch.onnx' : Open Neural Network Exchange (ONNX)형식으로 신.. 이전 1 2 3 다음