본문 바로가기

딥러닝 & 머신러닝/딥러닝 지식

(23)
최적화 알고리즘(옵티마이저, Optimizer) 설명 # 최적화 알고리즘(옵티마이저)들인 SGD, RMSProp, AdaGrad, Adam에 대해 설명한다면? *최적화 알고리즘(옵티마이저): GD를 기본으로 하여 loss function이 최소가 되는 지점, 즉 최적의 가중치를 찾는 방법 - SGD (Stochastic Gradient Descent) 그냥 Gradient Descent(GD)는 loss function을 계산할 때 전체 Training 데이터셋을 사용한다. 즉, full batch를 사용하게 되는데, 이때 GD를 통해 loss functuon의 최솟값을 정확히 찾아갈지는 몰라도 계산량이 너무 많아지기 때문에 최솟값을 찾아가는 속도가 너무 느리다. "GD: 모든 데이터를 검토한 뒤 방향을 찾자" 그래서 전체 데이터를 전부 보고 한 발짝씩 걷..
역전파(Backpropagation) 설명 # 역전파(Backpropagation)에 대해서 쉽게 설명한다면? Gradient Descent를 이용해 가중치 갱신을 해야하고, GD를 하기 위해선 loss function의 gradient가 필요한데, 그 loss function의 gradient를 Backpropagation으로 전달받는다. "즉, 가중치 갱신을 위해서 필요한 loss function의 gradient를 chain rule을 이용해 앞으로 전달해주는 알고리즘이 Backpropagation!" "나의 목표 target 값과 실제 모델이 예측한 output값이 얼마나 차이나는지 구한 후, 오차값을 다시 뒤로 전파해가며 가중치들을 갱신하는 알고리즘" "Backpropagation이란 결과에서 발생한 오차를 역전파로 전달하여 초기 가중치..
Gradient Descent와 국소값(Local minimum) 문제에 대한 설명 # Gradient Descent(GD)에 대해서 쉽게 설명한다면? 왜 꼭 Gradient를 써야할까? NN(Neural Network, 신경망)을 포함한 대부분의 머신러닝 문제는 학습 단계에서 최적의 parameter(가중치, bias)를 찾아낸다. 여기서 최적의 parameter란 'loss function이 최솟값이 될 때의' parameter 값. loss function이 일반적인 2차 함수이거나 별로 복잡하지 않은 함수라면, 함수가 최소인 지점에서 gradient(2차원 평면의 함수에선 접선의 기울기)가 0이라는 사실을 이용하여 최적의 parameter 값을 정확히, 단번에 찾을 수 있다. 이 같은 최적화 방법을 Least square 방식이라 하고, 단순, 다중, 다항 선형 회귀 모델에서 쓸..
배치 정규화(Batch Normalization)의 설명과 탐구 # 배치 정규화(Batch Normalization)의 기능과 그 효과는? 우선 공변량 시프트(covariate shift) 현상이라는 것을 한 번 살펴보자. 아래 그림을 보자. 층 1에 훈련셋이 입력되면 층 2는 층 1의 가중치에 따라 변형된 분포의 훈련셋을 입력받는다. 그런데 학습 과정에서 가중치 값이 계속 갱신되므로, 매 학습마다 바뀐 가중치를 가진 층 1을 통과한 훈련셋인 ~x1, 즉 위에서 설명한 활성화 값은 계속 그 값이 바뀐다. 이처럼 학습 도중에 샘플 분포가 바뀌는 현상을 공변량 시프트라고 한다. 이 문제는 층이 깊어질수록 심각해지고 신경망이 잘 학습되지 않는 이유 중 하나다. 한마디로, 학습 중간에 가중치가 계속 업데이트 되면서 학습 데이터의 분포가 수시로 바뀌는 현상이다. 우리가 가중치..
훈련, 검증, 테스트 (Training, Validation, Test) 데이터셋에 관한 설명과 질문 # Training 세트와 Test 세트를 분리하는 이유는? Validation 세트가 따로 있는 이유는? Test 세트가 오염되었다는 뜻은? 우선 Training 세트를 이용해 모델을 훈련시켜 최적의 parameter(즉 bias와 가중치)를 찾아낸다. 한편 모델을 개발할 때 항상 모델의 설정, 즉 하이퍼파라미터를 바꿔가는 과정이 필수적이다. 이때 Validation 세트를 이용해서 훈련된 모델의 성능을 평가하고, 하이퍼파라미터를 바꿔서 또 모델 성능을 평가하는 과정을 반복하면서 최적의 모델을 찾는다. - Validation 세트가 따로 있는 이유 : Validation 세트로 모델의 성능을 평가하는 과정을 반복하며 모델에게 맞는 최적의 하이퍼파라미터를 찾아주기 위해서 - Training 세트와 Tes..
오버피팅일 경우 대처 방법? Dropout, Regularization이란? # 오버피팅일 경우 어떻게 대처해야 할까요? Dropout의 효과는? Regularization이란? - 더 다양하고 많은 훈련 데이터를 모은다. 그러면 자연스럽게 많은 데이터의 feature들을 볼 수 있다. 한 종류의 데이터를 다양하게 불린다는 측면에서 Data Augmentation도 비슷한 방법. - 모델의 크기를 축소한다. 즉 모델에 있는 학습 parameter(즉, 가중치)의 수를 줄이는 것. 너무 많은 parameter가 있으면 훈련 데이터에 대해 너무 잘 학습되어서 오버피팅이 발생하므로. 이때 parameter 수는 layer의 수와 각 layer의 노드 수에 의해 결정됨. - Dropout을 추가한다. Dropout을 적용하면 훈련하는 동안 무작위로 층의 일부 출력값을 제외시킨다(0으로 ..
가중치 초기화(Weight Initialization) 설명 # Weight Initialization 방법에 대해 말해주세요. 그리고 무엇을 많이 사용하나요? * 가중치의 초기값을 어떻게 설정하느냐에 따라 신경망의 학습이 잘 될수도, 안될수도 있다. i) 가중치를 0으로, 또는 균일한 값으로 초기화하는 경우: 이러면 안된다! - 모든 hidden layer들이 같은, 또는 대칭적인 가중치 값을 갖는다면 모든 노드의 활성화 함수에 같은, 또는 대칭적인 입력값이 들어간다는 뜻이고, 그러면 나중 역전파 때 모든 가중치의 값이 똑같이 갱신되기 때문에 가중치를 여러 개 둔 의미가 없어짐. (= 모델의 표현력 제한 일어남) 즉, 한 layer의 노드들이 모두 같은 일을 하기 때문에 노드의 낭비가 발생함. (* 가중치 갱신은 입력값이 모든 노드를 거치고 나온 결과값과 실제값..
딥러닝에서의 학습이란? 신경망의 목표는? # 딥러닝에서의 학습이란? 위 그림에서, 각 노드에 들어온 1, x1, x2, ...의 값에 대해 각 노드에 할당된 bias와 weight 매개변수들을 선형 결합한 값을 활성화 함수 f1, f2, ...에 넣어 나온 값 z1, z2, ...를 다시 다음 노드에 전달해서 같은 과정을 반복한다. 최종 output 값, 즉 예측한 값이 나오게 되면 실제값과 얼마나 차이가 나는지를 loss function을 이용해 계산하고(그렇다고 해서 "loss function = 실제값-예측값"은 아니다. 여러 loss function이 있다), 그 '틀린 정도'의 gradient(즉 loss function의 gradient)를 다시 앞쪽 노드로 backpropagation을 활용해 그대로 보존하면서 전달한다. 이 전달된..