본문 바로가기

Deep Learning6

[DL] 하이퍼파라미터 튜닝 정리 파라미터 Parameter ex) weight(가중치), bias ... 파라미터는 사용자가 정할수 있는 값이 아닌 모델 내부에서 결정되는 변수를 말한다. 하이퍼파라미터 Hyperparameter learning rates, Momentum, Batch size ... 하이퍼 파라미터는 모델링할 때 사용자가 직접 넣어주는 값을 말한다. 따라서 흔히 얘기하는 "모델 파라미터를 수정한다"라는 얘기는 사실 "모델의 하이퍼파라미터를 수정하고 있다"로 고쳐져야 한다. 하이퍼파라미터 튜닝 1. Baby sitting 하나의 모델로 매일 성능을 지켜보면서, 학습 속도를 조금씩 바꾸는 방식이다. 매일 모델을 돌보면서 학습을 시키기 때문에 Baby sit이라는 이름을 가진다. 2. Grid serach 파라미터마다 탐색.. 2022. 5. 1.
[DL] Gradient Descent의 문제점과 여러가지 Optimzer SGD(stochastic gradient descent) 배치 크기가 1인 경사하강법이다. 즉, 전체 데이터가 아닌 랜덤하게 추출된 일부데이터를 사용해서 gradient를 계산하는 방법이다. 일반적인 gradient descent방식(GD)에서 배치는 전체 데이터를 의미하므로 이를 사용하는 것은 노이즈가 적거나 최소값을 얻는데 유용하지만 데이터셋이 커지면 문제가 발생한다. 이 문제는 SGD로 보완할 수 있다. 기존의 너무 느린 GD의 학습방법을 SGD를 통해서 개선했지만, SGD에도 문제가 존재한다. mini-batch를 통해서 학습시키는 경우 최적의 값을 찾아가는 경로는 다음 사진과 같이 뒤죽박죽이다. 따라서 지그재그로 움직이는 비효율적인 경로를 보완하기 위해 모멘텀(Momentum)을 추가한다. M.. 2022. 4. 17.
[DL] ANN 활성함수 (Activation function) 종류 신경망에서는 노드에 들어오는 값들에 대해 곧바로 다음 레이어로 전달하지 않고 활성화 함수를 통과시킨 후 전달한다. 활성화 함수(activation function)는 입력 신호의 총합을 출력 신호로 변환하는 함수로, 입력 받은 신호를 얼마나 출력할지 결정하고 네트워크에 층을 쌓아 비선형성을 표현할 수 있도록 해준다. 1. step function 함수의 형태는 0보다 작은경우 0, 0보다 큰경우 1이 되며, 미분했을 때 값이 0이 되므로, 인공신경망의 활성함수로 사용하기에는 부적합하다(가중치값들을 찾기 힘들다). 2. sigmoid 보라색부분이 f(x)에 해당한다. f(x)는 입력값 x에 해당하는 출력값이 0~1사이가 되는 특징이 있다. 미분했을 때는 초록색부분의형태가 되는데, sigmoid를 활성함수로.. 2022. 4. 17.
[DL] Back-propagation과 Chain Rule Back-propagation이란? Feed-Forward의 결과로 얻은 Loss function은 결국 w와 b의 함수로 이루어졌기 때문에 출력부분부터 시작해서 입력쪽으로(역방향으로) 순차적으로 loss function에 대한 편미분을 구하고, 얻은 편미분 값을 이용해서 w와 b의 값을 갱신시킨다. 모든 훈련데이터에 대해서 이 작업을 반복적으로 수행하게 되면, 결국에는 훈련데이터에 최적화된 w와 b값들을 얻을 수 있다. 즉, 역전파(Back-propagation)란 용어는 출력부터 반대방향으로 순차적으로 편미분을 수행해가면서 w와 b값들을 갱신시킨다는 의미이다. 이는 chain Rule을 이용해서 계산할 수 있다. 그렇다면 Chain Rule이란 무엇일까? chain rule은 합성함수에서 발생하는 미.. 2022. 4. 4.
[DL] Pytorch을 이용한 모델생성 1. 모델 생성을 위한 준비과정 Vectorization(벡터화): 입력, 가중치 값들을 벡터화해야 중복되는 연산을 막고 편하게 계산이 가능하다. 따라서 입력값이 여러개라면 기존에 벡터로 표현했던 입력벡터를 행렬로 표현할 수 있다. 예를들어, 입력값이 3개라면 사진과 같이 Input (3*2)행렬이 w (2*3)행렬과 곱해져서 L (3*3)행렬이 만들어지고 다시 w(3*3)행렬과 곱해져서 o(3*3)행렬이 된 후에 softmax함수와 cross entropy함수를 거치면 3개의 원소를 가진 벡터가 된다. 출력값인 loss는 이 3개의 원소의 평균값이 되고 loss를 0이 되도록하는 하는 것이 학습의 목표이다. torch.autograd : 자동미분을 해주는 클래스이다. *autograd 사용시 주의사항 .. 2022. 3. 28.
[DL] 인공신경망에 관련된 개념 정리 Words Scalar: 단순히 숫자 1개 ex) np.array(3.0) Vector: 숫자 여러개 ex) np.arange(4) Matrix: 2차원 숫자들 ex) np.arange(20).reshape(5, 4) Tensor: 3차원 이상 숫자들 ex) np.arange(24).reshape(2, 3, 4) 미분(Derivative)이란? 미분(Derivative): 입력값이 변할 때 어떤 함수 f(x)의 출력값이 얼만큼 변화하는지를 나타낸다. 변수가 여러개일때는 편미분을 사용한다. -> 입력값이 많으므로 우리가 임의로 하나를 골라서 변화량을 파악해야 한다. 기울기(Gradient): 모든 벡터요소들을 각각 편미분해서 하나의 벡터로 나타낸 것을 gradient라고 한다. Chain Rule이란? C.. 2022. 3. 20.