人工智能基础-AI-第六次作业

1.梯度下降

        梯度下降是一种常用的优化算法,用于更新模型参数以最小化损失函数。它是一种迭代的优化方法,通过计算损失函数关于参数的梯度,并朝着梯度下降的方向更新参数值,直到达到收敛条件或达到最小化损失函数的要求。

        梯度下降是一种广泛应用的优化算法,在训练神经网络和其他机器学习模型时经常使用,通过迭代优化参数来最小化损失函数,使模型能够更好地拟合训练数据。

2.反向传播

        反向传播是一种用于有效计算神经网络中参数梯度的算法。它是训练深度神经网络的关键步骤之一,通过沿着网络的反向路径计算损失函数对于每个参数的梯度,并利用梯度下降等优化算法来更新参数。

        反向传播算法的关键是有效计算梯度,通过链式法则和计算图的方式,可以高效地计算出每个参数的梯度。它使得深度神经网络可以进行端到端的训练,并在大规模数据集上取得优秀的性能。

3.计算图

        计算图是一种图形化的表示方式,用于描述数学运算和函数之间的关系。它将复杂的数学计算过程以图的形式呈现,便于理解和计算梯度。

        计算图的主要目的是支持自动微分,即计算函数的导数或梯度。通过构建计算图,可以在反向传播算法中有效地计算参数梯度。在反向传播过程中,从输出节点开始,通过链式法则将梯度从上游传播到下游节点,最终计算得到各个参数的梯度。

4.使用Numpy编程实现例题

=====第0轮=====
正向传播: 0.47695 0.5287
损失函数: 0.21
=====第1轮=====
正向传播: 0.39688 0.3339
损失函数: 0.1
=====第2轮=====
正向传播: 0.35292 0.24607
损失函数: 0.06
=====第3轮=====
正向传播: 0.32545 0.20128
损失函数: 0.04
=====第4轮=====
正向传播: 0.30671 0.17356
损失函数: 0.03
=====第5轮=====
正向传播: 0.29314 0.15435
损失函数: 0.03
=====第6轮=====
正向传播: 0.28291 0.14005
损失函数: 0.02
=====第7轮=====
正向传播: 0.27495 0.12888
损失函数: 0.02
=====第8轮=====
正向传播: 0.26861 0.11985
损失函数: 0.02
=====第9轮=====
正向传播: 0.26348 0.11236
损失函数: 0.02

 

5.使用PyTorch的Backward()编程实现例题

import torch    
    
# 定义sigmoid函数    
def sigmoid(x):    
    return 1 / (1 + torch.exp(-x))    
    
# 定义均方误差损失函数    
def mse_loss(y_pred, y_true):    
    return ((y_pred - y_true) ** 2).mean()    
    
# 输入值    
x = torch.tensor([0.5, 0.3])    
    
# 目标输出值    
y_true = torch.tensor([0.23, -0.07])    
    
# 初始化权值    
w1 = torch.tensor([0.2, -0.4, 0.5, 0.6])    
w2 = torch.tensor([0.1, -0.5, -0.3, 0.8])    
    
# 前向传播    
h1 = sigmoid(torch.dot(x, w1))    
h2 = sigmoid(torch.dot(x, w2))    
y_pred = torch.tensor([h1, h2])    
    
# 计算损失    
loss = mse_loss(y_pred, y_true)    
    
# 反向传播    
loss.backward()    
    
# 输出梯度    
print("dL/dh1 = ", w1 * h1 * (1 - h1) * 2 * (y_pred[0] - y_true[0]))    
print("dL/dh2 = ", w2 * h2 * (1 - h2) * 2 * (y_pred[1] - y_true[1]))    
print("dL/dw1 = ", x * w1 * h1 * (1 - h1) * 2 * (y_pred[0] - y_true[0]))    
print("dL/dw2 = ", x * w2 * h2 * (1 - h2) * 2 * (y_pred[1] - y_true[1]))   

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值