Snoopy [Tensorflow 101] 1. 딥러닝 개요(with 회귀)
강의 내용 정리하기/Tensorflow101

[Tensorflow 101] 1. 딥러닝 개요(with 회귀)

Sooyoon Jeong 2022. 11. 28.

봉수골 개발자 이선비 님의 Tensorflow 101 강의 내용을 바탕으로 포스팅하였음을 사전에 안내드립니다.

링크: https://www.youtube.com/playlist?list=PLl1irxoYh2wyLwJutUZx5Q_QEEDZoXBnz


1. AI와 머신러닝 그리고 딥러닝

출처: NDIVIA

 

1️⃣ 인공지능

인간의 학습능력, 추론능력, 지각능력을 인공적으로 구현하려는 컴퓨터 과학의 세부분야 중 하나

 

2️⃣ 머신러닝

오늘 날의 인공지능을 구현하는 가장 유망하고 유명한 분야

 

✔️ 머신러닝 학습의 종류

 

  • 지도학습
  • 비지도학습

둘의 차이는 정답(y, target, label)의 유무이며, 머신러닝의 핵심은 지도학습이다.

 

✔️  지도학습의 대표적인 문제

 

  • 회귀
  • 분류

둘의 기준이 되는 것은 예측하고자 하는 정답 값(변수)의 종류이다.

회귀는 정답이 수치형일 때, 분류는 정답이 범주형일 때 사용한다.

 

✔️  회귀와 분류(지도학습)를 해결할 수 있는 알고리즘

이러한 지도학습을 실행할 수 있는 여러 알고리즘이 존재한다.

 

  • Decision Tree
  • Random Forest
  • KNN
  • SVM
  • Neural network

 

3️⃣ 딥러닝

위의 알고리즘 중에서 Nerual netwrok가 바로 딥러닝이며, 인공신경망 등의 이름으로 함께 부르기도 한다.

'인공신경망'이라는 이름에서도 알 수 있듯이 딥러닝은 머신러닝 중 인간의 신경을 모방하는 이론 또는 기법을 총칭하는 것이다.

 

✔️ 딥러닝 라이브러리 종류

딥러닝 이론을 코딩으로 이용할 수 있도록 해주는 여러 라이브러리 존재하며 다음과 같다.

 

  • tensorflow
  • pytorch
  • caffe
  • Theano 등

2. 지도학습의 준비사항 및 딥러닝 과정

지도학습의 기본 원리는 데이터 속에서 원인(독립변수)과 결과(종속변수)를 분석하여 알맞는 관계를 파악하고

그 관계를 기반으로 새로운 원인(독립변수)이 입력되면 그에 따른 결과(종속변수)를 출력하는 것이다.

 

지도학습을 위한 과정은 다음 4가지로 정리할 수 있으며,

딥러닝은 지도학습을 기반으로 하기때문에 다음과 같은 과정을 거쳐 딥러닝을 진행한다고 생각하면 된다.

(참고로 머신러닝과도 과정이 거의 동일하다.)

 

1️⃣ 학습할 수 있는 과거 데이터 준비

# 데이터 파일 준비
데이터명 = pd.read_csv(파일경로)

# 독립변수와 종속변수 분리
독립변수명 = 데이터명[["독립변수"]]
종속변수명 = 데이터명[["종속변수"]]

# 맞게 분리되었는지 확인하기
print(독립변수명.shape(), 종속변수명.shape())

 

2️⃣ 모델 구조 생성

X = tf.keras.layers.Input(shape=[1])
Y = tf.keras.layers.Dense(1)(X)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')

 

3️⃣ 데이터로 모델을 학습(fit)

model.fit(독립변수명, 종속변수명, epochs=10)

epochs는 학습횟수를 의미한다.

 

4️⃣ 모델을 이용(예측, 분류 등)

print(model.predict(독립변수명))

 

+ 수식 확인하는 방법

model.get_weights

가중치 들이 출력된다.


3. 손실의 의미

손실은 쉽게 말해서 예측값과 실제 값의 차이이며 값이 작을수록, 즉 손실이 적을 수록 좋은 모델이라고 할 수있다. 

(손실을 줄여주는 방향으로 모델을 최적화하는 것은 매우 매우 중요하다!)

 

회귀에서 가장 대표적인 손실은 MSE가 있으며 그 외에도 다양한 손실함수가 존재한다.

 

[참고] 회귀의 성과지표 💡

1. MAE(Mean Absolute Error)
(예측값 - 실제값)의 절대값에 대한 평균

2. MAPE(Mean Absolute Percentage Error)
(실제값 - 예측값 / 실제값)의 절대값에 대한 평균

3. MSE(Mean Squared Error)
(실제값 - 예측값)의 제곱의 평균MAE와 비슷해 보이나 제곱을 통해 음수를 양수로 변환함분산과 유사한 공식

4. RMSE(Root Mean Squared Error)
MSE의 제곱근
표준편차와 유사한 공식

5. R^2 결정계수
1- (관측 값과 예측 값 차의 제곱합) / (관측 값과 측정값 전체 평균의 제곱 합)

✔️ MAE, MAPE, MSE, RMSE 모두 값이 작을 수록 좋지만 R^2는 값이 클수록 좋다.

4. 수식과 퍼셉트론

1️⃣ 종속변수 y가 1개인 경우

X1 X2 X3 X4 X5 X6 y
1 4 3 5 6 6 5
25 15 16 26 27 4 20
36 45 48 48 49 50 43

위와 같이 X1~X6을 독립변수로, y를 종속변수로 갖는 데이터가 있다고 가정해보자.

 

모델의 구조를 만들고 학습시킨 다음에 y를 예측한다는 것은 이제 알겠는데,

그럼 어떤 원리에 의해 y가 예측되는 것일까?

 

y를 산출하는 수식은 아래와 같이 작성할 수 있다. 

결국 핵심은 W와 b를 찾는 것이며,

우리가 만든 이 모델은 뉴런 하나로 이루어져 있다고 이야기할 수 있다.

 

뉴런이란 뇌과학 분야에서 실제로 사용하는 용어로 두뇌 세포를 의미한다.

그리고 인공신경망(딥러닝)에서 뉴런의 역할을 하는 것이 바로 우리가 만든, 위의 모델과 수식이다.

이러한 모형을 퍼셉트론, 각 독립변수의 계수인 W를 가중치, b를 편향(bias)라고 부른다.

 

2️⃣ 종속변수 y가 2개인 경우

X1 X2 X3 X4 X5 X6 y1 y2
1 4 3 5 6 6 5 9
25 15 16 26 27 4 20 25
36 45 48 48 49 50 43 40

그럼 위의 표 상황처럼 예측하고자 하는 변수, 즉 종속변수가 2개인 경우엔 어떻게 해야할까?

 

수식은 아래와 같이 작성할 수 있으며, 이 경우에는 퍼셉트론 2개가 병렬적으로 연결된 모델이라고 할 수 있다.

위의 수식에 의거하여 우리는

첫 번째 수식에서 w 6개, b 1개 두 번째 수식에서 w6개, b 2개 총14개의 변수를 찾아야 할 것이다.

 

3️⃣ 가중치 W의 계산

W와 b를 찾아야 한다는 것은 알겠는데, 그럼 W는 어떻게 계산을 해야할까?

핵심은 바로 미분이다.

 

경사하강법의 개념과도 유사할 수 있는데,

 

loss는 실제값과 예측값의 차이로

ML과 DL의 목표는 바로 loss 값을 최소화시키는 것이다.

 

그리고 DL에서는 미분을 통해 loss 값을 줄일 수 있는 방향을 찾아가며 W를 업데이트 해간다.

 

 

댓글