当前位置: 首页 > news >正文

梯度下降算法

Gradient Descent 梯度下降

 


 

一、核心思想:一个最经典的比喻

想象一下,你是一个蒙着眼睛的登山者,被困在一片漆黑的山林中。你的目标是走到山谷的最低点(寻找最低点)。

你会怎么做?

  1. 你会用脚感受一下周围的地面,找出哪个方向是“下坡”最陡的。

  2. 然后朝着那个最陡的下坡方向迈出一步。

  3. 到达新位置后,再次用脚感受,寻找新的最陡下坡方向,再迈出一步。

  4. ...如此反复...

直到你感觉到四周都是上坡,无论往哪个方向走,地面都会变高,说明你已经到达了谷底!

这个“感受坡度”和“向下走”的过程,就是梯度下降算法的精髓。

image

 


 

二、把比喻变成数学概念

现在,我们把上面的比喻翻译成机器学习的语言:

 
比喻机器学习中的术语
登山者所在的位置 模型当前的参数值 (例如,线性回归中的权重 w 和偏差 b)
山谷的地形 损失函数 (Loss Function) J(w, b)
地面的坡度 梯度 (Gradient) ∇J(w, b)
最陡的下坡方向 负梯度的方向 -∇J(w, b)
迈出一步的步长 学习率 (Learning Rate) α
走到谷底 找到使损失函数最小的最优参数 w*, b*

损失函数:一个衡量模型预测值 ŷ 与真实值 y 之间差距的函数。我们的目标就是找到一组参数,让这个损失函数的值最小。 常见的损失函数有均方误差(MSE)、交叉熵(Cross-Entropy)等。

梯度:一个向量(矢量),表示函数在某一点处各个方向上的斜率(即变化率最快的方向)。梯度指向函数值增长最快的方向。


 

三、梯度下降的算法步骤

算法流程可以概括为以下几步,这个过程会循环往复,直到满足停止条件(比如达到最大迭代次数或梯度变得非常小):

image

  1. 初始化:随机初始化参数 w 和 b。(相当于把登山者随机放在山上的某个点)。

  2. 计算梯度:计算当前参数点处的损失函数梯度。
    $\text{梯度} = \nabla J(w, b) = \left[ \frac{\partial J}{\partial w}, \frac{\partial J}{\partial b} \right]$
    (这相当于用脚感受周围哪个方向最陡)。

  3. 更新参数:沿着负梯度(即下坡方向)更新参数。
    $w = w - \alpha \cdot \frac{\partial J}{\partial w}$
    $b = b - \alpha \cdot \frac{\partial J}{\partial b}$
    (这相当于朝着最陡的下坡方向迈出一步)。

  4. 重复:重复步骤2和3,直到梯度接近零(无法再下降)或达到预设的迭代次数。
    (不断感受、迈步,直到走到谷底)。


四、关键超参数:学习率

学习率是梯度下降中最重要的超参数。

  • 学习率太小:每次迈出的步长非常小。收敛速度慢,需要很多很多步才能到达谷底。

  • 学习率太大:步长太大,一步迈得太远,可能会直接跨过最低点,甚至导致损失函数震荡甚至发散,永远找不到最低点。

  • 学习率设置得当:能以较快的速度稳定地收敛到最小值。

选择合适的学习率需要经验和技巧,有时也会使用自适应学习率的优化算法(如Adam),它们能自动调整学习率的大小。


五、三种常见的梯度下降

根据每次更新参数时使用的数据量不同,分为三种:

  1. 批量梯度下降:

    • 做法:每次计算梯度和更新参数时,都使用全部的训练数据。

    • 优点:梯度方向准确,容易收敛到全局最优。

    • 缺点:非常慢,尤其是数据集很大时。

  2. 随机梯度下降:

    • 做法:每次只随机使用一个训练样本(抽取部分数据)来计算梯度并更新参数。

    • 优点:速度快,可以在线学习。

    • 缺点:梯度方向波动很大,损失函数会剧烈震荡,不容易收敛到最优点。

  3. 小批量梯度下降:

    • 做法:每次使用一小批数据(比如32, 64, 128个样本)来计算梯度和更新参数。

    • 优点:这是最常用的方法!它平衡了批量梯度下降的稳定性和随机梯度下降的速度,更加高效和稳定。

    • 缺点:需要手动设置批量大小(batch size)这个超参数。

总结

  • 梯度下降是一种通过迭代来寻找函数最小值的优化算法。

  • 它的核心是沿着负梯度(最陡下降方向) 更新参数。

  • 学习率控制着每一步的步长,至关重要。

  • 小批量梯度下降是实践中最常用的版本。

它就是机器学习和深度学习模型能够“学习”和“自我优化”的根本动力来源。几乎所有神经网络的训练都离不开它(或其变种,如Adam)的驱动。

 


 

 

 

一、 Adam 是什么?为什么需要它?

Adam 的全称是 Adaptive Moment Estimation(自适应矩估计)。这个名字完美概括了它的核心思想。

在它之前,我们已经有了很多优化器,但它们各有缺点:

  • SGD(随机梯度下降):简单但震荡严重,收敛慢。

  • SGD with Momentum:加入了“动量”,加速收敛,减轻震荡,但对所有参数使用相同的学习率。

  • Adagrad, RMSprop:自适应地为每个参数调整学习率(对于频繁更新的参数,给予较小的学习率;对于不频繁更新的参数,给予较大的学习率),但它们缺少“动量”概念。

Adam 的诞生就是为了集百家之长:

Adam = Momentum (动量) + RMSprop (自适应学习率) + 偏差校正

它同时考虑了一阶动量(梯度均值,控制方向)和二阶动量(梯度平方的均值,控制步长),并为每个参数自适应地调整学习率。


二、 Adam 的核心思想:两大动量

Adam维护两个状态变量来为每个参数进行自适应调整:

1. 一阶动量(First Moment) - m_t

  • 它是什么:梯度的指数移动平均值。它估计了梯度方向的均值。

  • 作用:类似于动量。它积累了过去的梯度方向,使得参数更新方向更加稳定,减少震荡,从而加速在稳定方向的收敛。

  • 物理意义:就像是“速度”。它让优化过程具有“惯性”,不容易被临时的、嘈杂的梯度所带偏。

2. 二阶动量(Second Moment) - v_t

  • 它是什么:梯度平方的指数移动平均值。它估计了梯度大小的均值。

  • 作用:类似于 RMSprop。它衡量了历史梯度的大小。对于梯度通常很大的参数,v_t 会很大,从而减小其有效学习率;对于梯度通常很小的参数,v_t 会很小,从而增大其有效学习率。

  • 物理意义:就像是“加速度”。它感知地形变化,在陡峭(梯度大)的地方刹车(小步走),在平坦(梯度小)的地方加速(大步走)。

Adam的巧妙之处在于,它为每个参数都独立地计算和维护这两个动量!


三、 Adam 的算法流程(一步一步详解)

以下是Adam更新参数 θ_t 的完整步骤:

初始化:

  • m_0 = 0 (一阶动量初始化为0)

  • v_0 = 0 (二阶动量初始化为0)

  • t = 0 (时间步初始化为0)

循环(对于每一个时间步 t):

  1. 计算当前梯度:
    $g_t = \nabla_\theta J_t(\theta_{t-1})$

    • 在时间步 t,计算损失函数关于参数 θ 的梯度 g_t

  2. 更新一阶动量(有偏估计):
    $m_t = \beta_1 \cdot m_{t-1} + (1 - \beta_1) \cdot g_t$

    • 用超参数 β1(通常设为0.9)来控制历史动量和当前梯度的权重。这相当于一个指数衰减的平均值。

  3. 更新二阶动量(有偏估计):
    $v_t = \beta_2 \cdot v_{t-1} + (1 - \beta_2) \cdot g_t^2$

    • 用超参数 β2(通常设为0.999)来控制历史动量和当前梯度平方的权重。

  4. 计算一阶动量的偏差校正:
    $\hat{m}_t = \frac{m_t}{1 - \beta_1^t}$

    • 由于 m0 和 v0 初始化为0,在训练初期(t很小的时候),它们会被“偏向”于0。偏差校正可以消除这种初始化带来的偏差,让估计在训练初期更加准确。

  5. 计算二阶动量的偏差校正:
    $\hat{v}_t = \frac{v_t}{1 - \beta_2^t}$

  6. 更新参数:
    $\theta_t = \theta_{t-1} - \alpha \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}$

    • α:全局学习率,需要手动设置。

    • ε:一个极小值(通常1e-8),防止分母为零。

    • 这一步是Adam的灵魂:

      • \hat{m}_t 提供了稳定的更新方向(动量)。

      • \sqrt{\hat{v}_t} 提供了自适应的学习率。对于梯度大的参数,v_t大,分母大,有效步长 α / √v_t 就小;反之亦然。

image

 

为了更直观地展示这个流程,你可以参考以下流程图:

image

 

四、 Adam 的超参数

Adam的超参数通常不需要大量调优,因为它们有很强的鲁棒性。

  • α (学习率):最重要的超参数。有时需要根据任务进行调整。默认值可以是 0.001 或 3e-4

  • β₁:一阶动量的衰减率。控制历史梯度的权重。默认值 0.9。

  • β₂:二阶动量的衰减率。控制历史梯度平方的权重。默认值 0.999。

  • ε:数值稳定项。几乎不需要改变,默认 1e-8。

五、 为什么 Adam 如此强大和流行?

  1. 结合了双重优点:同时拥有了动量的加速收敛能力和自适应学习率的稳定性。

  2. 对每个参数的自适应:为每个参数计算不同的学习率,这使得它非常适合处理稀疏梯度的问题(如自然语言处理中的嵌入层)。

  3. 实现简单,收敛快:通常默认参数就能取得很好的效果,使得它成为许多研究者和工程师的“首选”优化器。

  4. 偏差校正:确保了训练初期的稳定性。

总结

 
特性解释
名字 Adaptive Moment Estimation
核心 同时维护一阶动量(方向)和二阶动量(步长)
更新规则 $\theta_t = \theta_{t-1} - \alpha \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}$
优点 收敛快、效果好、对稀疏数据友好、超参数鲁棒
超参数 α (学习率), β₁ (0.9), β₂ (0.999), ε (1e-8)

简单来说,Adam就像一个既聪明又稳健的登山者:他不仅记得自己之前走过的方向(动量,防震荡),还能根据脚下的陡峭程度自动调整步幅(自适应学习率,防失控),因此能非常高效可靠地找到山谷的最低点。

 

相关文章:

梯度下降算法

Gradient Descent 梯度下降一、核心思想:一个最经典的比喻 想象一下,你是一个蒙着眼睛的登山者,被困在一片漆黑的山林中。你的目标是走到山谷的最低点(寻找最低点)。 你会怎么做?你会用脚感受一下周围的地面,找出哪个方向是“下坡”最陡的。然后朝着那个最陡的下坡方向迈…...

002_文本分类任务的问答

1、下面代码中,random_state作为随机种子作用是什么? train_x, valid_x, train_y, valid_y = model_selection.train_test_split(trainDF[text], trainDF[label], test_size=0.25, random_state=42)这段代码的作用是随机把数据分为两个部分 计算机的“随机数”其实是 伪随机数…...

车牌识别

车牌识别方案对比与实现总结(GUI 三方法:lock / test / rec2) 本文面向实际工程应用,系统梳理当前 GUI 集成的三种车牌识别方法(lock、test、rec2)的技术亮点、设计思路、模型选择、实现过程与关键代码,帮助快速理解与持续优化。目标是:在统一界面中,对比“传统候选+文…...

告别人工标注瓶颈!Reward-RAG:用 CriticGPT 打造更懂人类偏好的检索模型

Reward-RAG: Enhancing RAG with Reward Driven Supervision 全文摘要 本文介绍了一种名为Reward-RAG的新方法,旨在通过奖励驱动监督增强Retrieval-Augmented Generation(RAG)模型。与以往的RAG方法不同,该方法使用了CriticGPT训练了一个专门的奖励模型,并利用该模型生成合…...

在AI技术快速实现创想的时代,挖掘前端学习新需求成为关键——某知名编程教育平台需求洞察

本文分析了一个包含50个前端项目的编程学习资源,涵盖交互设计、动画效果和实用工具等多种类型,通过用户反馈发现了界面优化、功能扩展和教学改进等方面的潜在需求。a.内容描述 该项目是一个包含50个独立前端项目的编程学习资源,核心功能定位在于通过实际项目练习帮助开发者掌…...

Latex 中百分号怎么打

Latex 中百分号怎么打 由于 % 被用作注释符,所以前面 + \ 进行转义 \(\frac{285.5}{1-2.7\%}\)...

文件上传-条件竞争绕过

条件竞争原理: 条件竞争的逻辑是代码逻辑问题:当我们文件上传到服务器时,先对文件进行保存,然后对文件的后缀名进行判断,符合白名单的保存,不符合就删除,但在删除之前,有另一个对服务器发起的请求,要访问这个文件,那么就可能造成文件被读取和访问。这就是条件竞争。 …...

9.17 CSP-S模拟23/多校A层冲刺NOIP2024模拟赛19 改题记录

HZOJ 写在前面 连着三天吃三坨。本来想着今天大凶忌参加模拟赛然后没模拟赛挺好的,然后7:57临时通知加场,难道这就是大凶?好吧打就打吧,没想到真差点爆零。粗看没一道题可做怀疑自己的水平了然后赛后猛然醒悟是自己蠢如猪。其实这篇前面应该还有两篇,但是奈何这套改完得比…...

C++ 并发

C++ 并发编程是现代软件开发中的核心技术,主要用于利用多核处理器提升程序性能。C++11 及后续标准引入了完善的并发库(<thread>、<mutex>、<condition_variable> 等),使开发者能更安全地编写多线程程序。 1、std::thread std::thread 是 C++11 引入的线程…...

UML 5章

UML是建模语言,能够用面向对象的方法描述任何类型的系统 UML时序图:他通过对象之间发送消息的时间顺序显示多个对象之间的动态协作,重在对象之间的交互,强调时间顺序例UML状态图例...

《微服务事务管理》 - 教程

《微服务事务管理》 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-siz…...

python之socket udp服务器实现

import socket# 1. 创建 UDP Socket (SOCK_DGRAM 表示 UDP) receiver_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2. 绑定地址和端口 receiver_address = (, 1883) # 端口号 9999 receiver_socket.bind(receiver_address)print("UDP 接收方已启动,等待…...

kylin SP3安装mysql 8.4.5

环境:OS:kylin SP3mysql:8.4.5 glibc2.17,建议安装glibc.2.28版本 查看系统glibc版本[root@localhost ~]# ldd --versionldd (GNU libc) 2.28Copyright (C) 2018 自由软件基金会。这是一个自由软件;请见源代码的授权条款。本软件不含任何没有担保;甚至不保证适销性或者适合某…...

Unity中是否可以禁用GC

1)Unity中可以禁用GC吗2)项目是URP管线,渲染模块CPU耗时高,经排查主要是Batches数过高,应怎样进一步排查和优化渲染批次这是第445篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。 UWA社区主页:co…...

经典SQL语句大全

经典SQL语句大全一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat--- 开始 备份BACKUP D…...

IvorySQL 与 deepin 完成兼容性认证,共创开源生态新篇章

近日,IvorySQL 与 deepin 操作系统成功完成了兼容性适配认证。这一里程碑式的成就标志着 IvorySQL 在国产操作系统生态中的进一步深化,为用户提供更稳定、高效的数据库解决方案。deepin 简介 深度操作系统 deepin 是一款以“简洁、美观、易用”著称的国产 Linux 发行版,拥有…...

在 Nginx 上搭建静态站点

1、新建站点的配置文件 vi /etc/nginx/conf.d/www.xxx.com.conf2、写入如下内容: server {listen 80;#listen [::]:80;server_name www.xxx.com; # 这里可以写你的域名,或者 _ 表示匹配所有 root /var/www/www.xxx.com; # 你的静态文件目录 index index.html index.htm;locat…...

使用GitHub Dork快速发现漏洞:我的第一个Bugcrowd漏洞挖掘实战

本文详细介绍了如何通过GitHub Dork技术快速发现企业敏感信息泄露漏洞,包含实用的搜索语法和实际案例,帮助安全研究人员高效挖掘漏洞。使用GitHub Dork快速发现漏洞:我的第一个Bugcrowd漏洞挖掘实战 嗨,黑客们,漏洞猎人们! 祝愿你们发现大量漏洞并获得丰厚奖励! 虽然距离…...

kylin SP3安装mysql8.0.41

环境:OS:kylin SP3mysql:8.0.41 glibc2.17,建议安装glibc.2.28版本 查看系统glibc版本[root@localhost ~]# ldd --versionldd (GNU libc) 2.28Copyright (C) 2018 自由软件基金会。这是一个自由软件;请见源代码的授权条款。本软件不含任何没有担保;甚至不保证适销性或者适合某…...

DIFY 项目中通过 Makefile 调用 Dockerfile 并采用 sudo make build-web 命令构建 web 镜像的方法和注意事项

DIFY 项目中通过 Makefile 调用 Dockerfile 并采用 sudo make build-web 命令构建 web 镜像的方法和注意事项pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…...

代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素、209.长度最小的子数组

704. 二分查找 思路:刷过很多次了,就是双指针思想,初始化一个在数组最左边的指针index_l,一个在最右边的指针index_r,当index_l < index_r 的时候通过判断index_l 和 index_r所确定的区间,缩小区间,最后夹逼出我们的目标值。 注意的点:最终状态会有两个 :1.l与r相等…...

从 MLPerf Storage v2.0 看 AI 训练中的存储性能与扩展能力

8 月 5 日,全球权威 AI 工程联盟 MLCommons 发布了最新的 MLPerf Storage v2.0 基准测试结果。本次评测吸引了众多厂商参与,包括 Cloud、Shared File、Fabric-Attached Block、Direct-Attached Block 这几大类存储厂商。 由于各厂商在硬件配置、节点规模和应用场景上的差异,…...

Revit二次开发 钢筋生成API(二)

2、自由钢筋生成API 创建一条无约束的自由形状钢筋。之后无法对该钢筋添加约束。public static Rebar CreateFreeForm(Document doc,RebarBarType barType,Element host,IList<IList<Curve>> curves,out RebarFreeFormValidationResult error )这个合自由钢筋生成A…...

创建会计凭证报错:FI/CO接口:待更新的不一致的FI/CO凭证标题数据(转)

问题:使用过账BAPI_ACC_DOCUMENT_POST,自动过账时,报错原因是“FI/CO接口:待更新的不一致的FI/CO凭证标题数据”。 原因: 1、如果头数据里面的公司和行项目公司是一致的,检查行项目,不要对行项目赋公司bukrs。 "it_item-comp_code = wa_account-bukrs. 2、检查金额是…...

Uri uri = new Uri(Path); 这行代码的作用

1. 语法校验 字符串里只要多一个空格、少一个 /、中文没转义,后面 HttpClient 会直接炸。 Uri 构造函数会第一时间给你抛 UriFormatException,早发现早处理。 2. 把“一串字符”升级成“有结构的零件箱” 转成 Uri 后,你就能直接拿这些字段,而不用再 Substring、IndexOf 去…...

Qt函数方法传入参数未使用-警告warning错误error提示解决

前言全局说明某些情况下,函数(方法)会传入参数,但并不一定会使用, 但是,不使用编辑器又会警告一、说明 1.1 环境: Windows 7 旗舰版 Visual Studio 2013二、未使用参数解决 原型 Q_UNUSED(未使用参数)三、示例 3.1 文件名: public:MyThread(QWidget *parent = nullptr){Q_…...

mysql 性能监控,关键指标解析与优化案例剖析

你是否经历过数据库突然变慢却无从下手的困境?某金融平台曾因慢查询堆积导致交易响应暴增300%,某电商大促期间因缓冲池命中率骤降引发订单延迟。性能问题往往具备隐蔽性和突发性特征,本文将揭示MySQL监控的核心参数与实战诊断方法。 连接池监控是性能防护的第一道防线。Thre…...

设计模式

1.分类 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享 元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责…...

Rhinoceros 8.23.25251.13001 犀牛3D建模

描述 Rhinoceros 是由美国Robert McNeel公司最新出品的专业强大的3D建模软件。软件以集百家之长为一体的发展教育理念,拥有NURBS的优秀传统建模教学方法,也有一个网格进行建模插件T-Spline,使建模方式方法有了更多的挑选,然后能创建出更传神、生动的造型。能输入和输出几十…...

Git 常用操作指南

本文为你整理了 Git 的常用操作,无论你是刚接触 Git 还是需要快速查阅,这篇指南都能帮你高效管理代码版本。 🔧 初始配置 开始使用 Git 前,先配置你的用户信息: git config --global user.name "你的用户名" git config --global user.email "你的邮箱&qu…...

《深入理解计算机系统》计算机系统漫游(一) - Invinc

本文记录《深入理解计算机系统》中第1章 计算机系统漫游 的一些知识点。本文记录《深入理解计算机系统》中第1章 计算机系统漫游 的一些知识点。第1章 计算机系统漫游 信息就是位+上下文 系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的…...

从几何分离到语义理解:深度解析3D点云分割与语义分割的本质区别

在三维计算机视觉领域,3D点云作为真实世界场景的核心数据载体,其处理技术直接决定了机器感知环境的精度与效率。 其中,3D点云分割与语义分割是两类关键技术,尽管二者同属点云处理范畴,但在目标定位、信息输出与应用价值上存在本质差异。 前者专注于“几何层面的分离”,通…...

欧拉筛(线性筛)算法分析

前言对于寻找素数,第一时间想到的便是二重循环暴力查找,其复杂度O(n^2),通过循环中只判断到根号n可以优化一些,不过复杂度也达不到预期。在数论的学习中,我学到了埃氏筛法,O(nloglogn)的算法,而在一些数据范围达到1e7这样的题目中,也很难让人满意,于是我便学习了欧拉筛…...

2021年安徽省大数据与人工智能应用竞赛 大数据(网络赛)-高职组赛题

本套数据数据: 通过网盘分享的文件: 链接: https://pan.baidu.com/s/1ZQXoWQhCOAiGVcFOZozV1g?pwd=json 提取码: json 第二部分:大数据程序编写部分(30分) 任务一、数据抽取转化部分(5分) 1、使用sqoop将MySQL的sakila数据库中的city表中city列以C开头的数据导入到hdfs…...

Alexandresku设计的loki小对象内存分配器

Loki是由 Alexandresku 编写的一个与《Modern C++ Design》(C++设计新思维)一书配套发行的C++代码库。其中有两个文件 SmallObj.h 、SmallObj.cpp 进行内存管理,可以单独进行使用 三个class,第一层是chunk,第二层是vector<chunk> FixedAllocator,第三层是vector&l…...

C++ 内存管理

C++ 内存管理是程序设计的核心环节,直接影响程序的性能、稳定性和安全性。C++ 不像 Java、Python 等语言有自动垃圾回收机制,而是需要开发者手动管理动态内存(或通过智能指针等机制自动管理)。 1、C++ 内存分区内存区域 存储内容 生命周期 管理方式栈 (Stack) 函数参数、局…...

一些写了和没写的数学!

P8114 [Cnoi2021] 六边形战士 传送 非常好玩的题! 首先你大概率看过一些“无字证明”,其中很经典的是这个: 证明:用若干个边长为 \(1\),顶角为 \(60\) 度的菱形拼成一个边长为 \(n\) 的正六边形,三个方向的菱形个数一定相等。这是一个经典的无字证明,虽然前置的说明要费…...

【光照】[自发光Emission]以UnityURP为例

【从UnityURP开始探索游戏渲染】专栏-直达自发光的基本原理 $Cemissive=Memissive$ 自发光是物体表面主动发射光线的现象,在光照模型中通常作为独立于外部光源的附加项。其核心特点是不受其他光照影响,但可以影响周围环境。 实现流程‌定义发射颜色和强度‌:确定基础发光颜色…...

mybatis-plus初体验,解决报错Invalid value type for attribute factoryBeanObjectType: java.lang.String

解决报错Invalid value type for attribute factoryBeanObjectType: java.lang.String 推荐这位大佬的博客: https://www.cnblogs.com/muphy/p/18653627 项目结构MyBatis-Plus配置类MyBatisPlusConfig package com.example.config;import com.baomidou.mybatisplus.annotation…...

浅谈制氢电源及英飞凌解决方案

大家对氢元素肯定都不陌生,认识它基本都是从背元素周期表开始的。近年来我们身边多了很多氢的身影,从北京冬奥会的氢燃料电池大巴,再到广州南沙小虎岛电氢智慧能源站,氢也越来越被大家熟知。工业上,氢的使用可是一点都不少,自 1975 年以来,需求量增长了三倍,而且还在继…...

微算法科技(NASDAQ:MLGO)研究分布式量子计算,释放量子计算潜能

在信息时代,数据量呈指数级增长,经典计算机面临算力瓶颈。量子计算以其超强的并行处理能力,被视为下一世代计算范式的颠覆者。然而,单个量子处理器的脆弱性和制造难度限制了其广泛应用。微算法科技(NASDAQ:MLGO)研发团队研究通过分布式量子计算模型,将多个量子计算节点连…...

AI 重塑招聘三角:Moka 招聘智能体如何实现 HR、候选人与企业的三方共赢

AI 重塑招聘三角:Moka 招聘智能体如何实现 HR、候选人与企业的三方共赢在人才竞争进入白热化的今天,招聘早已不是 HR 单方面的 “筛选任务”,而是涉及 HR 效率、候选人体验、企业战略人才储备的三角关系。传统招聘模式下,这三角常常陷入 “HR 疲于奔命却难出成果、候选人等…...

Flash Attention原理

提出问题 Transformer 结构已成为自然语言处理和图像分类等应用中最常用的架构。尽管 Transformer 在规模上不断增大和加深,但处理更长上下文仍然是一个挑战,因为核心的自注意力模块在序列长度上具有二次方的时间和内存复杂度。这导致在处理长序列时速度变慢且内存需求巨大。…...

MSMQ 跨服务器读写队列的“消息队列系统的访问被拒绝”的解决方案

转:http://m.blog.csdn.net/blog/2000killer/8904852 在服务器上创建的Queue开发者的 机器只能写数据而不能读数据。.net给出的错误是“对消息队列系统的访问被拒绝”,也就是说拒绝访问队列没有相关权限,我给Everyone和 ANONYMOUS LOGON赋予全部权限都无法解决(正常情况下可…...

opencv学习记录1

img = cv2.imread(pic.jpg)#读图像 #封装函数 def cv_show(name,img):cv2.imshow(image,img)#显示图像cv2.waitKey(0)#显示时间cv2.destroyWindow()#读灰度图 img = cv2.imread(pic.jpg,cv2.IMREAD_GRAYSCALE) #保存 cv2.imwrite(name,img)#读视频 vc = cv2.VideoCapture(name)…...

kylin V10SP3安装mysql5.7.42

环境:OS:kylin V10SP3mysql:5.7.42查看系统glibc版本[root@localhost ~]# ldd --versionldd (GNU libc) 2.28Copyright (C) 2018 自由软件基金会。这是一个自由软件;请见源代码的授权条款。本软件不含任何没有担保;甚至不保证适销性或者适合某些特殊目的。由 Roland McGrath …...

MATLAB 仿真无线传感器网络(WSN)三大经典场景

一、统一参数区(建议先调这里) %% 0. 公共参数 clear; clc; close all; rng(2025) % 可重复 field = [0 100; 0 100]; % 100 m 100 m nNode = 200; % 节点数 R = 15; % 通信半径 /m E0 = 0.5; …...

9.05 DP 专题

Permutation Blackhole 按照过题人数顺序做题是这样的,如果要看难一点的建议向下 首先,不要读错题 QAQ 然后你现在发现每个位置只会在它被涂黑之前向最近放位置产生一次贡献,从 P 的角度思考是困难的,考虑从被涂黑的图的角度思考 你注意到我们每次涂完两个点之后,它们中间…...

MySQL主从复制 - 指南

MySQL主从复制 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14…...

阿里 Qoder 体验超预期,Repo Wiki 功能迎来全新升级

作者:沉默王二 大家好,我是二哥呀。 最近,阿里发布了一款名为 Qoder(/ˈkoʊdər/)的 Agentic 开发工具。我第一时间就去尝鲜了,其 Quest Mode 和 Repo Wiki 给我印象深刻。Quest Mode 主打一个 AI 自主研发,我们只需要把工程任务扔给他,Quest Mode 就会把模糊的需求翻…...