간단한 숫자 예측 머신러닝 모델 만들기
머신러닝(Machine Learning)
은 데이터를 이용하여 패턴을 학습하고 결과를 예측하는 기술로, AI를 구현하는 데 가장 널리 사용되는 방법 중 하나입니다.
딥러닝(Deep Learning)
은 머신러닝의 한 분야로, 인공 신경망(Artificial Neural Network)을 이용하여 복잡한 패턴을 학습하는 기술입니다.
인공 신경망은 사람의 뇌를 모방한 프로그램으로 대규모의 데이터를 학습한 다양한 층(Layer)
으로 구성되어 있으며, 각 층은 사람의 뇌와 유사한 뉴런(Neuron)
으로 이루어져 있습니다.
머신러닝과 딥러닝에 대한 자세한 내용은 추후 수업에서 본격적으로 다루며, 이번 수업에서는 가장 인기 있는 머신러닝 라이브러리 중 하나인 텐서플로우(TensorFlow)
를 활용해 간단한 머신러닝 모델을 만들어보겠습니다.
아직 코드를 이해하지 못해도 괜찮습니다! AI 모델을 만드는 파이썬 코드가 무엇을 의미하는지는 추후 수업에서 자세히 다루며, 지금은 코드를 실행해 보면서 체험하는 것에 집중해 주세요. 😊
AI 모델은 어떻게 만들어질까?
AI 모델을 만드는 과정은 크게 3단계로 이루어집니다.
-
데이터 준비 : 모델이 학습할 데이터를 준비합니다.
-
모델 정의 : 신경망의 구조를 설정합니다.
-
모델 학습 : 데이터로 모델을 학습시킨 후 결과를 확인합니다.
TensorFlow로 간단한 AI 모델 만들기
다음 코드는 숫자를 입력하면, 입력값의 제곱에 1을 더한 값(y = x^2 + 1)을 예측하는 AI 모델을 만드는 코드입니다.
이제 TensorFlow
와 함께 단계별로 따라가며, 간단한 숫자 예측 모델을 만들어 보겠습니다.
tensorflow, numpy 라이브러리 불러오기
파이썬 import
키워드로 tensorflow
와 numpy
라이브러리를 불러옵니다.
import tensorflow as tf
import numpy as np
tensorflow는 코드 내에서 tf
로, numpy는 np
로 사용할 수 있습니다.
1. 데이터 준비
X
는 AI 모델을 학습시킬 입력값, Y
는 원하는 출력값입니다.
모델은 입출력값의 관계를 학습하게 됩니다.
# 확습용 데이터셋 생성 (y = x^2 + 1), x_train: 입력값
x_train = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0], dtype=np.float32)
# y_train: 출력값
y_train = np.array([2.0, 5.0, 10.0, 17.0, 26.0, 37.0, 50.0, 65.0, 82.0, 100.0], dtype=np.float32)
2. 모델 정의
TensorFlow
와 Keras
를 사용해 인공지능 모델을 정의합 니다.
Keras
는 머신러닝 모델을 쉽게 만들 수 있도록 도와주는 라이브러리입니다.
요리 레시피를 보고 요리를 만드는 것처럼, Keras를 사용하면 머신러닝 모델을 보다 간단한 코드로 설계할 수 있습니다.
model = tf.keras.Sequential([
# 50개의 뉴런을 가진 층, 활성화 함수는 ReLU를 사용한 입력층
tf.keras.layers.Dense(50, activation='relu', input_shape=[1]),
# 50개의 뉴런을 가진 층, 활성화 함수는 ReLU를 사용한 은닉층
tf.keras.layers.Dense(50, activation='relu'),
# 1개의 뉴런을 가진 출력층
tf.keras.layers.Dense(1)
])
Sequential
은 입력층 → 은닉층 → 출력층으로 구성된 층(layer)을 순차적으로 쌓아가는 방식으로 인공 신경망을 설계하는 방법입니다.
Dense
는 완전 연결층(Fully Connected Layer, FC Layer)을 의미합니다.
이는 모든 뉴런이 다음 층의 모든 뉴런과 연결되는 신경망 구조를 의미합니다.
3. 모델 학습
아래는 우리가 만든 인공지능(AI) 모델을 어떻게 학습할지 설정하는 단계입니다.
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.01), loss='mean_squared_error')
AI 모델이 데이터를 학습할 때, 다음과 같은 2가지를 설정해야 합니다.
-
오차(에러)를 계산하는 방법 :
mean_squared_error
는 평균 제곱 오차를 사용해 손실 함수를 계산합니다. 손실 함수는 모델이 예측한 값과 실제 값의 차이를 계산합니다. -
최적화 방법 :
Adam
은 최적화 방법 중 하나로, 손실 함수의 값을 줄이기 위해 가중치를 조정하는 방법입니다.
4. 모델 훈련
아래 코드는 위에서 정의한 모델을 200번 반복하여 학습시키는 코드입니다.
history = model.fit(x_train, y_train, epochs=200, verbose=1)
fit
함수는 모델을 학습시키는 함수로, x_train
과 y_train
데이터를 이용해 모델을 학습합니다.
epochs
는 전체 데이터셋을 몇 번 반복하여 학습할지를 설정하는 매개변수입니다.