- 博客(19)
- 收藏
- 关注
原创 深度学习优化器(Momentum、RMSprop、Adam)
❤ 所有梯度下降的基本公式都是:❤,对于的应该把它理解为一个向量 [, …… ,],同样理解成向量。优化器的本质就是对这个基本公式进行改进。(1)Momentum 梯度下降:通过之前的(向量的矢量加),使能像具有动量一样快速下降,减小震荡且明确下降方向。(2)RMSprop 梯度下降:通过(对向量里每个元素的平方除以每个元素的开方),当梯度在某一个方向上比较大时,分母会约束其变小,而当梯度在某一个方向上比较小时,分母会令其相对变大,体现出的效果。
2025-08-28 15:27:30
1227
原创 GRPO 算法(损失函数)——原理讲解与代码讲解
(1)策略损失(policy loss):模型在有适配器和没有适配器情况下的词元概率分布比率(2)从奖励函数中计算出来的优势值(advantages)(3)比率裁剪(clip):用于确保在任何单独步骤中都没有大的损失值(4)KL散度:用于确保在训练过程中,我们正在训练的模型不会偏离它已经知道的基准模型太多下面我们对每个部分逐一介绍。
2025-08-12 15:44:22
6454
2
原创 吴恩达LangChain课程(所有代码都是我修改的使用免费模型+开源Github+知识点学习总结)
得到 predictions 的结构是<class 'list'>,列表中每个元素的结构是<class 'dict'>,每个字典有三个键 ['question','answer','result'],比 examples 多了一个“result”键,“result”键的值就是我们构建的语言模型为每个“question”做出的回答。解析器的作用,将语言模型的输出格式作要求,使输出符合我们的要求,比如字典格式,这样当我们需要使用这个输出作为其他语言模型的输入时可以直接使用。
2025-08-07 17:58:39
1628
原创 在学习LangChain之前,先明白LangChain的作用和主要技术是什么?
通过组合提示模板(Prompt Templates)、外部数据(Retrieval)、工具调用(Tools)等,让通用模型在特定任务中表现得更像“专用模型”。:LangChain 不会修改底层大模型的结构或参数(不像微调或训练专用模型),而是通过外部工具和流程扩展其功能。:通过精心设计的提示模板(Prompts)约束输出格式或聚焦领域,例如“你是一个法律助手,请用专业术语回答”。,使其在功能上“专用化”,而非改变模型本身。:通过检索增强生成(RAG),从外部数据库实时获取信息,突破大模型的静态知识限制。
2025-08-01 17:35:20
358
原创 CLIP论文笔记--《Learning Transferable Visual Models From Natural Language Supervision》
我们证明,预测哪个描述与哪个图片相匹配的简单预训练任务是一种高效且可扩展的方法,可以在从互联网收集的 4 亿对(图像、文本)数据集上从零开始学习最先进的图像表示。例如,我们在 ImageNet 上实现了零样本情况下与原始 ResNet-50 相同的准确率,而无需使用其训练所依赖的 128 万个训练示例中的任何一个。传统的图像模型会同时训练图像特征提取器和线性分类器以预测某些标签,而CLIP则会同时训练图像编码器和文本编码器来预测一批(图像、文本)训练样本的正确配对。
2025-08-01 14:14:57
227
原创 吴恩达LangChain学习day01——免费的OpenAI的API Key(简单可行)
以下是我在jupyter notebook中使用的代码(需要注意的是使用OpenAI需要安装的openai版本大于1.6.1,且API的调用方式发生了变化,不再使用openai.ChatCompletion.create方法,这与吴恩达LangChain+RAG课程代码不一致了),同时在复制代码时要将api_key赋值为刚刚让你复制的自己的API Key,base_url则不用修改。每24小时可免费获得$1.00的使用额度,点击上面的项目链接进入Github,点击红框中的链接,进入Poixe AI。
2025-07-30 00:28:37
1626
原创 力扣热题100学习——回溯篇
• 如果使用result.append(path),result中存储的都是同一个path对象的引用。(3)回溯的遍历过程,for循环可以理解是横向遍历,backtracking(回溯)就是纵向遍历。• 当回溯结束时,path最终变为空列表,所以result中的所有引用都指向同一个空列表。确定回溯终止条件,找到一个排列时,保存结果并return。回溯遍历过程for循环横向遍历,回溯纵向遍历。(1)要确定回溯算法传入的参数和最终返回值;(2)要确定回溯时的终止条件;
2025-06-25 18:15:21
213
原创 力扣热题100学习day12
因为第5个“)”的dp[i-dp[i-1]-2]也是越界的,所以会误以为和i=1时的情况一样,从而进入条件语句执行dp[i] = dp[i-1] + 2 + dp[i-dp[i-1]-2],然而事实是i=1越界是因为i-dp[i-1]是配对的括号且在字符串内,但再进行减2操作造成越界,而其他的下标是找i-dp[i-1]时就根本不在字符串里,结果没有被条件判断,也进入条件语句,自然造成结果错误。注意i-dp[i-1]-2当i=1时是越界的,我们需要对这种情况将dp[i-dp[i-1]-2]也置为0。
2025-05-10 19:21:13
202
原创 力扣热题100学习day11
L1,L2两个链表中每次选取较小的节点加入到新链表中,然后L1或L2节点后移,很明显要创建一个新链表的头节点,我也是这么做的,但是只创建一个头节点并不能很好的返回结果,因为随着新链表的加长,头节点一直向后移动,最后如果直接返回头节点,它此时指向链表末尾,返回的是None,而不是完整的新链表,所以还需要单独一个头指针,在头节点不断后移时任能找到头节点。快慢指针,慢指针每次移动一步,快指针每次移动两步,如果有环则快慢指针会相遇,否则没有环,快指针永远在慢指针之前不会相遇。
2025-05-09 20:28:10
499
原创 力扣热题100学习day10
其实从我的思路能看出来并不是单单取最大值就行,通过网上学习,果然因为会出现负负得正的情况,所以最小值和最大值都应该记录下来,实现代码如下,它的巧妙性在于max(,max)和min(,min),第一次遇到这题还是缺少经验,有这种思想也不知道写成什么样的代码o(╥﹏╥)o。我的思想的问题当考虑 [-1, 2, 3, -4, -5] 这样一个数组时,因为有负数的出现导致乘积并不是单纯取最大值就可以,而且要实现当判断元素 -5 时,剔除前4个元素的乘积最大子数组中的 -1。
2025-04-23 11:39:46
223
原创 力扣热题100学习day09——动态规划
很多题目都可以用装背包思想来理解,比如这道题,可以理解为能否用字典中的元素装满一个容量为字符串 s 的背包,但是定义 dp 数组时是使用字符串长度 i 作为下标,下标永远是一个 int 类型的,而如果我想用一个字符串类型作下标,是正常思路,但代码怎么知道怎么查分出你想的字符串呢,还是要一个字符一个字符的添加,看添加进的一串字符是否出现在字典里。(2)确定递归公式 dp [j] = min( dp [ j - coins [ i ] ], dp [ j ] )
2025-04-22 09:40:16
351
原创 力扣热题100学习day08
(2)dp [i] 的递推公式来自于是不是偷第 i+1间房子,它取决于如果我们偷了前一个房子,即 dp [i-1] 那么我们就不能偷现在这个房子,否则如果前一个房子我们没偷,即 dp [i-2],那么这个房子我们就决定偷,最后 dp [i] 的最终值就是看偷这件房子和不偷这件房子,哪个偷的结果更大,把更大值返回作为当前小标 i 的 dp [i](2)明确递推公式,dp [n] 的值是 dp [n-完全平方数]+1 和 dp [n] 中更小的那个。根据输入 n ,构造最大元素不超过 n 的完全平方数数组。
2025-04-18 16:55:28
402
原创 力扣热题100学习day07
如果情况是一个节点是它自己的祖先,那么要找到它的左右子树中有另一个节点的。(2)节点不是自己的情况:节点的左节点或右节点有一个是 p 或 q ,那么我们用是 p 或 q 的节点覆盖这个节点;(2)选择最大路径和时,判断左节点和右节点中的正数,如果都为正数则选更大的加到最大路径和中并作为返回值继续向上传递,但是这样的操作只适用于除根节点外的节点。但真正在代码实现中,如果是我上面的前序遍历思路,先判断根节点,那么返回值是什么呢,最后要返回是什么节点取决于先知道它左右子树的节点情况,因此应该是。
2025-04-17 17:31:47
358
原创 力扣热题100学习day06
整体思路正确,但是通过调试我发现我这样在递归中写入哈希表会导致哈希表中的键值对一直发生改变,出现这样错误的原因是我在实现代码时真的把原前序和中序序列拆分为了两个新序列,数组下标分别变成了一个新的值,导致哈希表识别到相同的键但不同的值,进行了改进,导致递归两三次之后哈希表已经完全混乱了。观察样例输出的结构我发现,可以应用一个队列,从上到下,从左到右依次将节点入队,每层中最后一个出队元素就是右视图中看到的元素,整体思路和二叉树层序遍历题相同(见我的力扣热题100学习day05第102题二叉树的层序遍历)。
2025-04-16 15:04:23
203
原创 力扣热题100学习day05
所以我之前的思路是不严谨的。,其作用是记录每一层的元素个数,第一层 size=根节点数量,第二层 size=根节点左右节点数量,第三层依次类推,这样就当我们想知道哪些元素是一层时,只需要根据 size 的值出队相应的数量,则它们就是一层的,当遍历完一层,size=0时,重新计算size=下一层以入队长度。实现方法从根节点开始,先将根节点入队,然后根节点出队的同时根节点左右节点入队,然后根节点左节点出队同时它的左右节点再加入队列末端,然后根节点右节点出队同时它的左右节点也加入到队列末端。
2025-04-15 10:50:55
229
原创 力扣热题100学习day04
如果当前根节点的左右结点都被遍历过了,也需要退出当前递归,回到它父节点所在的递归中,同时因为回到父节点所以深度减一。答:因为节点左右节点能遍历完,首先说明这个节点不为null,则在进入这个结点的递归时就会先把深度加一,之后要返回它父节点时深度就要把因为加入它造成的深度改变给消除。(3)确定递归结束条件的返回值,如 101 题中判断递归结束条件有好几种,这些情况每种都是不可缺少的,以及543题中如果节点是 null ,返回长度是 -1 也是我觉得自己居然能想出来,很牛的地方。是否相同,而不是它们的。
2025-04-14 15:00:38
446
原创 力扣热题100学习day03
受到此题分类在哈希的影响,根据前两天做题经验,本题我开始思考构造一个哈希表,我延续前两天的做题思路,想通过字典将元素与下标组合成键值对的形式,但很快我发现了问题,因为字典键的唯一性,导致例如[3,3]的数组,字典中相同键的值会被覆盖,无法记录完整信息,造成结果出错。通过判断哈希表是否相同来判断是否是异位字符串,然后我的想法就很麻烦了,再构造一个新哈希表,用来筛选刚才的那个哈希表,如果键第一次出现就添加到新哈希表中,否则将数组下标对应的字符串保存下来,又需要额外创建一个新列表。插入的时间复杂度为O(1)?
2025-04-13 11:13:24
248
原创 力扣热题100学习day02
(Tips:在代码实现中缺失的最小正数一定在 [1,len(原始数组)] 之间,如果超出这个区间的数组元素我们不对它进行移动,比如原始数组[7,8,9]长度总共为3,不可能把它们移动到下标[6,7,8]的位置,那么我们直接就不采取移动,这样第一个位置就是缺失的最大正数)(1)我的思路:先对给定整数数组排序,for循环遍历所有元素,找到第一对不相邻的两个正数,它们构成一个区间[a,b],则缺失的第一个正数就是a+1。原始数组:[3,4,-1,1]重新排序:[1,-1,3,4]数组下标:[0, 1,2,3]
2025-04-12 13:45:26
261
原创 力扣热题100学习day01
引入前缀积和后缀积的好处,计算它们时只需要一次循环,注意前缀积第一个元素一定是1,因为元素1之前没有元素,这样在计算第二个元素前缀积时只需要将第一个元素和第一个元素的前缀积相乘即可,依次向后求出每个元素的前缀积。例如[1,2,3,4]数组的前缀积[1,1,2,6]、后缀积[24,12,4,1],值得注意的是三者之间位置对应关系,都以索引下标1的元素为例,在数组中对应元素2,前缀积中对应1(1*1),后缀积中对应12(3*4),所以元素2除自身外元素的乘机为前缀积乘以后缀积等于12。
2025-04-11 22:59:58
288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅