- 博客(163)
- 收藏
- 关注

原创 【深度学习】一文搞懂DDPM+代码实现
这个方法最早出现在2015年,知道2019年,OpenAI才把这个方法用到了图像生成领域。人们才发现这真的是个宝。我们拿画一幅画做例子。一般人画画都是先画一个草图,然后逐渐上颜色,然后填充细节,然后上颜色,然后不断修饰,不断润色,直至画稿完成。计算机绝不是这么画的。计算机的画画是好比我们打算画一个人,计算机会拿到关于这个人不同的照片,计算机认为这些不同的照片是从这个人分布中采样出来的一个个样本。而不同的人分布自然也不尽相同,就好比你的眉毛眼睛鼻子的轮廓都和别人不一样。
2025-01-09 18:37:55
550
原创 【胶囊网络】完美复现Hinton论文99.23%
我之前在2024-07-15的时候实现过一版胶囊网络,但是当时无论我怎么训练,都没办法达到Hinton论文里的99.23%(MNIST扩展数据集上):前两天心血来潮,又认真读了一下Hinton论文,严格按照论文要求进行复现:最终达到了Hinton里的性能上限,同时训练速度也比以往那版要快大概五六倍。
2025-03-15 11:20:47
302
原创 【深度强化学习】置信域策略优化(TRPO)
置信域方法是数值优化领域中的一类经典算法。是一种策略学习方法,巧妙地结合了置信域的迭代优化方法——对目标函数做了一个方便迭代的。,以及基于该策略的对当前状态的每一个动作的未来期望回报函数——,当一个策略的马尔可夫链运行达到稳态的时候,会有一个。是一个需要调整的超参数。至此,TRPO的思想讲完了。,那么一个策略越好,它的状态价值函数的期望——,我们就可以得到,能够计算出当前状态价值的。逐次迭代即可实现对一个复杂目标的优化。生成的轨迹,是对策略分布的近似。一定越大,所以策略学习的。
2025-02-18 22:44:50
529
原创 【深度强化学习】Actor-Critic 算法
本书之前的章节讲解了基于值函数的方法(DQN)和基于策略的方法(REINFORCE),其中基于值函数的方法只学习一个价值函数,而基于策略的方法只学习一个策略函数。那么,一个很自然的问题是,有没有什么方法既学习价值函数,又学习策略函数呢? 答案就是 Actor-Critic。Actor-Critic 是囊括一系列算法的整体架构,目前很多高效的前沿算法都属于 Actor-Critic 算法,本章接下来将会介绍一种最简单的 Actor-Critic 算法。需要明确的是,Actor-Critic 算法本质上是基于策
2025-02-15 13:56:40
861
原创 【深度强化学习】策略梯度算法:REINFORCE
REINFORCE 算法是策略梯度乃至强化学习的典型代表,智能体根据当前策略直接和环境交互,通过采样得到的轨迹数据直接计算出策略参数的梯度,进而更新当前策略,使其向最大化策略期望回报的目标靠近。这种学习方式是典型的从交互中学习,并且其优化的目标(即策略期望回报)正是最终所使用策略的性能,这比基于价值的强化学习算法的优化目标(一般是时序差分误差的最小化)要更加直接。它的含义是,目标函数的梯度可以通过对所有状态和动作的加权求和来近似,权重是状态的稳态分布和状态 - 动作值函数。,可以用多种方式对它进行估计。
2025-02-14 22:34:39
1055
原创 LightGBM与GBDT:原理、关系及应用
GBDT(Gradient Boosting Decision Tree)是一种基于Boosting集成学习思想的机器学习算法,用于解决回归和分类问题。它通过将多个弱学习器(通常是决策树)组合成一个强学习器来提高模型的预测能力。其基本思想是迭代地训练一系列决策树,每棵树都在前面树的残差基础上进行学习。以回归问题为例,假设我们有训练数据集x1y1x2y2⋯xnynx1y1x2y2⋯xnyn,首先初始化一个预测值yi0y。
2025-01-05 16:55:35
833
原创 Polars库常用用法
Polars是一个用Rust编写的高性能DataFrame库,在Python和R等语言中有接口。在处理大规模数据和复杂的数据处理任务时,Polars 通常具有更好的性能表现,包括更快的数据读取、处理速度和更高效的内存占用。但对于小型数据集和简单的数据操作,Pandas 的易用性和在数据分析领域的广泛应用也使得它仍然是一个不错的选择。可以通过设置参数来指定数据类型、分隔符、是否有表头等。明确指定文件有表头并且分隔符是逗号。
2025-01-05 16:43:21
569
原创 【深度学习系统】Lecture 4 - Automatic Differentiation
可以看到从定义出发,虽然它能够计算任意函数的导数,但是计算机的精度有限,依然存在误差,而且计算效率并不高,因为要对每一个参数都做一遍这样的计算,代价是十分昂贵的。第二代微分方法相比第一代微分方法最大的特点是对计算图进行了扩展,使得新扩展出来的计算图的节点本身就是梯度信息。是一个n维的向量,计算梯度时每一个维度实际上都进行了n-2次的重复计算,这些计算并不能被简单地重用。计算梯度信息会是一个非常频繁的过程,这就牵扯到一个关键的问题——计算的效率。的角度计算函数微分,这样就保证了梯度计算的精确性。
2025-01-04 21:28:41
1268
原创 【408】选择易错点总结
知识点回顾:有如下表述是正确的: 知识点回顾: 有如下表述是正确的:知识点回顾: 有如下表述是正确的:知识点回顾:注意题目问的是规格化最值还是非规格化最值:知识点回顾:知识点回顾: 知识点回顾:知识点回顾:知识点回顾:知识点回顾:知识点回顾:而GPT的回答是这样的: 知识点回顾:知识点回顾:
2024-12-06 12:12:36
279
原创 【数一】易忘易错知识点、技巧意识总结
1. 高数导数、极限、连续的性质题(记住反例)极限就是逼近但取不到;连续就是逼近和取到相等;导数本质也是个函数,也以点或区间的形式考察其连续性计算极限的顺序(常数因子能提的先提出来,然后才是洛必达或者等价无穷小)复合函数微分性质(先求出复合函数的形式)祖孙三代的奇偶性与周期性曲率与曲率半径不等式(——添项减项技巧+拉格朗日中值定理)凹凸性的两种定义中值定理常考题型二元函数的二阶泰勒多项式非典型微分方程(换元先行)再比如24年真题:一道求点的轨迹和极坐标球积分的好题。
2024-12-05 19:50:07
408
原创 【计组大题】指令流水线
对于这两条指令之间的数据冒险,在第2条指令的ID段的前半周期,第1条指令已完成对寄存器t的写操作,在第2条指令的 ID 段的后半周期,第2条指令可以从寄存器t中取得正确的值,因此也消除了这两条指令间的数据冒险。注意到,I6后面莫名其妙空出来3个空段,这其实就是硬件阻塞,不可能是软件插入nop指令,因为插入nop指令是插入一条完整的5段流水线执行流程,下面I1/I7那儿的三条阻塞才是软件插入nop指令。通过第(2)问的分析,可以得出使用流水线情况下完成所有任务的时间为10个时钟周期。
2024-12-05 13:42:53
916
原创 【深度学习系统】Lecture 2 - ML Refresher / Softmax Regression
一、问题的理解方式首先,什么是数据驱动的编程?面对经典的MNIST数据集识别任务,传统的编程思维和数据驱动的编程思维有何不同?传统编程思维: 通常从明确的问题定义和具体的算法开始。对于 MNIST 数据集识别任务,可能会首先考虑使用特定的图像处理算法,如边缘检测、特征提取等,然后设计一系列的逻辑步骤来对图像进行处理和分类。数据驱动编程思维: 更注重对数据本身的理解。会先分析 MNIST 数据集的特点,包括图像的像素分布、数字的特征等。通过对数据的观察和探索,发现数据中的模式和规律,从而决定采用何种
2024-10-15 21:34:53
1150
原创 【时频分析 02】Wingner-Ville Transform
我们今天继续学习短时傅里叶变换,看清它的特性和不足。今天要引入新的工具来弥补短时傅里叶变换的不足,尽管它自身也有不足之处(没有缺点的工具是不存在的)。
2024-08-20 23:17:29
957
原创 【大模型01】参数高效微调之LoRA
LoRA通过将原始的高秩矩阵分解为两个低秩矩阵的乘积,实现了参数数量和计算复杂度的显著降低。这种方法特别适合大规模模型的训练和推理,能够在保证模型性能的前提下,提高计算效率和资源利用率。
2024-08-09 10:39:04
1013
原创 【深度学习】基于pytorch的胶囊网络实现
动态路由机制讲解:https://www.bilibili.com/video/BV1oW411H7G1/?可以看到从第六个epoch开始,acurracy呈现断崖式增长,但是前期增长却很慢,而且训练速度非常慢。Hinton论文:Dynamic Routing Between Capsules。
2024-08-02 16:29:35
259
原创 【时频分析 01】短时傅里叶变换
时频分析(Time-Frequency Analysis)我们对于一个正常的信号X(t)X(t)X(t),都希望从时域和频域两个角度进行认识。我们的采样通常是在时域上,而频域上的表达就是所谓的傅里叶变换:X^(w)=∫−∞+∞X(t)exp(−jwt)dt\hat X(w)=\int_{-\infty}^{+\infty}X(t)\exp(-jwt)dtX^(w)=∫−∞+∞X(t)exp(−jwt)dt傅里叶变换的结果可以让我们了解这个信号在各个频点上的分量的情况,或者说各个频点上的信号强
2024-08-02 16:24:48
1075
原创 【数学分析02】不动点原理
数列的不动点原理(Fixed Point Theorem for Sequences)在数学分析中是一个重要的工具,用于研究数列收敛性的特性。具体来说,一个数列的“不动点”是指某个数列的一个值,当数列收敛时,其极限值就是这个不动点。最常见的不动点原理是巴拿赫不动点定理(Banach Fixed Point Theorem),也称为收缩映射定理。我们想找到这个函数的一个不动点。是一个非空的完备度量空间,并且。是一个收缩映射,即存在一个常数。根据巴拿赫不动点定理,逐渐逼近 1,即数列。
2024-06-12 03:51:23
3177
原创 【数学分析01】stolz公式
STOLZ公式是一种用于求极限的数学工具,主要用于研究两个数列的比值极限。希望这个解释对你有帮助!如果你有任何其他问题或需要进一步的例子,请告诉我。,因此无法直接应用STOLZ公式,因为我们得到了一个趋向于无穷大的结果。必须是严格单调增的数列,并且趋向于无穷大。,我们来验证是否可以应用STOLZ公式来求。注意:STOLZ公式的应用前提是。如果我们考虑一个不同的数列,例如。
2024-06-12 03:40:31
1130
原创 【强化学习05】从Q学习到深度Q学习
深度Q学习(DQN)通过结合深度神经网络和Q学习,能够在复杂和高维度的状态空间中进行有效的强化学习。关键技术包括经验回放和目标网络,这些技术显著提高了训练的稳定性和效率。尽管面临一些挑战,但DQN在许多强化学习任务中表现出色,特别是在游戏和模拟环境中。
2024-05-28 23:47:34
1185
原创 【强化学习04】Q学习时序差分法
在强化学习中,Q值是用来评估在某个状态(state)下执行某个动作(action)所能获得的长期回报(reward)的一个数值。Q值越高,意味着在这个状态下执行这个动作越好。即时奖励rrr:你当前动作带来的直接收益。未来奖励的预期γmaxa′Qs′a′γmaxa′Qs′a′:考虑到未来所有可能的状态和动作后的最大收益,但需要折现因子γ\gammaγ来平衡现在和未来的收益。Q值更新:通过即时奖励和未来奖励的结合,不断迭代更新Q值,使其逐步逼近真实的动作价值。
2024-05-28 22:19:13
1216
原创 【数理统计03】集中不等式
集中不等式(concentration inequalities)是在概率论和统计学中用于描述随机变量(尤其是随机变量的和或函数)的集中程度的一类不等式。它们为随机变量偏离其期望值的概率提供了上界。这些不等式在很多领域都有应用,包括机器学习、统计学习理论、组合数学和随机过程等。下面介绍几种常见的集中不等式:马尔可夫不等式(Markov’s Inequality)是概率论中的一个基本不等式,用于估计随机变量大于某个正数的概率。它适用于任何非负随机变量,提供了一个简单而有用的上界。下面是马尔可夫不等式的正式陈述
2024-05-27 18:48:47
2488
1
原创 【Python】methodcaller的用法
是 Pythonoperator模块中的一个函数,它用于创建一个可以调用特定方法的可调用对象。这个对象可以被应用于其他对象,以便在这些对象上调用特定的方法。特别适用于函数式编程风格和对列表或其他可迭代对象应用相同的操作。以下是。
2024-05-24 21:58:13
423
原创 【计网02】电路交换、分组交换和报文交换
电路交换分组交换报文交换报文交换是分组交换的前身。在报文交换中,报文被整个地发送,而不是拆分成若干个分组进行发送交换节点将报文整体接收完成后才能查找转发表,将整个报文转发到下一个节点。因此,报文交换比分组交换带来的转发时延要长很多,需要交换节点具有的缓存空间也大很多三种交换方式的对比若要连续传送大量的数据,并且数据送时间远大于建立连接的时间,则使用电路交换可以有较高的传传输效率。然而计算机的数据传送往往是突发式的,采用电路交换时通信线路的利用率会很低。报文交换和分组交换都不需要
2024-05-24 14:31:02
410
原创 【深度学习02】注意力机制
自注意力机制可以理解为学生在课堂上做笔记时,不仅关注当前的讲课内容,还结合之前的所有笔记来理解新的信息。通过查询、键和值向量的计算,模型能够灵活地整合和理解复杂的信息。
2024-05-24 13:33:05
1241
原创 【数理统计02】延森Jensen‘s不等式的证明
延森不等式(Jensen’s Inequality)是凸函数理论中的一个重要结果,广泛应用于概率论、统计学和优化理论等领域。对于连续情形,可以通过类似的方法,考虑连续随机变量的概率密度函数,使用积分形式得到同样的结果。:将凸函数定义扩展到一般情况,对于任意的有限个数。综上所述,延森不等式对于离散和连续情形都成立。:利用这一步骤得到的结果,证明对任意随机变量。:利用凸函数的定义,我们首先对于简单情形。:将这个不等式扩展到有限个点的情况。是凸函数,当且仅当对于任意的。:首先考虑两个点的情况,设。
2024-05-23 19:16:13
2441
原创 【机器学习01】基本概念
机器学习是计算机科学的一个分支,通过算法和统计模型使计算机系统能够在没有明确指令的情况下执行特定任务。机器学习的核心思想是从数据中学习规律,并基于这些规律进行预测或决策。
2024-05-21 13:34:31
1019
原创 【Python设计模式26】访问者模式
passpass")")pass访问者模式是一种行为型设计模式,通过将数据结构与作用于结构上的操作解耦,使得增加新的操作变得容易。访问者模式适用于对象结构稳定而操作多变、需要对对象结构中的对象进行不同操作以及需要将无关行为分离到不同类中的场景。合理应用访问者模式,可以提高系统的灵活性和可维护性。理解并掌握访问者模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:29:13
569
原创 【Python设计模式25】解释器模式
pass解释器模式是一种行为型设计模式,通过定义一个语言的文法表示,并建立一个解释器来解释语言中的句子。解释器模式适用于简单文法的解释、领域特定语言和可扩展的文法规则的场景。合理应用解释器模式,可以提高系统的灵活性和可维护性。理解并掌握解释器模式,有助于在实际开发中构建高效、灵活的系统,特别是在需要动态解释或运行时解释的场景中。
2024-05-21 09:28:51
491
原创 【Python设计模式24】享元模式
pass享元模式是一种结构型设计模式,通过共享相似对象来减少内存使用和提高性能。享元模式适用于有大量相似对象、内存消耗大和需要提高性能的场景。合理应用享元模式,可以提高系统的性能,减少内存消耗,便于系统的维护和扩展。理解并掌握享元模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:28:32
291
1
原创 【Python设计模式23】中介者模式
pass= sender:passpassprint(f"")print(f"中介者模式是一种行为型设计模式,通过定义一个中介者对象来封装对象之间的交互,避免对象之间的直接引用,从而降低对象之间的耦合。中介者模式适用于复杂对象交互、减少类间依赖和动态改变交互的场景。合理应用中介者模式,可以提高系统的灵活性和可维护性。理解并掌握中介者模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:28:11
323
原创 【Python设计模式22】职责链模式
pass职责链模式是一种行为型设计模式,通过将请求沿着处理者链传递,使得多个对象都有机会处理请求。职责链模式适用于多个对象可以处理同一请求、需要动态指定处理者以及需要按照某种顺序处理请求的场景。合理应用职责链模式,可以提高系统的灵活性和可扩展性,降低耦合度。理解并掌握职责链模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:27:53
460
原创 【Python设计模式21】命令模式
passpass命令模式是一种行为型设计模式,通过将请求封装为对象,实现请求发送者和接收者的解耦。命令模式适用于需要参数化对象、支持撤销操作、请求排队和日志记录以及将请求与具体实现解耦的场景。合理应用命令模式,可以提高系统的灵活性和可扩展性,简化请求的管理。理解并掌握命令模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:27:29
273
原创 【Python设计模式20】桥接模式
passpass桥接模式是一种结构型设计模式,通过将抽象部分与实现部分分离,使它们可以独立变化。桥接模式适用于避免继承层次的爆炸、希望独立扩展抽象和实现以及需要动态切换实现的场景。合理应用桥接模式,可以提高系统的灵活性和可扩展性,简化系统设计。理解并掌握桥接模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:27:06
758
原创 【Python设计模式19】单例模式
单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式适用于资源管理、配置管理和日志管理等场景。合理应用单例模式,可以提高系统的资源利用率和可维护性。理解并掌握单例模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:26:45
453
原创 【Python设计模式18】迭代器模式
passpasspass迭代器模式是一种行为型设计模式,通过定义一致的接口来顺序访问聚合对象中的元素,而无需暴露其内部表示。迭代器模式适用于遍历复杂对象、支持多种遍历方式和提供统一遍历接口的场景。合理应用迭代器模式,可以提高代码的灵活性和可维护性。理解并掌握迭代器模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:26:20
408
原创 【Python设计模式17】组合模式
pass组合模式是一种结构型设计模式,通过将对象组合成树形结构来表示“部分-整体”的层次结构,使得客户端可以统一地处理单个对象和对象组合。组合模式适用于表示部分-整体层次结构、统一处理单个对象和组合对象以及构建递归结构的场景。合理应用组合模式,可以提高系统的灵活性和可扩展性,简化客户端代码。理解并掌握组合模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:24:47
448
原创 【Python设计模式16】备忘录模式
备忘录模式是一种行为型设计模式,通过捕获并存储对象的内部状态,在不破坏封装的前提下实现对象状态的保存和恢复。备忘录模式适用于需要保存和恢复状态、实现撤销操作和避免暴露内部状态的场景。合理应用备忘录模式,可以提高系统的灵活性和可维护性,简化状态管理操作。理解并掌握备忘录模式,有助于在实际开发中构建高效、灵活的系统。
2024-05-21 09:24:13
420
From Nand to Tetris (I) on Coursera
2024-06-06
《Statistical Methods for Reliability Data》完整数据集
2024-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人