Batch size是指一次迭代过程中,输入到神经网络的样本数量。
batchsize太小的缺点:
①耗时长,训练效率低。
②训练数据就会非常难收敛,从而导致欠拟合。
batchsize增大的优缺点
①大的batchsize减少训练时间
②大的batchsize所需内存容量增加
③大的batch size梯度的计算更加稳定
④大的batchsize可能导致模型泛化能力下降
一般需要考虑训练速度、泛化误差和模型收敛性等因素,根据模型的复杂度、训练数据集的大小、计算资源的可用性等因素进行调整,并结合实际情况进行优化调整。
batchsize太小的缺点&随着batchsize逐渐增大的优缺点&如何平衡batchsize的大小
学习率控制了模型在每一次更新权重时所采取的步长大小。如果学习率过高,模型可能会无法收敛,导致训练不稳定;如果学习率过低,损失函数的变化速度很慢,会大大增加网络的收敛复杂度,并且很容易被困在局部最小值。
为了防止学习率过大,在收敛到全局最优点的时候会来回摆荡,所以要让学习率随着训练轮数不断按指数级下降,收敛梯度下降的学习步长。
深度学习——学习率衰减(learning rate decay)
常用的分类算法包括:NBC(Naive Bayesian Classifier,朴素贝叶斯分类)算法、LR(Logistic Regress,逻辑回归)算法、ID3(Iterative Dichotomiser 3 迭代二叉树3 代)决策树算法、C4.5 决策树算法、C5.0 决策树算法、SVM(Support Vector Machine,支持向量机)算法、KNN(K-Nearest Neighbor,K 最近邻)算法、ANN(Artificial Neural Network,人工神经网络)算法等。
数据挖掘算法——常用分类算法总结
【10分钟算法】朴素贝叶斯分类器-带例子/Naive Bayes Classifier
【10分钟算法】层次聚类之最近邻算法-带例子/Nearest Neighbor Algorithm
【五分钟机器学习】机器分类的基石:逻辑回归Logistic Regression
【五分钟机器学习】向量支持机SVM: 学霸中的战斗机
1、输出变量类型:分类问题的输出变量通常是离散的,表示数据点所属的类别或标签,而回归问题的输出是连续的,表示预测的数值。
2、目的:分类问题的目的是对数据进行分类或标记,而回归问题的目的是找到最优拟合,通过回归算法得到是一个最优拟合线,这个线条可以最好的接近数据集中的各个点。
3、评估方法:分类问题通常使用准确率或 F1 分数等指标来评估模型的性能。对于回归问题,通常使用均方误差(Mean Squared Error,MSE)或平均绝对误差(Mean Absolute Error,MAE)等指标来评估模型的性能。
4、数据类型:分类问题通常使用分类数据,即离散变量。而在回归问题中,通常使用连续数据。
步骤
①首先确定要聚类的簇的个数 k,并选取 k 个随机数据点作为 k 个簇的初始中心点。
②对于每一个剩余的数据点,计算其与每个簇的中心点之间的距离,并将该数据点分配到离其最近的簇中。
③对每个簇的数据点重新计算平均值(该簇各个点坐标之和/该簇数据点数)(X,Y分别加和),并将其视为新的簇中心点。这个过程一直执行,直到聚类结果不再发生显著改变或达到预设阈值为止。
④将每个数据点划分至距其最近的簇中,分配规则基于计算的距离。
⑤重新计算每个簇的中心点,再次划分每个数据点。
重复步骤4和5直到算法收敛(每个簇的数据点个数不变或达到阈值)。
【10分钟算法】K均值聚类算法-带例子/K-Means Clustering Algorithm
训练集(train set):用于模型拟合的数据样本。在训练过程中对训练误差进行梯度下降,进行学习,可通过训练不断优化权重参数。
验证集(validation set):是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数(学习率等)、调整模型的架构(层数增减等)和用于对模型的能力进行初步评估。
测试集:用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。
训练集、验证集、测试集的作用
K折交叉验证的作用
当有多个不同的模型(结构不同、超参数不同等)可以选择时,我们通过K折交叉验证来选取对于特定数据集最好的模型。
K折交叉验证的流程
1、将含有N个样本的数据集,分成K份,每份含有N/K个样本。选择其中一份作为验证集,另外K-1份作为训练集,验证集就有K种情况。
2、在每种情况中,用训练集训练模型,用验证集测试模型,计算模型的泛化误差。
3、交叉验证重复K次,平均K次的结果作为模型最终的泛化误差。
4、K的取值一般在[ 2 ,10 ]之间。K折交叉验证的优势在于,同时重复运用随机产生的子样本进行训练和验证,10折交叉验证是最常用的。
5、训练集中样本数量要足够多,一般至少大于总样本数的50%。
6、训练集和验证集必须从完整的数据集中均匀采样。均匀采样的目的是希望减少训练集、验证集与原数据集之间的偏差。当样本数量足够多时,通过随机采样,便可以实现均匀采样的效果。
机器学习_K折交叉验证知识详解(深刻理解版)(全网最详细)
k折交叉验证
聚类(Clustering):将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。
分类(Classification):在已有分类标准下,对新数据进行划分,分类。
聚类的基本概念-聚类与分类的区别
聚类(clustering)与分类(Classification)的区别
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)
梯度概念
监督学习:在有监督学习中,训练数据集包含输入特征和对应的输出标签。模型的任务是学习输入特征与输出标签之间的关系,从而对新的输入数据进行分类或回归等。
非监督学习:在无监督学习中,训练数据集只包含输入特征,没有对应的输出标签。模型的任务是从数据中学习到一些结构或者规律,可以将数据聚类、降维等。
半监督学习:半监督学习是介于有监督学习和无监督学习之间的一种方法。在半监督学习中,训练数据集同时包含有标签数据和无标签数据。模型的任务是在有标签的数据和无标签的数据中学习结构或规律,并尝试使用这些结构或规律对无标签的数据进行预测分类或回归等任务。
SVM的本质是量化两类数据差异的方法,通过使用核函数,SVM 将数据从低维空间中投影到更高维的空间中,从而使得原本线性不可分的数据在新的高维空间中变得线性可分。而核函数能够提供高维度向量相似度的测量 ,通过选取合适的核公式,我们就可以不用知晓具体的维度转换函数而直接获得数据的高维度差异度,并以此来进行分类判断。
【数之道】支持向量机SVM是什么,八分钟直觉理解其本质
【数之道26】SVM支持向量机-核技巧Kernel Trick详解
批量梯度下降需要首先计算所有数据上的损失值,然后再进行梯度下降,具体的操作步骤是:遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数,都要把数据集里的所有样本计算一遍,计算量大,计算速度慢,不支持在线学习。
不使用全量的样本来计算梯度,而使用单一样本来近似估计梯度,可以极大地减少计算量,提高计算效率。具体的操作步骤是:每次从训练集中随机选择一个样本,计算其对应的损失和梯度,进行参数更新,反复迭代。
这种方式在数据规模比较大时可以减少计算复杂度,从概率意义上来说的单个样本的梯度是对整个数据集合梯度的无偏估计,但是它存在着一定的不确定性,因此收敛速率比批梯度下降得更慢。
为了克服上面两种方法的缺点,采用的一种折中手段:将数据分为若干批次,按批次更新参数,每一批次中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性,另一方面,因为批的样本数比整个数据集少了很多,计算量也不是很大。
每次使用多个样本来估计梯度,这样可以减少不确定性,提高收敛速率,其中每次迭代选取的样本数量称为批大小(batch size)。
史上最详细的梯度下降优化算法介绍(从SGD到Adam至Lookahead)
SGD方法的一个缺点是其更新方向完全依赖于当前batch计算出的梯度,因而十分不稳定。Momentum算法借用了物理中的动量概念,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力:
即adaptive gradient,自适应梯度法。它通过记录每次迭代过程中的前进方向和距离,从而使得针对不同问题,有一套自适应调整学习率的方法,即不同的参数是需要不同的学习率的。具有损失较大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数在学习率上有相对较小的下降。
AdaGrad旨在应用于凸问题时快速收敛,
优点:解决了SGD中学习率不能自适应调整的问题。
缺点:(1)对于训练深度神经网络模型而言,从训练开始时累积平方梯度值会越来越大,会导致学习率过早和过量的减少,从而导致迭代后期收敛及其缓慢。AdaGrad在某些深度学习模型上效果不错,但不是全部。(2)需要手动设置全局学习率
是AdaGrad算法的改进,修改AdaGrad以在非凸条件下效果更好,解决了AdaGrad所面临的问题。
RMSProp主要思想:使用指数加权移动平均的方法计算累积梯度,以丢弃遥远的梯度历史信息(让距离当前越远的梯度的缩减学习率的权重越小)。
优点:完全自适应全局学习率,加速效果好。
缺点:后期容易在小范围内产生震荡。
的本质其实就是Momentum+RMSProp的结合,然后再修正其偏差。Adam对梯度的一阶和二阶都进行了估计与偏差修正,使用梯度的一阶矩估计和二阶矩估计来动态调整每个参数的学习率(参数更新的幅度)。
Adam对学习率没有那么敏感,建议默认为0.001,实践中,也可以设置为5×10-4 。Adam通常被认为对超参数的选择相当鲁棒,同时相比于Adagrad,不用存储全局所有的梯度,适合处理大规模数据。
Adam每次迭代参数的学习步长都有一个确定的范围,不会因为很大的梯度导致很大的学习步长,参数的值比较稳定,但是它也并非真的是参数不敏感的,学习率在训练的后期可仍然可能不稳定导致无法收敛到足够好的值,泛化能力较差。
优化方法——AdaGrad、RMSProp、Adam
过拟合(over-fitting)指模型在训练样本中表现得过于优越,而在验证数据集以及测试数据集中表现不佳,无法很好地泛化到新的数据。
解决过拟合问题的常见方法:
1、数据增强:可以使用数据增强技术来扩充训练数据集,从而可以更充分地训练模型并提高其泛化能力。
2、正则化:通过在损失函数中添加正则项来控制模型的参数大小。 常用的正则化技术包括L1、L2正则化等。
深入理解L1、L2正则化
3、Dropout:Dropout是一种用于防止过拟合的正则化技术。该技术通过在训练过程中随机删除一些神经元来减少模型的复杂度和提高泛化能力。
4、增加训练数据量:增加训练数据集的大小可以降低模型的过拟合风险,通过收集更多的数据并进行训练,可以使模型更容易学习一般性的目标函数。
5、减小模型的复杂度:可以通过减小模型的大小或宽度,或减少模型中的参数数量等方式减少过拟合。这种方法常常被成为模型规约。
6、早期停止:在训练时,可以使用验证集(validation set)来监控模型的性能。 当模型开始过拟合时,停止训练,这种方法可以解决过拟合问题,同时减小模型开始表现得很糟糕的风险。一般是设置一个步长,如果多少步内验证集acc没有上升就停
浅谈深度学习过拟合和解决办法
14. 过拟合(overfitting)与解决办法
在训练神经网络过程中,如果梯度过小或过大,会导致学习收敛缓慢或根本无法收敛,从而影响模型的训练效果。以下是几种常见的解决梯度消失或梯度爆炸问题的方法:
1、使用其他激活函数:sigmoid等激活函数在输入很大或很小的情况下会产生饱和效应,导致梯度接近0。较新的激活函数ReLU和其变体具有解决这个问题的能力。
2、Batch normalization:通过对每个batch在输入层和输出层进行标准化和缩放来扭曲前向传播特征的分布,从而提高模型的稳定性,消除梯度消失的风险。
3、梯度剪切:设置一个梯度的最大阈值,当梯度超过这个阈值时,将它的大小截取到阈值以内,这可以减轻梯度爆炸的影响。
4、预训练:预训练是一种减少梯度消失问题的有效方法。与随机初始化相比,预训练已经学习了较好的特征表示,初始化的参数也比较接近最优解,并且能减少梯度传播的距离,减少梯度消失问题对模型的影响。
5、梯度根据时间反向传播(BPTT)截断:在反向传播时,限制反向传播的长度,这个长度也叫时间截断长度。这可以减轻长周期信号的梯度消失问题。
6、使用长短期记忆网络(LSTM)或门控循环单元(GRU)模型:这两种循环神经网络模型可以学习长期依赖关系,并且使用了门控机制,能够有效减轻梯度消失问题。
误差反向传播(Back-propagation, BP)
反向传播算法的实现过程如下:
1、初始化神经网络的权重和偏置,观察训练数据,设定目标函数。
2、用前向传播算法计算数据在当前权重和偏置下的输出结果。
3、计算输出层的误差,根据误差计算输出层的权重和偏置应该如何调整。
4、反向传播误差,根据误差信号调整隐藏层的权重和偏置。
5、重复以上步骤,不断调整网络的权重和偏置,直到输出结果符合期望的结果为止。
解读反向传播算法(图与公式结合)
深度学习 | 反向传播详解
【官方双语】深度学习之反向传播算法 上/下 Part 3 ver 0.9 beta
正则化是正则化系数的过程,即对系数进行惩罚,通过向模型添加额外参数来防止模型过度拟合,这有助于提高模型的可靠性、速度和准确性。正则化本质上是为了防止因网络参数过大导致模型过拟合的泛化技术。
常见的正则化方法有L1正则化、L2正则化和Dropout。
①L1正则化:在模型的代价函数中加入所有权重系数的绝对值之和,用以控制权重系数大小,从而达到减小过拟合的目的。L1正则化有稀疏性,即在一定条件下,可以得到一个更为稀疏的特征表示。
②L2正则化:在模型的代价函数中加入所有权重系数的平方和,用以控制权重系数大小,从而达到减少过拟合的目的。
③Dropout:旨在防止过拟合,通过在训练过程中随机删除神经元,从而减少神经元之间的依赖性,提高模型的泛化性能。Dropout可以认为是一种随机的L2正则化方法。
机器学习中正则化是什么意思?正则化的概念详解
如果batch size为m,则在前向传播过程中,网络中每个节点都有m个输出,所谓的Batch Normalization,就是对该层每个节点的这m个输出进行归一化再输出.
朴素贝叶斯的优缺点
朴素贝叶斯百度百科
带你理解朴素贝叶斯分类算法
具体来说,数据归一化有以下几个作用:
机器学习中的数据归一化、最值归一化、均值方差归一化(标准化)
激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。
神经网络中引入非线性激活函数的原因主要有两个方面:
在神经网络中,常用的非线性激活函数包括Sigmoid、Tanh、ReLU、Leaky ReLU等,其中ReLU是最为常用的一种非线性激活函数。
神经网络激活函数的作用是什么?
[5分钟深度学习] #03 激活函数
卷积神经网络(CNN)中的池化层(Pooling Layer)是一种对卷积层输出进行降采样的操作,常用的池化操作有最大池化(Max Pooling)和平均池化(Average Pooling)。
池化层的作用主要有以下三个方面:
卷积神经网络中卷积层、池化层、全连接层的作用
【卷积神经网络可视化】 从卷积层到池化层的可视化演示(中英双语字幕)
在深度学习领域中,比较常见的框架包括 TensorFlow、PyTorch、Caffe、Keras等。下面简要介绍一下这些框架的特点:
注意力机制用于帮助模型自动学习并关注输入中的重要信息。在自然语言处理领域,注意力机制可以应用于诸如机器翻译、文本生成和问答系统等任务中。在计算机视觉领域,注意力机制可以用于图像分类、目标检测和图像生成等任务。
自注意力机制是一种基于输入序列内部信息进行关注权重计算的机制,常用于序列到序列的任务,如机器翻译和文本生成。
自注意力机制的优势在于它能够对输入序列中的不同位置进行灵活的关注,无需依赖外部信息。一种常见的自注意力机制是Transformer模型中使用的多头注意力机制,它通过引入多组不同的查询、键、值向量来增加模型的表达能力。
词嵌入(Word Embedding)是一种将词语映射到连续向量空间的技术,它通过将词语表示为实数向量来捕捉词语之间的语义关系。词嵌入是自然语言处理(NLP)中一项重要的预处理技术,它将离散的词语转化为连续的向量表示,为计算机模型更好地理解和处理文本提供了基础。
传统的文本处理方法通常使用基于离散符号的表示方式,例如独热编码(One-Hot Encoding),每个词语被表示为一个高维稀疏向量,其中只有一个元素为1,其余元素都为0。然而,这种表示方法无法捕捉到词语之间的语义相似性和关联性,也无法利用词语的分布信息。
词嵌入通过将词语映射到一个低维连续向量空间中的向量来解决这个问题。在词嵌入空间中,相似的词语在向量空间中的距离更近,具有相似语义的词语在向量空间中的方向更接近。这种连续向量表示能够更好地表达词语的语义信息,并且能够通过向量之间的运算来进行语义推理。
词嵌入可以通过多种方法得到,其中最著名的方法是Word2Vec和GloVe。
Word2Vec:Word2Vec是一种基于神经网络的词嵌入方法,它有两种模型,分别是连续词袋模型(Continuous Bag of Words, CBOW)和Skip-gram模型。这两个模型通过学习词语的上下文信息来生成词嵌入。
(Skip-gram:用中心词预测上下文词,CBOW:用上下文词来预测中心词)
GloVe:GloVe(Global Vectors for Word Representation)是一种基于全局词共现矩阵的词嵌入方法。它通过分析词语在语料库中的共现频率来构建词语之间的关系,并生成对应的词嵌入向量。
得到词嵌入后,可以将其应用于各种自然语言处理任务,如文本分类、命名实体识别、情感分析和机器翻译等。词嵌入能够提供更丰富、更紧凑的词语表示,从而帮助模型更好地理解和处理文本,提高自然语言处理任务的性能和效果。
(BERT生成的向量被称为上下文相关词向量(Contextualized Word Embeddings),与传统的词嵌入不同,它捕捉了每个单词在上下文中的语义信息。这种上下文相关性使得BERT模型在处理多义词、指代消解和语义推理等任务时表现出色。)
1、判别式模型:
判别式模型关注的是对给定输入数据进行条件概率分布建模,即给定输入数据x,预测输出标签y的条件概率P(y|x)。判别式模型通过学习输入与输出之间的映射关系来进行建模和预测。常见的判别式模型包括逻辑回归、支持向量机(SVM)、随机森林等。
2、生成式模型:
生成式模型关注的是对联合概率分布进行建模,即同时对输入数据x和输出标签y的联合概率分布P(x, y)进行建模。生成式模型通过学习数据的分布特征来进行建模和生成新的数据样本。常见的生成式模型包括高斯混合模型(GMM)、隐马尔可夫模型(HMM)、变分自编码器(VAE)等。
生成式模型的特点是能够学习到数据的生成过程,可以用于生成新的样本,同时也可以用于推断未观测到的变量。生成式模型通常需要更多的参数和计算资源,但能够提供更丰富的概率分布信息,可以用于生成样本、填补缺失值、数据增强等任务。
总结来说,判别式模型关注的是输入和输出之间的条件概率分布,用于直接预测后验概率,解决分类、回归等任务;而生成式模型关注的是联合概率分布,用于学习数据的生成过程和生成新的样本。它们在建模思路和应用领域上有所差异,根据具体的任务和需求选择合适的模型进行建模和预测。
BERT(Bidirectional Encoder Representations from Transformers)和OpenAI GPT(Generative Pre-trained Transformer)都是自然语言处理(NLP)领域中非常重要的预训练模型,但它们在预训练任务、模型结构和应用方面存在一些区别。
1、预训练任务:
BERT:BERT模型的预训练任务包括两个:Masked Language Modeling(MLM)和Next Sentence Prediction(NSP)。在MLM任务中,BERT模型需要预测被掩盖的输入单词;而在NSP任务中,BERT模型需要判断两个句子是否是原始文本中的连续句子。
OpenAI GPT:OpenAI GPT模型的预训练任务是语言建模,即根据前面的上下文预测下一个单词。GPT模型基于Transformer架构的解码器部分,只利用了左侧的上下文信息进行预测。
2、模型结构:
BERT:BERT模型采用了Transformer的编码器结构,其中包括多个编码层(Transformer Encoder Layers),每个编码层由多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Neural Networks)组成。BERT模型是双向的,能够利用句子中的上下文信息。
OpenAI GPT:OpenAI GPT模型采用了Transformer的解码器结构,其中包括多个解码层(Transformer Decoder Layers),每个解码层也由多头自注意力机制和前馈神经网络组成。GPT模型是单向的,只能利用句子中左侧的上下文信息。
3、应用方向:
BERT:BERT模型主要应用于各种下游NLP任务,如文本分类、命名实体识别、情感分析等。它可以通过微调(Fine-tuning)的方式将预训练模型应用于特定任务,并在特定任务上取得很好的性能。
OpenAI GPT:OpenAI GPT模型主要应用于生成式任务,如文本生成、对话系统等。GPT模型可以根据给定的上下文生成连续的文本,其强大的语言模型能力使得它在生成任务中表现出色。
Word2Vec是一种用于学习单词嵌入(Word Embeddings)的算法,其中使用了负采样(Negative Sampling)的技术。负采样的目的是改善训练效率和嵌入质量,并减少计算成本。
在Word2Vec中,主要有两种训练方法:Skip-gram和CBOW(Continuous Bag-of-Words)。
(Skip-gram:用中心词预测上下文词,CBOW:用上下文词来预测中心词)这两种方法都是基于上下文来预测目标单词,而负采样是为了训练这个预测任务。
负采样的基本思想是,对于每个训练样本(由一个目标单词和上下文单词组成),随机选择一些不相关的负样本作为对比。这些负样本是从词汇表中按一定的概率分布抽样得到的,并且通常是根据它们的频率进行抽样。
负采样的原因有以下几点:
总结来说,Word2Vec中使用负采样是为了减少计算成本、提高训练效率,并改善嵌入质量。负采样能够从词汇表中随机选择一些不相关的负样本,使得模型能够更好地学习到目标单词和上下文单词之间的语义关系。
Seq2Seq Attention模型是一种序列到序列(Sequence-to-Sequence)模型,用于处理输入序列和输出序列之间的对应关系。它通过引入注意力机制(Attention Mechanism)来改进传统的Seq2Seq模型,使得模型可以更好地处理长序列和捕捉输入与输出之间的对齐关系。
在传统的Seq2Seq模型中,编码器(Encoder)将输入序列编码成一个固定长度的向量,然后解码器(Decoder)根据这个向量生成输出序列。这种模型在处理长序列时可能会面临信息丢失和性能下降的问题,因为编码器需要将整个输入序列压缩到一个固定长度的向量中。
为了解决这个问题,Seq2Seq Attention模型引入了注意力机制。注意力机制允许解码器在生成输出序列的每个步骤时,根据输入序列中不同位置的相关信息来调整注意力权重。简单来说,注意力机制使得解码器可以"注意"输入序列中与当前生成位置相关的部分,从而更好地对应输入和输出之间的对齐关系。
Seq2Seq Attention模型的工作原理如下:
通过引入注意力机制,Seq2Seq Attention模型可以更好地处理长序列,并且在生成输出序列时更准确地对应输入序列的相关部分。这使得模型能够在机器翻译、摘要生成、对话系统等任务中取得更好的性能。