delta法则(梯度下降)

背景:

尽管当训练样例线性可分时,感知器法则可以成功地找到一个权向量,但如果样例不是线性可分时它将不能收敛。

因此,人们设计了另一个训练法则来克服这个不足,称为 delta 法则(delta rule)。如果训练样本不是线性可分的,那么 delta 法则会收敛到目标概念的最佳 近似。 


delta 法则的关键思想是使用梯度下降(gradient descent)来搜索可能权向量的假设空间, 以找到最佳拟合训练样例的权向量。 

最好把 delta 训练法则理解为训练一个无阈值的感知器,也就是一个线性单元(linear unit),它的输出 o 如下:

                    (1)

先指定一个度量标准来衡量假设(权向量)相对于 训练样例的训练误差(training error):

         (2)

其中D是训练样例集合,td是训练样例d的目标输出,od是线性单元对训练样例d的输出。 


形象化假设空间:

如果损失函数是凸函数:

这个误差曲面必然是具有单一全局最小值的抛物面。 

梯度下降搜索确定一个使 E 最小化的权向量的方法是从一个任意的初始权向量开始, 然后以很小的步伐反复修改这个向量。在每一步,按照沿误差曲面产生最陡峭下降的方向修改权向量。继续这个过程直到到达全局的最小误差。 


如果损失函数是非凸函数:

开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。

我们持续这么做直到到到 一个局部最小值,因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值,选择不同的初始参数组合, 可能会找到不同的局部最小值。 


局部最优解与全局最优解


梯度下降法则的推导:

我们怎样能计算出沿误差曲面最陡峭下降的方向呢?可以通过计算 E 相对向量 的每个分量的导数来得到这个方向。这个向量导数被称为 E 对于的梯度(gradient),记作∇E()。 

当梯度被解释为权空间的一个向量时,它确定了使 最陡峭上升的方向。所以这个向量的反方向给出了最陡峭下降的方向。

梯度下降的训练法则是 :

 

这里η是一个正的常数叫做学习速率,它决定梯度下降搜索中的步长。其中的负号是因为我们想要让权向量向 E 下降的方向移动。这个训练法则也可以写成它的分量形式:

 

要形成一个根据上式迭代更新权的实用算法,我们需要一个高效的方法在每一 步计算这个梯度:

 (3)

 

其中 xid 表示训练样例 d 的一个输入分量 xi。


概而言之,训练线性单元的梯度下降算法如下:选取一个初始的随机权向量;应用线性单元到所有的训练样例,然后根据公式(3)计算每个权值的∆wi;通过加上∆wi 来更新每个权值,然后重复这个过程。 


随机梯度下降:

应用梯度下降的主要实践问题是:

  1. 有时收敛过程可能非常慢(它可能需要数千步的梯度下降);
  2. 如果在误差曲面上有 多个局部极小值,那么不能保证这个过程会找到全局最小值。 

缓解这些困难的一个常见的梯度下降变体被称为随机梯度下降(stochastic gradient descent) 。

鉴于公式(3)给出的梯度下降训练法则在对 D 中的所有训练样例求和后计算权值更新,随机梯度下降的思想是根据每个单独样例的误差增量地计算权值更新,得到近似的梯度下降搜索。 

要修改表 4-1 的梯度下降算法,只要简单地删除(T4.2)式并把式(T4.1)替换为 wi ←wi +η(t-o)xi。 


 

标准的梯度下降和随机的梯度下降之间的关键区别:

  1. ‘标准’是在权值更新前对所有样例汇总误差;‘随机’则是对单个样例。
  2. ‘标准’每次更新需要多个样例求和,计算量大;‘标准’每次权值更新步长较大。
  3. 如果损失函数有多个局部最小值,那么‘随机’有时可能避免陷入局部最优解。


误解:

注意随机梯度下降的增量法则 与 感知器法则 相似。

事实上两个表达式看起来完全一致。然而它们是不同的,因为在增量法则中 是指线性单元的输出 而对于感知器法则,是指阈值输出。 


加快收敛速度:

1、特征缩放

在我们面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。  

以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0- 2000 平方英尺,而房间数量的值则是 0-5,以两个参数分别为横纵坐标,绘制代价函数的 等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。 

解决的方法是尝试将所有特征的尺度都尽量缩放到-1 到 1 之间。 

 2、学习率

 

梯度下降算法的每次迭代受到学习率的影响,如果学习率 η 过小,则达到收敛所需的迭代次数会非常高;如果学习率 η 过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。

通常可以考虑尝试些学习率: η=0.01,0.03,0.1,0.3,1,3,10 


Reference:

《机器学习》 -- Mitchell

斯坦福大学2014机器学习个人笔记.pdf


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
java大数据人工智能培训学校全套教材系列课程由1000集视频构成,基本就 是1)时下流行的java培训学校主流内部教材,2)和市面上培训学校的通 行的课程体系几乎一样。所以这套课程都能自己学下来,等于上了培训学校一次,完全可以找个java工程师的工作了。 通过学习卷积神经网络概述,为什么引入神经网络来做识别,判断,预测,训练模型,激活函数,sigmoid激活函数,导数和切线,sigmoid激活函数如何求导,链式法则,梯度,梯度下降法与delta法则,BP(back propagation)误差逆传播神经网络,卷积到底有什么作用?如何做到特征提取,池化的名字由来,dropout,Anaconda Prompt的用法,Jupyter notebook的用法,Spyder的用法,建立安装Tensorflow所需的Anaconda虚拟环境,如何在Anaconda虚拟环境安装Tensorflow与Keras概念等让大家对人工智能,卷积神经网络快速入门。课程特色:专业细致,偏案例,理论强。课程软件使用:Anaconda,Spyder,Jupyter notebook重要声明:1) 如果感觉噪音大,可以选择不用耳机,加音箱或用电脑原声 2) 既然我们的名字叫人工智能深度学习卷积神经网络入门,这个课程的特点就在于成本最低的, 让你最快速的,最容易的入门。人工智能深度学习卷积神经网络入门的最大的难点在于入门入不了,从而最终放弃。俗话说师傅领进门,修行在个人。只要入了门了,后面的事都好办。选课前,务必注意本章的学习目标和内容。想学更多,注意后边的课程。
逻辑回归算法中使用的梯度下降算法是一种优化算法,用于学习模型参数,以使成本函数最小化。在逻辑回归中,成本函数是由样本的预测结果和实际结果之间的差异计算得出的。而梯度下降算法则是通过反复迭代计算,来调整模型参数,从而降低成本函数的值。 具体地,梯度下降算法的过程如下: 1. 随机初始化参数向量 $\theta$ ,通常使用 0 或者较小的随机数进行初始化。 2. 在每次迭代中,计算成本函数关于参数向量 $\theta$ 的梯度 $\nabla J(\theta)$。 3. 根据学习率 $\alpha$ 和梯度 $\nabla J(\theta)$,更新参数向量 $\theta$: $$\theta := \theta - \alpha \nabla J(\theta)$$ 4. 重复步骤 2 和 3,直到成本函数收敛或者达到指定的迭代次数。 其中,学习率 $\alpha$ 是需要调整的一个超参数,它控制着参数向量 $\theta$ 的更新步伐大小。如果学习率设置过大,可能导致成本函数在迭代过程中不收敛,而如果设置过小,则需要进行大量的迭代才能收敛,从而导致计算时间增加。 参考实现[^1]: ```python def gradient_descent(X, y, theta, alpha, iterations): """ 梯度下降算法实现函数 :param X: 特征矩阵 :param y: 标签向量 :param theta: 参数向量 :param alpha: 学习率 :param iterations: 迭代次数 :return: 更新后的参数向量 theta 和成本历史记录 J_history """ m = len(y) # 样本数 J_history = np.zeros((iterations, 1)) # 成本历史记录 for i in range(iterations): h = sigmoid(np.dot(X, theta)) # 计算预测结果 delta = np.dot(X.T, h - y) / m # 计算梯度 theta = theta - alpha * delta # 更新参数向量 J_history[i] = cost_function(X, y, theta) # 记录成本值 return theta, J_history ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值