인공지능융합개론

김민준·2025년 3월 4일

📌 딥러닝 기초 및 활성화 함수, 손실 함수, CNN, RNN, GAN 개념 정리

🧠 딥러닝 개요

딥러닝은 신경망을 기반으로 한 머신러닝 기술로, 데이터를 학습하여 패턴을 인식하고 예측하는 강력한 알고리즘이다. 신경망 모델은 여러 개의 레이어(layer)로 구성되며, 각 레이어는 입력을 받아 가공하고 다음 레이어로 전달하는 방식으로 동작한다.

로지스틱 회귀 (Logistic Regression):

  • 로지스틱 회귀는 어떤 사건이 발생할 가능성을 예측하는 방법으로, 이진 분류(Binary Classification) 문제에서 사용된다.

  • 예시: 공부 시간을 입력으로 하여 합격 여부(0 또는 1)를 예측

  • 시그모이드 함수(Sigmoid Function): 입력값을 0과 1 사이의 확률로 변환하는 함수로, 주로 이진 분류 문제에서 사용된다.

  • 손실 함수: binary_crossentropy를 사용하여 이진 분류 모델을 학습할 때 오차를 최소화한다.

활성화 함수(Activation Function): 활성화 함수는 신경망의 각 레이어에서 출력값을 어떻게 계산할지 정하는 함수이다. 단순한 선형 변환이 아니라, 특정 조건을 만족하면 출력을 다음 노드로 보내고 만족하지 못하면 비활성화하는 역할을 한다.
즉 비선형성을 도입하여 복잡한 패턴 학습이 가능하도록 한다. 대표적인 활성화 함수로는 ReLU, Sigmoid, Softmax 등이 있다.

손실 함수(Loss Function): 모델의 예측값과 실제 값 사이의 차이를 계산하는 함수로, 모델의 학습 과정에서 최적화하는 대상이다.
손실 함수는 최적의 가중치를 학습하기 위한 필수적인 요소이다.
회귀 문제에서는 평균제곱오차(MSE), 분류 문제에서는 교차 엔트로피(Cross Entropy)가 주로 사용된다.

가중치(Weight)와 바이어스(Bias): 신경망 모델의 학습 과정에서 최적화하는 값으로, 입력 데이터가 출력에 미치는 영향을 조정한다.

경사 하강법(Gradient Descent): 손실 함수를 최소화하기 위해 가중치와 바이어스를 조정하는 알고리즘이다. 일반적인 경사 하강법과 속도를 개선한 확률적 경사 하강법(SGD), 모멘텀 적용 SGD 등이 있다.

  • SGD (Stochastic Gradient Descent): 전체 데이터를 한 번에 처리하는 대신 랜덤한 일부 데이터를 사용하여 빠르게 학습 진행

  • Momentum: 이전 기울기를 참고하여 학습 속도를 조절하여 지그재그 패턴을 줄임

  • Adam: 학습 속도를 자동으로 조절하며 최적의 학습 속도를 찾는 데 효과적

🎯 딥러닝 모델 설계 및 학습 과정

1️⃣ 신경망 모델 설계 과정

  1. 라이브러리 불러오기 (TensorFlow, Keras 등)
  2. 모델 생성Sequential 모델을 사용하여 층을 정의
  3. 레이어 추가Dense(완전연결층), Conv2D(CNN), LSTM(RNN) 등을 추가
  4. 모델 컴파일 → 옵티마이저와 손실 함수 설정
  5. 모델 학습fit() 함수 사용
  6. 모델 예측 및 시각화predict() 함수 활용
  7. 모델 평가 → 새로운 데이터를 통해 예측 성능 확인
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 모델 생성
model = Sequential()
model.add(Dense(64, input_shape=(10,), activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# 모델 컴파일
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 모델 학습
model.fit(X_train, y_train, batch_size=32, epochs=100)

🚀 활성화 함수(Activation Functions)

활성화 함수설명
ReLU0 이하의 값은 0, 그 외에는 그대로 출력 (딥러닝에서 가장 많이 사용)
Sigmoid0과 1 사이의 값으로 변환, 확률 예측에 사용
Softmax다중 분류 문제에서 각 클래스의 확률을 출력
Tanh-1과 1 사이의 값으로 변환
from tensorflow.keras.layers import Activation

# 예제: 활성화 함수 적용
layer = Dense(32, activation='relu')

🔹 활성화 함수 선택 기준

  • 이진 분류sigmoid
  • 다중 분류softmax
  • 일반적인 신경망ReLU

📌 손실 함수(Loss Functions)와 최적화 기법

문제 유형손실 함수
선형회귀MSE (Mean Squared Error,평균제곱오차)
이진 분류Binary Crossentropy
로지스틱 회귀 및 분류문제Cross entropy
다중 분류Categorical Crossentropy

손실 함수를 올바르게 선택하면 모델이 데이터를 더욱 효과적으로 학습할 수 있다.

# 모델 컴파일 시 손실 함수 설정
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

🏆 CNN (합성곱 신경망)

1️⃣ CNN의 개념과 필요성

일반적인 신경망은 이미지의 공간적 구조를 보존하지 못하는 문제가 있다. 이를 해결하기 위해이 이미지 데이터에 처리에 최적화된 신경망 구조인 CNN이 도입되었으며, 특징 추출과 분류를 동시에 수행하는 강력한 모델이다.

CNN의 주요 구성요소
합성곱(Convolution) 연산을 사용하여 이미지의 특징을 추출한다.
패딩(Padding) 연산을 사용하여 합성곱 연산으로 이미지 크가가 줄어드는 것을 방지
풀링(Pooling) 연산을 통해 특징을 축소하여 추출하며(feature map 크기를 줄이고) 연산량을 줄인다. (MaxPolling, AveragePooling)
Fully Connected Layer 추출된 특징을 바탕으로 최종적으로 분류,예측 수행한다.
Dropout: overfitting(과적합) 을 방지하기 위해 일부 뉴런을 랜덤을 제거

2️⃣ CNN의 핵심 개념

개념설명
합성곱(Convolution)이미지의 특징을 추출하는 연산
패딩(Padding)크기 감소 방지를 위해 테두리에 0 추가
풀링(Pooling)특징 맵 크기를 줄여 연산량 감소
ReLU 활성화 함수비선형성을 추가하여 학습 성능 향상
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten

model = Sequential()
model.add(Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(10, activation='softmax'))

🔥 RNN (순환 신경망)과 LSTM

기존 신경망은 문장과 같은 시퀀셜 데이터(자연어, 시게열 데이터) 학습이 어려운 문제가 있다. RNN은 이전 상태를 기억하여 순차적인 데이터를 학습하는 구조로, 대표적인 모델로 LSTM과 GRU가 있다.

문장, 음성, 주가 예측 등 시간 의존성이 높은 데이터에 활용
단점: 기울기 소실(Vanishing Gradient) 문제 발생 가능
LSTM(Long Short-Term Memory)장기 기억이 가능하도록 개선된 모델

from tensorflow.keras.layers import LSTM

model.add(LSTM(128, return_sequences=True, input_shape=(100, 1)))

🎨 GAN (생성적 적대 신경망)

GAN은 새로운 데이터를 생성하는 모델로, 생성자(Generator)와 판별자(Discriminator)가 서로 경쟁하며 학습한다.

DCGAN: CNN을 활용하여 기존 GAN보다 안정적인 학습 가능
WGAN: Wasserstein 거리를 이용하여 안정적인 학습 가능

from tensorflow.keras.layers import LeakyReLU

discriminator.add(LeakyReLU(alpha=0.2))

🛠️ 오토인코더 (Autoencoder)

오토인코더는 데이터 압축 및 복원을 수행하는 신경망이다.

✅ 오토인코더의 특징:

인코더 (Encoder): 입력 데이터를 저차원 표현으로 변환

디코더 (Decoder): 저차원 표현을 다시 원래 크기로 복원

활용: 노이즈 제거, 특징 추출, 이상 탐지 등


profile
지금까지 해온 여러 활동들을 간략하게라도 정리해보고자 합니다.

0개의 댓글