zoukankan      html  css  js  c++  java
  • 【人工智能导论:模型与算法】慕课笔记1 误差反向传播 CODE

    目标值 与 误差值,反了。

    迭代后,目标值趋近于 零,误差趋近于 目标值 1.73 。

    没发现原因 ~ 


     跟LiuHB讨论,发现是对 梯度 理解的不够深刻。继续研究。


     例子的原文:

    https://www.cnblogs.com/hbuwyg/p/15550275.html

    带Python代码


    y = 0.2 ; 梯度 取正方向;程序完美:error趋于0,目标值趋于0.2

    y = 0.5 ; 梯度 取负方向;error取反;程序完美:error趋于0,目标值趋于0.5


    说明这个程序的迭代,跟初值有很大关系。

    原有的初值是:x0= -1;x1=-2。 y=1/(1+exp(-(-w0-2w1+w2)))=1/(1+exp(w0-+w1-w2))

    当 w0 = 2;w1 = -3;w2 = -3 时:y= 1 / (1 + exp( -((2x0) -3x1 -3)))   


     

    import math
    def back_propagation(x0,x1,w0,w1,w2,y,N):
    #     y = 1 / (1 + math.exp( -((x0 * w0)  + (x1 * w1) + w2)))   
        print("\n=============================NO",N,"=============================")
        N = N-1
        f1 = x0 * w0
        f2 = x1 * w1
        f3 = f1 + f2
        f4 = f3 + w2
        f5 = -f4
        f6= math.exp(f5)
        f7 = 1 + f6
        f8 = 1/f7
         # MSE 
    #     error = 0.5 * math.pow((y - f8),2)   
        error = y - f8
        print("RESULT,               ERROR\n" ,f8, error)    
    #     print("----------------END---Forward-------------------------")
        bp1 = -(1/math.pow(f7,2)) * error
        bp2 = 1 * bp1
        bp3 = math.exp(f5) * bp2
        bp4 = -bp3
        bp5 = bp4
        bp6 = bp5
        bp_w1 = bp6 * x1
    #     bp_x1 = bp6 * w1
        bp_w0 = bp6 * x0
    #     bp_x0 = bp6 * w0
        bp_w2 = bp5
        w0 = w0 - bp_w0
        w1 = w1 - bp_w1
        w2 = w2 - bp_w2
    #     print(bp1,bp2,bp3)
    #     print(bp4,bp5,bp6)
        print("----------------END---BP----Update w---------------------")
        print("x0:" , x0,"x1:" , x1,"y:" , y) 
    #     print("bp_w0:" , bp_w0,"bp_w1:" , bp_w1,"bp_w2:" , bp_w2) 
        print("w0:" , w0,"w1:" , w1,"w2:" , w2)
        if (N > 0):
            back_propagation(x0,x1,w0,w1,w2,y,N)
        return 
    x0 = -1
    x1 = -2
    w0 = 2
    w1 = -3
    w2 = -3
    y = 1.73
    N = 10
    back_propagation(x0,x1,w0,w1,w2,y,N)

    =============================NO 10 ============================= RESULT, ERROR 0.7310585786300049 0.9989414213699951 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.1964038040505485 w1: -2.607192391898903 w2: -3.1964038040505485 =============================NO 9 ============================= RESULT, ERROR 0.45551225254229843 1.2744877474577017 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.5125033261603766 w1: -1.9749933476792467 w2: -3.5125033261603766 =============================NO 8 ============================= RESULT, ERROR 0.11154856232322807 1.618451437676772 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.6729007336654407 w1: -1.6541985326691184 w2: -3.6729007336654407 =============================NO 7 ============================= RESULT, ERROR 0.045764387022953316 1.6842356129770466 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.7464513161952797 w1: -1.50709736760944 w2: -3.7464513161952797 =============================NO 6 ============================= RESULT, ERROR 0.02992416510794365 1.7000758348920564 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.7958023236502387 w1: -1.4083953526995214 w2: -3.7958023236502387 =============================NO 5 ============================= RESULT, ERROR 0.022426856120331854 1.7075731438796682 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.833238973256924 w1: -1.3335220534861503 w2: -3.833238973256924 =============================NO 4 ============================= RESULT, ERROR 0.0179962126173677 1.7120037873826324 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.863494101589214 w1: -1.2730117968215704 w2: -3.863494101589214 =============================NO 3 ============================= RESULT, ERROR 0.015053680787498781 1.7149463192125012 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.8889217263926086 w1: -1.222156547214781 w2: -3.8889217263926086 =============================NO 2 ============================= RESULT, ERROR 0.012951208624576063 1.717048791375424 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.9108715763814192 w1: -1.1782568472371597 w2: -3.9108715763814192 =============================NO 1 ============================= RESULT, ERROR 0.01137126330526271 1.7186287366947373 ----------------END---BP----Update w--------------------- x0: -1 x1: -2 y: 1.73 w0: 2.9301923279002793 w1: -1.1396153441994392 w2: -3.9301923279002793
  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/hbuwyg/p/15547167.html
Copyright © 2011-2022 走看看