딥러닝 입문

퍼셉트론 학습 알고리즘 - 스토캐스틱(확률적) 버전 python 구현

LearningDataMaestro 2024. 3. 20. 12:32
728x90

퍼셉트론 학습 알고리즘의 스토캐스틱(확률적) 버전은 훈련 데이터셋의 각 샘플을 순서대로 처리하는 대신, 무작위로 선택된 샘플을 사용하여 가중치를 업데이트합니다. 이 접근법은 학습 과정에 무작위성을 도입하여 지역 최소값(local minima)에 빠질 가능성을 줄이고, 종종 학습 속도를 높일 수 있습니다. 다음은 스토캐스틱 퍼셉트론 학습 알고리즘의 슈도코드입니다.

# 스토캐스틱 퍼셉트론 학습 알고리즘 슈도코드

1. 가중치(W)와 편향(b)을 0 또는 작은 랜덤 값으로 초기화한다.
2. 학습률(η, eta)을 설정한다. (예: 0.01)

반복 until (만족할만한 성능이 나올 때까지):
    # 무작위로 훈련 샘플을 선택한다.
    Randomly select a training example (x, y)

    # x는 입력 벡터, y는 실제 레이블(-1 또는 1)
    # 예측을 계산한다: y_pred = sign(W·x + b)
    y_pred = sign(dot_product(W, x) + b)

    # 가중치 업데이트 규칙
    if y_pred != y then
        # 가중치와 편향을 업데이트한다.
        W = W + η * (y - y_pred) * x
        b = b + η * (y - y_pred)
    end if

# 여기서 sign 함수는 입력이 0보다 크면 1을, 그렇지 않으면 -1을 반환한다.
# dot_product는 두 벡터의 점곱을 계산하는 함수이다.

 

이 스토캐스틱 버전에서는 각 반복(iteration)에서 전체 훈련 데이터셋을 사용하는 대신 무작위로 선택된 단일 훈련 예제를 사용하여 가중치를 업데이트합니다. 이 접근 방식은 "확률적 경사 하강법(Stochastic Gradient Descent, SGD)"의 한 예로 볼 수 있습니다. 이 방식은 학습 과정이 다소 불안정해질 수 있지만, 전체적인 학습 속도는 빨라지고 지역 최소값에 빠질 위험을 줄일 수 있습니다.

 

스토캐스틱 퍼셉트론 학습은 특히 큰 데이터셋에서 효과적일 수 있으며, 매 반복마다 전체 데이터셋을 사용하는 것보다 계산적으로 효율적입니다.