본문 바로가기
COURSERA

week 2_신경망으로서의 로지스틱 회귀 (Andrew Ng)

by HYUNHP 2022. 2. 3.
728x90
반응형

안녕하세요, HELLO

 

오늘은 DeepLearning.AI에서 진행하는 Andrew Ng 교수님의 딥러닝 전문화의 첫 번째 과정인 "Neural Networks and Deep Learning"을 정리하려고 합니다. "Neural Networks and Deep Learning"의 강의 목적은 '딥러닝의 기능, 과제 및 결과 이해'를 통해 '머신 러닝을 업무에 적용하고, 기술 수준을 높이고, AI 분야에서 단계를 밟을 수 있는 지식과 기술을 얻을 수 있는 경로'를 배우기 위함이며, 강의는 아래와 같이 구성되어 있습니다.

 

~ Introduction

~ Basics of Neural Network programming

~ One hidden layer Neural Networks

~ Deep Neural Networks

 

"Neural Networks and Deep Learning" (Andrew Ng)의 2주 차 "Basics of Neural Network programming"의 강의 내용입니다.


CHAPTER 1. 'Logistic Regression'

 

CHAPTER 2. 'Derivative'

 

CHAPTER 3. 'Logistic Regression Gradient descent'

 


CHAPTER 1. 'Logistic Regression'

 

□ Binary Classification(이진 분류)

 

로지스틱 회귀는 이진 분류(binaray classification)를 하기 위해 사용되는 알고리즘 중 하나입니다. 이진 분류는 예를 들어 그렇다 또는 아니다, 2개로 분류하는 것으로, 이때 결과가 '그렇다'인 경우 1로 표현하고, '아니다'이면 0으로 표현합니다.


□ Logistic Regression(로지스틱 회귀)

 

로지스틱 회귀는 이진 분류 문제에 사용되는 알고리즘입니다. 입력 값인 X에 대해서, y(주어진 입력 특성 X에 해당되는 실제 값)가 1일 때의 예측값을 ŷ (P(y=1|X)라고 합니다. 예측값 ŷ은 X일 때 y가 1인 확률을 의미하며, 0 ≤ ŷ < 1 사이의 값을 가집니다. 다만, ŷ = wX + b (w, b = 파라미터, w = 입력 값, b = 잔차)에서 0과 1 사이의 확률 범위를 벗어날 수 있기에, 이때 시그모이드 함수(sigmoid function) 등을 활용해 0과 1 사이의 값으로 변환해줍니다.

 

이때, 중요한 점은 이진 분류에 있어 그렇다(=1), 아니다(=0)를 예측하는 확률의 범위는 0과 1 사이기에, 이에 맞춰 가중치를 조정해야 되기에, 시그모이드 함수 등을 활용해서 예측값 ŷ의 확률을 조정하는 것입니다.

 


□ Logistic Regression cost function(로지스틱 회귀 비용 함수)

 

로지스틱 회귀 함수

 

손실 함수하나의 입력에 대해 실제값(y)과 예측값(ŷ)의 차이인 오차를 계산하는 함수이고, 이러한 모든 입력에 대한 오차를 계산하는 함수비용 함수라고 합니다. 로지스틱 회귀에서 사용하는 손실 함수는 아래와 같습니다.

비용 함수는 모든 입력에 대해 계산한 손실 함수의 평균값으로 계산할 수 있으며, 아래 식으로 정리할 수 있습니다.

이때, 주의할 점은 회귀 모형을 사용하는 목적은 실제값(y)과 근접한 예측값(ŷ)을 찾기를 위함이며, 비용 함수의 값이 작아지도록 하는 w와 b를 찾는 것이 이를 위한 방법입니다.


□ Gradient descent(기울기 하강)

 

비용 함수가 전체 데이터셋의 예측이 얼마나 잘 되었는지 확인하는 것이면, 경사 하강법(Gradient descent)은 이를 가능하게 하는 파라미터 w와 b를 찾아내는 방법입니다.

경사 하강법을 찾기 위해서는 1. 비용 함수의 형태가 볼록한 형태여야 합니다. 함수의 최솟값을 모르기 때문에, 임의의 점을 시작으로 도함수(derivative), 함수의 기울기를 따라서 비용 함수의 최저점을 찾아가는 과정을 진행합니다. 알고리즘은 아래와 같습니다.

도함수(dw)가 0보다 크면, 파라미터 w는 기존의 w보다 작은 방향으로 이동하고, 반면에 dw가 0보다 작으면, 파라미터 w는 기존의 w보다 큰 방향으로 이동하게 됩니다. 위 과정을 반복하여 비용 함수의 최저점을 찾게 됩니다.

 

 

CHAPTER 2. 'Derivative'

 

□ Derivates(도함수)

 

■ 도함수의 개념

 

도함수는 함수의 기울기와 동일하며, 높이/너비로 구합니다. 일차함수, 이차함수, 로그함수 등 함수의 모향에 따라 도함수의 값은 다르지만, 축의 값이 증가, 감소함에 상관없이 도함수의 값은 동일합니다.

 

■ 도함수의 예

 

이차함수에서의 도함수도 일차함수와 동일하게 기울기(높이/너비)를 통해서 구할 수 있습니다. a가 2일 때(a=2), 0.0001만큼 약간 오른쪽으로 이동하는 경우(nudging a right by slightly)에 도함수는 4입니다(a=2일 때, d/da = 4) 

 

이차함수와 삼차 함수의 경우에도 동일하게, 축의 변화에 상관없이 도함수는 동일합니다.

 

추가적으로 자연로그 함수도 동일하게 축의 변화에 상관없이 도함수는 1/a로 동일합니다.


□ Computing derivatives(도함수 계산)

 

 

마지막 변수 결괏값(J)에 대해서 derivative를 계산하기 위해, 역방향의 첫 번째 단계(one step backwards)를 진행해보겠습니다. J=3v의 함수에서, v의 값을 올리면(net impact), 함수는 3배만큼 증가하게 됩니다. 이를 바탕으로 derivative값을 3으로 확인할 수 있습니다.

 

a를 증가했을 때, dv/da만큼 j가 증가할 것입니다. 연쇄 법칙(chain rule)은 합성함수의 미분으로, 위 예제의 경우처럼 a가 v에 영향을 주고, v가 J에 영향을 주는 함수의 derivative 값을 구할 수 있습니다. 연쇄 법칙에 따라 각 변수의 derivative를 (dJ/dv) * (dv/da) 통해 구할 수 있습니다.

 

derivative를 계산할 때, 가장 효율적인 방법은 아래 이미지와 같이 빨간색 화살표와 같은 방향으로 오른쪽에서 왼쪽(right to left)으로의 역방향에 따라 계산을 진행하는 것입니다. v에 대해서, a에 대해서, u에 대해서 그리고 결과적으로 b와 c의 derivative를 구하는 데 활용할 수 있습니다.

 

 

반응형

 

CHAPTER 3. 'Logistic Regression Gradient descent'

 

Logistic Regression Gradient descent(로지스틱 회귀 기울기 하강)

 

로지스틱 회귀에서 비용 함수는 아래와 같이 표현할 수 있습니다.

이를 바탕으로 변수 2개에 대해서 코드를 작성하면 아래와 같습니다.

머신러닝에서 중요한 점은 다양한 파라미터와 많은 양의 데이터셋으로 효율적으로 코드를 작성하고 운영해야 됩니다. 파라미터의 개수가 늘어남에 따라 이중 for문을 사용하게 되면, 계산속도가 저하되는 문제점이 발생합니다. 이를 해결하는 방법으로 병렬 프로세서의 한 종류인 vectorization(벡터화)를 활용합니다. 


■ 마무리

 

"Neural Networks and Deep Learning" (Andrew Ng) 2주 차 "Basics of Neural Network programming"에 대해서 정리해봤습니다.

 

그럼 오늘 하루도 즐거운 나날 되길 기도하겠습니다

좋아요와 댓글 부탁드립니다 :)

 

감사합니다.

 

반응형

댓글