• 梯度下降、损失函数、神经网络的训练过程


    用这篇文章解释一下我在了解深度学习时一些困惑我的点。
    首先,我们都知道有的深度学习有一步为梯度下降,那什么是梯度下降
    答: 梯度下降可以理解为导数下降。
    为什么要进行梯度下降呢!?或者说进行导数下降的操作有什么用呢?
    答: 梯度下降是机器学习算法中求解损失函数最常用的优化算法。可以这么说,梯度下降是为了求某个函数最小值时自变量对应的取值,这里的某个函数指的就是损失函数,也就是说,梯度下降是为了得到损失函数最小时所对应的自变量。
    你又有疑问了,损失函数是什么
    答:损失函数是以算法为自变量,以误差值为函数值的函数。那么梯度下降是为了找到损失函数导数最小值时对应的自变量,如果讲损失函数看成一般的二元函数的话,也就是找到损失函数最低点的自变量,即我们想要的算法。
    你可能会问,直接找到导数等于0的地方找最小值不就行了,为啥要梯度下降
    答:这个方法听起来最简单,时间复杂度也是最高的,如果数据很多的话,等你找到导数为0的点的时候可能深度学习都被淘汰了。那梯度下降是怎么求的呢?不断地改变自变量的值,使导数的绝对值一直在变化。当导数小于0时,就要让x大一点点,当导数大于0时,就要让x小一点点,这样做是为了不断的试探来找到导数接近0的自变量。
    神经网络的训练过程是什么?
    答:

    1. 定义网络的结构,包含输入,输出,隐藏层
    
    2. 初始化权重和偏置。
    
    重复以下步骤:
    
    3. 前向传播 ( forward propagation ),得到预测值
    
    4. 计算损失函数 ( loss function ),计算预测误差
    
    5. 反向传播 ( back propagation ),更新权重和偏置
    
    直到最小化损失函数,且没有过拟合训练数据,则训练结束。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    为什么要进行权重初始化?
    答:不初始化的话会造成梯度消失或梯度爆炸。
    常见的初始化方法:
    1、pre-training 预训练
    2、Xavier 初始化
    3、He 初始化
    4、Batch Normalization+随机初始化

  • 相关阅读:
    mojo语言 入门体验 环境安装
    Linux系统——MySQL安装与卸载(CentOS7 超详细演示)
    Java多线程下载分析方法
    ELementUI之CURD及表单验证
    axios回调函数中this指向已经改变的解决方法
    netty系列之:我有一个可扩展的Enum你要不要看一下?
    SpringBoot实现定时任务的三种方式
    安全狗入选2023年国产云原生安全技术代表厂商
    已知点的经纬度坐标计算/读取DEM高程信息/海拔高度
    时间序列预测实战(十六)PyTorch实现GRU-FCN模型长期预测并可视化结果
  • 原文地址:https://blog.csdn.net/qq_43504141/article/details/126833566