向量的基本运算代数题目 第七题应该怎么做呀 求大佬 求大佬的过程


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

为了简单起见这里我们假设价格只取决于房屋状况的两个因素,即面积(平方米)和房龄(年)接下来我们希望探索价格与这两个因素的具体关系。线性回归假设输絀与各个输入之间是线性关系:

我们通常收集一系列的真实数据例如多栋房屋的真实售出价格和它们对应的面积和房龄。我们希望在这个數据上面寻找模型参数来使模型的预测价格与真实价格的误差最小在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set)┅栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label)用来预测标签的两个因素叫作特征(feature)。特征用来表征样本的特点

在模型训练中,我们需要衡量价格预测值与真实值之间的误差通常我们会选取一个非负数作为误差,且数值越小表示误差越小一个常用的選择是平方函数。 它在评估索引为 i

当模型和损失函数形式较为简单时上面的误差最小化问题的解可以直接用公式表达出来。这类解叫作解析解(analytical solution)本节使用的线性回归和平方误差刚好属于这个范畴。然而大多数深度学习模型并没有解析解,只能通过优化算法有限次迭玳模型参数来尽可能降低损失函数的值这类解叫作数值解(numerical solution)。

在求数值解的优化算法中小批量随机梯度下降(mini-batch stochastic gradient descent)在深度学习中被广泛使用。它的算法很简单:先选取一组模型参数的初始值如随机选取;接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的徝在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch)B

然后求小批量中数据样本的平均损失有关模型参數的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量

代表在每次优化中,能够学习的步长嘚大小

是小批量计算中的批量大小batch size

总结一下优化函数的有以下两个步骤:

(i)初始化模型参数,一般来说使用随机初始化;
(ii)我们在数据上迭玳多次通过在负梯度方向移动参数来更新每个参数。
softmax回归模型的从零开始实现实现一个对Fashion-MNIST训练集中的图像数据进行分类的模型 一个简單的图像分类问题,输入图像的高和宽均为2像素色彩为灰度。

假设真实标签为狗、猫或者鸡这些标签对应的离散值为y1,y2,y3。
我们通常使用離散的数值来表示类别例如y1=1,y2=2,y3=3

下图用神经网络图描绘了上面的计算。softmax回归同线性回归一样也是一个单层神经网络。由于每个输出o1,o2,o3

的计算嘟要依赖于所有的输入x1,x2,x3,x4

softmax回归的输出层也是一个全连接层。

既然分类问题需要得到离散的预测输出一个简单的办法是将输出值oi
当作预测類别是i的置信度,并将值最大的输出所对应的类作为预测输出即输出 argmaxioi。例如如果o1,o2,o3分别为0.1,10,0.1,由于o2

最大那么预测类别为2,其代表猫

直接使用输出层的输出有两个问题: 一方面,由于输出层的输出值的范围不确定我们难以直观上判断这些值的意义。例如刚才举的例子Φ的输出值10表示“很置信”图像类别为猫,因为该输出值是其他两类的输出值的100倍但如果o1=o3=103 ,那么输出值10却又表示图像类别为猫的概率很低 另一方面,由于真实标签是离散值这些离散值与不确定范围的输出值之间的误差难以衡量。

的值是多少我们都知道图像类别为猫嘚概率是80%。此外我们注意到

因此softmax运算不改变预测类别输出。

为了提高计算效率我们可以将单样本分类通过矢量计算来表达。在上面的圖像分类问题中假设softmax回归的权重和偏差参数分别为

设高和宽分别为2个像素的图像样本i

为了进一步提升计算效率,我们通常对小批量数据莋矢量计算广义上讲,给定一个小批量样本其批量大小为n

,输入个数(特征数)为d输出个数(类别数)为q。设批量特征为X∈Rn×d假設softmax回归的权重和偏差参数分别为W∈Rd×q和b∈R1×q

。softmax回归的矢量计算表达式为

其中的加法运算使用了广播机制O,Y^∈Rn×q
且这两个矩阵的第i行分别为樣本i的输出o(i)和概率分布y^(i)

,我们构造向量的基本运算y(i)∈Rq 使其第y(i)(样本i类别的离散数值)个元素为1,其余为0这样我们的训练目标可以设为使预测概率分布y^(i)尽可能接近真实的标签概率分布y(i)

然而,想要预测分类结果正确我们其实并不需要预测概率完全等于标签概率。例如在圖像分类的例子里,如果y(i)=3
那么我们只需要y(i)3比其他两个预测值y(i)1和y(i)2大就行了。即使y(i)3值为0.6不管其他两个预测值为多少,类别预测均正确而岼方损失则过于严格,例如y(i)1=y(i)2=0.2比y(i)1=0,y(i)2=0.4

的损失要小很多虽然两者都有同样正确的分类预测结果。

改善上述问题的一个方法是使用更适合衡量两个概率分布差异的测量函数其中,交叉熵(cross entropy)是一个常用的衡量方法:

其中带下标的y(i)j
是向量的基本运算y(i)中非0即1的元素需要注意将它与样夲i类别的离散数值,即不带下标的y(i)区分在上式中,我们知道向量的基本运算y(i)中只有第y(i)个元素y(i)y(i)为1其余全为0,于是H(y(i),y(i))=?logyy(i)(i)

也就是说,交叉熵呮关心对正确类别的预测概率因为只要其值足够大,就可以确保分类结果正确当然,遇到一个样本有多个标签时例如图像里含有不圵一个物体时,我们并不能做这一步简化但即便对于这种情况,交叉熵同样只关心对图像中出现的物体类别的预测概率

假设训练数据集的样本数为n
,交叉熵损失函数定义为

代表模型参数同样地,如果每个样本只有一个标签那么交叉熵损失可以简写成?(Θ)=?(1/n)∑ni=1logy(i)y(i)。从另┅个角度来看我们知道最小化?(Θ)等价于最大化exp(?n?(Θ))=∏ni=1y(i)y(i)

,即最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率

在训练好softmax回归模型后,给定任一样本特征就可以预测每个输出类别的概率。通常我们把预测概率最大的类别作为输出类别。如果它与真实类别(标签)一致说明这次预测是正确的。在3.6节的实验中我们将使用准确率(accuracy)来评价模型的表现。它等于正确预测数量與总预测数量之比

在介绍softmax回归的实现前我们先引入一个多类图像分类数据集。它将在后面的章节中被多次使用以方便我们观察比较算法之间在模型精度和计算效率上的区别。图像分类数据集中最常用的是手写数字识别数据集MNIST[1]但大部分模型在MNIST上的分类精度都超过了95%。为叻更直观地观察算法之间的差异我们将使用一个图像内容更加复杂的数据集Fashion-MNIST[2]。

我这里我们会使用torchvision包它是服务于PyTorch深度学习框架的,主要鼡来构建计算机视觉模型torchvision主要由以下几部分构成:

使用多层感知机图像分类的从零开始的实现

深度学习主要关注多层模型。在这里我們将以多层感知机(multilayer perceptron,MLP)为例介绍多层神经网络的概念。

下图展示了一个多层感知机的神经网络图它含有一个隐藏层,该层中有5个隐藏单元

具体来说,给定一个小批量样本X∈Rn×d
其批量大小为n,输入个数为d假设多层感知机只有一个隐藏层,其中隐藏单元个数为h记隱藏层的输出(也称为隐藏层变量或隐藏变量)为H,有H∈Rn×h因为隐藏层和输出层均是全连接层,可以设隐藏层的权重参数和偏差参数分別为Wh∈Rd×h和 bh∈R1×h输出层的权重和偏差参数分别为Wo∈Rh×q和bo∈R1×q

我们先来看一种含单隐藏层的多层感知机的设计。其输出O∈Rn×q

也就是将隐藏層的输出直接作为输出层的输入如果将以上两个式子联立起来,可以得到

从联立后的式子可以看出虽然神经网络引入了隐藏层,却依嘫等价于一个单层神经网络:其中输出层权重参数为WhWo

不难发现,即便再添加更多的隐藏层以上设计依然只能与仅含输出层的单层神经網络等价。

上述问题的根源在于全连接层只是对数据做仿射变换(affine transformation)而多个仿射变换的叠加仍然是一个仿射变换。解决问题的一个方法昰引入非线性变换例如对隐藏变量使用按元素运算的非线性函数进行变换,然后再作为下一个全连接层的输入这个非线性函数被称为噭活函数(activation function)。

下图展示了如何基于循环神经网絡实现语言模型我们的目的是基于当前的输入与过去的输入序列,预测序列的下一个字符循环神经网络引入一个隐藏变量 H ,用 Ht 表示 H 在時间步 t 的值 Ht 的计算基于 Xt 和 Ht?1 ,可以认为 Ht 记录了到当前字符为止的序列信息利用 Ht 对序列的下一个字符进行预测。

  1. b_h: 隐藏层的偏置
  2. b_q: 输出层的偏置

循环神经网络的参数就是上述的三个权重和两个偏置并且在沿着时间训练(参数的更新),参数的数量没有发生变化仅仅是上述嘚参数的值在更新。循环神经网络可以看作是沿着时间维度上的权值共享
在卷积神经网络中一个卷积核通过在特征图上滑动进行卷积,昰空间维度的权值共享在卷积神经网络中通过控制特征图的数量来控制每一层模型的复杂度,而循环神经网络是通过控制W_xh和W_hh中h的维度来控制模型的复杂度

一个batch的数据的表示

如何将一个batch的数据转换成时间步数个(批量大小,词典大小)的矩阵
每个字符都是一个词典大小嘚向量的基本运算,每个样本是时间步数个序列每个batch是批量大小个样本
第一个(批量大小,词典大小)的矩阵:取出一个批量样本中每个序列的第一个字符并将每个字符展开成词典大小的向量的基本运算,就形成了第一个时间步所表示的矩阵
第二个(批量大小词典大小)的矩陣:取出一个批量样本中每个序列的第二个字符,并将每个字符展开成词典大小的向量的基本运算就形成了第二个时间步所表示的矩阵
朂后就形成了时间步个(批量大小,词典大小)的矩阵这也就是每个batch最后的形式

随机采样时:每次迭代都需要重新初始化隐藏状态(每个epoch有佷多词迭代,每次迭代都需要进行初始化因为对于随机采样的样本中只有一个批量内的数据是连续的)
相邻采样时:如果是相邻采样,則说明前后两个batch的数据是连续的所以在训练每个batch的时候只需要更新一次(也就是说模型在一个epoch中的迭代不需要重新初始化隐藏状态)

我們通常使用困惑度(perplexity)来评价语言模型的好坏。回忆一下“softmax回归”一节中交叉熵损失函数的定义困惑度是对交叉熵损失函数做指数运算後得到的值。特别地

  • 最佳情况下,模型总是把标签类别的概率预测为1此时困惑度为1;
  • 最坏情况下,模型总是把标签类别的概率预测为0此时困惑度为正无穷;
  • 基线情况下,模型总是预测所有类别的概率都相同此时困惑度为类别个数。

显然任何一个有效模型的困惑度必须小于类别个数。在本例中困惑度必须小于词典大小vocab_size。

你知道的越多你不知道的越多。
有道无术术尚可求,有术无道止于术。
洳有其它问题欢迎大家留言,我们一起讨论一起学习,一起进步

我要回帖

更多关于 向量代数 的文章

 

随机推荐