Datawhale X 李宏毅苹果书 AI夏令营:task2了解线性模型

1.术语以及解释

术语 解释
线性模型 把输入的特征x乘上一个权重,再加上一个偏置就得到预测的结果,这样的模型称为线性模型。
灵活性 深度学习中的“灵活性”是通过使用多个特征、调整参数和引入非线性变换来实现的。
回合 它指的是整个训练数据集在模型中进行一次完整的前向传播和一次反向传播的过程。
批量大小 批量大小(Batch Size)决定了你在每次调整(权重更新)之前要骑多远。
样本 深度学习模型也是通过分析大量的样本来学习如何对新的数据进行准确的预测或分类。
修正线性单元 ReLU激活函数非常简单,它的规则是:如果神经元的输入(信息)是正的,那么它就“激活”,输出这个正的值;如果输入是负的,那么它就“不激活”,输出0。
激活函数 激活函数帮助神经网络从线性关系转变为非线性关系,使得模型能够学习到更复杂的数据模式。
神经网络 很多的神经元称为神经网络。
隐藏层 负责从原始数据中提取有意义的信息,并逐步构建起对输入数据的理解,最终帮助模型做出准确的预测。
残差网络 残差网络就像是在深楼梯上增加了许多捷径,让爬楼变得更加容易。同样的道理,残差网络让训练更深的神经网络变得更加可行和高效。
过拟合 模型在训练过程中过度学习了训练数据的细节和噪声,以至于它在面对新的、未见过的数据时表现不佳。换句话说,模型对训练数据进行了“过度记忆”,而不是学习到数据背后的真实规律。
反向传播 反向传播就是一种高效的方法来完成这项任务。它从输出层开始,沿着网络的层次结构往回走,逐层计算每个权重对最终误差的影响程度(即梯度)。

接下来用通俗的语言来解释以上术语:

1.1 线性模型

深度学习中的线性模型是一种简单的模型,它假设输入特征和输出之间存在线性关系。这种模型的基本形式可以表示为一个简单的等式:

\[y=w^Tx+b \]

这里的 y 是模型的预测值,x 是输入特征向量,w 是模型的权重向量,b 是偏置项。权重向量 w 决定了每个输入特征对输出的影响程度,偏置项 b 可以看作是模型的起点。

线性模型的优点包括形式简洁、易于理解和实现,以及参数估计的稳定性好。此外,线性模型的可解释性强,权重向量可以直观地表达各个特征在预测中的重要性。

在深度学习中,线性模型虽然结构简单,但它们是构建更复杂模型的基础。通过对特征进行非线性变换或堆叠多个线性模型,可以构建出能够处理非线性关系的模型。例如,逻辑回归是线性模型的一个应用,它通过使用逻辑函数将线性模型的输出转换为概率值,适用于二分类问题。

线性模型在实际应用中非常广泛,如回归分析、分类、降维等。例如,线性回归用于预测连续值,逻辑回归用于分类问题,主成分分析(PCA)作为一种特殊的广义线性模型,用于降维。

尽管线性模型在处理复杂数据时可能受限,但它们在解决实际问题时仍然非常有用,尤其是在数据量不大或者问题本身具有线性特征时。


1.2 灵活性

在深度学习中,当我们谈到使用多个特征以及参数(如权重w,偏置b)来构建模型时,我们实际上是在追求模型的“灵活性”或“表达能力”。通俗地讲,这就好比我们用不同颜色和形状的积木(特征和参数)来搭建一个复杂的结构(模型)。

  1. 特征的多样性:在现实世界中,事物的描述往往不是单一维度的。比如,预测房价不仅要看面积(x1),还要考虑地段、楼层、朝向等(x2, x3, x4...)。每个特征都像是一个维度,多个特征的结合能描绘出更全面、更立体的“画像”,让模型能够捕捉到数据中的复杂模式。
  2. 参数的调整:权重(w)和偏置(b)是模型中的“可调旋钮”。不同的w和b组合,就像不同的配方,可以“烹饪”出不同味道的模型。这些参数的优化,通过训练过程中的梯度下降等方法,让模型能够更准确地“学习”数据中的规律,从而在预测时更加“聪明”和“灵活”。
  3. 组合的魔力:当我们把多个特征(x1, x2, x3...)和参数(w1, w2, w3...)组合起来,通过复杂的数学运算(如神经网络中的多层非线性变换),就能构建出高度复杂的函数。这些函数可以拟合非线性关系,解决线性模型无法处理的问题,从而让模型在处理复杂数据时更加“得心应手”。
  4. 非线性变换:深度学习中的激活函数(如ReLU、Sigmoid等)为模型添加了非线性,使得模型能够处理数据中的非线性关系,这是模型灵活性的关键。非线性让模型能够“理解”数据的复杂结构,而不仅仅是简单的加减乘除。

综上所述,深度学习中的“灵活性”是通过使用多个特征、调整参数和引入非线性变换来实现的,这使得模型能够处理复杂数据,捕捉到数据中的深层次模式,从而在预测和分类任务中表现出色。


1.3 回合

在深度学习中,回合(Epoch)是一个非常重要的概念,它指的是整个训练数据集在模型中进行一次完整的前向传播和一次反向传播的过程。简单来说,一个回合就是模型“看”了一遍所有的训练样本,并根据这些样本来调整和优化自己的内部参数,如权重和偏置。

想象一下,你正在学习一本非常厚的书,每一章都代表数据集中的一部分。回合就像是你从头到尾完整地阅读了一遍这本书,每读一章,你就在理解和记忆书中的信息。在深度学习中,模型通过一个回合来学习数据集中的所有样本,这样可以确保模型有机会捕捉到数据的各种特征和模式。

通常,一个深度学习模型会进行多个回合的训练,因为一次回合可能不足以让模型完全学习到数据的所有复杂性。随着回合数的增加,模型通常会逐渐改进其性能,但如果设置的回合数太多,可能会导致模型过拟合,即模型在训练数据上学得太好,但在新数据上的表现不佳。因此,选择合适的回合数是深度学习训练中的一个关键步骤.


1.4 批量大小

想象一下,你正在学习骑自行车,但不是一次骑完整个路程,而是分成一小段一小段来练习。每次练习,你只骑一段路程,然后停下来调整一下姿势和平衡,接着再骑下一段。这里的每一段路程就像是深度学习中的一个“批量”(batch),而你调整姿势和平衡的过程就像是模型在每次迭代中更新权重。

批量大小(Batch Size)决定了你在每次调整(权重更新)之前要骑多远。如果批量大小很大,意味着你一次骑很长的路程再做调整,这样可以让你的动作更加平稳,但可能会错过一些小的调整机会。如果批量大小很小,你每次只骑一小段,这样可以更灵活地调整,但可能会因为频繁的调整而感到不稳定。

在深度学习中,批量大小也是类似的。较大的批量大小可以提高计算效率,因为可以一次处理更多的数据,充分利用硬件资源,如GPU的并行计算能力。但过大的批量可能会导致模型陷入局部最优解,或者需要更多的内存。较小的批量大小可以帮助模型更好地泛化到新数据,因为它在每次迭代中只考虑了一小部分样本,但可能会导致训练过程更加缓慢。

因此,选择合适的批量大小需要在计算资源、模型复杂度、数据分布和训练目标之间进行权衡。通常,可以通过实验不同的批量大小并观察训练的收敛性和效果来确定最佳值。


1.5 样本

在深度学习中,样本(Example)可以被想象成是一个具体的“预言”,它是用来训练模型的数据中的一个实例。就像我们在生活中通过观察不同的情况来学习和做出预测一样,深度学习模型也是通过分析大量的样本来学习如何对新的数据进行准确的预测或分类。

每个样本通常包含两部分:特征(Features)和标签(Labels)。特征是描述样本的各种属性,比如一张图片的像素值,或者一个文本的词汇等。标签则是样本的“答案”,是我们希望模型能够预测的结果,比如图片中的物体类别或者文本的情感倾向。

深度学习模型通过分析这些样本,学习到数据的内在规律和模式。模型会调整其内部的参数,以便更好地拟合训练数据中的特征和标签之间的关系。一旦模型训练完成,它就可以用来对新的、未见过的数据进行预测,就像是根据过去的预言来预测未来一样。

在深度学习的过程中,样本的多样性和质量非常重要。多样性确保模型能够学习到数据的广泛变化,而质量则影响模型的学习效果和最终的预测准确性。通过对大量样本的学习,深度学习模型能够在各种复杂任务中实现高性能的预测。


1.6 修正线性单元

想象一下,你有一个非常聪明的助手,他负责处理一些信息,并且只有当信息对他来说是“积极”的时候,他才会真正投入工作。如果信息是“消极”的,他就会选择忽略它们,继续专注于那些对他有帮助的信息。这就是修正线性单元(ReLU)在深度学习中的作用。

在深度学习模型中,神经元就像是这个助手,它们通过激活函数来决定是否对输入的信息做出反应。ReLU激活函数非常简单,它的规则是:如果神经元的输入(信息)是正的,那么它就“激活”,输出这个正的值;如果输入是负的,那么它就“不激活”,输出0。这样,ReLU帮助模型专注于那些“积极”的特征,忽略那些可能导致混淆的“消极”特征。

ReLU的一个重要优点是它在正数区域的梯度恒为1,这意味着在训练过程中,信息可以更容易地通过网络传播,不会像传统的激活函数(如sigmoid或tanh)那样遇到梯度消失的问题。这就像是你的助手在处理积极信息时效率非常高,不会因为一些小的负面信息而放慢工作速度。

然而,ReLU也有一个缺点,有时候被称为“死亡ReLU”问题。如果一个神经元在训练过程中持续接收负输入,它可能会“死亡”,即不再对任何输入激活,这会导致模型的一部分“死去”,不再参与学习。为了解决这个问题,研究人员开发了ReLU的变体,如Leaky ReLU,它允许在负输入时有一个小的非零梯度,以防止神经元完全死亡。

总的来说,ReLU就像是一个只对积极信息做出反应的助手,帮助深度学习模型更快、更有效地学习。尽管它有一些局限性,但通过适当的调整和变体,ReLU仍然是深度学习中最受欢迎和广泛使用的激活函数之一。


1.7 激活函数

让我们用一个更直观的方式来解释深度学习中的激活函数(activation function)。

想象一下,你正在参加一个团队接力比赛,比赛中每个人都有特定的任务,比如传递棒子或者完成一段跑步。在这个比赛中,每个队员都需要根据当前的情况决定是否继续前进或者做出特定的动作。我们可以把这种决策过程类比为激活函数在神经网络中的作用。

  1. 输入层(Input Layer):这相当于比赛开始时,第一棒队员接收到棒子,并开始跑。在神经网络中,输入层接收原始数据,比如图像的像素值或一段文本。

  2. 隐藏层(Hidden Layers):这些队员根据接收到的信息(即前面队员传来的棒子)决定下一步动作。在神经网络中,隐藏层中的神经元(队员)根据输入数据和前一层神经元的输出来计算一个加权和。这个加权和就像是队员接收到的信息。

  3. 激活函数(Activation Function):现在想象一下,每个队员在接到棒子后,需要决定是否要继续前进。在神经网络中,激活函数的作用就是决定一个神经元是否应该“激活”,即决定它是否应该将计算的结果传递给下一层。

    • 如果激活函数决定“激活”,那么神经元会将一个非零的值传递给下一层,就像队员继续向前跑一样。
    • 如果激活函数决定不“激活”,那么神经元可能会传递一个很小的值或者零值,就像队员决定不继续跑一样。
  4. 输出层(Output Layer):最后,最后一棒队员完成比赛,给出最终的结果。在神经网络中,输出层给出模型的最终预测结果,比如识别出这是一张猫的照片。

通过这样的比喻,我们可以看到激活函数在神经网络中的重要性。它就像是每个队员在比赛中根据当前状况作出的决策,确保整个团队能够有效地完成任务。激活函数帮助神经网络从线性关系转变为非线性关系,使得模型能够学习到更复杂的数据模式。


1.8 神经网络

让我们用一个更加直观的方式来解释深度学习中的神经网络(neural network)。

想象一下,你正在参加一个团队游戏,这个游戏的目标是通过一系列传递来完成一项任务,比如搭建一座塔。在这个游戏中,每个人都有一定的任务,他们会根据接收到的信息来决定下一步的动作。我们可以把这个过程类比为神经网络的工作方式。

  1. 输入层(Input Layer):这相当于游戏开始时,一些队员接收到最初的指令或物品。在神经网络中,输入层接收原始数据,比如图像的像素值或一段文本。

  2. 隐藏层(Hidden Layers):这些队员根据接收到的信息进行思考和判断,然后决定如何行动。他们可能需要与其他队员合作,通过一系列的动作来完成任务的一部分。这些动作就像是隐藏层中的计算,它们负责从输入数据中提取有用的信息,并将其转化为更高层次的表示。

    • 每一层隐藏层就像是一个小组,他们负责完成任务的一个特定部分。例如,第一层隐藏层可能识别基本的形状或颜色;第二层可能识别更复杂的图案或对象的部分;更深层次则可以识别完整的对象或场景。
  3. 输出层(Output Layer):最后,游戏的目标是要完成任务,比如搭建的塔。在神经网络中,输出层给出模型的最终预测结果,比如识别出这是一张猫的照片。

  4. 权重(Weights):在游戏中,每个队员的动作可能对最终结果有不同的影响。在神经网络中,权重决定了每个节点(神经元)对输出的影响程度。这些权重是在训练过程中通过学习调整的,以使模型更好地完成任务。

  5. 激活函数(Activation Function):在游戏中,每个队员可能会根据情况决定是否执行某个动作。在神经网络中,激活函数的作用就像是队员根据接收到的信息决定是否要将信号传递下去。

通过这样的比喻,我们可以看出神经网络就像是一个团队合作的过程,每个成员(神经元)都扮演着重要的角色,共同完成一个任务。神经网络通过多层的处理,能够从原始数据中提取复杂的特征,并做出准确的预测。


1.9 隐藏层

让我们用一个更加直观的方式来解释深度学习中的隐藏层(hidden layer)。

想象一下,你是一位厨师,正在尝试制作一道非常复杂的菜肴。这道菜肴包含了许多不同的食材和调料,你需要通过一系列的步骤来组合它们,最终得到美味的成品。

在这个例子中,你可以将整个烹饪过程视为一个深度学习模型,而隐藏层就像是你在烹饪过程中所采取的不同步骤。

  1. 输入层(Input Layer):这相当于你准备好的所有原材料,比如蔬菜、肉类、调味料等。在深度学习中,输入层接收原始数据,例如图像像素值或文本数据。

  2. 隐藏层(Hidden Layers):现在想象一下,你开始处理这些原材料。比如,你先切菜,然后炒制,接着加入调料,最后混合在一起。这些步骤就像是隐藏层,它们对输入的数据进行一系列的转换,提取出有用的特征。每一层隐藏层都可以看作是对原材料的一次加工,比如切片、烹饪等。

    • 第一层隐藏层可能负责识别基本的形状或边缘(例如,在图像识别任务中,第一层可能识别线条和颜色)。
    • 第二层隐藏层可能基于第一层的输出,识别更复杂的形状,比如圆形或方形。
    • 更深层的隐藏层则可以进一步组合这些特征,识别出更加复杂的模式,比如动物的面部特征。
  3. 输出层(Output Layer):最后一步是将所有加工好的食材组合起来,形成最终的菜肴。在深度学习中,输出层给出模型的最终预测结果,比如识别出这是一张猫的照片。

通过这样的比喻,我们可以看到隐藏层在深度学习中的作用类似于厨师在烹饪过程中的各个步骤,它们负责从原始数据中提取有意义的信息,并逐步构建起对输入数据的理解,最终帮助模型做出准确的预测。隐藏层越多,模型就越能够捕捉到数据中的复杂特征,从而更好地解决问题。


1.10 残差网络

让我们用一个通俗的方式来解释残差网络(Residual Network,简称ResNet)。

想象一下你在爬一座很高的楼梯,每一级台阶都代表着神经网络中的一层。你想要到达顶层,但是随着楼层越来越高,每上一层都会感到越来越吃力。这就好比是深度神经网络在增加层数时面临的梯度消失问题——越往下层传递,梯度就越小,导致下层的学习变得困难。

为了克服这个问题,研究人员发明了一种新的楼梯设计——残差网络。在这个设计中,每隔几级台阶就设置一条捷径,让你可以直接跳过几级台阶直接到达更高的位置。这条捷径就相当于残差块(Residual Block)中的跳跃连接(skip connection)。

具体来说,残差网络中的残差块通常包含以下部分:

  1. 常规的神经网络层:这部分包含了普通的神经网络层,比如卷积层等,它们负责提取特征。
  2. 跳跃连接:这部分直接将输入数据以某种形式传递到后续的层,不经过任何复杂的变换。就像楼梯上的捷径一样,你可以选择直接跳过几级台阶到达更高处。

当这两部分结合在一起时,整个残差块实际上是在做这样的事情:将输入数据通过常规层进行变换得到一个输出,同时保留原始输入并通过跳跃连接直接加到输出上。这就像是你在爬楼梯时,既可以选择正常走楼梯,也可以选择走捷径直接跳到前面几级台阶。

这样做的好处在于,即使网络很深,跳跃连接也能帮助信息更快地向前传播,减少梯度消失的问题。此外,这种设计使得网络更容易优化,因为即使深层的网络也能像浅层网络那样学习到有效的特征表示。

总结一下,残差网络就像是在深楼梯上增加了许多捷径,让爬楼变得更加容易。同样的道理,残差网络让训练更深的神经网络变得更加可行和高效。


1.11 过拟合

我们可以通过一个简单的比喻来理解深度学习中的过拟合(overfitting)现象。

想象一下你正在教一个小孩子识别苹果。为了教会他,你给他看了很多不同的苹果图片,包括红色的、绿色的、有斑点的、光滑的等等。你的目标是让他能够看到一个苹果时,无论它长什么样都能认出来。

--正常的学习情况--
  • 在正常的学习过程中,你会展示各种类型的苹果图片,同时也会展示其他水果的图片,比如香蕉、橙子等,这样孩子就能学会区分苹果和其他水果。
--过拟合的情况--
  • 现在假设你只给孩子看一种特定类型的苹果——比如说,红色且表面光洁的苹果。而且你只给他看这种苹果的图片,不给他看任何其他类型的苹果或者别的水果。结果,孩子学会了非常准确地识别这种特定类型的苹果。
  • 但是,当你给他看一个绿色的苹果或是一个表面有斑点的苹果时,他可能就无法识别了。这是因为他在学习的过程中过分专注于那些特定特征,以至于他只能识别出和训练时完全一样的苹果。

这就是过拟合的一种直观解释。在机器学习中:

  • 过拟合意味着模型在训练数据上表现得非常好,几乎可以完美地匹配每一个样本,但当遇到新的、未见过的数据时,模型的表现就会很差。
  • 类似于上面的例子,模型可能会过分关注训练数据中的某些细节或噪声,而忽略了更普遍的模式。

为了解决过拟合问题,通常会采用以下几种方法:

  • 增加数据多样性:就像给小孩子看更多种类的苹果一样,增加更多的训练数据可以帮助模型更好地泛化。
  • 正则化:类似于告诉孩子不要过分依赖某个特征,正则化技术可以限制模型的复杂度,避免其过于专注某些细节。
  • 早停法:在训练过程中,一旦发现模型在验证集上的性能不再提高,就提前停止训练,以防止模型继续学习训练数据中的噪声。

通过这些方法,我们可以帮助模型更好地从训练数据中学习,并在未知数据上做出更准确的预测。


1.12 反向传播

反向传播(BackPropagation,简称BP)是深度学习中非常关键的一个概念,主要用于训练神经网络。我们可以把它想象成一个调整过程,让神经网络能够从错误中学习并逐渐改进自己的预测能力。

通俗地讲,反向传播的工作原理如下:

  1. 前向传播:首先,我们给神经网络输入一些数据,让它根据当前的权重(连接各层节点的参数)进行计算,并输出一个结果。这个过程称为“前向传播”。

  2. 计算误差:接下来,我们将神经网络的输出结果与实际正确的答案进行比较,看看两者之间有多大的差距。这个差距被称为“误差”或“损失”。

  3. 反向传播:知道了误差之后,我们需要找出应该如何调整权重才能减小这个误差。反向传播就是一种高效的方法来完成这项任务。它从输出层开始,沿着网络的层次结构往回走,逐层计算每个权重对最终误差的影响程度(即梯度)。

  4. 权重更新:计算出每个权重的梯度后,我们就可以利用这些信息来调整权重了。通过某种优化算法(如梯度下降),每次迭代都会根据梯度的大小和方向来微调权重,使得下次遇到相同的数据时,输出的结果更接近正确答案。

  5. 重复[训练:上述步骤会在大量的训练数据上反复执行多次,每完成一轮所有训练数据的处理称为一个“epoch”。随着训练的进行,网络会逐渐学会如何更好地进行预测。

简单来说,反向传播就像是一个教练在指导运动员训练的过程。如果运动员的表现不佳(相当于网络输出误差大),教练需要告诉运动员哪些动作做得不够好(相当于计算梯度),然后指导他们如何改正(相当于更新权重)。通过不断练习(迭代训练),运动员(神经网络)的表现就会越来越好。


2.所有公式以及理解

2.1 公式1

\[y=b+wx_1 \]

一个普通的线性模型

2.2 公式2

\[y=b+\sum^{7}_{j=1} w_j x_j \]

其中 xj 代表第 j 天的观看测试,也就是 7 天前的数据,通通乘上不同的权重 wj,加起来,再加上偏置得到预测的结果。

2.3 公式3

\[y=b+\sum^{28}_{j=1} w_j x_j \]

w1, w3, w6, w7 是正的,考虑前 7天的值,其实可以考虑更多天,本来是考虑前 7 天,可以考虑 28 天).

2.4 公式4

\[y=b+\sum^{56}_{j=1}w_j x_j \]

考虑56天。

2.5 公式5

\[y=c\sigma(b+wx_1) \]

Sigmoid 函数的表达式。

2.6 公式6

\[y=c\frac{1}{1+e^{-(b+wx_1)}} \]

调整这里的 b、w 和 c 可以制造各种不同形状的 Sigmoid 函数,用各种不同形状的 Sigmoid函数去逼近 Hard Sigmoid 函数。

2.7 公式7

\[y=b+\sum_i c_i \sigma(b_i+w_ix_1) \]

做 Sigmoid 再乘上 ci1,只是 1、2、3 的 w、b、c 不同。

2.8 公式8

\[b_1+w_{11}x_{1}+w_{12}x_2+w_{13}x_3 \]

1,2,3 代表有个 Sigmoid 函数。

2.9 公式9

\[r_1=b_1+w_{11}x_{1}+w_{12}x_2+w_{13}x_3\\ r_2=b_2+w_{21}x_{1}+w_{22}x_2+w_{23}x_3\\ r_3=b_3+w_{31}x_{1}+w_{32}x_2+w_{33}x_3 \]

wij 代表在第 i 个 Sigmoid 里面,乘给第 j 个特征的权重,w 的第一个下标代表是现在在考虑的是第一个 Sigmoid 函数。

2.10 公式10

\[\begin{bmatrix} r_1\\ r_2\\ r_3 \end{bmatrix} = \begin{bmatrix} b_1\\ b_2\\ b_3 \end{bmatrix} + \begin{bmatrix} w_{11}&w_{12}&w_{13}\\ w_{21}&w_{22}&w_{23}\\ w_{31}&w_{32}&w_{33} \end{bmatrix} \begin{bmatrix} x_1\\ x_2\\ x_3 \end{bmatrix} \]

用矩阵跟向量相乘的方法,写一个比较简洁的写法。

2.11 公式11

\[r=b+Wx \]

将其改成线性代数比较常用的表示方式。

2.12 公式12

\[a=\sigma(r) \]

r 对应的是 r1, r2, r3。r1, r2, r3 分别通过 Sigmoid函数得到 a1, a2, a3。

2.13 公式13

\[y=b+c^Ta \]

用线性代数来表示。

2.14 公式14

\[\theta= \begin{bmatrix} \theta_1\\ \theta_2\\ \theta_3\\ \vdots \end{bmatrix} \]

这是需要优化的地方。

2.15 公式15

\[g=\nabla L(\theta_0) \]

计算每一个未知的参数对 L 的微分,得到向量 g,即可以让损失变低的函
数。

2.16 公式16

\[g= \begin{bmatrix} \frac{\partial L}{\partial \theta_1}\biggr\rvert_{\theta=\theta_0}\\ \frac{\partial L}{\partial \theta_2}\biggr\rvert_{\theta=\theta_0}\\ \vdots \end{bmatrix} \]

同上。

2.17 公式17

\[\begin{bmatrix} \theta^{1}_1\\ \theta^{2}_1\\ \vdots \end{bmatrix} \leftarrow \begin{bmatrix} \theta^{1}_0\\ \theta^{2}_0\\ \vdots \end{bmatrix} - \begin{bmatrix} \eta \frac{\partial L}{\partial \theta_1}\biggr\rvert_{\theta=\theta_0}\\ \eta \frac{\partial L}{\partial \theta_2}\biggr\rvert_{\theta=\theta_0}\\ \vdots \end{bmatrix} \]

假设有 1000 个参数,这个向量的长度就是 1000,这个向量也称为梯度,∇L 代表梯度。L(θ0) 是指计算梯度的位置,是在 θ 等于 θ0 的地方。计算出 g 后,接下来跟新参数,θ0 代表它是一个起始的值,它是一个随机选的起始的值,代表 θ1 更新过一次的结果,θ02 减掉微分乘以,减掉 η 乘上微分的值,得到 θ12,以此类推,就可以把 1000 个参数都更新了。

2.18 公式18

\[\theta_1 \leftarrow \theta_0 -\eta g \]

由 θ0 算梯度,根据梯度去把 θ0 更新成 θ1。

2.19 公式19

\[c*max(0,b+wx_1) \]

max(0, b + wx1) 是指看 0 跟 b + wx1 谁比较大,比较大的会被当做输出;如果 b + wx1 < 0,输出是 0;如果 b + wx1 > 0,输出是 b + wx1。通过 w, b, c 可以挪动其位置和斜率。

2.20 公式20

\[训练数据:\{(x^1,y^1),(x^2,y^2),...,(x^N,y^N)\}\\ 测试数据:\{x^{N+1},x^{N+2},...,x^{N+M}\} \]

测试集只有x没有y,用来训练模型。

2.21 公式21

image

用在测试集上

posted @ 2024-08-31 23:26  cyt2730  阅读(105)  评论(0)    收藏  举报