ROC Curve (Receiver Operating Characteristic) & AUC Curve (Area Under the Curve) ROC Curve 는 이진분류에서 클래스별 분포가 다를 때, Accuracy의 단점을 보완하기 위해 사용된다. 다양한 임계값에서 FPR(1-Specificity) 에 대한 TPR(Recall) 값 을 플롯하고 noise를 제거하여 signal을 얻는 커브이다. AUC Curve 는 ROC Curve의 밑부분을 뜻하며 이 AUC 커브를 이용하여 퍼포먼스를 확인한다. 결과만 말하자면, AUC Curve가 높이 향할 수록 Positive 와 Negative 를 잘 구분할 수 있는 모델인 것이다. 구현 sklearn 으로 간단하게 구현 가능하다. from sklearn..
Confusion Matrix (오차행렬) Classification 모델의 퍼포먼스를 설명할 수 있는 테이블이다. 간단한 설명을 해보자. Actual\Predict POSITIVE NEGATIVE POSITIVE True Positive False Positive NEGATIVE False Negative True Negative 행은 Actual Values로 실제 값을 말한다. 열은 Predictive Values로 예측값을 말한다. True Positive (TP): 모델의 예측도 YES, 실제값도 YES일 때 True Negative (TN) : 모델의 예측이 NO, 실제값도 NO일 때 False Positive (FP) : 모델의 예측이 YES, 하지만 실제값은 NO일 때 (Type 1 에러라..
Coursera - Batch Normalization 하이퍼파라미터들을 살펴보며 최적화를 어떻게 시킬 수 있는지를 확인했다. 하이퍼파라미터를 잘 선택할 수 있는 또 다른 테크닉인 Batch Normalization 을 살펴보자. 모든 신경망에 적용되진 않지만 적용이 가능하다면 하이퍼파라미터 탐색이 훨씬 쉽고 빨라진다. Batch Normalization 하이퍼파라미터 탐색을 쉽게 만들어줄 뿐만아니라 신경망과 하이퍼파라미터의 상관관계를 줄여주어 더 많은 하이퍼파라미터가 잘 작동하게 만들어준다. 또한 아주 깊은 심층 신경망이라도 아주 쉽게 학습하 수 있도록 해준다. 와오... 그래서 ML 에서 아주 중요한가보다. 어떻게 작용할까 로지스틱 회귀에서는 인풋값 x를 normalization 하여 w,b에 영향을..
Coursera - Hyperparameter Tuning 이제까지 신경망을 학습시킬 때 사용하는 여러 하이퍼파라미터들(레이어, 히든유닛, 학습률 알파, 베타, 미니배치사이즈, 모멘텀파라미터 등등)이 있다. 그럼 이 많은 하이퍼파라미터들 중에 좋은 하이퍼파라미터를 어떻게 찾을 수 있을까? 체계적으로 하이퍼 파라미터를 튜닝할 수 있는 법을 알아보자. 대충 앤드류 응이 생각하는 하이퍼 파라미터 중요도 순위 α (학습률) 모멘텀 β (0.9) 미니배치 사이즈 히든유닛 레이어 학습률 감쇠 머신러닝에서 하이퍼파라미터들을 정하는 법들. 수많은 하이퍼파라미터중에 어떤 하이퍼파라미터가 문제해결에 더 중요한지를 모르기 때문에 무작위로 정해야한다. 은닉유닛수를 정한다고 치면 50부터 100까지의 값들을 수직선상에 세워두고..
Learning Decay (학습률 감쇠) 학습 알고리즘의 속도를 높이는 한가지 방법은 시간에 따라 학습률을 천천히 하는 것이다. 이를 Learning Decay (학습률 감쇠) 라고 부른다. 왜 학습률이 감쇠해야함? 배치를 잘게 자른 미니배치 경사하강법을 사용한다고 생각해보자. 고정된 α (learning_rate) 를 사용할 경우 최솟값에 정확하게 수렴하지 않고 주변을 돌아다니게 된다. α를 줄임으로써 학습 초기 단계에서는 훨씬 큰 스텝으로 진행하다가 학습이 수렴할수록 작은 스텝으로 진행하게 할 수 있다. 이 경우 단계마다 진행 정도가 작아지면서 주변을 돌아다니는 대신에 최솟값 주변에서 밀집하여 진동할 것이다. 구현 1 epoch 는 배치 한번을 통과하는 단위다. α0 는 초기학습률이다. Learni..
Adam (Adaptive Moment Estimation) Momentum 과 RMSProp 을 합친 알고리즘인 Adam 어떻게 작동하는지? # 지수 가중 평균법 : Vt = β*Vt-1 + (1-β)*Θt # Vdw = 0, Sdw = 0, Vdb = 0, Sdb = 0 로 초기화 # 모멘텀을 구현해준다. (RMSProp과 구분하기위해 β1으로 표기) Vdw = β1*Sdw + (1-β1)*dw Vdb = β1*Sdb + (1-β1)*db # RMSProp을 구현해준다. (모멘텀과 구분하기위해 β2으로 표기) Sdw = β2*Sdw + (1-β2)*dw² Sdb = β2*Sdb + (1-β2)*db² # 각각 편향보정을 해준다. V^corrected dw = Vdw / (1-β^t) V^correct..
RMSProp(Root Mean Square Prop) 모멘텀을 이용해서 경사하강법을 빠르게 할 수 있었다. 그리고 경사하강법을 빠르게 할 수 있는 알고리즘이 또 있다. 바로 RMSProp이다. 이것은 도함수의 제곱을 지수가중평균하는 것이다. ✋ 잠깐 여기서 다시 기억해보자. 경사하강법에서 빨리 최솟값에 도달하려면 진동하고있는 수직의 학습률은 느리게 최솟값을 향해 나아가야하는 수평방향의 학습률은 빠르게 해야한다. 어떻게 작동하는지? # 지수 가중 평균법 : Vt = β*Vt-1 + (1-β)*Θt Sdw = β*Sdw + (1-β)*dw² Sdb = β*Sdb + (1-β)*db²그리고 가중치를 이렇게 업데이트해준다. α = learning_rate w = w - α * dw/√Sdw b = b - α ..
Gradient Descent with Momentum (모멘텀 알고리즘 혹은 모멘텀이 있는 경사하강법) 자, 지수가중평균과 편향보정을 알았으니 일반적인 경사하강법을 빠르게 동작하게할 수 있는 모멘텀 알고리즘을 배우자. 이것은 경사에 대해서 지수가중평균을 계산하고 그 값으로 가중치를 업데이트하는 것이다. 그게 뭔데? 뭔지 알아보기 위해서 일반적인 경사하강법과 비교해보자. 일반적인 경사하강법 혹은 미니배치경사하강법으로 비용함수를 최적화한다고 생각해보자. 비용함수의 등고선이 있으면 어떠한 최솟값을 향해 나아갈 것이다. 그 모양은 다음과 같다. 학습률이 많은 단계를 거치게되면 최솟값으로 나아가면서 천천히 진동하는데, 이것은 다음과 같은 단점을 만든다. 속도를 느리게 만들고 더 큰 학습률을 사용하는 것을 막는다..
Coursera Optimization Algorithm 잘 작동되는 모델을 찾으려고 훈련을 반복해야하는 숙명에 놓여있는 머신러닝. 훈련의 반복이니까 모델을 빠르게 학습시키는 것도 중요하다. 엄청나게 많은 큰 데이터를 훈련하는 것은 엄청 느릴 것인데 그때문에 최적화 알고리즘을 사용하여 효율성을 좋게만들어야한다. 지난 시간에 그 중 하나인 미니배치경사하강법을 알아보다가 더 효율적인 알고리즘을 배우려고 했었는데 그에 앞서서 다음을 알아야한다. Exponentilally weighted average (지수가중평균) Bias Correction (편향 보정) 이 포스트에서는 편향 보정에 대해 알아보자. Bias Correction(편향보정) 앞에서 지수가중평균으로 평균을 효율적으로 계산하는 방법을 알아봤는데 ..
Coursera Optimization Algorithm 잘 작동되는 모델을 찾으려고 훈련을 반복해야하는 숙명에 놓여있는 머신러닝. 훈련의 반복이니까 모델을 빠르게 학습시키는 것도 중요하다. 엄청나게 많은 큰 데이터를 훈련하는 것은 엄청 느릴 것인데 그때문에 최적화 알고리즘을 사용하여 효율성을 좋게만들어야한다. 지난 시간에 그 중 하나인 미니배치경사하강법을 알았는데 그것보다 더 효율적인 알고리즘을 배우겠다.. 하지만 일단, 그에 앞서서 다음을 알아야한다. Exponentilally weighted average (지수가중평균) Bias Correction (편향 보정) 이번 포스트에서는 지수가중평균에 대해서 알아보자. Exponentilally weighted average(지수가중평균) 매개변수를 바꿈..