티스토리 뷰

728x90
반응형

케라스(Keras)는 딥러닝 모델을 쉽고 빠르게 구축할 수 있도록 도와주는 고수준의 파이썬 라이브러리입니다. 이 글에서는 딥러닝 모델의 핵심 구성 요소인 데이터와 텐서, 모델 및 레이어, 활성화 함수와 함께 케라스의 API 개요에 대해 알아보겠습니다.

1. 데이터와 텐서의 개념

데이터와 텐서란?

  • 데이터
    딥러닝에서 데이터는 이미지, 텍스트, 숫자 등 모델 학습에 필요한 입력값을 의미합니다. 이 데이터는 일반적으로 수치 데이터로 변환되어 모델에 입력됩니다.
  • 텐서(Tensor)
    텐서는 다차원 배열(multidimensional array)을 의미하며, 딥러닝 라이브러리의 핵심 자료구조입니다.
    예를 들어,
    • 스칼라 (0차원 텐서): 단일 값
    • 벡터 (1차원 텐서): 값들의 리스트
    • 행렬 (2차원 텐서): 행과 열로 구성된 값들의 배열
    • 고차원 텐서: 이미지 데이터의 경우 (높이, 너비, 채널)의 3차원 배열 등

케라스는 이러한 텐서를 활용해 데이터를 표현하며, 텐서플로(TensorFlow) 같은 백엔드를 통해 연산이 수행됩니다.

2. 모델, 레이어, 활성화 함수 등 핵심 구성 요소

모델(Model)

  • 정의:
    모델은 딥러닝 네트워크 전체를 의미하며, 입력 데이터를 받아 처리하고 최종 예측 결과를 출력하는 구조를 가집니다.
  • 구성:
    모델은 하나 이상의 레이어(Layer) 로 구성되어 있습니다.
  • 예시:
    Sequential 모델은 간단하게 레이어를 순차적으로 쌓아 올린 형태입니다.

레이어(Layer)

  • 정의:
    레이어는 신경망의 기본 단위로, 입력을 받아 가중치 연산과 비선형 함수 적용 등을 수행합니다.
  • 종류:
    • Dense (완전 연결 레이어): 모든 입력 노드가 출력 노드에 연결됩니다.
    • Convolutional (합성곱 레이어): 이미지 처리에 주로 사용되며, 필터를 통해 특징을 추출합니다.
    • Recurrent (순환 레이어): 시계열 데이터나 자연어 처리에 활용됩니다.
  • 역할:
    각 레이어는 입력 데이터에 대해 특정 연산(예: 선형 변환, 비선형 활성화 적용 등)을 수행하여 다음 레이어로 넘겨줍니다.

활성화 함수(Activation Function)

  • 정의:
    활성화 함수는 레이어의 출력에 비선형성을 추가해 주는 역할을 합니다. 이를 통해 신경망은 복잡한 문제도 해결할 수 있습니다.
  • 주요 함수:
    • ReLU (Rectified Linear Unit): 입력이 0 이하일 때 0, 그 외에는 그대로 반환합니다.
    • Sigmoid: 출력값을 0과 1 사이로 제한하여 이진 분류에 유용합니다.
    • Softmax: 다중 클래스 분류 문제에서 각 클래스에 대한 확률 분포를 제공합니다.
  • 중요성:
    활성화 함수가 없다면 여러 레이어를 쌓더라도 전체 모델은 단순 선형 변환만을 학습하게 되어 복잡한 문제를 해결할 수 없습니다.

3. 케라스의 API 개요

케라스는 사용자의 편의를 위해 두 가지 주요 API 방식을 제공합니다.

Sequential API

  • 특징:
    • 레이어를 순차적으로 쌓아올리는 간단한 모델 구조에 적합합니다.
    • 직관적이고 사용하기 쉬워 딥러닝 입문자에게 추천됩니다.
  • 예제:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential([
    Dense(64, activation='relu', input_shape=(100,)),
    Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

 

위 코드는 입력 차원이 100인 데이터를 받아 두 개의 Dense 레이어를 통과시켜 다중 분류를 수행하는 모델입니다.

Functional API

  • 특징:
    • 복잡한 모델 구조(예: 다중 입력/출력, 잔차 연결 등)를 설계할 때 유용합니다.
    • 레이어 간의 자유로운 연결이 가능하여 다양한 네트워크 구조를 구현할 수 있습니다.
  • 예제:
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model

inputs = Input(shape=(100,))
x = Dense(64, activation='relu')(inputs)
outputs = Dense(10, activation='softmax')(x)
model = Model(inputs=inputs, outputs=outputs)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

Functional API를 사용하면 입력과 출력을 명시적으로 정의하여 복잡한 연결 구조를 쉽게 표현할 수 있습니다.

마무리

이 글에서는 케라스에서 딥러닝 모델의 기초가 되는 데이터와 텐서의 개념, 모델 및 레이어와 활성화 함수의 역할, 그리고 케라스의 대표적인 API인 Sequential과 Functional API에 대해 살펴보았습니다.
계속해서 케라스에 대한 공부하는 내용들에 대해서 블로그 글을 작성해 보도록 하겠습니다.

728x90
반응형