Technological Deep Dive

How to Get into the Tech

Course Review/Deep Learning Specialization

[Andrew Ng] Neural Networks & Deep Learning | Week 2 (part 1)

mju-bilab 2024. 11. 24. 18:12

 

*This review content is based on course "Deep Learning Specilazation" provided by prof. Andrew Ng


Neural Network Basics

Binary classification (이진 분류)

이진 분류는 규칙에 따라 집합의 요소를 두 그룹 중 하나로 분류하는 작업
Binary classification is defined as the process of assigning an individual to one of two categories based on a series of attributes - source: ScienceDirect.com

Binary Classification Example: 고양이 분류 문제

 

특정 사진을 입력하였을 때, 고양이인지 아닌지를 판단하는 프로그램을 만든다고 생각해봅시다. 컴퓨터는 디지털 언어로 의사소통을 하기 때문에, 다음과 같이 0과 1로 나타낼(labeling) 수 있습니다. 이러한 상황처럼, 결과값이 2개로 정확하게 나뉘는 것을 '이진 분류'라고 합니다. 

  • 입력된 사진이 고양이가 맞으면, "1"
  • 입력된 사진이 고양이가 아니면, "0"

이를 위해, 컴퓨터는 입력된 이미지 데이터를 픽셀(pixel)별로 처리 가능한 RGB 형태로 변환하여 인식합니다. 예를 들어, 입력된 고양이 이미지가 \(64px \times 64px\)이라면, 동일한 크기를 갖는 Red, Green, Blue 3개로 분리된 행렬을 사용합니다. 각 픽셀에 적혀있는 숫자는 채도를 의미하며, Red, Green, Blue의 채도가 어떻게 합쳐지느냐에 따라 모든 색은 표현 가능합니다. 이렇게  Red, Green, Blue의 값들을 하나의 feature vector \(x\)에 나열해보면, \(64 \times 64 \times 3\)의 차원(dimension)으로 나타낼 수 있습니다. 

Logistic regression (로지스틱 회귀)

Logistic regression is a supervised machine learning algorithm used for classification tasks where the goal is to predict the probability that an instance belongs to a given class or not - source: AIFOLKS.org

 

로지스틱 회귀(Logistic Regression)를 본격적으로 설명하기에 앞서, 사용되는 표기법(Notation)들을 정리하면 다음과 같습니다. 

로지스틱 회귀를 설명하기 위한 Notation

  • \((x,y) \quad x\in \mathbb{R}^{nx}, y\in \left\{ 0,1\right\}\): 한 개의 sample (example)을 의미
  • \(nx\): the size of the input vector
  • \(ny\): the size of the ouput vector
  • \(x^{(1)}\): the first input vector
  • \(y ^{(1)}\): the first output vector
  • m training example: \( \left\{ \left ( x^{(1)},y^{(1)} \right ), \left ( x^{(2)},y^{(2)} \right ),\cdots ,\left ( x^{(m)},y^{(m)} \right )\right\} \)
  • Training Set이나 Test Set을 구분하기 위해서, \(m_{train}, m_{test}\)로 나타냄
  • 모든 입력 값을 총체적으로 나타내기 위한 행렬은 대문자 X로 표기 \(\left ( X\in \mathbb{R}^{nx\times m} \right )\)

$$X=\begin{bmatrix}
 |& | &  & | \\
 x^{(1)}& x^{(2)} & \cdots  & x^{(m)} \\
 |& | &  & | \\
\end{bmatrix}$$

  • 출력 값 또한 행렬로 나타낼 수 있으며 대문자 Y로 표기 \(\left ( Y\in \mathbb{R}^{1\times m} \right )\)

$$Y=\left [ y^{(1)} \quad y^{(2)} \quad \cdots \quad  y^{(m)}\right ]$$

로지스틱 회귀는 결국 다음과 같이 정의할 수 있습니다. 

$$ Given \; x, want \; \hat{y}=P(y=1|x), \; x\in \mathbb{R}^{nx} $$

주어진 입력 데이터 \(x\)에 대하여 출력 데이터 \(y\)가 1이 될 수 있는 확률을 추정하는 것입니다. 이제 우리는 출력 함수를 parameter \(w\in \mathbb{R}^{nx} 와 b\in \mathbb{R}\) 로 다음과 같이 나타낼 수 있습니다.

$$Output \; \hat{y}=w^{T}x+b $$

우리가 지금 다루고 있는 문제는 이진 분류입니다.
즉, \(y\)의 값은 확률적으로 0과 1사이의 값으로 나타나야 하는데,
위 출력 함수는 \(y\)의 값이 1보다 클 수도 있고 심지어 음수가 될 수도 있습니다.
이를 해결하기 위해 등장한 것이 바로 \('sigmoid'\) 함수입니다.

Sigmoid 함수

위와 같은 그래프의 모양을 가지는 함수를 \(sigmoid\)함수라고 하며, 다음과 같이 수식으로 나타낼 수 있습니다. 

$$\sigma (z)=\frac{1}{1+e^{-z}}
\begin{cases}
 & \text{if }\; z \;is\;large, \; \sigma (z)\approx \frac{1}{1+0}=1 \\
 & \text{if } \; z \;is\;small, \; \sigma (z) \approx \frac{1}{1+\infty }=0 
\end{cases}$$

따라서, 출력 함수는 다음과 같이 표현합니다. 

$$output \; \hat{y} = \sigma \left ( \underbrace{w^{T}x+b} \right ), \quad z=w^{T}x+b$$

Cost Function of Logistic Regression (로지스틱 회귀의 비용 함수)

로지스틱 회귀 함수를 정의했으니, 이제 \(w\) 와 \(b\) 파라미터를 학습시키기 위해 비용 함수(Cost Function)을 정의해야 합니다. 

Logistic Regression 문제를 다시 정리해보면 다음과 같이 나타낼 수 있습니다. 

$$\hat{y} = \sigma (w^{T}x+b), where \; \sigma(z)=\frac{1}{1+e^{-z}}$$

$$Given \;\left\{\left (x ^{(1)}, y^{(1)} \right ),\cdots ,\left ( x^{(m)},y^{(m)} \right ) \right\}, \;want \;\hat{y}^{(i)}\approx y^{(i)} $$

로지스틱 회귀 비용 함수를 통해서, 우리는 예측값과 실제값이 최대한 같아지기를 원합니다. 하지만 예측이 실제 결과와 동일한 경우는 없으므로, 예측값과 실제값의 차이손실=오차(loss, error)가 발생하게 됩니다. 

 

이제 Error에 해당하는 Loss Function으로, \(L(\hat{y}, y)=\frac{1}{2}(\hat{y}-y)^{2} \) 을 사용할 수 있지만, 이러한 손실 함수는 non-convex하기 때문에 local optima 문제에 빠질 위험이 있어 적합하지 않습니다. 따라서 우리는 위 손실 함수와 유사한 역할을 하는 convex한 함수를 찾아 정의하여 최적화 문제를 풀 수 있도록 해야 합니다. 이를 위해 다음과 같은 로그 손실 함수를 사용합니다. 

$$L(\hat{y}, y)=-(ylog\hat{y}+(1-y)log(1-\hat{y}))$$

이렇게 정의한 Loss Function은 로지스틱 회귀문제의 본질에 적합한지 극단적인 두 경우를 살펴보면서 확인해보도록 하겠습니다.
만약, \(y\)가 1이라면, 
\(L(\hat{y}, y)= -log\hat{y}\), 여기서 오차를 최대한 작게 만들기 위해서는 \(\hat{y}\)이 최대한 커져야 합니다.
반대로, \(y\)가 0이라면, 
\(L(\hat{y}, y)= -log(1-\hat{y})\), 여기서는 반대로 \(\hat{y}\)이 최대한 작아져야 합니다.

 

위 함수는 하나의 sample (example)에 대해서 정의한 것이므로, 총 m개의 데이터에 대해서 비용 함수를 정의해보면 다음과 같습니다. 

$$Cost Function: J(w,b) = \frac{1}{m}\sum_{i=1}^{m}L(\hat{y}^{(i)},y^{(i)})$$

$$=-\frac{1}{m}\sum_{i=1}^{m}\left [y^{(i)}log(\hat{y}^{(i)})+(1-y^{(i)})log(1-\hat{y}^{(i)}) \right ]$$

이제 모델을 학습하면서 파라미터 \(w, b\) 를 찾고 전체적인 학습 모델의 비용 \(J\) 를 최소화 할 것입니다.

Logistic Regression은 아주아주 작은 Neural Network에 해당합니다.

 

다음 시간에는 최적화 문제를 해결하기 위한 Gradient Descent (경사하강법)에 대해 알아보도록 하겠습니다. 

728x90
반응형