人工智能實戰第二次做業_李大

項目 內容
課程 人工智能實戰2019
做業要求 第二次做業
個人課程目標 第一次做業
本次做業做用 熟悉BP求導的實現過程

做業要求:

  • 閱讀線性反向傳播,用python實現迭代過程
  • 考慮從新計算貢獻值的影響

實現

target_z = 150.0
e = 1e-5
w = 3.0
b = 4.0
z = 162.0

count = 0

while (abs(target_z - z) > e):
    x = 2 * w + 3 * b
    y = 2 * b + 1
    z = x * y
    delta_b = ((z - target_z) / ((2 * x + 3 * y) * 2))
    delta_w = ((z - target_z) / ((2 * y) * 2))
    w = w - delta_w
    b = b - delta_b
    count += 1
    print("Iteration : %d -- w = %f, b = %f, z = %.8f, error = %.8f" % (count, w, b, z, abs(target_z - z)))

print("---------------------------------")
print("Total iteration times : %d" %(count))
print("w = %f, b = %f, z = %.8f, error = %.8f" % (w, b, z, abs(target_z - z)))

結果

Iteration : 1 -- w = 2.666667, b = 3.904762, z = 162.00000000, error = 12.00000000
Iteration : 2 -- w = 2.661519, b = 3.903263, z = 150.18140590, error = 0.18140590
Iteration : 3 -- w = 2.661517, b = 3.903263, z = 150.00004434, error = 0.00004434
Iteration : 4 -- w = 2.661517, b = 3.903263, z = 150.00000000, error = 0.00000000
---------------------------------
Total iteration times : 4
w = 2.661517, b = 3.903263, z = 150.00000000, error = 0.00000000

從新計算貢獻值的做用

  • 反向傳播的迭代過程是在輸出變量關於輸入變量曲面上找到一條最快降低的路徑,從新計算貢獻值更接近梯度降低過程(步長無限小的狀況下是理想梯度降低過程),故會收斂得更快。
相關文章
相關標籤/搜索