hyeonzzz's Tech Blog

[Andrew Ng] 딥러닝 1단계 : 2. 신경망과 로지스틱회귀 (1) 본문

Deep Learning/Basics

[Andrew Ng] 딥러닝 1단계 : 2. 신경망과 로지스틱회귀 (1)

hyeonzzz 2023. 9. 12. 13:54

1. 이진 분류

 이진 분류 (Binary Classification)

: 그렇다 / 아니다 2개로 분류하는 것

입력된 사진을 나타내는 feature vector x를 가지고 y가 0인지 1인지를 예측하는 것 (‘그렇다’ = 1, ‘아니다’= 0 )

 

  • 빨강, 초록, 파랑 픽셀을 한 열로 나열하면 벡터 x의 전체 차원은 64*64*3 = 12288이 된다
  • 특성 벡터 x를 가지고 y가 1인지 0인지 예측한다

*신경망에서 학습하는 방법은 순전파 (forward propagation)역전파 (back propagation)가 있다

 

표기법 설명

  • x : 훈련 샘플들
  • y : 출력될 레이블
  • m : 훈련샘플의 갯수 
  • 훈련 세트 : {(x^(1),y^(1)), (x^(2),y^(2)),..., (x^(m),y^(m))}
  • m_train : train 세트의 갯수. m_test : test 세트의 갯수
  • X : n_x * m 행렬

  • X.shape -> 행렬의 차원을 알 수 있다
  • Y : 1 * m 행렬

 

2. 로지스틱 회귀

 로지스틱 회귀 (Logistic Regression)

: 주어진 입력 변수와 해당 입력 변수들에 따라 이진 분류 문제를 수행하는 데 사용되는 선형 모델

입력 변수의 선형 결합을 로지스틱 함수에 통과시켜서 각 클래스에 속할 확률을 예측한다.

 

 변수 설명

X : 입력 특성

y : 주어진 입력특성 X에 해당하는 실제 값

ŷ: 입력 특성 x가 주어졌을 때 y가 1일 확률 ( 0   ŷ  1 )

(사진이 고양이 사진일 확률)

 

 선형 회귀

선형 회귀 식

원래는 위의 식을 통해 계산하지만, 0  ŷ 이어야 한다

따라서 sigmoid 함수를 적용해 다음 식으로 변형한다

 

 Sigmoid 함수 (= 로지스틱 함수)

 -> z가 무한대일때 1에 가까워진다
 -> z가 음수일수록 0에 가까워진다

 

로지스틱 회귀를 구현할 때 y가 1일 확률을 잘 예측하도록 파라미터 w와 b를 학습해야 한다

 

3. 로지스틱 회귀의 비용함수

위첨자 (i)는 i번째 훈련 샘플에 관한 데이터임을 뜻한다

매개변수들 w와 b를 학습하려면 비용함수를 정의해야 한다

 

 손실 함수 (Loss Function)

: 훈련 샘플 하나에 대한 y(실제값)과 ŷ(예측값)의 오차를 계산

원래는 이 식을 사용하지만 로지스틱 회귀에서는 지역 최솟값에 빠질 수 있기 때문에 사용하지 않는다

1) y = 1 인 경우 손실값을 줄이려면 -> L(​ŷ​ŷ,y)= lo 가 작아지도록 ŷ​ŷŷŷ는 1에 수렴하도록 한다

2) y = 0 인 경우 손실값을 줄이려면 -> L​ŷ,y) = log(1−ŷ​ŷ) 가 작아지도록 ​ŷŷ​ŷ 는 0에 수렴하도록 한다

 

 비용 함수 (Cost Function)

: 훈련 샘플 전체에 대한 오차를 계산

 

모든 입력에 대해 계산한 손실 함수의 평균 값

전체 데이터셋의 예측이 얼마나 잘 평가되었는지 보여준다

 

* 로지스틱 회귀 모델을 학습하는 것 = cost function J를 최소화하는 매개변수 w, b를 찾는 것

* 로지스틱 회귀는 작은 신경망과 같다

 

 

4. 경사하강법

 경사하강법 (Gradient Descent)

: cost function J를 최소화하는 파라미터 w와 b를 찾아내는 방법

함수의 기울기(경사)를 사용하여 함수의 최솟값을 찾아가는 최적화 알고리즘

 

주어진 함수의 기울기(경사)가 현재 위치에서 가장 크게 감소하는 방향으로 이동하여 함수의 최솟값을 찾는다. 이 과정을 반복하여 최솟값에 점점 더 가까워진다.

cost function J

  • J(w,b)는 w, b 위의 곡면
  • 곡면의 높이 = J(w,b)의 값
  • cost Function J는 볼록한 형태여야 한다 -> 지역 최적값이 1개이다

 

 경사하강법을 이용해 J의 최솟값에 해당하는 w와 b를 찾는 방법

  1. w, b값을 한 값으로 초기화한다 (보통 0으로 설정)
  2. 초기점에서 가장 가파른 내리막 방향으로 한 단계 내려간다
  3. 반복하면 최적값에 도달한다

 

Gradient Descent

:= 는 값을 갱신한다는 뜻

  • α : learning rate (경사하강법을 반복할 때 한 단계의 크기를 결정한다)
  • dJ(w)/dw : 도함수 (dw로 표기하기도 한다)

 

dw >0 이면, 파라미터 w 는 기존의 w 값 보다 작은 방향으로 업데이트되고,

dw <0 이면, 파라미터 w 는 기본의 w 값 보다 큰 방향으로 업데이트된다

 -> 왼쪽에서 초기화하던 오른쪽에서 초기화하던 전역 최소값에 도달하게 된다!

 

* 변수가 2개 이상이면 편미분 기호를 이용 (소문자 d와 의미 거의 동일)

 

☆ 세션 진행 후 추가 내용

Q. 왜 손실 함수 (loss function) 에 MSE대신 더 복잡한 함수를 사용하는가?

보통 손실 함수는

식을 사용하지만 로지스틱 회귀에서 이 식을 사용하면 지역 최솟값에 빠질 수 있기 때문에 사용하지 않는다

볼록한 형태가 아니라 울퉁불퉁한 형태가 나와 최솟값을 구할 수 없게 된다

 

※참고자료

https://copycode.tistory.com/162

 

머신러닝(Machin Learning) 6장 - Logistic Regression 의 cost function -

머신러닝(Machin Learning) 6장- Logistic Regression 의 cost function - Cost function은 예측을 하는 값과 실제 결과 값의 차이를 나타내는 함수이다. 예측을 하는 데이터를 바꾸어가면서 실제 결과 값과 차이를

copycode.tistory.com