
深度学习
文章平均质量分 61
白云如幻
坚持,终将收获更好的自己。一位来自97年的程序员;在一个偶然的机会下接触到程序员这个职业,沉醉其中,喜欢安安静静的写代码,在代码的世界里奔跑。
展开
-
深度学习-随机梯度下降
在训练过程中使用随机梯度下降,但没有解释它为什么起作用。为了澄清这一点,将继续更详细地说明。在深度学习中,目标函数通常是训练数据集中每个样本的损失函数的平均值。因此,当训练数据集较大时,每次迭代的梯度下降计算代价将较高。如果使用梯度下降法,则每个自变量迭代的计算代价为。然后我们得到目标函数。个样本的训练数据集,我们假设。的训练样本的损失函数,其中。的目标函数的梯度计算为。原创 2024-02-04 15:52:58 · 669 阅读 · 0 评论 -
计算机视觉-阅读内容和风格图像
首先,我们读取内容和风格图像。从打印出的图像坐标轴可以看出,它们的尺寸并不一样。原创 2024-02-04 01:10:52 · 660 阅读 · 0 评论 -
自然语言推断:微调BERT
在下面,我们提供了两个版本的预训练的BERT:“bert.base”与原始的BERT基础模型一样大,需要大量的计算资源才能进行微调,而“bert.small”是一个小版本,以便于演示。自然语言推断是一个序列级别的文本对分类问题,而微调BERT只需要一个额外的基于多层感知机的架构,如下图中所示。在练习中,我们将展示如何微调大得多的“bert.base”以显著提高测试精度。两个预训练好的BERT模型都包含一个定义词表的“vocab.json”文件和一个预训练参数的“pretrained.params”文件。原创 2024-01-27 00:10:04 · 825 阅读 · 0 评论 -
自然语言处理-文本标注
例如,斯坦福问答数据集(Stanford Question Answering Dataset,SQuAD v1.1)由阅读段落和问题组成,其中每个问题的答案只是段落中的一段文本(文本片段)。如,在Penn树库II标注集中,句子“John Smith‘s car is new”应该被标记为“NNP(名词,专有单数)NNP POS(所有格结尾)NN(名词,单数或质量)VB(动词,基本形式)JJ(形容词)”。预测文本片段的结束与上面相同,只是其额外的全连接层中的参数与用于预测开始位置的参数无关。原创 2024-01-26 03:55:39 · 971 阅读 · 0 评论 -
自然语言处理-文本对分类或回归
是一个流行的“文本对回归”任务。例如,在语义文本相似度基准数据集(Semantic Textual Similarity Benchmark)中,句子对的相似度得分是从0(无语义重叠)到5(语义等价)的分数区间。对于文本对回归任务(如语义文本相似性),可以应用细微的更改,例如输出连续的标签值和使用均方损失:它们在回归中很常见。”),“A woman is eating meat.”(“一个女人在吃肉。”),“An air plane is taking off.”(“一架飞机正在起飞。”),0.000分。原创 2024-01-26 03:49:27 · 2070 阅读 · 0 评论 -
自然语言处理-针对序列级和词元级应用微调BERT
在微调期间,不同应用之间的BERT所需的“最小架构更改”是额外的全连接层。在下游应用的监督学习期间,额外层的参数是从零开始学习的,而预训练BERT模型中的所有参数都是微调的。除了我们在这一章中探讨的情感分析之外,语言可接受性语料库(Corpus of Linguistic Acceptability,COLA)也是一个单文本分类的数据集,它的要求判断给定的句子在语法上是否可以接受。这些模型在有空间或时间限制的情况下是有帮助的,但是,为每个自然语言处理任务精心设计一个特定的模型实际上是不可行的。原创 2024-01-26 03:46:41 · 696 阅读 · 0 评论 -
自然语言推断:注意力之注意(Attending)
第一步是将一个文本序列中的词元与另一个序列中的每个词元对齐。假设前提是“我确实需要睡眠”,假设是“我累了”。由于语义上的相似性,我们不妨将假设中的“我”与前提中的“我”对齐,将假设中的“累”与前提中的“睡眠”对齐。同样,我们可能希望将前提中的“我”与假设中的“我”对齐,将前提中的“需要”和“睡眠”与假设中的“累”对齐。请注意,这种对齐是使用加权平均的“软”对齐,其中理想情况下较大的权重与要对齐的词元相关联。我们计算假设中所有词元向量的加权平均值,以获得假设的表示,该假设与前提中索引。次计算(二次复杂度)。原创 2024-01-21 01:28:41 · 476 阅读 · 0 评论 -
自然语言推断:使用注意力
鉴于许多模型都是基于复杂而深度的架构,Parikh等人提出用注意力机制解决自然语言推断问题,并称之为“可分解注意力模型”。本节将描述并实现这种基于注意力的自然语言推断方法(使用MLP),如下图中所述。与保留前提和假设中词元的顺序相比,我们可以将一个文本序列中的词元与另一个文本序列中的每个词元对齐,然后比较和聚合这些信息,以预测前提和假设之间的逻辑关系。与机器翻译中源句和目标句之间的词元对齐类似,前提和假设之间的词元对齐可以通过注意力机制灵活地完成。上图描述了使用注意力机制的自然语言推断方法。原创 2024-01-21 01:21:19 · 478 阅读 · 0 评论 -
深度学习-自然语言推断
斯坦福自然语言推断语料库(Stanford Natural Language Inference,SNLI)是由500000多个带标签的英语句子对组成的集合。例如,下面的一个文本对将被贴上“蕴涵”的标签,因为假设中的“表白”可以从前提中的“拥抱”中推断出来。第三个例子显示了一种“中性”关系,因为“正在为我们表演”这一事实无法推断出“出名”或“不出名”。下面是一个“矛盾”的例子,因为“运行编码示例”表示“不睡觉”,而不是“睡觉”。(contradiction):假设的否定可以从前提中推断出来。原创 2024-01-21 01:16:44 · 590 阅读 · 0 评论 -
Pytorch数据操作
也就是说,如果我们的目标形状是(高度,宽度), 那么在知道宽度后,高度会被自动计算得出,不必我们自己做除法。在上面的例子中,为了获得一个3行的矩阵,我们手动指定了它有3行和4列。从形状为(12,)的行向量转换为形状为(3,4)的矩阵。这个新的张量包含与转换前相同的值,但是它被看成一个3行4列的矩阵。注意,通过改变张量的形状,张量的大小不会改变。如果只想知道张量中元素的总数,即形状的所有元素乘积,可以检查它的大小(size)。我们可以创建一个形状为(2,3,4)的张量,其中所有元素都设置为0。原创 2024-01-21 01:13:34 · 626 阅读 · 0 评论 -
pytorch安装教程
创建conda虚拟环境,选择安装电脑CUDA版本的安装即可。原创 2024-01-20 17:10:34 · 470 阅读 · 0 评论 -
深度学习工具-如何选择服务器和GPU
深度学习训练通常需要大量的计算。目前,GPU是深度学习最具成本效益的硬件加速器。与CPU相比,GPU更便宜,性能更高,通常超过一个数量级。此外,一台服务器可以支持多个GPU,高端服务器最多支持8个GPU。更典型的数字是工程工作站最多4个GPU,这是因为热量、冷却和电源需求会迅速增加,超出办公楼所能支持的范围。对于更大的部署,云计算(例如亚马逊的和实例)是一个更实用的解决方案。原创 2024-01-14 17:11:38 · 1312 阅读 · 0 评论 -
深度学习工具-Amazon SageMaker使用
设置详细的计费和支出警报也是一个好主意,以避免任何意外,例如,当忘记停止运行实例时。当实例准备就绪时,单击它旁边的“Open Jupyter”链接,以便你可以在此实例上编辑并运行本书的所有Jupyter Notebook。我们可以使用Amazon SageMaker创建一个GPU的notebook实例来运行本书的密集型代码。:使用一个Tesla V100 GPU和一个8核CPU,这个实例的性能足够本书的大部分内容使用。们可以指定此GitHub存储库URL,以允许SageMaker在创建实例时克隆它。原创 2024-01-12 14:35:24 · 558 阅读 · 0 评论 -
自然语言处理-用于预训练词嵌入的数据集
在读取训练集之后,我们为语料库构建了一个词表,其中出现次数少于10次的任何单词都将由“”词元替换。请注意,原始数据集还包含表示稀有(未知)单词的“”词元。word2vec模型的技术细节和大致的训练方法,让我们来看看它们的实现。具体地说,用于预训练词嵌入模型的数据集开始:数据的原始格式将被转换为可以在训练期间迭代的小批量。该语料库取自“华尔街日报”的文章,分为训练集、验证集和测试集。在原始格式中,文本文件的每一行表示由空格分隔的一句话。在这里,我们将每个单词视为一个词元。原创 2024-01-11 19:31:25 · 620 阅读 · 0 评论 -
深度学习工具-Jupyter Notebook使用
标记单元格中的内容包括“This Is a Title”和“This is text.”。当一个notebook包含更多单元格时,我们可以单击菜单栏中的“Kernel”\(\rightarrow\)“Restart & Run All”来运行整个notebook中的所有单元格。通过单击菜单栏中的“Help”\(\rightarrow\)“Edit Keyboard Shortcuts”,可以根据你的首选项编辑快捷键。在单元格末尾添加一个新的文本字符串“Hello world.”,如下图所示。原创 2024-01-07 23:47:28 · 808 阅读 · 0 评论 -
计算机视觉技术-语义分割
与目标检测不同,语义分割可以识别并理解图像中每一个像素的内容:其语义区域的标注和预测是像素级的。与目标检测相比,语义分割标注的像素级的边框显然更加精细。它在训练时不需要有关图像像素的标签信息,在预测时也无法保证分割出的区域具有我们希望得到的语义。上图中的图像作为输入,图像分割可能会将狗分为两个区域:一个覆盖以黑色为主的嘴和眼睛,另一个覆盖以黄色为主的其余部分身体。与语义分割不同,实例分割不仅需要区分语义,还要区分不同的目标实例。例如,如果图像中有两条狗,则实例分割需要区分像素属于的两条狗中的哪一条。原创 2024-01-07 17:47:02 · 439 阅读 · 0 评论 -
计算机视觉技术-区域卷积神经网络(R-CNN)
本节将介绍R-CNN及其一系列改进方法:快速的R-CNN(Fast R-CNN) (Girshick, 2015)、更快的R-CNN(Faster R-CNN) (Ren et al., 2015)和掩码R-CNN(Mask R-CNN) (He et al., 2017)。作为端到端训练的结果,区域提议网络能够学习到如何生成高质量的提议区域,从而在减少了从数据中学习的提议区域的数量的情况下,仍保持目标检测的精度。这些形状各异的提议区域在卷积神经网络的输出上分别标出了形状各异的兴趣区域。原创 2024-01-06 19:11:56 · 780 阅读 · 0 评论 -
计算机视觉技术-使用图像增广进行训练
这里,我们使用CIFAR-10数据集,而不是我们之前使用的Fashion-MNIST数据集。这是因为Fashion-MNIST数据集中对象的位置和大小已被规范化,而CIFAR-10数据集中对象的颜色和大小差异更明显。为了在预测过程中得到确切的结果,我们通常对训练样本只进行图像增广,且在预测过程中不使用随机操作的图像增广。实例将一批图像转换为深度学习框架所要求的格式,即形状为(批量大小,通道数,高度,宽度)的32位浮点数,取值范围为0~1。接下来,我们定义了一个辅助函数,以便于读取图像和应用图像增广。原创 2023-12-25 16:08:07 · 442 阅读 · 0 评论 -
人工智能-模型训练之多GPU的简洁实现
让我们使用一个比 LeNet更有意义的网络,它依然能够容易地和快速地训练。我们选择的是 (He et al., 2016)中的ResNet-18。区别在于,我们在开始时使用了更小的卷积核、步长和填充,而且删除了最大汇聚层。由于我们选择的是GPU0和GPU1,所以网络只在这两个GPU上初始化,而不是在CPU上初始化。每个新模型的并行计算都从零开始实现是无趣的。网络实例自动使用适当的GPU来计算前向传播的值。函数的替代,代码的主要区别在于在调用网络之前拆分了一个小批量,其他在本质上是一样的。原创 2023-12-19 19:40:17 · 968 阅读 · 0 评论 -
人工智能-异步计算
广义上说,PyTorch有一个用于与用户直接交互的前端(例如通过Python),还有一个由系统用来执行计算的后端。不管使用的前端编程语言是什么,PyTorch程序的执行主要发生在C++实现的后端。因此,不可能并行化相互依赖的操作。不幸的是,Python并不善于编写并行和异步代码,至少在没有额外帮助的情况下不是好选择。NumPy点积是在CPU上执行的,而PyTorch矩阵乘法是在GPU上执行的,后者的速度要快得多。因此,了解异步编程是如何工作的,通过主动地减少计算需求和相互依赖,有助于我们开发更高效的程序。原创 2023-12-08 02:33:47 · 217 阅读 · 0 评论 -
人工智能-编译器和解释器
例如,只要某个变量不再需要,编译器就可以释放内存(或者从不分配内存),或者将代码转换为一个完全等价的片段。符号式编程更容易在编译期间优化代码,同时还能够将程序移植到与Python无关的格式中,从而允许程序在非Python环境中运行,避免了任何潜在的与Python解释器相关的性能问题。首先,在大多数情况下,我们可以跳过Python解释器。在Python中,命令式编程的大部分代码都是简单易懂的。命令式编程也更容易调试,这是因为无论是获取和打印所有的中间变量值,或者使用Python的内置调试工具都更加简单;原创 2023-12-07 03:50:46 · 169 阅读 · 0 评论 -
人工智能-优化算法之学习率调度器
如果它太小,训练就会需要过长时间,或者我们最终只能得到次优的结果。直观地说,这是最不敏感与最敏感方向的变化量的比率。由于大多数代码都是标准的,我们只介绍基础知识,而不做进一步的详细讨论。一开始的大步可能没有好处,特别是因为最初的参数集是随机的。在本章中,我们将梳理不同的调度策略对准确性的影响,并展示如何通过。到目前为止,我们主要关注如何更新权重向量的优化算法,而不是它们的更新速率。们从一个简单的问题开始,这个问题可以轻松计算,但足以说明要义。这既涉及参数最初的设置方式,又关系到它们最初的演变方式。原创 2023-12-02 05:00:05 · 263 阅读 · 0 评论 -
人工智能-优化算法之动量法
上述推理构成了“加速”梯度方法的基础,例如具有动量的梯度。在优化问题条件不佳的情况下(例如,有些方向的进展比其他方向慢得多,类似狭窄的峡谷),“加速”梯度还额外享受更有效的好处。此外,它们允许我们对随后的梯度计算平均值,以获得更稳定的下降方向。新的梯度替换不再指向特定实例下降最陡的方向,而是指向过去梯度的加权平均值的方向。这使我们能够实现对单批量计算平均值的大部分好处,而不产生实际计算其梯度的代价。如果我们能够从方差减少的影响中受益,甚至超过小批量上的梯度平均值,那很不错。相当于长期平均值,而较小的。原创 2023-11-30 02:21:53 · 182 阅读 · 0 评论 -
人工智能-优化算法之梯度下降
尽管梯度下降(gradient descent)很少直接用于深度学习, 但了解它是理解下一节随机梯度下降算法的关键。 例如,由于学习率过大,优化问题可能会发散,这种现象早已在梯度下降中出现。 同样地,预处理(preconditioning)是梯度下降中的一种常用技术, 还被沿用到更高级的算法中。 让我们从简单的一维梯度下降开始。原创 2023-11-29 04:47:33 · 269 阅读 · 0 评论 -
人工智能-优化算法之凸集
在进行凸分析之前,我们需要定义凸集(convex sets)和凸函数。原创 2023-11-28 03:34:21 · 282 阅读 · 0 评论 -
人工智能-优化算法和深度学习
尽管优化提供了一种最大限度地减少深度学习损失函数的方法,但本质上,优化和深度学习的目标是根本不同的。前者主要关注的是最小化目标,后者则关注在给定有限数据量的情况下寻找合适的模型。例如,训练误差和泛化误差通常不同:由于优化算法的目标函数通常是基于训练数据集的损失函数,因此优化的目标是减少训练误差。但是,深度学习(或更广义地说,统计推断)的目标是减少泛化误差。为了实现后者,除了使用优化算法来减少训练误差之外,我们还需要注意过拟合。一旦我们有了损失函数,我们就可以使用优化算法来尝试最小化损失。原创 2023-11-27 02:35:18 · 523 阅读 · 0 评论 -
人工智能-注意力机制之注意力汇聚:Nadaraya-Watson 核回归
查询(自主提示)和键(非自主提示)之间的交互形成了注意力汇聚;注意力汇聚有选择地聚合了值(感官输入)以生成最终的输出。本节将介绍注意力汇聚的更多细节, 以便从宏观上了解注意力机制在实践中的运作方式。具体来说,1964年提出的Nadaraya-Watson核回归模型 是一个简单但完整的例子,可以用于演示具有注意力机制的机器学习。原创 2023-11-25 02:29:55 · 707 阅读 · 0 评论 -
人工智能-注意力机制之注意力提示
自经济学研究稀缺资源分配以来,人们正处在“注意力经济”时代, 即人类的注意力被视为可以交换的、有限的、有价值的且稀缺的商品。为了在网络游戏世界的成长,人们要么消耗注意力在游戏战斗中, 从而帮助吸引新的玩家,要么付钱立即变得强大。如图所示,可以通过设计注意力汇聚的方式, 便于给定的查询(自主性提示)与键(非自主性提示)进行匹配, 这将引导得出最匹配的值(感官输入)。自主性的与非自主性的注意力提示解释了人类的注意力的方式, 下面来看看如何通过这两种注意力提示, 用神经网络来设计注意力机制的框架。原创 2023-11-24 21:35:59 · 183 阅读 · 0 评论 -
人工智能-循环神经网络的简洁实现
高级API提供了循环神经网络的实现。我们构造一个具有256个隐藏单元的单隐藏层的循环神经网络层rnn_layer。事实上,我们还没有讨论多层循环神经网络的意义。现在仅需要将多层理解为一层循环神经网络的输出被用作下一层循环神经网络的输入就足够了。我们使用张量来初始化隐状态,它的形状是(隐藏层数,批量大小,隐藏单元数)。通过一个隐状态和一个输入,我们就可以用更新后的隐状态计算输出。需要强调的是,rnn_layer的“输出”(Y)不涉及输出层的计算: 它是指每个时间步的隐状态,这些隐状态可以用作后续输出层的输入。原创 2023-11-22 15:13:11 · 591 阅读 · 0 评论 -
人工智能-循环神经网络通过时间反向传播
这在计算上是不可行的(它需要的时间和内存都太多了), 并且还需要超过1000个矩阵的乘积才能得到非常难以捉摸的梯度。计算全部总和, 然而,这样的计算非常缓慢,并且可能会发生梯度爆炸, 因为初始条件的微小变化就可能会对结果产生巨大的影响。也就是说,我们可以观察到类似于蝴蝶效应的现象, 即初始条件的很小变化就会导致结果发生不成比例的变化。第三,我们真正想要的是只有短范围交互的模型。为了更好地理解此问题,本节将回顾序列模型梯度的计算方式, 它的工作原理没有什么新概念,毕竟我们使用的仍然是链式法则来计算梯度。原创 2023-11-18 18:14:37 · 707 阅读 · 0 评论 -
人工智能-深度学习之文本预处理
对于序列数据处理问题, 这样的数据存在许多种形式,文本是最常见例子之一。例如,一篇文章可以被简单地看作一串单词序列,甚至是一串字符序列。本节中,我们将解析文本的常见预处理步骤。这些步骤通常包括:将文本作为字符串加载到内存中。将字符串拆分为词元(如单词和字符)。建立一个词表,将拆分的词元映射到数字索引。将文本转换为数字索引序列,方便模型操作。原创 2023-11-17 14:14:14 · 396 阅读 · 0 评论 -
人工智能-深度学习之序列模型
一名忠实的用户会对每一部电影都给出评价, 毕竟一部好电影需要更多的支持和认可。随着时间的推移,人们对电影的看法会发生很大的变化。例如,奥斯卡颁奖后,受到关注的电影的评分会上升,尽管它还是原来那部电影。因此,在许多精彩的电影被看过之后,即使是一部普通的也可能被认为是糟糕的。地震具有很强的相关性,即大地震发生后,很可能会有几次小余震, 这些余震的强度比非大地震后的余震要大得多。事实上,地震是时空相关的,即余震通常发生在很短的时间跨度和很近的距离内。人类之间的互动也是连续的,这可以从微博上的争吵和辩论中看出。原创 2023-11-16 13:54:25 · 132 阅读 · 0 评论 -
人工智能-深度学习之残差网络(ResNet)
残差块里首先有2个有相同输出通道数的\(3\times 3\)卷积层。这样的设计要求2个卷积层的输出与输入形状一样,从而使它们可以相加。如果想改变通道数,就需要引入一个额外的\(1\times 1\)卷积层来将输入变换成需要的形状后再做相加运算。随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。更重要的是设计网络的能力,在这种网络中,添加层会使网络更具表现力, 为了取得质的突破,我们需要一些数学基础知识。我们也可以在增加输出通道数的同时,减半输出的高和宽。原创 2023-11-15 18:51:17 · 348 阅读 · 0 评论 -
人工智能-卷积神经网络之多输入多输出通道
在最流行的神经网络架构中,随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。我们演示了一个具有两个输入通道的二维互相关运算的示例。阴影部分是第一个输出元素以及用于计算这个输出的输入和核张量元素:(1×1+2×2+4×3+5×4)+(0×0+1×1+3×2+4×3)=56。当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。现在的输出包含3个通道,第一个通道的结果与先前输入张量。如下所示,我们实现一个计算多个通道的输出的互相关函数。,以验证互相关运算的输出。原创 2023-11-08 03:05:43 · 914 阅读 · 0 评论 -
人工智能-深度学习之延后初始化
识别出第一层的形状后,框架处理第二层,依此类推,直到所有形状都已知为止。注意,在这种情况下,只有第一层需要延迟初始化,但是框架仍是按顺序初始化的。在以后,当使用卷积神经网络时, 由于输入维度(即图像的分辨率)将影响每个后续层的维数, 有了该技术将更加方便。此时,因为输入维数是未知的,所以网络不可能知道输入层权重的维数。因此,框架尚未初始化任何参数,我们通过尝试访问以下参数进行确认。注意,当参数对象存在时,每个层的输入维度为-1。我们在初始化参数时,甚至没有足够的信息来确定模型应该包含多少参数。原创 2023-11-06 00:55:07 · 351 阅读 · 0 评论 -
人工智能-深度学习计算:层和块
像单个神经元一样,层(1)接受一组输入, (2)生成相应的输出, (3)由一组可调整参数描述。整个模型接受原始输入(特征),生成输出(预测), 并包含一些参数(所有组成层的参数集合)。同样,每个单独的层接收输入(由前一层提供), 生成输出(到下一层的输入),并且具有一组可调参数, 这些参数根据从下一层反向传播的信号进行更新。下面的代码生成一个网络,其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层, 然后是一个具有10个隐藏单元且不带激活函数的全连接输出层。调用我们的模型来获得模型的输出。原创 2023-11-03 17:44:43 · 346 阅读 · 0 评论 -
人工智能-多层感知机
假设: 任何特征的增大都会导致模型输出的增大(如果对应的权重为正), 或者导致模型输出的减小(如果对应的权重为负)。我们可以认为,在其他条件不变的情况下, 收入较高的申请人比收入较低的申请人更有可能偿还贷款。处理这一问题的一种方法是对我们的数据进行预处理, 使线性变得更合理,如使用收入的对数作为我们的特征。与我们前面的例子相比,这里的线性很荒谬, 而且我们难以通过简单的预处理来解决这个问题。每个输入都会影响隐藏层中的每个神经元, 而隐藏层中的每个神经元又会影响输出层中的每个神经元。原创 2023-11-02 19:50:16 · 173 阅读 · 0 评论 -
softmax回归的从零开始实现
因此,权重将构成一个\(784 \times 10\)的矩阵, 偏置将构成一个\(1 \times 10\)的行向量。在后面的章节中,我们将讨论能够利用图像空间结构的特征, 但现在我们暂时只把每个像素位置看作一个特征。注意,虽然这在数学上看起来是正确的,但我们在代码实现中有点草率。就像我们从零开始实现线性回归一样, 我们认为softmax回归也是重要的基础,因此应该知道实现softmax回归的细节。运算符时,我们可以指定保持在原始张量的轴数,而不折叠求和的维度。将每一行除以其规范化常数,确保结果的和为1。原创 2023-11-01 16:19:29 · 136 阅读 · 0 评论 -
人工智能-softmax回归
通过向量形式表达为o = Wx + b, 这是一种更适合数学和编写代码的形式。对于给定数据样本的特征x, 我们的输出是由权重与输入特征进行矩阵-向量乘法再加上偏置b得到的。由于计算每个输出o1、o2和o3取决于 所有输入x1、x2、x3和x4, 所以softmax回归的输出层也是全连接层。为了估计所有可能类别的条件概率,我们需要一个有多个输出的模型,每个类别对应一个输出。为了解决线性模型的分类问题,我们需要和输出一样多的。比如预测房屋被售出价格,或者棒球队可能获得的胜场数,又或者患者住院的天数。原创 2023-10-31 13:12:30 · 119 阅读 · 0 评论 -
人工智能-线性回归的从零开始实现
在之后的章节中,我们会充分利用深度学习框架的优势,介绍更简洁的实现方式。我们的任务是使用这个有限样本的数据集来恢复这个模型的参数。在下面的代码中,我们生成一个包含1000个样本的数据集, 每个样本包含从标准正态分布中采样的2个特征。我们的合成数据集是一个矩阵\(\mathbf{X}\in \mathbb{R}^{1000 \times 2}\)。\(\epsilon\)可以视为模型预测和标签时的潜在观测误差。在这里我们认为标准假设成立,即\(\epsilon\)服从均值为0的正态分布。原创 2023-10-29 23:49:18 · 208 阅读 · 0 评论