优雅谈论大模型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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/627312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【并发程序设计】4. exec函数族

4.exec函数族 exec函数族是一组用于在进程中启动另一个程序来替换当前进程的函数。 exec函数族主要用于在当前进程内部执行一个新的程序,而不会创建新的进程。 子进程调用exec函数,族父进程不受影响。进程当前内容被指定的程序替换,但进程…

JAVA实验项目(二): 抽象类、接口的定义与使用

实验项目二 抽象类、接口的定义与使用 Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊&…

Python游戏开发库:开启游戏编程之旅

引言 Python凭借其简洁明了的语法和丰富的库支持,在游戏开发领域占有一席之地。对于希望进入游戏编程世界的开发者来说,Python提供了一个理想的起点。本文将介绍几个关键的Python游戏开发库,帮助您开启游戏编程之旅。 第一部分:P…

Selenium自动操作鼠标的方法及示例(鼠标左右键单击、左键双击、拖动等)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【线性系统理论】笔记一

一:状态空间表达式 电路系统状态空间描述列写 1:选取状态变量 状态变量定义:线性无关极大组属性。 2:列出电路原始回路方程 ps:状态变量有两个,理论上需要列写2个方程 3:规范形势 4&#xf…

基于Springboot的知名作家信息管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的知名作家信息管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

计算思维的理解

2006年,卡内基梅隆大学周以真教授首次系统性地定义了计算思维。这一年,她在美国计算机权威期刊《Communications of the ACM》上发表了题为《Computational Thinking》的论文,由此开启了计算思维大众化的全新历程。 周以真(Jeanne…

3.3 整型

本节必须掌握的知识点: 整型数据类型的取值范围 示例八 代码分析 汇编解析 获取数据类型的取值范围 3.3.1 整型数据类型取值范围 整型是用来表示限定范围内连续整数的数据类型。表3-1列出了C语言编译器定义的整型数据类型及其大小和取值范围。 类型 存储大小…

三菱FX3U-4AD模拟量电压输入采集实例

硬件:PLC模块 FX3GA-24MT ;A/D模块FX&#xff13…

食品饮料厂做配送小程序的作用是什么

食品饮料厂品牌旗下通常有多个产品类型,多数是以批发为主,也有直营店及线上直播零售等方式,商家如何将品牌宣传和产品销售的更广是需要思考的,其销售模式也多种多样。 私域店铺也是品牌增长的重要方式,在【雨科】平台…

【现代C++】范围库的应用

C20引入了范围库(Ranges library),它是标准模板库(STL)的一个扩展,提供了一种新的方式来处理序列和范围。这个库允许开发者以更声明式的方式编写代码,使得操作序列变得更简洁、更易读。以下是C范…

深入理解 npm、cnpm、npx、yarn 和 pnpm:JavaScript 包管理器的对比

在 JavaScript 的世界中,包管理器是一个重要的工具,它帮助我们管理、安装和升级项目的依赖。在这篇文章中,我们将深入探讨三个最流行的 JavaScript 包管理器:npm、yarn 和 pnpm。 npm(Node Package Manager&#xff0…

电源模块效率的正确测试方法

电源效率是评价电源性能的重要指标,它直接关系到设备的稳定性和能源的利用效率。因此,对电源进行效率测试显得尤为重要。电源在工作过程中,会有部分能量损耗,因此,电源效率的高低,不仅影响着设备的性能&…

VMware虚拟机没有网,无法设置网络为桥接状态

今天需要使用Ubuntu18但现有虚拟机是Ubuntu20,由于硬盘空间不够大,所以删除了原来的虚拟机并重新搭建Ubuntu18的环境,然后发现虚拟机没有网络,而我之前的虚拟机这一切都是正常的。 在网络设置里勾选的是桥接模式但无法联网&#x…

奥维地图下载高清影像的两种方式!以及ArcGIS、QGIS、GlobalMapper、自编工具下载高清影像的方法推荐!

今天来介绍一下奥维互动地图是如何下载高清影像的,也不是多了不起的功能!有朋友问,加上这个软件确实用的人多。 下载的高清数据在ArcGIS中打开的效果! 开始介绍奥维之前我们也介绍一下我们之前介绍的几个方法,没有优劣…

面试加分项:精通Java高并发下的锁优化策略

1. 问题背景与挑战 1.1 并发编程中的挑战 在现代软件开发中,高并发已成为衡量系统质量的一项关键因素,特别是对于那些需要同时处理数以万计甚至百万级用户请求的服务。并发编程的挑战在于如何有效地同步多个线程,确保数据的一致性和系统的稳…

【csv-parse】使用parse方法的时候来转换为csv字符串时,会导致输出有乱码

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:前端bug记录 👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进…

针对实拍场景的虚拟试衣模型IDM-VTON:高保真和细节保留的虚拟试穿算法,真实环境效果领先

前言 虚拟试衣是一种将人物图像与服装图像合成,生成人物穿戴目标服装的图像技术。相比传统的GAN方法,基于扩散模型的虚拟试衣方法能够生成更加自然逼真的图像。然而,现有的扩散模型在保留服装细节方面仍存在局限性。 为了解决这一问题&…

Nodejs 第七十一章(libuv)

libuv 在Node.js中,libuv是作为其事件循环和异步I/O的核心组件而存在的。Node.js是构建在libuv之上的,它利用libuv来处理底层的异步操作,如文件I/O、网络通信和定时器等。 libuv在Node.js中扮演了以下几个重要角色: 事件循环&a…

一个panic问题引起对percpu变量的思考

1 问题引入 最近在分析一个panic问题时&#xff0c;发现panic现场无法与log对应起来。 先贴log: <1>[ 180.089084] Unable to handle kernel NULL pointer dereference at virtual address 00000001 <1>[ 180.099551] pgd 8bbde651 <1>[ 180.107775] …