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)

미분의 연쇄 규칙 chain rule

  • 가 미분가능한 함수라고 할 때, 이고 이면, 다음이 성립:
  • 다층신경망의 구성 (: 입력, : 손실)

다층신경망의 함수 합성 구조

  • 손실 번째 레이어의 파라미터 에 대한 미분:
    • 이후 레이어(K-1)의 미분을 이전 레이어(K-2)의 미분에 재사용할 수 있음

연쇄 규칙을 이용한 레이어별 미분 재사용

역전파 Backpropagation

  • 다층신경망에서 예측을 할 때는 forward pass로 계산

input → hidden(1) → hidden(2) → … → hidden(K-1) → hidden(K) → output

  • 파라미터를 업데이트할 때는 역순인 backward pass로 계산

hidden(1) ← hidden(2) ← … ← hidden(K-1) ← hidden(K)

  • 이를 "오차의 역전파"라 함

사라지는 경사 vanishing gradient

  • 미분의 연쇄 규칙에 따르면 경사는 곱셈 형태
  • 경사가 0~1 사이인 레이어가 많으면, 입력층과 가까운 초반 레이어는 손실의 경사가 0에 가까워짐
  • 신경망 초반 레이어에서 변화가 손실에 영향을 주지 못함
  • 초반 레이어로 오차 역전파가 X → 초반 레이어의 파라미터 업데이트 X
  • 레이어가 늘어나도 학습이 되지 않으므로, 딥러닝의 의미 상실

사라지는 경사 문제

Previous
문턱값