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


    用这篇文章解释一下我在了解深度学习时一些困惑我的点。
    首先,我们都知道有的深度学习有一步为梯度下降,那什么是梯度下降
    答: 梯度下降可以理解为导数下降。
    为什么要进行梯度下降呢!?或者说进行导数下降的操作有什么用呢?
    答: 梯度下降是机器学习算法中求解损失函数最常用的优化算法。可以这么说,梯度下降是为了求某个函数最小值时自变量对应的取值,这里的某个函数指的就是损失函数,也就是说,梯度下降是为了得到损失函数最小时所对应的自变量。
    你又有疑问了,损失函数是什么
    答:损失函数是以算法为自变量,以误差值为函数值的函数。那么梯度下降是为了找到损失函数导数最小值时对应的自变量,如果讲损失函数看成一般的二元函数的话,也就是找到损失函数最低点的自变量,即我们想要的算法。
    你可能会问,直接找到导数等于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+随机初始化

  • 相关阅读:
    【LeetCode】回溯题解汇总
    【华为OD机试真题 JS】贪吃蛇
    【Spring】核心部分之IOC:通过列举代码例子,从底层刨析,深入源码,轻轻松松理解Spring的核心IOC,IOC有这一篇足以
    vue2添加(修改)数据后需要刷新才能显示的问题
    【MySQL数据库和JDBC编程】第四章:MySQL索引和事务
    JS笔记-函数
    Linux常用命令——find命令大全
    计算机网络(四)
    UE4 顶点网格动画播放后渲染模糊问题
    Flink中的数据倾斜与解决方案实践
  • 原文地址:https://blog.csdn.net/qq_43504141/article/details/126833566