导航:首页 > 源码编译 > sgd算法

sgd算法

发布时间:2022-09-13 23:38:34

1. 随机梯度下降为什么比梯度下降快

原始的随机梯度下降(SGD)适合于低精度的任务,而梯度下降算法适合用于高精度的任务。
如果接受一个比较低的精度(应用问题中往往不要求高精度),那么由于SGD每次只利用一个或部分样本的梯度做更新,所以前期迭代较快,导致前期一段时间内比梯度下降算法下降得多。
但是由于原始的SGD算法在目标函数强凸的情况下依旧无法做到线性收敛,所以当执行的时候足够长的时候SGD的精度会被梯度下降算法赶超,因为梯度下降算法可以在目标函数强凸的时候有线性收敛速度。

2. 人工智能一些术语总结

随着智能时代慢慢的到来,有一些基本概念都不知道真的是要落伍了,作为正在积极学习向上的青年,我想总结一份笔记,此份笔记会记录众多AI领域的术语和概念,当然,学一部分记录一部分,并且可能会夹杂着自己的一些理解,由于能力有限,有问题希望大家多多赐教。当然,由于内容太多,仅仅只是记录了中英名对照,有的加上了简单的解释,没加的后续大家有需求,我会慢慢完善~~。目录暂定以首字母的字典序排序。可以当作目录方便以后查阅~~建议收藏加点赞哈哈哈

------------------------------------------------这里是分割线--------------------------------------------------

A

准确率(accuracy)

分类模型预测准确的比例。

二分类问题中,准确率定义为:accuracy = (true positives +true negatives)/all samples

多分类问题中,准确率定义为:accuracy = correctpredictions/all samples

激活函数(activation function)

一种函数,将前一层所有神经元激活值的加权和 输入到一个非线性函数中,然后作为下一层神经元的输入,例如 ReLU 或 Sigmoid

AdaGrad

一种复杂的梯度下降算法,重新调节每个参数的梯度,高效地给每个参数一个单独的学习率。

AUC(曲线下面积)

一种考虑到所有可能的分类阈值的评估标准。ROC 曲线下面积代表分类器随机预测真正类(Ture Positives)要比假正类(False Positives)概率大的确信度。

Adversarial example(对抗样本)

Adversarial Networks(对抗网络)

Artificial General Intelligence/AGI(通用人工智能)

Attention mechanism(注意力机制)

Autoencoder(自编码器)

Automatic summarization(自动摘要)

Average gradient(平均梯度)

Average-Pooling(平均池化)

B

反向传播(Backpropagation/BP)

神经网络中完成梯度下降的重要算法。首先,在前向传播的过程中计算每个节点的输出值。然后,在反向传播的过程中计算与每个参数对应的误差的偏导数。

基线(Baseline)

被用为对比模型表现参考的简单模型。

批量(Batch)

模型训练中一个迭代(指一次梯度更新)使用的样本集。

批量大小(Batch size)

一个批量中样本的数量。例如,SGD 的批量大小为 1,而 mini-batch 的批量大小通常在 10-1000 之间。

偏置(Bias)

与原点的截距或偏移量。

二元分类器(Binary classification)

一类分类任务,输出两个互斥类别中的一个。比如垃圾邮件检测。

词袋(Bag of words/Bow)

基学习器(Base learner)

基学习算法(Base learning algorithm)

贝叶斯网络(Bayesian network)

基准(Bechmark)

信念网络(Belief network)

二项分布(Binomial distribution)

玻尔兹曼机(Boltzmann machine)

自助采样法/可重复采样/有放回采样(Bootstrap sampling)

广播(Broadcasting)

C

类别(Class)

所有同类属性的目标值作为一个标签。

分类模型(classification)

机器学习模型的一种,将数据分离为两个或多个离散类别。

收敛(convergence)

训练过程达到的某种状态,其中训练损失和验证损失在经过了确定的迭代次数后,在每一次迭代中,改变很小或完全不变。

凸函数(concex function)

一种形状大致呈字母 U 形或碗形的函数。然而,在退化情形中,凸函数的形状就像一条线。

成本(cost)

loss 的同义词。深度学习模型一般都会定义自己的loss函数。

交叉熵(cross-entropy)

多类别分类问题中对 Log 损失函数的推广。交叉熵量化两个概率分布之间的区别。

条件熵(Conditional entropy)

条件随机场(Conditional random field/CRF)

置信度(Confidence)

共轭方向(Conjugate directions)

共轭分布(Conjugate distribution)

共轭梯度(Conjugate gradient)

卷积神经网络(Convolutional neural network/CNN)

余弦相似度(Cosine similarity)

成本函数(Cost Function)

曲线拟合(Curve-fitting)

D

数据集(data set)

样本的集合

深度模型(deep model)

一种包含多个隐藏层的神经网络。深度模型依赖于其可训练的非线性性质。和宽度模型对照(widemodel)。

dropout 正则化(dropoutregularization)

训练神经网络时一种有用的正则化方法。dropout 正则化的过程是在单次梯度计算中删去一层网络中随机选取的固定数量的单元。删去的单元越多,正则化越强。

数据挖掘(Data mining)

决策树/判定树(Decisiontree)

深度神经网络(Deep neural network/DNN)

狄利克雷分布(Dirichlet distribution)

判别模型(Discriminative model)

下采样(Down sampling)

动态规划(Dynamic programming)

E

早期停止法(early stopping)

一种正则化方法,在训练损失完成下降之前停止模型训练过程。当验证数据集(validationdata set)的损失开始上升的时候,即泛化表现变差的时候,就该使用早期停止法了。

嵌入(embeddings)

一类表示为连续值特征的明确的特征。嵌入通常指将高维向量转换到低维空间中。

经验风险最小化(empirical risk minimization,ERM)

选择能使得训练数据的损失函数最小化的模型的过程。和结构风险最小化(structualrisk minimization)对照。

集成(ensemble)

多个模型预测的综合考虑。可以通过以下一种或几种方法创建一个集成方法:

设置不同的初始化;

设置不同的超参量;

设置不同的总体结构。

深度和广度模型是一种集成。

样本(example)

一个数据集的一行内容。一个样本包含了一个或多个特征,也可能是一个标签。参见标注样本(labeledexample)和无标注样本(unlabeled example)。

F

假负类(false negative,FN)

被模型错误的预测为负类的样本。例如,模型推断一封邮件为非垃圾邮件(负类),但实际上这封邮件是垃圾邮件。

假正类(false positive,FP)

被模型错误的预测为正类的样本。例如,模型推断一封邮件为垃圾邮件(正类),但实际上这封邮件是非垃圾邮件。

假正类率(false positive rate,FP rate)

ROC 曲线(ROC curve)中的 x 轴。FP 率的定义是:假正率=假正类数/(假正类数+真负类数)

特征工程(feature engineering)

在训练模型的时候,挖掘对模型效果有利的特征。

前馈神经网络(Feedforward Neural Networks/FNN )

G

泛化(generalization)

指模型利用新的没见过的数据而不是用于训练的数据作出正确的预测的能力。

广义线性模型(generalized linear model)

最小二乘回归模型的推广/泛化,基于高斯噪声,相对于其它类型的模型(基于其它类型的噪声,比如泊松噪声,或类别噪声)。广义线性模型的例子包括:

logistic 回归

多分类回归

最小二乘回归

梯度(gradient)

所有变量的偏导数的向量。在机器学习中,梯度是模型函数的偏导数向量。梯度指向最陡峭的上升路线。

梯度截断(gradient clipping)

在应用梯度之前先修饰数值,梯度截断有助于确保数值稳定性,防止梯度爆炸出现。

梯度下降(gradient descent)

通过计算模型的相关参量和损失函数的梯度最小化损失函数,值取决于训练数据。梯度下降迭代地调整参量,逐渐靠近权重和偏置的最佳组合,从而最小化损失函数。

图(graph)

在 TensorFlow 中的一种计算过程展示。图中的节点表示操作。节点的连线是有指向性的,表示传递一个操作(一个张量)的结果(作为一个操作数)给另一个操作。使用 TensorBoard 能可视化计算图。

高斯核函数(Gaussian kernel function)

高斯混合模型(Gaussian Mixture Model)

高斯过程(Gaussian Process)

泛化误差(Generalization error)

生成模型(Generative Model)

遗传算法(Genetic Algorithm/GA)

吉布斯采样(Gibbs sampling)

基尼指数(Gini index)

梯度下降(Gradient Descent)

H

启发式(heuristic)

一个问题的实际的和非最优的解,但能从学习经验中获得足够多的进步。

隐藏层(hidden layer)

神经网络中位于输入层(即特征)和输出层(即预测)之间的合成层。一个神经网络包含一个或多个隐藏层。

超参数(hyperparameter)

连续训练模型的过程中可以拧动的“旋钮”。例如,相对于模型自动更新的参数,学习率(learningrate)是一个超参数。和参量对照。

硬间隔(Hard margin)

隐马尔可夫模型(Hidden Markov Model/HMM)

层次聚类(Hierarchical clustering)

假设检验(Hypothesis test)

I

独立同分布(independently and identicallydistributed,i.i.d)

从不会改变的分布中获取的数据,且获取的每个值不依赖于之前获取的值。i.i.d. 是机器学习的理想情况——一种有用但在现实世界中几乎找不到的数学构建。

推断(inference)

在机器学习中,通常指将训练模型应用到无标注样本来进行预测的过程。在统计学中,推断指在观察到的数据的基础上拟合分布参数的过程。

输入层(input layer)

神经网络的第一层(接收输入数据)。

评分者间一致性(inter-rater agreement)

用来衡量一项任务中人类评分者意见一致的指标。如果意见不一致,则任务说明可能需要改进。有时也叫标注者间信度(inter-annotator agreement)或评分者间信度(inter-raterreliability)。

增量学习(Incremental learning)

独立成分分析(Independent Component Analysis/ICA)

独立子空间分析(Independent subspace analysis)

信息熵(Information entropy)

信息增益(Information gain)

J

JS 散度(Jensen-ShannonDivergence/JSD)

K

Kernel 支持向量机(KernelSupport Vector Machines/KSVM)

一种分类算法,旨在通过将输入数据向量映射到更高维度的空间使正类和负类之间的边际最大化。例如,考虑一个输入数据集包含一百个特征的分类问题。为了使正类和负类之间的间隔最大化,KSVM 从内部将特征映射到百万维度的空间。KSVM 使用的损失函数叫作 hinge 损失。

核方法(Kernel method)

核技巧(Kernel trick)

k 折交叉验证/k 倍交叉验证(K-fold cross validation)

K - 均值聚类(K-MeansClustering)

K近邻算法(K-Nearest NeighboursAlgorithm/KNN)

知识图谱(Knowledge graph)

知识库(Knowledge base)

知识表征(Knowledge Representation)

L

L1 损失函数(L1 loss)

损失函数基于模型对标签的预测值和真实值的差的绝对值而定义。L1 损失函数比起 L2 损失函数对异常值的敏感度更小。

L1 正则化(L1regularization)

一种正则化,按照权重绝对值总和的比例进行惩罚。在依赖稀疏特征的模型中,L1 正则化帮助促使(几乎)不相关的特征的权重趋近于 0,从而从模型中移除这些特征。

L2 损失(L2 loss)

参见平方损失。

L2 正则化(L2regularization)

一种正则化,按照权重平方的总和的比例进行惩罚。L2 正则化帮助促使异常值权重更接近 0 而不趋近于 0。(可与 L1 正则化对照阅读。)L2 正则化通常改善线性模型的泛化效果。

标签(label)

在监督式学习中,样本的“答案”或“结果”。标注数据集中的每个样本包含一或多个特征和一个标签。在垃圾邮件检测数据集中,特征可能包括主题、发出者何邮件本身,而标签可能是“垃圾邮件”或“非垃圾邮件”。

标注样本(labeled example)

包含特征和标签的样本。在监督式训练中,模型从标注样本中进行学习。

学习率(learning rate)

通过梯度下降训练模型时使用的一个标量。每次迭代中,梯度下降算法使学习率乘以梯度,乘积叫作 gradient step。学习率是一个重要的超参数。

最小二乘回归(least squares regression)

通过 L2 损失最小化进行训练的线性回归模型。

线性回归(linear regression)

对输入特征的线性连接输出连续值的一种回归模型。

logistic 回归(logisticregression)

将 sigmoid 函数应用于线性预测,在分类问题中为每个可能的离散标签值生成概率的模型。尽管 logistic 回归常用于二元分类问题,但它也用于多类别分类问题(这种情况下,logistic回归叫作“多类别 logistic 回归”或“多项式 回归”。

对数损失函数(Log Loss)

二元 logistic 回归模型中使用的损失函数。

损失(Loss)

度量模型预测与标签距离的指标,它是度量一个模型有多糟糕的指标。为了确定损失值,模型必须定义损失函数。例如,线性回归模型通常使用均方差作为损失函数,而 logistic 回归模型使用对数损失函数。

隐狄利克雷分布(Latent Dirichlet Allocation/LDA)

潜在语义分析(Latent semantic analysis)

线性判别(Linear Discriminant Analysis/LDA)

长短期记忆(Long-Short Term Memory/LSTM)

M

机器学习(machine learning)

利用输入数据构建(训练)预测模型的项目或系统。该系统使用学习的模型对与训练数据相同分布的新数据进行有用的预测。机器学习还指与这些项目或系统相关的研究领域。

均方误差(Mean Squared Error/MSE)

每个样本的平均平方损失。MSE 可以通过平方损失除以样本数量来计算。

小批量(mini-batch)

在训练或推断的一个迭代中运行的整批样本的一个小的随机选择的子集。小批量的大小通常在10 到 1000 之间。在小批量数据上计算损失比在全部训练数据上计算损失要高效的多。

机器翻译(Machine translation/MT)

马尔可夫链蒙特卡罗方法(Markov Chain Monte Carlo/MCMC)

马尔可夫随机场(Markov Random Field)

多文档摘要(Multi-document summarization)

多层感知器(Multilayer Perceptron/MLP)

多层前馈神经网络(Multi-layer feedforward neuralnetworks)

N

NaN trap

训练过程中,如果模型中的一个数字变成了 NaN,则模型中的很多或所有其他数字最终都变成 NaN。NaN 是“Not aNumber”的缩写。

神经网络(neural network)

该模型从大脑中获取灵感,由多个层组成(其中至少有一个是隐藏层),每个层包含简单的连接单元或神经元,其后是非线性。

神经元(neuron)

神经网络中的节点,通常输入多个值,生成一个输出值。神经元通过将激活函数(非线性转换)应用到输入值的加权和来计算输出值。

归一化(normalization)

将值的实际区间转化为标准区间的过程,标准区间通常是-1 到+1 或 0 到 1。例如,假设某个特征的自然区间是 800 到 6000。通过减法和分割,你可以把那些值标准化到区间-1 到+1。参见缩放。

Numpy

Python 中提供高效数组运算的开源数学库。pandas 基于 numpy 构建。

Naive bayes(朴素贝叶斯)

Naive Bayes Classifier(朴素贝叶斯分类器)

Named entity recognition(命名实体识别)

Natural language generation/NLG(自然语言生成)

Natural language processing(自然语言处理)

Norm(范数)

O

目标(objective)

算法尝试优化的目标函数。

one-hot 编码(独热编码)(one-hotencoding)

一个稀疏向量,其中:一个元素设置为 1,所有其他的元素设置为 0。。

一对多(one-vs.-all)

给出一个有 N 个可能解决方案的分类问题,一对多解决方案包括 N 个独立的二元分类器——每个可能的结果都有一个二元分类器。例如,一个模型将样本分为动物、蔬菜或矿物,则一对多的解决方案将提供以下三种独立的二元分类器:

动物和非动物

蔬菜和非蔬菜

矿物和非矿物

过拟合(overfitting)

创建的模型与训练数据非常匹配,以至于模型无法对新数据进行正确的预测

Oversampling(过采样)

P

pandas

一种基于列的数据分析 API。很多机器学习框架,包括 TensorFlow,支持 pandas 数据结构作为输入。参见 pandas 文档。

参数(parameter)

机器学习系统自行训练的模型的变量。例如,权重是参数,它的值是机器学习系统通过连续的训练迭代逐渐学习到的。注意与超参数的区别。

性能(performance)

在软件工程中的传统含义:软件运行速度有多快/高效?

在机器学习中的含义:模型的准确率如何?即,模型的预测结果有多好?

困惑度(perplexity)

对模型完成任务的程度的一种度量指标。例如,假设你的任务是阅读用户在智能手机上输入的单词的头几个字母,并提供可能的完整单词列表。该任务的困惑度(perplexity,P)是为了列出包含用户实际想输入单词的列表你需要进行的猜测数量。

流程(pipeline)

机器学习算法的基础架构。管道包括收集数据、将数据放入训练数据文件中、训练一或多个模型,以及最终输出模型。

Principal component analysis/PCA(主成分分析)

Precision(查准率/准确率)

Prior knowledge(先验知识)

Q

Quasi Newton method(拟牛顿法)

R

召回率(recall)

回归模型(regression model)

一种输出持续值(通常是浮点数)的模型。而分类模型输出的是离散值。

正则化(regularization)

对模型复杂度的惩罚。正则化帮助防止过拟合。正则化包括不同种类:

L1 正则化

L2 正则化

dropout 正则化

early stopping(这不是正式的正则化方法,但可以高效限制过拟合)

正则化率(regularization rate)

一种标量级,用 lambda 来表示,指正则函数的相对重要性。从下面这个简化的损失公式可以看出正则化率的作用:

minimize(loss function + λ(regularization function))

提高正则化率能够降低过拟合,但可能会使模型准确率降低。

表征(represention)

将数据映射到有用特征的过程。

受试者工作特征曲线(receiver operatingcharacteristic/ROC Curve)

反映在不同的分类阈值上,真正类率和假正类率的比值的曲线。参见 AUC。

Recurrent Neural Network(循环神经网络)

Recursive neural network(递归神经网络)

Reinforcement learning/RL(强化学习)

Re-sampling(重采样法)

Representation learning(表征学习)

Random Forest Algorithm(随机森林算法)

S

缩放(scaling)

特征工程中常用的操作,用于控制特征值区间,使之与数据集中其他特征的区间匹配。例如,假设你想使数据集中所有的浮点特征的区间为 0 到 1。给定一个特征区间是 0 到 500,那么你可以通过将每个值除以 500,缩放特征值区间。还可参见正则化。

scikit-learn

一种流行的开源机器学习平台。网址:www.scikit-learn.org。

序列模型(sequence model)

输入具有序列依赖性的模型。例如,根据之前观看过的视频序列对下一个视频进行预测。

Sigmoid 函数(sigmoid function)

softmax

为多类别分类模型中每个可能的类提供概率的函数。概率加起来的总和是 1.0。例如,softmax 可能检测到某个图像是一只狗的概率为 0.9,是一只猫的概率为 0.08,是一匹马的概率为 0.02。(也叫作 full softmax)。

结构风险最小化(structural risk minimization/SRM)

这种算法平衡两个目标:

构建预测性最强的模型(如最低损失)。

使模型尽量保持简单(如强正则化)。

比如,在训练集上的损失最小化 + 正则化的模型函数就是结构风险最小化算法。更多信息,参见 http://www.svms.org/srm/。可与经验风险最小化对照阅读。

监督式机器学习(supervised machine learning)

利用输入数据及其对应标签来训练模型。监督式机器学习类似学生通过研究问题和对应答案进行学习。在掌握问题和答案之间的映射之后,学生就可以提供同样主题的新问题的答案了。可与非监督机器学习对照阅读。

Similarity measure(相似度度量)

Singular Value Decomposition(奇异值分解)

Soft margin(软间隔)

Soft margin maximization(软间隔最大化)

Support Vector Machine/SVM(支持向量机)

T

张量(tensor)

TensorFlow 项目的主要数据结构。张量是 N 维数据结构(N 的值很大),经常是标量、向量或矩阵。张量可以包括整数、浮点或字符串值。

Transfer learning(迁移学习)

U

无标签样本(unlabeled example)

包含特征但没有标签的样本。无标签样本是推断的输入。在半监督学习和无监督学习的训练过程中,通常使用无标签样本。

无监督机器学习(unsupervised machine learning)

训练一个模型寻找数据集(通常是无标签数据集)中的模式。无监督机器学习最常用于将数据分成几组类似的样本。无监督机器学习的另一个例子是主成分分析(principal componentanalysis,PCA)

W

Word embedding(词嵌入)

Word sense disambiguation(词义消歧)

3. 10的三次方怎么稀释梯度

这个复杂,需要了解方法。可以用到两三种方法。
十倍梯度稀释法(倍比稀释和梯度稀释):
梯度下降是寻找函数极小值的优化方法,在深度学习模型中常用于在反向传播过程中更新神经网络的权重。

梯度下降优化算法功能是什么?

梯度下降,优化算法发挥了以下三个主要方面的作用:
1、学习率成分、或

2、修正坡度成分L/W
3或2者
让我们看看下面的公式1。
方程1 :随机梯度下降中的各种量
学习率调度器vs梯度下降优化的主要区别在于,梯度下降优化是将学习率乘以梯度的函数即因子来调整学习率成分,而学习率调度器是将学习率乘以一定的常数或关于时间步的函数的因子来更新学习率。
第一种方法主要是通过将学习率(learning rate )乘以0到1之间的因子来降低学习率)例如RMSprop。 第二种方法通常使用坡度(Gradient )的滑动平均(也称为动量)而不是纯坡度来确定下降方向。 第三种方法是将Adam和AMSGrad这样的两者结合起来。

Fig.2 )各类梯度下降优化算法、其发表年和使用的核心思路。
Fig.3自上而下,展示了这些优化算法是如何从最简单的简单梯度下降(SGD )进化到Adam的各种变种的。 SGD最初分别向两个方向发展,一个是AdaGrad,主要调整学习率(learning rate )。 另一个是Momentum,主要调整梯度的构成要素。 随着进化的发展,Momentum和RMSprop一体化,“QS dch”(Adam )诞生了。 你可能会对我这样的组织方式提出异议,但我一直以来都是这样理解的。

Fig.3 )各种最优化算法的进化图(gist ) ) ) ) ) )。

符号表示
t -迭代步数

w -需要更新的权重和参数
-学习率
L/w - L (损失函数)相对于w的梯度
因为我统一了论文中出现的希腊文字和符号表示,所以可以用统一的“进化”的观点来看这些优化算法

1. 随机梯度下降(Stochastic Gradient Descend)
最原始的随机梯度下降算法主要是将当前梯度l/w乘以一个系数学习率来更新模型的权重w。
2. 动量算法(Momentum)

动量算法使用具有动量的坡度(坡度的指数滑动平均、Polyak、1964 )而不是当前坡度来更新w。 在后续的文章中,我们会发现采用指数滑动平均作为动量更新方法几乎已经成为行业标准。
另外,v初始化值为0。 通常设定为0.9。

值得注意的是,许多文章在引用Momemtum算法时都使用年轻花瓣Qian,1999的文章。 但是,该算法的原始来源是Sutskever et al。 另一方面,经典动量算法是1964年由Polyak提出的,因此上述也引用了Polyak的文章。 (谢谢James指出这一点)
3.Nesterov加速梯度下降法(NAG)

是在Polyak提出动量法后(双关: Polyak势)
头正盛),一个使用Nesterov加速梯度下降法(Sutskever et al., 2013)的类似更新方法也被实现了。此更新方法使用V,即我称之为投影梯度的指数移动平均值。

其中

且V 初始化为0。
第二个等式中的最后一项就是一个投影梯度。这个值可以通过使用先前的速度“前进一步”获得(等式4)。这意味着对于这个时间步骤t,我们必须在最终执行反向传播之前执行另一个前向传播。这是步骤:
1.使用先前的速度将当前权重w更新为投影权重w*
(等式4)
2. 使用投影权重计算前向传播
3.获得投影梯度∂L/∂w*
4.计算相应的V和w
常见的默认值:
β = 0.9
请注意,原始的Nesterov 加速梯度下降法论文( Nesterov, 1983 )并不是关于随机梯度下降,也没有明确使用梯度下降方程。因此,更合适的参考是上面提到的Sutskever等人的出版物。在2013年,它描述了NAG在随机梯度下降中的应用。(再一次,我要感谢James对HackerNews的评论中指出这一点。)

4. 根号a-+5的最小值和a的值

梯度下降是非常常用的优化算法。作为机器学习的基础知识,这是一个必须要掌握的算法。借助本文,让我们来一起详细了解一下这个算法。


前言

本文的代码可以到我的Github上获取:

https://github.com/paulQuei/gradient_descent

本文的算法示例通过Python语言实现,在实现中使用到了numpy和matplotlib。如果你不熟悉这两个工具,请自行在网上搜索教程。


关于优化

大多数学习算法都涉及某种形式的优化。优化指的是改变x以最小化或者最大化某个函数的任务。

我们通常以最小化指代大多数最优化问题。最大化可经由最小化来实现。

我们把要最小化或最大化的函数成为目标函数(objective function)或准则(criterion)。

我们通常使用一个上标*表示最小化或最大化函数的x值,记做这样:

[x^* = arg; min; f(x)]


优化本身是一个非常大的话题。如果有兴趣,可以通过《数值优化》和《运筹学》的书籍进行学习。


模型与假设函数

所有的模型都是错误的,但其中有些是有用的。– George Edward Pelham Box


模型是我们对要分析的数据的一种假设,它是为解决某个具体问题从数据中学习到的,因此它是机器学习最核心的概念。

针对一个问题,通常有大量的模型可以选择。

本文不会深入讨论这方面的内容,关于各种模型请参阅机器学习的相关书籍。本文仅以最简单的线性模型为基础来讨论梯度下降算法。

这里我们先介绍一下在监督学习(supervised learning)中常见的三个符号:


5. 梯度下降法是什么

梯度下降是通过迭代搜索一个函数极小值的优化算法。使用梯度下降,寻找一个函数的局部极小值的过程起始于一个随机点,并向该函数在当前点梯度(或近似梯度)的反方向移动。梯度下降算法是一种非常经典的求极小值的算法。

比如逻辑回归可以用梯度下降进行优化,因为这两个算法的损失函数都是严格意义上的凸函数,即存在全局唯一极小值,较小的学习率和足够的迭代次数,一定可以达到最小值附近,满足精度要求是完全没有问题的。并且随着特征数目的增多,梯度下降的效率将远高于去解析标准方程的逆矩阵。

常用的梯度下降法有3种不同的形式:

(1)批量梯度下降法,简称BGD,使用所有样本,比较耗时。

(2)随机梯度下降法,简称SGD,随机选择一个样本,简单高效。

(3)小批量梯度下降法,简称MBGD,使用少量的样本,这是一个折中的办法。

机梯度下降法优点:

1、更容易跳出局部最优解。

2、具有更快的运行速度。

6. 常用激活函数比较

本文结构:

如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function。

如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

公式:

曲线:

也叫 Logistic 函数,用于隐层神经元输出
取值范围为(0,1)
它可以将一个实数映射到(0,1)的区间,可以用来做二分类。
在特征相差比较复杂或是相差不是特别大时效果比较好。

sigmoid缺点:
激活函数计算量大,反向传播求误差梯度时,求导涉及除法
反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练

下面解释为何会出现梯度消失:

反向传播算法中,要对激活函数求导,sigmoid 的导数表达式为:

sigmoid 原函数及导数图形如下:

由图可知,导数从 0 开始很快就又趋近于 0 了,易造成“梯度消失”现象

公式

曲线

也称为双切正切函数
取值范围为[-1,1]。
tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果。
与 sigmoid 的区别是,tanh 是 0 均值的,因此实际应用中 tanh 会比 sigmoid 更好

Rectified Linear Unit(ReLU) - 用于隐层神经元输出

公式

曲线

输入信号 <0 时,输出都是0,>0 的情况下,输出等于输入

ReLU 的优点:
Krizhevsky et al. 发现使用 ReLU 得到的 SGD 的收敛速度会比 sigmoid/tanh 快很多

ReLU 的缺点:
训练的时候很”脆弱”,很容易就”die”了
例如,一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是 0.
如果 learning rate 很大,那么很有可能网络中的 40% 的神经元都”dead”了。

Softmax - 用于多分类神经网络输出

公式

举个例子来看公式的意思:

就是如果某一个 zj 大过其他 z, 那这个映射的分量就逼近于 1,其他就逼近于 0,主要应用就是多分类。

为什么要取指数,第一个原因是要模拟 max 的行为,所以要让大的更大。
第二个原因是需要一个可导的函数。

Sigmoid 和 ReLU 比较:

sigmoid 的梯度消失问题,ReLU 的导数就不存在这样的问题,它的导数表达式如下:

曲线如图

对比sigmoid类函数主要变化是:
1)单侧抑制
2)相对宽阔的兴奋边界
3)稀疏激活性。

Sigmoid 和 Softmax 区别:

softmax is a generalization of logistic function that “squashes”(maps) a K-dimensional vector z of arbitrary real values to a K-dimensional vector σ(z) of real values in the range (0, 1) that add up to 1.

sigmoid将一个real value映射到(0,1)的区间,用来做二分类。

而 softmax 把一个 k 维的real value向量(a1,a2,a3,a4….)映射成一个(b1,b2,b3,b4….)其中 bi 是一个 0~1 的常数,输出神经元之和为 1.0,所以相当于概率值,然后可以根据 bi 的概率大小来进行多分类的任务。

二分类问题时 sigmoid 和 softmax 是一样的,求的都是 cross entropy loss,而 softmax 可以用于多分类问题

softmax是sigmoid的扩展,因为,当类别数 k=2 时,softmax 回归退化为 logistic 回归。具体地说,当 k=2 时,softmax 回归的假设函数为:

利用softmax回归参数冗余的特点,从两个参数向量中都减去向量θ1 ,得到:

最后,用 θ′ 来表示 θ2−θ1,上述公式可以表示为 softmax 回归器预测其中一个类别的概率为

另一个类别概率的为

这与 logistic回归是一致的。

softmax建模使用的分布是多项式分布,而logistic则基于伯努利分布

多个logistic回归通过叠加也同样可以实现多分类的效果,但是 softmax回归进行的多分类,类与类之间是互斥的,即一个输入只能被归为一类;多个logistic回归进行多分类,输出的类别并不是互斥的,即"苹果"这个词语既属于"水果"类也属于"3C"类别。

选择的时候,就是根据各个函数的优缺点来配置,例如:

如果使用 ReLU,要小心设置 learning rate,注意不要让网络出现很多 “dead” 神经元,如果不好解决,可以试试 Leaky ReLU、PReLU 或者 Maxout.

参考资料:
http://feisky.xyz/machine-learning/neural-networks/active.html
http://jishu.y5y.com.cn/qq_17754181/article/details/56495406
https://www.hu.com/question/29021768
http://blog.csdn.net/cyh_24/article/details/50593400
http://www.itda.com/articles/c15a1000722p0.html
https://www.hu.com/question/23765351

推荐阅读 历史技术博文链接汇总
也许可以找到你想要的

我是 不会停的蜗牛 Alice
85后全职主妇
喜欢人工智能,行动派
创造力,思考力,学习力提升修炼进行中
欢迎您的喜欢,关注和评论!

7. 100维度用什么优化算法

神经网络中常用的优化算法。
优化算法的目的:
1. 跳出局部极值点或鞍点,寻找全局最小值;
2.使训练过程更加稳定,更加容易收敛。
优化算法:深度学习优化学习方法(一阶、二阶)
一阶方法:随机梯度下降(SGD)、动量(Momentum)、牛顿动量法(Nesterov动量)、AdaGrad(自适应梯度)、RMSProp(均方差传播)、Adam、Nadam。
二阶方法:牛顿法、拟牛顿法、共轭梯度法(CG)、BFGS、L-BFGS。
自适应优化算法有哪些?(Adagrad(累积梯度平方)、RMSProp(累积梯度平方的滑动平均)、Adam(带动量的RMSProp,即同时使用梯度的一、二阶矩))。
梯度下降陷入局部最优有什么解决办法?可以用BGD、SGD、MBGD、momentum,RMSprop,Adam等方法来避免陷入局部最优。

8. 梯度下降法是什么

梯度下降法,是一种基于搜索的最优化方法,它其实不是一个机器学习算法,但是在机器学习领域,许多算法都是以梯度下降法为基础的,它的主要作用是寻找目标函数的最优解。

在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。

常用的梯度下降法有3种不同的形式:

(1)批量梯度下降法,简称 BGD,使用所有样本,比较耗时;

(2)随机梯度下降法,简称 SGD,随机选择一个样本,简单高效;

(3)小批量梯度下降法,简称 MBGD,使用少量的样本,这是一个折中的办法。

9. e的x减一次方的导数

e的x减一次方的导数是e^(x-1)。

具体解法如下:

e的x减一次方,即为e^(x-1)

e的x减一次方的导数,即为e^(x-1)的导数

e^(x-1)'=e^(x-1)*(1)=e^(x-1)

所以e的x减一次方的导数是e^(x-1)。

(9)sgd算法扩展阅读

导数的求解注意点:

1、理解并牢记导数定义。导数定义中一定要出现这一点的函数值,如果已知告诉等于零,那极限表达式中就可以不出现,否就不能推出在这一点可导。

2、导数定义相关计算。这里有几种题型:1)已知某点处导数存在,计算极限,这需要掌握导数的广义化形式,还要注意是在这一点处导数存在的前提下,否则是不一定成立的。

3、导数、可微与连续的关系。函数在一点处可导与可微是等价的,可以推出在这一点处是连续的,反过来则是不成立的。

4、导数的计算。导数的计算可以说在每一年的考研数学中都会涉及到,而且形式不一,考查的方法也不同。

5、高阶导数计算。需要同学们记住几个常见的高阶导数公式,将其他函数都转化成我们这几种常见的函数,代入公式就可以了,也有通过求一阶导数,二阶,三阶的方法来找出他们之间关系的。

10. 有目标函数,怎么用sgd算法优化

<pre t="code" l="java">function main()
clc;clear all;close all;
tic; %程序运行计时
E0=0.001; %允许误差
MaxNum=100; %粒子最大迭代次数
narvs=1; %目标函数的自变量个数
particlesize=30; %粒子群规模
c1=2; %每个粒子的个体学习因子,也称为加速常数
c2=2; %每个粒子的社会学习因子,也称为加速常数
w=0.6; %惯性因子
vmax=0.8; %粒子的最大飞翔速度
x=-5+10*rand(particlesize,narvs); %粒子所在的位置
v=2*rand(particlesize,narvs); %粒子的飞翔速度
%用inline定义适应度函数以便将子函数文件与主程序文件放在一起,
%目标函数是:y=1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2))
%inline命令定义适应度函数如下:
fitness=inline('1/(1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2)))','x');
%inline定义的适应度函数会使程序运行速度大大降低
for i=1:particlesize
for j=1:narvs
f(i)=fitness(x(i,j));
end
end
personalbest_x=x;
personalbest_faval=f;
[globalbest_faval i]=min(personalbest_faval);
globalbest_x=personalbest_x(i,:);
k=1;
while k<=MaxNum
for i=1:particlesize
for j=1:narvs
f(i)=fitness(x(i,j));
end
if f(i)<personalbest_faval(i) %判断当前位置是否是历史上最佳位置
personalbest_faval(i)=f(i);
personalbest_x(i,:)=x(i,:);
end
end
[globalbest_faval i]=min(personalbest_faval);
globalbest_x=personalbest_x(i,:);
for i=1:particlesize %更新粒子群里每个个体的最新位置
v(i,:)=w*v(i,:)+c1*rand*(personalbest_x(i,:)-x(i,:))
+c2*rand*(globalbest_x-x(i,:));
for j=1:narvs %判断粒子的飞翔速度是否超过了最大飞翔速度
if v(i,j)>vmax;
v(i,j)=vmax;
elseif v(i,j)<-vmax;
v(i,j)=-vmax;
end
end
x(i,:)=x(i,:)+v(i,:);
end
if abs(globalbest_faval)<E0,break,end
k=k+1;
end
Value1=1/globalbest_faval-1; Value1=num2str(Value1);
% strcat指令可以实现字符的组合输出
disp(strcat('the maximum value','=',Value1));
%输出最大值所在的横坐标位置
Value2=globalbest_x; Value2=num2str(Value2);
disp(strcat('the corresponding coordinate','=',Value2));
x=-5:0.01:5;
y=2.1*(1-x+2*x.^2).*exp(-x.^2/2);
plot(x,y,'m-','linewidth',3);
hold on;
plot(globalbest_x,1/globalbest_faval-1,'kp','linewidth',4);
legend('目标函数','搜索到的最大值');xlabel('x');ylabel('y');grid on;toc;

阅读全文

与sgd算法相关的资料

热点内容
卡尔曼滤波算法书籍 浏览:763
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:841
安卓怎么下载60秒生存 浏览:800
外向式文件夹 浏览:232
dospdf 浏览:428
怎么修改腾讯云服务器ip 浏览:383
pdftoeps 浏览:490
为什么鸿蒙那么像安卓 浏览:733
安卓手机怎么拍自媒体视频 浏览:183
单片机各个中断的初始化 浏览:721
python怎么集合元素 浏览:477
python逐条解读 浏览:829
基于单片机的湿度控制 浏览:496
ios如何使用安卓的帐号 浏览:880
程序员公园采访 浏览:808
程序员实战教程要多长时间 浏览:970
企业数据加密技巧 浏览:132
租云服务器开发 浏览:810
程序员告白妈妈不同意 浏览:332
攻城掠地怎么查看服务器 浏览:598