머신러닝

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

sa_woll 2024. 3. 11. 21:45

https://boostcourse.org/ai215/lectures/86249

 

https://www.boostcourse.org/ai215/lectures/86249

 

www.boostcourse.org

 

이진 분류

- 이번 수업을 통해 알아볼 것: 1. m개의 데이터로 이루어진 데이터셋에서 보통, for문을 사용해 m개의 데이터를 일일이 보는 것은 하지 않음. 어떻게 하는지 알아볼것 2. 신경망 학습이 왜 forward propagation과 backward propagation으로 이루어져 있는지 알아볼 것. 예시는 Logistic Regression.

- 로지스틱 회귀는 이진 분류를 위한 알고리즘이다. (지난학기 전공 복습: linear regression모델이 binary classification을 할 수 있도록 sigmoid 함수를 플러그인한 것이 logistic regression이다.)

 

- 고양이 사진이라고 판단하면 1, 그렇지 않으며 0을 출력하는 이진분류가 있다고 하자. 

- 컴퓨터에 사진이 저장되는 방법: 사진의 빨강, 초록, 파랑색 채널들과 일치하는 세 개의 행렬을 따로따로 저장한다. 각 행렬에 저장되는 값은 RGB의 픽셀 강도 값이다. 이 픽셀 강도 값들을 feature vector로 바꾸려면, 모든 픽셀값을 입력될 특성 벡터 x의 한 열로 나열한다. 주어진 한 사진에 대한 feature vector x는 모든 픽셀값의 나열로 정의된다. 만약 사진이 64*64라면 특성벡터의 차원은 64*64*3이다. 차원은 n_x로 표현.

 

Notation

 

로지스틱 회귀

- 주어진 x에 대해 y^=p(y=1|x)(x가 1일 확률. 이 이미지가 고양이일 확률)를 출력하는 함수. 

- 이때 y^는 w의전치*x+b의 형태로 표현, 그러나 이는 선형. y^는 0과1이어야 한다. 그래서 시그모이드 함수를 이용한다.

- z= w의전치*x+b 라고 하고, z를 시그모이드 함수에 넣은 것을 새로운 y^로 삼는다. z가 실수일 때 z의 시그모이드는 1/1+e^(-z)이다. 그래프의 양쪽은 0과 1 로 수렴한다.

-> y가 1일 확률을 잘 예측하도록 파라미터 w와 b를 잘 학습해야 한다.

- 빨간색 notation은 수업에서는 쓰지 않는다.(w와 b를 분리시켜 학습하기 위한 방법임)

 

로지스틱 회귀의 비용함수

- parameter w와 b를 학습하려면 비용함수를 정의해야 한다.(cost function)

- 목표는 우리의 예측값 y^이 실제값 y에 가까워지도록 하는 것.

- Loss(error) function(오차함수): [보통] y와 y^의 차의 제곱 * 1/2  ->  이 방식은 로지스틱 회귀에선 잘 안 쓴다. 로지스틱회귀에서 이걸 쓰면 여러 개의 극소값이 생겨(=볼convex하지 않아서) local minimum에 빠질 수 있다. 경사 하강법을 적용할 수 없게 된다.

-> 그래서 아래의 손실 함수를 쓴다.

L(y^,y)=(ylogy^+(1y)log(1y^)) 

- 손실 함수는 훈련 샘플 하나하나에 대해 정의된다.

- Cost function(비용함수): 훈련 세트 전체에 대해 얼마나 잘 추측되었는지 측정해 주는 함수 

- 손실 함수는 하나하나의 입력에 대해 적용되며, 비용 함수는 모든 입력에 대한 오차를 계산한다.

- 로지스틱 회귀 모델을 학습하는 것이란 손실함수 J를 최소화해주는 매개변수 w와 b를 찾는 것이다.

 J(w,b)=m1Σi=1i=m(y(i)logy^(i)+(1y(i))log(1y^(i)))

 

- 단일 훈련 샘플이 얼마나 잘 작동하는지 측정하는 손실 함수 / 매개변수 w, b가 훈련 세트 전체를 얼마나 잘 예측하는지 측정하는 비용 함수.

 

 

경사하강법 Gradient Descent

- 매개변수 w와 b를 훈련 세트에 학습시키는 방법을 알아보자.

- 함수 j를 minimize하자. j가 볼록하면 단 하나의 minimum을 가진다.

- 초기점에서 시작해 내리막 방향으로 한 단계씩 내려간다. 이때 가장 빨리 내려올 수 있는 방향을 택한다.

 

 

- 계속해서 다음 갱신을 반복한다. 수렴할 때까지.w의 값을 갱신한다. :=는 갱신한다는 뜻이다.

- a알파는 learning rate로, 한 단계의 크기를 결정한다.

- a알파 옆에 있는 것은 미분계수로, 갱신할 때 매개변수 w에 줄 변화(내려가는 방향)에 해당한다. 이를 편의상 dw로 칭한다. w:=w-adw (w= w-학습률*미분계수)

- 이제 여기서 w 외의 파라미터인 b도 추가한다.

- 함수 j가 두 개 이상의 변수를 가질 때 미분계수 기호를 알파벳 d 대신 더 흘려 쓴 편미분기호로 쓴다.

 

미분, 더 많은 미분 예제

- 미적분에 대해 설명하는 배경지식 회차.

- 도함수는 함수f(a)에 대하여, a가 조금 변화했을 때 f(a)가 얼마만큼 변하는지 측정하는 것이다.

- 기울기가 3인 직선에 대하여, 0.001만큼 a를 오른쪽으로 밀면(증가시키면) 그때의 함숫값은 0.003만큼 증가한다. '직각삼각형'을 직선의 어디에 그리든 그 밑변과 높이의 비는 1:3이라는 것이다.