我发现这种数学问题,国内的教材,就会给你整的罗里吧嗦,说不清楚,让人非常难理解

激活函数:是调整模型的,也就是σ。来调整模型的权重,使需要的神经元高亮,

损失函数(loss function)或代价函数(cost function):用来评价模型好坏的,在epoch每次迭代的时候展示

梯度下降法(gradient descent)是一个最优化算法,常用于机器学习和人工智能当中用来递归性地逼近最小偏差模型

 前言:网络模型训练的实质,就是让损失函数最小

 

一、模型如何训练出来的

  

 

二、损失函数:

  定义:1,它是用来衡量模型预测值实际标签之间差异的函数

     2,输出值和最终结果之间的差 的平方。也成为loss,损失,取平均

     

  降低:

   1.反向传播,计算梯度

   2.更新模型参数(权重(weights)和偏置(biases),nn.Linear里),利用优化算法((SGD)、Adam),根据计算出的梯度更新,使得损失函数值逐渐减小

   3.多次迭代(多个 epoch),模型达到最好

    先用一维函数,做铺垫,通过斜率可以找到函数的最小值

    

    

  

    优化算法图解

    SGD:通常需要手动调整学习率,并且在训练过程中保持不变或按照预定的时间表进行调整。

    Adam:自适应地调整每个参数的学习率,可以根据每个参数的历史梯度表现来动态调整学习率。

梯度下降

梯度:损失函数对模型参数的偏导数,表示损失函数在参数空间中的变化率

定义:每次迭代,根据梯度信息更新模型参数,使得损失函数值减小

 

损失函数的问题 

 过拟合

  训练损失迅速下降并趋近于0,而验证损失在较高水平波动,表明模型在训练集上表现非常好,但在验证集上表现很差。这是典型的过拟合现象

  

 

 梯度消失

  梯度消失是指在反向传播过程中,梯度在向后传递时逐渐变得非常小,以至于在靠近输入层的参数几乎没有更新

  判断:

  

 

 梯度爆炸

  反向传播过程中,梯度在向后传递时迅速变得非常大,导致模型参数更新过大。损失函数变大

 

  损失函数不收敛

 

 

 损失函数保存图片

epochs = list(range(1, num_epochs + 1))
train_losses = []  # 用于存储每个epoch的训练损失
plt.plot(epochs, train_losses, label='Training Loss')
plt.title('Training Loss Over Epochs')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.savefig('training_loss_plot.png')

  

pytorch里的损失函数

 

 

 

 

 

 

 三、激活函数

  权重w,激活值a,偏置b

 定义:

  引入非线性特性的函数。它们决定了一个神经元的输出是否应该被激活

 作用:

  前向传播时候:引入非线性,使得神经网络能够学习和表示复杂的数据模式。如果没有激活函数,神经网络的每一层仅仅是线性变换的叠加(y=ax+b),最终的输出还是线性变换,无法处理非线性问题

  反向传播时候:反向传播过程中需要计算损失函数对各参数的梯度,以进行梯度下降优化,更新参数

 分类:

 

 案例:

  

 

四、归一化

posted on 2023-03-01 10:47  黑逍逍  阅读(55)  评论(0编辑  收藏  举报