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


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

  • 相关阅读:
    Nginx学习笔记08——Nginx动静分离
    求最大公约数和最小公倍数
    C语言基础一
    60从零开始学Java之与数字相关的类有哪些?
    Pinely Round 1 (Div. 1 + Div. 2)
    flutter开发实战-防抖Debounce与节流Throttler实现
    [附源码]java毕业设计疫情背景下社区公共卫生服务系统
    java毕业设计球馆预约管理系统mybatis+源码+调试部署+系统+数据库+lw
    深入理解计算机网络-9IP地址和子网3
    Vue中数据代理与事件处理
  • 原文地址:https://blog.csdn.net/qq_43504141/article/details/126833566