# 오차함수를 W로 미분한 값
        W_diff = -( 1/len( x_data ) ) * sum( x_data * ( error ) )
    
    # 오차함수를 b로 미분한 값
        b_diff = -( 1/len( x_data ) ) * sum( error )
    
    # 학습률을 곱해 기존의 W 값 업데이트
        W = W - lr * W_diff
    
    # 학습률을 곱해 기존의 b 값 업데이트
        b = b - lr * b_diff
    
    # 100번 반복될 때마다 현재의 W 값, b 값 출력
        if i % 100 == 0:
            print( "epoch=%.f, 기울기=%.04f, 절편=%.04f" % ( i, W, b ) )

     

    결과

    epoch=0, 기울기=3.3250, 절편=0.8250
    epoch=100, 기울기=3.4651, 절편=4.0088
    epoch=200, 기울기=3.1860, 절편=5.2037
    epoch=300, 기울기=3.0744, 절편=5.6816
    epoch=400, 기울기=3.0297, 절편=5.8727
    epoch=500, 기울기=3.0119, 절편=5.9491
    epoch=600, 기울기=3.0048, 절편=5.9796
    epoch=700, 기울기=3.0019, 절편=5.9919
    epoch=800, 기울기=3.0008, 절편=5.9967
    epoch=900, 기울기=3.0003, 절편=5.9987

    실행 결과를 보면, 반복이 늘어나면서 기울기와 절편이 3과 6에 수렴한다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.