人工智能基础概念汇总

神经网络基础概念

神经元(Neuron)

在神经网络中,在收到输入的信号之后,神经元通过处理,然后把结果输出给其它的神经元或者直接作为最终的输出。

加权/权重(Weights)

当输入信号进入到神经元后,会被乘以相应的权重因子。举例来说,假设一个神经元有两个输入信号,那么每个输入将会存在着一个与之相应的权重因子。在初始化网络的时候,这些权重会被随机设置,然后在训练模型的过程中再不断地发生更改。

在经过训练后的神经网络中,一个输入具有的权重因子越高,往往意味着它的重要性更高,对输出的影响越大。另一方面,当权重因子为0时意味着这个输入是无价值的。

偏置/偏倚(Bias)

除了权重之外,输入还需要经过另外一种线性处理,叫做偏置。通过把偏置b与加权后的输入信号a*W1直接相加,以此作为激活函数的输入信号。

过拟合(Over-fitting)

过拟合(over-fitting)是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。过拟合可理解为模型对特征信息提取过多,把数据噪声当作规律学习,评判标准过于严格。表现为:训练误差低,泛化误差高。

与过拟合相对应的是欠拟合(underfitting),欠拟合可理解为模型对训练数据的特征提取不充分,没有学习到数据背后的规律,或者评判标准过于宽松,导致模型在测试数据集上无法做出正确判断。表现为:训练误差和泛化误差都相对较高。

当样本特征较少、模型复杂度较低时,对样本的特征提取不够充分,就可能导致欠拟合问题。

解决过拟合方法:增大数据量;正规化;简化神经网络结构

激活函数(重要)

激活函数旨在帮助网络学习数据中的复杂模式,类似于人类大脑中的神经元模型,激活函数决定了向像一个传经元传递的数值。

Sigmoid函数

作为最常用的激活函数之一

sigmoid函数为值域在0到1之间的光滑函数,当需要观察输入信号数值上微小的变化时,与阶梯函数相比,平滑函数(比如Sigmoid函数)的表现更好。

Sigmoid的公式形式:

机器学习中一个重要的预测模型逻辑回归(LR)就是基于Sigmoid函数实现的。LR模型的主要任务是给定一些历史的{X,Y},其中X是样本n个特征值,Y的取值是{0,1}代表正例与负例,通过对这些历史样本的学习,从而得到一个数学模型,给定一个新的X,能够预测出Y。LR模型是一个二分类模型,即对于一个X,预测其发生或不发生。但事实上,对于一个事件发生的情况,往往不能得到100%的预测,因此LR可以得到一个事件发生的可能性,超过50%则认为事件发生,低于50%则认为事件不发生。

线性整流函数(ReLU-Rectified Linear Units)

近来的神经网络倾向于使用ReLU替代掉sigmoid函数作为隐层的激活函数,它的定义如下:

f(x) = max(x,0)

当x大于0时,函数输出x,其余的情况输出为0。

使用ReLU函数的好处是,对于所有大于0的输入,导数是恒定的,这能够加快训练网络的速度。

softmax函数

动手学深度学习——softmax回归(原理解释+代码详解)-CSDN博客

softmax详解-CSDN博客

Softmax 函数的特点和作用是什么

softmax激活函数通常应用在分类问题的输出层上。

它与Sigmoid函数相似,唯一的不同是softmax函数输出结果是归一化的。

Softmax是一种数学函数,通常用于将一组任意实数转换为表示概率分布的实数。其本质上是一种归一化函数,可以将一组任意的实数值转化为在[0, 1]之间的概率值,因为softmax将它们转换为0到1之间的值,所以它们可以被解释为概率。如果其中一个输入很小或为负,softmax将其变为小概率,如果输入很大,则将其变为大概率,但它将始终保持在0到1之间。

Softmax是逻辑回归的一种推广,可以用于多分类任务,其公式与逻辑回归的sigmoid函数非常相似。只有当分类是互斥的,才可以在分类器中使用softmax函数,也就是说只能是多元分类(即数据只有一个标签),而不能是多标签分类(即一条数据可能有多个标签)。

许多多层神经网络输出层的最后一层是一个全连接层,输出是一个实数向量,这个向量通常代表了每个类别的得分或置信度。为了将这些得分转换为概率分布,通常会使用softmax函数。因为它将分数转换为规范化的概率分布,可以显示给用户或用作其他系统的输入。所以通常附加一个softmax函数在神经网络的最后一层之后。

softmax又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类

import tensorflow as tf

value=tf.constant([1,1,2,4,6,8], dtype=tf.float32)
softmax0=tf.nn.softmax(value)
maxvalueindex = tf.argmax(softmax0)
with tf.Session() as sess:
    print("softmax0 value: ", sess.run(softmax0))
    print("max value index: ", sess.run(maxvalueindex))

softmax0 value:  [7.87494471e-04 7.87494471e-04 2.14063213e-03 1.58172492e-02
 1.16874546e-01 8.63592565e-01]
max value index:  5

分子:通过指数函数,将实数输出映射到零到正无穷。

分母:将所有分子结果相加,进行归一化。

正向传播(forward propagation)

正向传播是指信号从输入层经过隐藏层到输出层的传输过程。在正向传播中,信号是沿着单一方向进行传播,即输入层给隐藏层提供输入,进而最终产生相应的输出。

反向传播/BP算法(back propagation)(重要)

李宏毅机器学习课程笔记-5.3神经网络中的反向传播算法

【深度学习篇】:前向传播(forward)和反向传播(backward)

反向传播(back propagation)

反向传播算法详解

BP算法是Geoffrey Hinton于1988年在论文《Learning representations by back-propagating errors》中提出。它通过反向传播偏差来计算神经网络的梯度,进而更新参数进行模型训练。

反向传播是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。

BP网络是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的神经网络模型之一。它的基本思想是输入层接收输入特征向量,通过激活函数将其转换为权重向量,输入到隐藏层进行处理,然后通过激活函数将处理后的权重向量传递到输出层,最终输出预测结果。BP神经网络的训练过程包括数据预处理、网络结构设计、模型训练、模型评估和模型优化等步骤。在训练过程中,通常使用梯度下降等优化算法来更新模型参数。BP神经网络具有良好的泛化能力和鲁棒性,已经被广泛应用于各种领域,例如自然语言处理、机器学习、图像处理等。

在定义一个神经网络的过程中, 每个节点会被随机地分配权重和偏置。一次迭代后,我们可以根据产生的结果计算出整个网络的偏差,然后用偏差结合成本函数的梯度,对权重因子进行相应的调整,使得下次迭代的过程中偏差变小。这样一个结合成本函数的梯度来调整权重因子的过程就叫做反向传播。

在反向传播中,信号的传递方向是朝后的,误差连同成本函数的梯度从输出层沿着隐藏层传播,同时伴随着对权重因子的调整。

损失函数(Loss Function)(重要)

深度学习基础-损失函数详解 - 嵌入式视觉 - 博客园

【机器学习】损失函数(Loss Function)全总结(2023最新整理)关键词:Logistic、Hinge、Exponential、Modified Huber、Softmax、L1、L2正则化

深度学习之——损失函数(loss)_深度学习loss-CSDN博客

一文看尽深度学习中的15种损失函数

在机器学习中,损失函数是代价函数的一部分,而代价函数是目标函数的一种类型。

  • 损失函数(loss function): 用于定义单个训练样本预测值与真实值之间的误差

  • 代价函数(cost function): 用于定义单个批次/整个训练集样本预测值与真实值之间的累计误差。

  • 目标函数(objective function): 泛指任意可以被优化的函数。

损失函数定义:损失函数是用来量化模型预测值f(x)和真实值Y差异的一个非负实数函数,通常使用L(Y, f(x))来表示,其和优化算法紧密联系。损失函数越小,模型的鲁棒性就越好。深度学习算法优化的第一步便是确定损失函数形式。

损失函数大致可分为两种:回归损失(针对连续型变量)和分类损失(针对离散型变量)。

常用的减少损失函数的优化算法是“梯度下降法”(Gradient Descent)。

交叉熵(Cross Entropy)函数-分类损失

大白话理解——交叉熵

史上最全交叉熵损失函数详解

交叉熵损失函数(Cross Entropy Loss)

交叉熵损失(Cross-Entropy Loss) 又称为对数似然损失(Log-likelihood Loss)、对数损失,二分类时还可称之为逻辑斯谛回归损失(Logistic Loss)。

交叉熵其实就是运用了熵的概念先把模型转化为熵的数值然后用数值去比较模型之间的差异。在学习深度学习的时候,经常使用交叉熵损失函数,交叉熵常用于衡量真实概率分布与预测概率分布之间的差异,用于评估分类模型的性能。

其中,C 是类别数,y 是真实标签的 one-hot 编码,p 是模型对每个类别的预测概率。同样的,如果模型对真实标签的预测越接近,损失函数越小,否则损失函数越大。

交叉熵损失函数的优点在于,它不仅可以用于训练分类模型,还可以用于训练神经网络模型。在神经网络中,交叉熵损失函数可以用来衡量网络输出和真实标签之间的差异,通过反向传播算法更新网络参数,从而优化模型。交叉熵损失函数还具有平滑性和凸性质,能够保证优化过程的稳定性和收敛性。

回归损失

MAE损失

平均绝对误差(Mean Absolute Error,MAE)是用于回归模型的最简单但最强大的损失函数之一。

MSE损失

均方误差(Mean Square Error, MSE)几乎是每个数据科学家在回归损失函数方面的偏好,这是因为大多数变量都可以建模为高斯分布

Huber损失

Huber Loss 结合了 MAE 的稳健性和 MSE 的稳定性,本质上是 MAE 和 MSE 损失中最好的。对于大误差,它是线性的,对于小误差,它本质上是二次的

梯度下降(Gradient Descent)(重要)

什么是梯度下降

机器学习(六):梯度下降

知乎 - 有问题,就会有答案

机器学习实战教程(三):梯度下降-CSDN博客

【梯度下降法】详解优化算法之梯度下降法(原理、实现)_梯度下降优化算法-CSDN博客

梯度下降算法实现原理(Gradient Descent)

梯度下降是一种最小化成本函数的优化算法。

在梯度下降中,从起始点x开始,一次移动一点,比如说移动delta h,然后将位置信息更换为x-delta h,如此重复下去,直到达到局部的极小值,此时认为极小值就是成本最小的地方。数学上说,沿着函数的负梯度运动就能得到函数的局域最小值。

算法详解

梯度下降的具体算法实现过程是:

  1. 确定模型的假设函数和损失函数

  2. 相关参数的初始化,包括:参数、算法终止距离和步长

  3. 确定当前位置损失函数的梯度

  4. 用步长乘以梯度,得到当前位置下降的距离

  5. 确定是否所有参数梯度下降的距离都小于算法终止距离,如果小于则算法终止,否则进行下一步

  6. 更新所有参数,更新完毕转到步骤1

批量梯度下降(Batch Gradient Descent BGD)

上面所介绍的算法其实就是批量梯度下降。需要首先计算所有数据上的损失值,然后再进行梯度下降,具体的操作步骤是:遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数,都要把数据集里的所有样本计算一遍,计算量大,计算速度慢,不支持在线学习。

随机梯度下降(Stochastic Gradient Descent SGD)

不使用全量的样本来计算梯度,而使用单一样本来近似估计梯度,可以极大地减少计算量,提高计算效率。具体的操作步骤是:每次从训练集中随机选择一个样本,计算其对应的损失和梯度,进行参数更新,反复迭代。

这种方式在数据规模比较大时可以减少计算复杂度,从概率意义上来说的单个样本的梯度是对整个数据集合梯度的无偏估计,但是它存在着一定的不确定性,因此收敛速率比批梯度下降得更慢。

小批量梯度下降(Mini-batch Gradient Descent)

为了克服上面两种方法的缺点,采用的一种折中手段:将数据分为若干批次,按批次更新参数,每一批次中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性,另一方面,因为批的样本数比整个数据集少了很多,计算量也不是很大。

每次使用多个样本来估计梯度,这样可以减少不确定性,提高收敛速率,其中每次迭代选取的样本数量称为批大小(batch size)。

学习速率(learning rate)(重要)

【深度学习基础】学习率(learning rate)的理解与分类_深度学习学习率-CSDN博客

理解深度学习中的学习率及多种选择策略

学习速率定义为在每次迭代过程中对成本函数的最小化次数。简单来说,学习速率就是指朝着成本函数最小值的下降速率。选择学习速率需要很谨慎,过大会导致可能越过最优解,过小会导致收敛花费太多的时间。

分批(Batches)

当在训练一个神经网络的时候,相对于一次性将所有的数据全输入进去,有一个更好的方法:先将数据随机地分为几个大小一致的数据块,再分批次输入。跟一次性训练出来的模型相比,分批训练能够使模型的适用性更好 。

周期(epochs)

一个周期表示对所有的数据批次都进行了一次迭代,包括一次正向传播和一次反向传播,所以一个周期/纪元就意味着对所有的输入数据分别进行一次正向传播和反向传播。

训练网络周期的次数是可以选择的,往往周期数越高,模型的准确性就越高,但是,耗时往往就越长。同样你还需要考虑如果周期/纪元的次数过高,那么可能会出现过拟合的情况。

Dropout(重要)

Dropout详解

Dropout是一个可以阻止网络过拟合的规则化方法。就像它的名字那样,在训练过程中隐藏的某些特定神经元会被忽略掉(drop)。这意味着网络的训练是在几个不同的结构上完成的。

这种dropout的方式就像是一场合奏,多个不同结构网络的输出组合产生最终的输出结果。

归一化(重要)

深度学习-各种归一化(Batch Norm、Layer Norm、Group Norm、InstanceNorm、Spatially-Adaptive Norm)_归一化操作-CSDN博客

batchNorm解析_batchnorm 详解-CSDN博客

数据的归一化操作是数据处理的一项基础性工作,在一些实际问题中,我们得到的样本数据都是多个维度的,即一个样本是用多个特征来表示的,数据样本的不同特征可能会有不同的尺度,这样的情况会影响到数据分析的结果。为了解决这个问题,需要进行数据归一化处理。原始数据经过数据归一化后,各特征处于同一数量级,适合进行综合对比评价。

上图为四种归一化方法,其中N为批量,C为通道,(H,W)表示feature map,蓝色像素代表相同的均值和方差归一化.将输入的图像shape记为[N, C, H, W],这几个方法主要的区别就是在,

BatchNorm是在batch上,对NHW做归一化,对小batchsize效果不好;

LayerNorm在通道方向上,对CHW归一化,主要对RNN作用明显;

InstanceNorm在图像像素上,对HW做归一化,用在风格化迁移;

GroupNorm将channel分组,然后再做归一化;

归一化的一般流程是数据先减去均值再除以方差,即先归一化到[0, 1]范围内,然后再将数据进行特定的仿射变换,这个仿射变换的参数就是我们希望网络学到的参数,仿射变换的过程称为调制**(modulate)。本来已经归一化的数据经过仿射变换就不再是normalized**,而是denormalized,

批量归一化(Batch Normalization,BN)

在训练过程中,每层输入的分布不断的变化,这使得下一层需要不断的去适应新的数据分布,在深度神经网络中,这让训练变得非常复杂而且缓慢。对于这样,往往需要设置更小的学习率、更严格的参数初始化。通过使用批量归一化(Batch Normalization, BN),在模型的训练过程中利用小批量的均值和方差调整神经网络中间的输出,从而使得各层之间的输出都符合均值、方差相同高斯分布,这样的话会使得数据更加稳定,无论隐藏层的参数如何变化,可以确定的是前一层网络输出数据的均值、方差是已知的、固定的,这样就解决了数据分布不断改变带来的训练缓慢、小学习率等问题。

层归一化(Layer Normalization)

批量归一化是对一个中间层的单个神经元进行归一化操作,因此要求小批量样本的数量不能太小,否则难以计算单个神经元的统计信息。层归一化(Layer Normalization)是和批量归一化非常类似的方法。和批量归一化不同的是,层归一化是对某一层的所有神经元进行归一化

Group Normalization

Group Normalization(GN)是针对Batch Normalization(BN)在batch size较小时错误率较高而提出的改进算法,因为BN层的计算结果依赖当前batch的数据,当batch size较小时(比如2、4这样),该batch数据的均值和方差的代表性较差,因此对最后的结果影响也较大。

GN 将通道分成几组,并在每组内计算归一化的均值和方差。 GN 的计算与批量大小无关,其准确性在很宽的批量大小范围内都很稳定。简单讲就是要使归一化操作的计算不依赖batch size的大小。

Instance Normalization

网络正则化(Network Regularization)(重要)

深度学习(DL)-2.1 深度学习优化技巧——网络正则化、归一化、参数初始化 (Regularization、Normalization and Initialization)_深度学习的正则化和归一

 神经网络与深度学习-网络正则化_数据增强也是一种深度神经网络正则化技术-CSDN博客

深度学习系列四——优化篇之网络正则化-CSDN博客

网络优化与正则化

什么是 L1 L2 正规化 正则化 Regularization (深度学习 deep learning)_哔哩哔哩_bilibili

广义上来看,任何减小模型泛化误差的方法都可视为正则化,一些常用的正则化策略包括范数惩罚,数据集增强,多任务学习,Early Stopping,稀疏表示,Ensemble,Dropout,对抗训练等。

当算法在训练集上表现良好但在测试集上表现不佳时,该算法被称为在训练数据上过拟合。为了解决这个问题,我们必须使我们的模型概括为使用各种正则化技术完成的训练数据。用于增加训练误差为代价来减少测试集上的误差的策略或技术统称为正则化。

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值