优雅谈论大模型8:神经网络与矩阵

2024-05-15 09:28

本文主要是介绍优雅谈论大模型8:神经网络与矩阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

向量与矩阵

上个章节的神经网络是为了解Transformer或者Mamba做好铺垫,在和后辈交流过程中发现有个障碍,那就是向量和矩阵。其实向量和矩阵的表达方式不是所有人都很习惯。在继续下面的章节之前小编认为有必要将向量、矩阵和神经网络做下补充解释。

向量是具有方向和大小的量,用箭头表示。向量具有下面的性质:

有好事者翻出来内积的几何含义,其实就是两个向量的长度乘以它们的夹角,那么上面代数的表达方式和下面的带有cosθ的表达式一样么。是一样的,推导过程略过一千字。

下图则为矩阵运算,请读者快速温习一下。m*n和n*p的矩阵相乘之后一定是m*p维度的。

神经网络的矩阵表示

先来看一个例子,上图一个简单的神经网络,这套变量的标识方式小编比较认可,上标l代表第几层,下面代表某一层的第几个神经元。w的两个下标mn分别代表第m个输出节点和第n个下游节点的权重。一般用z代表没有经过激活函数的数值,而a(ctivation)代表经过激活函数的输出。

上图是层1到层2的计算公式,可以将这样的运算直接转化为矩阵表示。矩阵表达方式十分简洁清爽,而下图中的w矩阵就是传说中的参数,这些矩阵通过样本训练而得到。

于是到了这里,基本上从较为抽象的角度,将基于神经网络的大模型做了简单的抽象。大模型其实就是多层级深度的神经网络,通过不断地累加参数,不断地优化结构,不断地调整样本,让神经网络的信息编码和激活更加的合理和高效。从另一个侧面来看深度学习,其实也是一种复杂的概率转移矩阵。

损失函数

为了评估每个训练之后,真实值和预测值之间的差异,需要一个函数来评估差异化。这个函数有很多种称呼,比如“误差函数”、“损失函数”、“代价函数”等。代价函数是深度学习的重要组成部分,因为它提供了神经网络在给定任务上执行情况的衡量标准。训练深度学习模型的最终目标是最小化损失函数,这意味着模型能够做出更准确的预测并更好地泛化到新数据。

例如在回归问题中采用的MSE来评估代价函数。

假定在某个批次的数据输入,得到预测数据

[7.6, 8.0, 6.8, 8.9, 7.2, 8.3, 7.0, 8.8, 7.0, 7.6]。

而真实的数据为

[7.8, 8.2, 6.5, 9.1, 7.0, 8.5, 6.9, 8.7, 7.2, 7.8]。

两者其实相当的接近。

采用MSE(Mean squared error loss)的评估模式,MSE=(1/n)*Σ(yi - ŷi)^2。yi为正确值,ŷi为预测值,cost = (1/20) * Σ(yi - ŷi)^2 = 0.045

损失函数一方面指导训练过程,用于计算预测输出与真实输出之间的误差。神经网络使用该误差信号来调整其权重和偏差,以减少损失。这个过程称为反向传播,它允许神经网络从错误中学习并在未来做出更好的预测。另一方面它有助于避免过度拟合,当模型的过度拟合则无法泛化到新数据。通过选择合适的损失函数,可以防止过度拟合并确保模型能够很好地泛化到未见过的数据。最后损失函数的选择会对模型的性能产生重大影响。通过使用相同损失函数比较不同模型的性能,可以确定哪个模型对于给定任务最有效。深度学习的不同类型任务则采用不同的损失(评估)函数。下面展示的这些代价函数将会在LLM背后的基础模型专栏中展开详细的讲解。

  • 回归问题一般为均方误差(MSE)、平均绝对误差(MAE)损失、Huber loss和Log-cosh loss。

  • 二元分类问题一般为Binary cross-entropy loss二元交叉熵损失、Hinge loss、Focal loss和Dice loss。

  • 多类分类问题则为分类交叉熵损失、稀疏分类交叉熵损失、Kullback-Leibler (KL)散度损失和Sparsemax loss。

  • 自动编码器问题:均方误差(MSE)损失、二元交叉熵损失和Perceptual loss感知损失。

  • 生成对抗网络损失则一般采用Adversarial loss、L1 or L2 loss、Wasserstein loss和Least squares loss。

  • 物体检测问题对应的有Intersection over Union (IoU) loss、Focal loss、Smooth L1 loss、GIoU loss。

  • Embedding问题则采用Triplet loss、Contrastive loss、Center loss和Angular loss。

这篇关于优雅谈论大模型8:神经网络与矩阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991439

相关文章

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

轻松掌握python的dataclass让你的代码更简洁优雅

《轻松掌握python的dataclass让你的代码更简洁优雅》本文总结了几个我在使用Python的dataclass时常用的技巧,dataclass装饰器可以帮助我们简化数据类的定义过程,包括设置默... 目录1. 传统的类定义方式2. dataclass装饰器定义类2.1. 默认值2.2. 隐藏敏感信息

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt