找回密码
 立即注册
搜索
查看: 81|回复: 0

白话机器学习:从深度学习到机器学习的模型与步骤

[复制链接]

2万

主题

0

回帖

6万

积分

管理员

积分
64161
发表于 2024-10-23 15:44:44 | 显示全部楼层 |阅读模式
目录

第一章白话机器学习

【人工智能-概述-4】:白话深度学习——没有基础知识的新手也能理解机器学习的核心概念_文火冰堂(王文兵)的博客-CSDN博客

【人工智能-深度学习-7】:神经网络基础知识-人工神经网络ANN_文火冰堂(王文兵)的博客-CSDN博客

第二章 机器学习的模型和步骤 2.1 深度学习和机器学习

以上三个概念中:人工智能的概念最为广泛,因此有能力的机器具有“人类”般智能的技术和非技术(如伦理)领域都是人工智能。

机器获得“智能”的一个重要手段就是机器具有“自学习”的能力。一切使机器具有自学习能力的技术和算法都是机器学习。即通过针对某个问题领域建立数学模型并设计优化算法,机器可以根据输入的样本数据自动更新模型的参数,完成模型参数自动机器学习的过程。

深度学习是机器学习的一个特殊领域和特殊技术手段。其底层模型预测模型是由大量简单线性模型(y=wx+b)组成的复杂人工神经网络。通过设计模型优化算法,让机器根据输入样本自动更新神经网络的基本W和B参数,发现样本中深层隐藏的模式,完成深度学习过程。

百度百科:机器学习是一门多学科专业,涵盖了概率论知识、统计知识、近似理论知识和复杂算法知识。它以计算机为工具,致力于实时模拟人类的学习方法并整合现有内容。划分知识结构,有效提高学习效率。 [1]

机器学习有以下定义:

(1)机器学习是人工智能的科学。该领域的主要研究对象是人工智能,特别是如何在经验学习中提高特定算法(优化算法)的性能。

(2)机器学习是研究能够通过经验(样本)自动改进(自动迭代模型参数)的计算机算法。

(3)机器学习是利用数据或过去的经验(输入样本)来优化(优化算法、更新模型参数)计算机程序的性能标准的研究。

百度百科:深度学习(DL,Deep)是机器学习(ML,)领域的一个新的研究方向。它被引入到机器学习中,使其更接近最初的目标——人工智能(AI)。 [1]

深度学习是学习样本数据的内在模式和表示水平的过程。在这些学习过程中获得的信息对于解释文本、图像和声音等数据有很大帮助。其最终目标是让机器能够像人类一样分析和学习数据,识别文本、图像和声音等数据。深度学习是一种复杂的机器学习算法,在语音和图像识别方面取得了远远超过以往相关技术的效果。

2.2 机器学习模型

在上面的模型中,我们将详细阐述机器学习中的一些核心概念以及关键步骤和概念。

上图可以分为四部分:

1-x 分析业务领域需求并建立模型

2-x前向传播,前向计算

3-x反向传播,反向计算

4-x 模型导入

第 3 章 建模步骤 1-1:研究问题领域的业务需求

工程技术人员首先研究业务领域的需求,根据特殊业务领域(图形、视觉、自然语言处理等)的需求建立上述模型,包括上图中的所有功能模块,以及其余的由机器本身自动完成。

步骤1-2:业务领域用于测试的数据步骤1-3:模型部署第4章前向传播步骤2-1:样本数据集(张量)

对于机器来说,样本是经验数据,是机器学习的输入。

机器通过学习数据集来发现数据集中的规则和特征,并根据数据集的特征修正自身的模型参数(W,B)。

根据数据集的用途,数据集分为:

数据集以张量的形式提供给神经网络。

步骤2-2:数据预处理(张量运算)

在模型训练之前,需要对多个数据进行预处理(包括数据清洗),使其满足模型的需要。

大量张量运算

步骤2-3:构建神经网络模型(nn)

不同的业务系统需要不同的神经网络模型,不同的深度学习框架需要不同的神经网络构建方法。就是建立相应的神经网络模型,并用它来对输入数据进行预测。

步骤2-4:前向预测器()

根据当前模型的参数(可以是训练前、训练中、训练后的参数)进行预测得到的输出。

第五章 反向传播、反向求导(grad) 步骤3-1:损失函数(loss)

损失函数(loss)或成本函数(cost)。

它是利用数学方法来评估使用当前模型参数通过前向推导/传播得到的预测值与样本的标签值之间的距离差异或相似度的函数。

不同的应用场景有不同的损失函数形式!

它的核心本质是:用一个函数来识别所有样本点处的预测值与标签值之间的距离或误差之和。



常见的损失函数有:

(1)0-1损失函数(零一损失)

0-1损失是指预测值与目标值(标签值)不等于1,否则为0来表示两者之间的距离。

(2)绝对值损失函数

绝对值损失函数计算预测值与目标值之差的绝对值来表达它们之间的距离。

使用 |Yi-| 的绝对值表示预测点 (Xi, ) 和样本点 (Xi, Yi) 之间的距离或误差/偏差。

(3) 平方损失函数

平方损失损失函数计算预测值与目标值之差的平方来表达它们之间的距离。

使用 (Yi-)^2 表示预测点 (Xi, ) 与样本点 (Xi, Yi) 之间的距离或误差/偏差。

(4)直接使用预测值来识别距离

当输出值在0-1之间且标签值为0或1时,距离可以直接用输出值p或1-p表示。

(5)log对数损失函数

当输出值与标签值的差值在[0,1]之间时,为了扩大相邻点之间的距离,可以用log函数来表示它们的距离。

显然,经过对数处理后,[0,1]处的数据被放大到[0,+无穷大]

(5) 指数损失函数(loss)

以指数形式表达损失。

(6)交叉熵损失函数(Cross-loss)

交叉熵是一种通过预测值+log相结合来识别损失值的方法。

这个概念比较难理解,稍后会进一步讨论。

步骤3-2:优化器

如果说损失函数,以数学函数的形式表示,通过当前模型参数得到的数据集上所有预测值与数据集上所有标签值之间的误差之和。

那么优化器就是定义一定的算法来自动调整模型的参数,使得模型的预测值(输出值)与样本值的误差之和最小,然后求损失的最小值函数数值法(计算机计算方法最小值算法)。

(1)一元函数的损失函数(只有一个W参数)

(2)多元函数的损失函数(多个W、B参数)

(3) 常见优化器算法:

梯度下降法是最基本的优化器类型,是当今最流行的优化()算法,也是优化神经网络最常用的方法。

基本策略可以理解为“在有限的视距内寻找最快的下山路径”,因此每走一步,都要参考当前位置最陡的方向(即坡度)再进行下一步。可以形象地表达为:

目前,梯度下降方法主要有三种类型。它们之间的区别在于一次迭代所需的样本数量。

标准梯度下降法 (GD, ):使用所有样本计算每次迭代。

θ=θ−η⋅∇θJ(θ)

在每次迭代步骤中,都会使用训练集中的所有数据,并对每次计算的梯度进行平均。

η表示学习率LR

随机梯度下降法 (SGD, ) 在每次迭代计算中使用有限数量的随机样本。

θ=θ−η⋅∇θJ(θ;x(i);y(i))

对每个样本迭代更新一次,以损失一小部分精度和增加一定迭代次数为代价,换取整体优化效率的提升。增加的迭代次数远小于样本数量。

批量梯度下降(BGD,Batch),每次迭代,所有样本中的一组样本。

θ=θ−η⋅∇θJ(θ;x(i:i+n);y(i:i+n))

为了避免 SGD 和标准梯度下降中存在的问题,该方法仅对每批中的 n 个训练样本执行一次更新。 [每次更新所有梯度的平均值]



动量梯度下降

动量优化法是在梯度下降法基础上的改变,具有加速梯度下降的效果。

一般有标准动量优化方法和NAG( )动量优化方法。

它模拟物理学中动量的概念,累加之前的梯度(称为动量)来代替真实的梯度,作为当前的梯度。即通过在正确的梯度方向上加速,并在波动方向上抑制波动的大小,使得这次计算出的梯度会很小,以至于无法跳出局部极值。该方法还可以帮助跳出局部极值。

(唠叨)

NAG方法的收敛速度显着加快。波动也小很多。

:自适应渐变

前面的一系列优化算法有一个共同的特点,就是每个参数都以相同的学习率更新。但在实际应用中,每个参数的重要性肯定是不同的,因此我们需要对不同的参数动态地采用不同的学习率,以使目标函数收敛得更快。

方法是对每个参数每次迭代的梯度求平方并加上平方根,然后用基本学习率除以这个数来动态更新学习率。 【这样一来,每个参数的学习率就和它们的梯度有关,所以每个参数的学习率是不同的!这就是所谓的自适应学习率】

一大优点是可以避免手动调整学习率,比如将初始默认学习率设置为0.01,然后不管它,让它在学习过程中自行改变。当然它也有缺点,就是计算时需要计算分母上梯度的平方和。由于所有参数都是平方的【在上式推导中没有写成梯度的平方。我感觉上面公式的推导中忘记写了】必须是正数,这样会导致训练过程中分母的累加和越来越大。这样,在学习后期,网络更新的能力会越来越弱,学习更多知识的能力也会越来越弱,因为学习率会变得极小【就会停止学习】早期的]。为了解决此类问题,再次提出算法。

它将累加之前所有的梯度平方,并且只累加固定大小的项【实际上相当于指数移动平均线,只使用前面步骤的平均梯度平方】,并且不直接存储这些项,而只是近似对应计算 平均值【这就是指数移动平均线的优点】

该算法的全称是Root Mean Prop。

上述优化算法中,虽然初步解决了优化中摆动幅度大的问题。所谓摆幅,就是优化时参数更新后的变化范围。如下图所示,蓝色线是优化算法采取的路线,绿色线是优化算法采取的路线。

为了进一步优化损失函数更新时摆动幅度过大的问题,进一步加快函数的收敛速度,算法采用权重W和偏置B的梯度的微分平方加权平均。

亚当

Adam = +,顾名思义,Adam整合了SGD的一阶动量和二阶动量。

SGD可以利用类似于物理学中的动量来积累梯度,可以使收敛速度更快,波动幅度更小。 Adam结合了他们的优点,取得了更好的性能结果。

不同优化算法的直观比较

在图3中,我们可以在损失表面等高线图中看到不同算法的学习过程。它们都从同一点开始,但沿着不同的路径到达最低点。其中, ,一开始就找到了正确的方向,收敛得很快; SGD找到了正确的方向,但收敛速度非常慢; SGD-M和NAG最初都偏离了航向,但最终都能纠正到正确的方向,SGD-M的偏转惯量大于NAG。

图 4 显示了不同算法在鞍点处的性能。这里,SGD、SGD-M、NAG都受到鞍点的严重影响,尽管后两者最终逃离了鞍点;而 、 和 NAG 很快就找到了正确的方向。

不同算法之间的主要区别是:

速度的提升可以概括为以下几个方面:

- 利用动量保持前进方向();

- 为每个维度参数设置不同的学习率:;向梯度连续性强的方向加速前进

- 通过历史迭代的平均值对学习率进行归一化:突出显示稀有梯度;

步骤3-3:模型训练(机器学习、深度学习)

优化算法仅提供一种寻找损失函数最小值的方法。这个方法还是需要实施才能达到目的。实施涉及:

(1) 如何提供样本数据

(2) 如何设置初始点

(3) 初始学习率如何设置

(4)如何重复调用迭代算法进行重复迭代

(5)如何设置迭代收敛的条件

(6)如何记录迭代的中间过程

以上问题均由模型训练负责。

步骤3-4:模型验证(验证数据集)

训练好的模型需要进行验证,以确认模型是否达到了预设的目标。这就是模型验证。

只有通过验证的模型才能服务于特定的业务。

验证失败的模型需要进一步的训练和修正。

第六章 模型导入

训练模型需要大量时间和计算能力。并不是所有的模型参数都需要自己训练,也可以直接导入别人训练的模型。这就是模型的导入。

关于模型导入,我们稍后单独讨论。

作者主页(文火冰堂硅基工坊):文火冰堂(王文兵)的博客_文火冰堂硅基工坊_CSDN博客
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|【远见汇智】 ( 京ICP备20013102号-17 )

GMT+8, 2025-5-6 06:57 , Processed in 0.096798 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表