2 분 소요

인공 신경망

핵심 포인트:

  • 인공 신경망(Artificial Neural Networks)은 생물학적 뉴런에서 영감을 받아 만든 머신러닝 알고리즘입니다. 하지만 실제 뇌를 모델링한 것은 아닙니다.
  • 신경망은 이미지, 음성, 텍스트 처리와 같은 복잡한 문제에서 뛰어난 성능을 발휘하며, 종종 딥러닝(Deep Learning)이라고 불립니다.

코드 설명:

# 인공 신경망에서의 랜덤성을 제어하여 재현 가능한 결과를 얻도록 설정합니다.
import tensorflow as tf

tf.keras.utils.set_random_seed(42)
tf.config.experimental.enable_op_determinism()

이 코드는 텐서플로에서 재현 가능한 결과를 얻기 위해 난수 시드를 설정합니다. 이는 실험을 반복할 때마다 같은 결과를 얻을 수 있게 도와줍니다.

추가 학습:

  • 신경망의 기본 구조 (입력층, 은닉층, 출력층)와 뉴런 간의 연결 방식에 대해 학습합니다.
  • 활성화 함수(Activation Function)와 그 중요성에 대해 깊이 이해합니다. 예: ReLU, Sigmoid, Softmax 등.

패션 MNIST

핵심 포인트:

  • 패션 MNIST는 10가지 패션 제품 카테고리에 속한 28x28 크기의 흑백 이미지로 구성된 데이터셋입니다.
  • 이 데이터셋은 기존 MNIST 손글씨 데이터셋보다 실제 문제를 더 잘 반영합니다.

코드 설명:

from tensorflow import keras

(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()

print(train_input.shape, train_target.shape)
print(test_input.shape, test_target.shape)

이 코드는 패션 MNIST 데이터를 로드하고, 학습용 및 테스트용 데이터의 형태를 출력합니다.

import matplotlib.pyplot as plt

# 패션 MNIST의 처음 10개 이미지를 시각화합니다.
fig, axs = plt.subplots(1, 10, figsize=(10,10))
for i in range(10):
    axs[i].imshow(train_input[i], cmap='gray_r')
    axs[i].axis('off')
plt.show()

이 코드는 데이터셋의 이미지를 시각화하여 각 클래스의 예시를 제공합니다.

추가 학습:

  • Fashion MNIST 데이터셋의 각 클래스가 어떤 패션 아이템인지 이해합니다.
  • 데이터 전처리 과정(예: 이미지 정규화, 데이터 증강)에 대해 학습합니다.

로지스틱 회귀로 패션 아이템 분류하기

핵심 포인트:

  • 로지스틱 회귀(Logistic Regression)는 이진 분류를 위한 선형 모델입니다. 다중 클래스 분류를 위해 소프트맥스(Softmax) 함수를 사용하여 확장할 수 있습니다.

코드 설명:

train_scaled = train_input / 255.0
train_scaled = train_scaled.reshape(-1, 28*28)

print(train_scaled.shape)

이 코드는 이미지를 1차원 벡터로 변환하고, 픽셀 값을 0과 1 사이로 정규화합니다.

from sklearn.model_selection import cross_validate
from sklearn.linear_model import SGDClassifier

sc = SGDClassifier(loss='log_loss', max_iter=5, random_state=42)

scores = cross_validate(sc, train_scaled, train_target, n_jobs=-1)
print(np.mean(scores['test_score']))

로지스틱 회귀 모델을 사용하여 패션 아이템을 분류합니다. 교차 검증을 통해 모델의 성능을 평가합니다.

추가 학습:

  • 로지스틱 회귀의 수학적 배경과 소프트맥스 함수의 역할에 대해 학습합니다.
  • 교차 검증(Cross-Validation)과 그 중요성에 대해 이해합니다.

인공신경망

핵심 포인트:

  • 인공 신경망은 로지스틱 회귀보다 복잡한 모델로, 은닉층을 추가하여 비선형 문제를 해결할 수 있습니다.
  • 텐서플로와 케라스는 신경망을 효율적으로 구축하고 훈련하기 위한 강력한 도구입니다.

코드 설명:

import tensorflow as tf
from tensorflow import keras
from sklearn.model_selection import train_test_split

# 학습용 데이터를 훈련 및 검증 세트로 나눕니다.
train_scaled, val_scaled, train_target, val_target = train_test_split(
    train_scaled, train_target, test_size=0.2, random_state=42)

print(train_scaled.shape, train_target.shape)
print(val_scaled.shape, val_target.shape)

이 코드는 데이터를 훈련 세트와 검증 세트로 분할하여 모델의 성능을 검증합니다.

추가 학습:

  • 케라스의 Sequential 모델 구조와 각 층의 역할에 대해 학습합니다.
  • 딥러닝에서 과적합(Overfitting) 문제와 이를 해결하기 위한 방법(예: 드롭아웃, 정규화)들을 이해합니다.

인공신경망 모델 만들기

핵심 포인트:

  • 케라스의 Dense 층은 기본적인 밀집층으로, 모든 뉴런이 완전히 연결된 상태를 의미합니다.
  • 출력층에서 소프트맥스 함수를 사용하여 클래스별 확률을 출력합니다.

코드 설명:

dense = keras.layers.Dense(10, activation='softmax', input_shape=(784,))
model = keras.Sequential(dense)
model.compile(loss='sparse_categorical_crossentropy', metrics='accuracy')

print(train_target[:10])

이 코드는 간단한 신경망 모델을 정의하고 컴파일합니다. 입력은 784개의 픽셀(28x28 이미지), 출력은 10개의 클래스 확률입니다.

추가 학습:

  • 손실 함수와 최적화 알고리즘(예: Adam, SGD)의 역할에 대해 학습합니다.
  • 모델 컴파일 과정에서 사용되는 각 매개변수의 의미를 이해합니다.

인공 신경망으로 패션 아이템 분류하기

핵심 포인트:

  • 모델 훈련은 데이터를 통해 모델의 가중치를 업데이트하는 과정이며, 평가 단계에서는 새로운 데이터에 대한 모델의 성능을 확인합니다.

코드 설명:

model.fit(train_scaled, train_target, epochs=5)
model.evaluate(val_scaled, val_target)

이 코드는 모델을 훈련시키고 검증 세트를 통해 모델의 성능을 평가합니다.

추가 학습:

  • 에포크(Epoch)와 배치 크기(Batch Size)의 의미와 그 설정 방법에 대해 학습합니다.
  • 모델 성능을 평가하는 다양한 지표(예: 정확도, 손실 값)를 이해하고, 이들을 개선하기 위한 방법들을 탐색합니다.

댓글남기기