공부공부

[딥러닝] 혼동 행렬, 시그모이드 함수, 렐루 함수 등

꿈이많은띵동이 2024. 11. 26. 11:01

하이퍼파라미터(초매개변수): 모델의 성능에 영향을 주는 매개변수로 학습 과정에서 직접 조정해야 하는 설정 값

매개변수: 가중치와 편향과 같은 학습을 통해 바뀌어져가는 변수로 학습을 통해 자동으로 최적화되는 값

 

훈련용 데이터로 훈련이 된 모델은 검증용 데이터를 사용하여 정확도를 검증하며 하이퍼파라미터를 튜닝함

또한 모델의 매개변수는 검증용 데이터로 정확도가 검증되는 과정에서 점차 검증용 데이터에 맞추어져 가기 시작함

(= 모델이 검증 데이터에 과적합(overfitting)될 가능성을 암시)

 

검증이 끝났다면 테스트 데이터를 가지고 모델의 진짜 성능을 평가함

(-> 이미 하이퍼파라미터를 튜닝해가면서 모델이 검증용 데이터에 익숙해져가기 때문에 과적합 가능성이 있어서

아예 모델이 접해본 적 없는 데이터인 테스트 데이터로 성능을 평가하는게 적합)

 

검증 데이터와 테스트 데이터를 나눌 만큼 데이터가 충분하지 않는다면 k-폴드 교차 검증 방법도 있음


혼동 행렬(Confusion Matrix)

 

 TP(True Positive), TN(True Negative), FP(False Postivie), FN(False Negative)에서

앞에 T는 True(정답) F는 False(오답)이고

P는 Positive(양성) N은 Negative(음성)을 의미함

 

정밀도(Precision)

양성이라고 대답한 전체 케이스에 대한 TP의 비율

내가 양성이라고 한 예측이 얼마나 정확했는가?

 

재현율(Recall)

실제값이 양성인 데이터의 전체 개수에 대해서 TP의 비율

실제 양성을 얼마나 놓치지 않고 찾아냈는가?

 

F1 Score

정밀도와 재현율의 조화 평균

정밀도와 재현율이 모두 중요한 문제에서 종합적으로 평가할 수 있는 값

 

0 < F1 Score < 1

두 값중 낮은 값에 더 민감하게 작용함

정밀도와 재현율 간의 트레이드오프 존재를 해결할 수 있음

(불균형하면 좋은 모델이 아닐 수 있음)


활성화 함수

 

활성화 함수의 특징은 비선형 함수여야함

f(x) = Wx라 가정할 때 은닉층을 하나 더 추가하면 f(f(x)) = WWx 가 됨

WW = k라고 가정하면 f(f(x)) = kx 이기 때문에 동일한 표현식이 돼서 여러 번 추가해도 차이를 줄 수 없음

 

은닉층에서 시그모이드 함수 지양하는 이유

인공 신경망은 입력에 대해서 순전파(forward propagation) 연산을 하고

순전파 연산을 통해 나온 예측값과 실제값의 오차를 손실 함수(loss function)을 통해 계산하고

손실(loss)을 미분을 통해서 기울기(gradient)를 구하고

이를 통해 역전파(back propagation) 수행함

(역전파 이유는 학습 과정에서 매개변수(가중치와 편향)를 업데이트하기 위해

-> 손실을 줄이기 위해 가중치와 편향을 얼마나, 어느 방향으로 조정해야 하는지 계산

-> 손실을 줄이는 방향인 경사하강법의 방향을 알려줌)

 

순전파로 학습한 결과를 보고, 역전파로 기울기를 조정하며 더 나은 가중치와 편향을 찾아가는 것

 

시그모이드 함수의 수식
시그모이드 함수의 그래프

 

시그모이드 함수는 보통 이진 분류의 확률을 출력하거나 뉴런의 활성화 함수로 이용됨

(두 종류는 어떤 것이 확률이 더 높은 것을 선택한다든지 or 입력값을 0과 1로 정규화해 다음 층으로 전달한다든지)

 

주황색 구간이 기울기가 거의 0으로 완만해지는 구간인데

역전파 과정에서 0에 가까운 기울기를 곱하게 되면 기울기가 전달이 잘 안됨

 

시그모이드 함수를 사용하는 은닉층의 개수가 많아진다면 기울기를 곱할수록 0에 가까워지니까

앞단의 기울기는 거의 전파받기 어려움

그럼 W가 업데이트 되지 않아 학습이 안됨

 

또 평균이 0.5이라 원점 중심이 아니기 때문에 출력의 가중치 합이 입력의 가중치 합보다 커질 가능성이 있음(= 편향이동)

(그래서 보통은 시그모이드 함수를 쓰지 말라고 얘기하는 데도 있대요

시그모이드 함수를 은닉층으로 사용하는 것을 지양하는 이유를 알겠지용)

 

하이퍼볼릭탄젠트 함수(Hyperbolic tangent function)도 비슷한 이유로 지양됨

Htf는 입력값을 -1과 1 사이의 값으로 변환함

시그모이드 함수보다는 기울기 소실이 덜해서 은닉층으로 사용되는 경우가 있긴 함


렐루 함수(ReLU)

즉, f(x) = max(0,x)이라 특정 양수값에 수렴하지 않으므로 깊은 신경망에서 잘 작동함

연산이 필요하지 않은 단순 임계값이기 때문에 연산 속도도 빠름

 

but 입력값이 음수가 되면 기울기가 0이 됨

(이런 뉴런은 다시 회생하기 어려워 죽은 렐루라고도 불림)

 

죽은 렐루 인공호흡해서 살려야지!!!!!!!!!!!!해서 나온게

리키 렐루(Leaky ReLU)

 

입력값이 음수일 경우 0이 아니라 0.001과 같이 매우 작은 수를 반환함

f(x) = max(ax,x)

 

소프트 맥스 함수(Softmax function)

 

은닉층에서는 렐루나 리키렐루처럼 변형 렐루가 쓰이는 것이 일반적이지만

시그모이드 함수나 소프트 맥스 함수도 사용됨

특히 분류 문제에서는 로지스틱 회귀나 소프트맥스 회귀를 출력층에 적용함

(시그모이드 함수는 이진 분류에서 사용되지만

소프트 맥스 함수는 상호 배타적인 세 가지 이상의 선택지 중 하나를 고르는 다중 클래스 분류에서 사용됨)


오늘 위키독스 딥러닝 입문 공부해봤습니다

얼추 아는 단어들과 내용들이지만 누가 물어봤을 때 꿀먹은 벙어리처럼 암 말도 할 수가 없어서

다시 공부 시작했네요

 

나 한 달 전까진 전자공학 필터 공부하다

생체신호 공부하다

지금 딥러닝 공부하네

내 인생 어디로 흘러가는거지?