【王俊杰de人工智能实战课】第2次作业

Brief Guide

项目 内容
这个作业属于哪个课程 北航人工智能实战课
这个作业的要求在哪里 第二次作业要求
我在这个课程的目标是 获得机器学习相关的完整项目与学习经验;通过与人工智能行业的大牛们聊天了解行业不同方向的发展以便进行职业规划;为转CS积累基础知识并获得相关课程的成绩
这个作业在哪个具体方面帮助我实现目标 系统学习机器学习神经网络的算法,踏出人工智能的第一步!
作业正文… 【王俊杰de人工智能实战课】第2次作业
其他参考文献… 微软AI教育GitHub

Main Homework

代码

建立Z函数及Delta函数

单独创建函数方便修改以适用其他不同的函数

def Z(w,b):  
    x = 2*w+3*b  
    y = 2*b+1  
    z = x*y  
    return z
    
def Delta(w,b,dz):  
    dz_db = x*2+y*3  
    dz_dw = y*2  
    db = dz/2/dz_db  
    dw = dz/2/dz_dw  
    return dw,db

主程序

反复迭代,直至差值小于设定值
输出包括第几次迭代,本次迭代的差值,当前的z、w、b

w = 3  
b = 4  
z0 = 150  
diff_z = 0.00001  
z = Z(w,b)  
dz = abs(z-z0)  
i = 0  
print(i,'th time\t Difference of z is:',dz,'\nCurrent z is:',z,'\t Current w is:',w,'\t Current b is:',b)  
while (dz>diff_z):  
    dw,db = Delta(w,b,dz)  
    w-=dw  
    b-=db  
    z = Z(w,b)  
    dz = abs(z-z0)  
    i+=1  
    print(i,'th time\t Difference of z is:',dz,'\nCurrent z is:',z,'\t Current w is:',w,'\t Current b is:',b)  
print('Calculation Finnished!')  
print('Final w is: ',w)  
print('Final b is: ',b)  
print('Final z is: ',z)

运行结果

0 th time    Difference of z is: 12 
Current z is: 162    Current w is: 3     Current b is: 4
1 th time    Difference of z is: 0.18140589569162557 
Current z is: 150.18140589569163     Current w is: 2.6666666666666665    Current b is: 3.9047619047619047
2 th time    Difference of z is: 0.005526139576176092 
Current z is: 150.00552613957618     Current w is: 2.661627614008566     Current b is: 3.903322175431019
3 th time    Difference of z is: 0.0001696432812252624 
Current z is: 150.00016964328123     Current w is: 2.66147411013145      Current b is: 3.903278317180414
4 th time    Difference of z is: 5.2089834525759215e-06 
Current z is: 150.00000520898345     Current w is: 2.6614693978180823    Current b is: 3.9032769708051664
Calculation Finnished!
Final w is:  2.6614693978180823
Final b is:  3.9032769708051664
Final z is:  150.00000520898345

计算结果

总共迭代4次
误差为:5.2089834525759215e-06 < 1.0e-5
w为:2.6614693978180823
b为:3.9032769708051664

思考与比较

结果比较

单变量的迭代次数为5次,双变量迭代比其少1次
单变量的运算结果为w=2.661469, b=3.903277,与双变量的运算结果相同,说明算法正确性没有问题

相关思考

增加一个变量一起反向传播、梯度下降可以使得运算速度增加、运算次数减少,但变化不够明显,即效率还不是太高。
考虑到计算Δb与Δw时是将Δz的误差平分给二者的,这可能会造成Δb相较于Δw非常小,但仍与Δw分的相同的误差值,其实这种情况下效率最高的方法应该是Δb分得的误差比Δw小。
根据这种思想,可以在分配Δz误差时,按照前一次的Δb与Δw的比值分,越大分的越多(第1次分的时候就按1/2计)。

猜你喜欢

转载自www.cnblogs.com/WJJ98-BUAA/p/10552844.html