logo

다층신경망

선형 분리 linearly separable

  • 단층 신경망은 데이터 공간을 하나의 직선(또는 평면)으로 나누는 것
  • 데이터가 복잡하면 하나 이상의 선으로 나눌 필요

선 하나로 분리되는 데이터 예시

복잡한 데이터에서 여러 선이 필요한 예시

선형 vs. 비선형

선형과 비선형 분리 비교

XOR 문제

  • 수학에서 A OR B는 A와 B 둘 다 참인 경우에도 참
  • 일상적인 의미에서 "또는"은 둘 중에 하나만 참인 경우에 사용
  • XOR(Exclusive OR): A 또는 B 둘 중에 하나만 참인 경우에 참
  • 선형 분리할 수 없음 → 다층 신경망으로 해결

XOR 문제의 선형 분리 한계

다층신경망 Multi-Layer Perceptron

  • 여러 개의 층으로 이뤄진 신경망
  • 선형 분리 불가능한 비선형 데이터를 다룰 수 있음
  • 입력층 Input layer
  • 은닉층 Hidden layers
    • 신경망의 학습 과정에서 과제 수행에 필요한 특징을 학습
    • 입력층에 가까운 은닉층은 단순한 특징을, 출력층에 가까운 은닉층은 복잡한 특징을 학습
    • 은닉층의 형태에는 제약이 없음
    • 은닉층의 적절한 수와 크기는 문제에 따라 달라짐
    • 다양한 시도를 통해 가장 성능이 좋은 것으로 결정
  • 출력층 Output layer

다층신경망 구조

모형 정의

keras.utils.set_random_seed(812)

model = keras.models.Sequential(  # 딥러닝 모형의 구성 요소를 순서대로 정의
    [
        keras.layers.Rescaling(scale=1/127.5, offset=-1), #  입력 값의 범위를 -1 ~ +1로
        keras.layers.Flatten(), #  이미지 평탄화
        keras.layers.Dense(16, activation='relu'), # 은닉층
        keras.layers.Dense(1, activation='sigmoid') # 출력층
    ]
)

모형 훈련 및 평가

# 컴파일
model.compile(optimizer=keras.optimizers.SGD(learning_rate=0.0001),
loss='binary_crossentropy', metrics=['accuracy'])

# 훈련
model.fit(x_train_binary, y_train_binary, epochs=5, batch_size=32)

# 평가
model.evaluate(x_test_binary, y_test_binary)
Previous
문턱값