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
  • 相关阅读:
    mysql触发器
    mysql存储过程
    怎样理解阻塞非阻塞与同步异步的区别?
    常用的排序算法的时间复杂度和空间复杂度
    Struts+Hibernate+Spring面试题合集及答案
    springMVC面试题
    Mybatis面试题合集及答案
    Java基础面试题集(二)
    Java基础面试题集(一)
    Spring----EJB
  • 原文地址:https://www.cnblogs.com/hbuwyg/p/15547167.html
Copyright © 2011-2022 走看看