- 博客(64)
- 收藏
- 关注
原创 Part04:提示词示例
摘要:本文通过七大应用场景展示了提示词工程的实际应用技巧。在文本概括方面,演示了从基础摘要到进阶的一句话总结;信息提取部分展示了从段落中提取特定产品名的能力;问答环节强调了结构化提示词的重要性;文本分类则说明了提供示例对模型输出的影响;对话场景对比了技术性和通俗易懂两种回答风格;代码生成部分呈现了简单程序和数据库查询的实现;推理任务则通过基础算术和复杂问题分解,展示了分步思考提示法的效果。这些案例揭示了精心设计的提示词在不同任务中的强大应用潜力。
2026-03-26 22:39:28
286
原创 Part03:设计提示的通用技巧
摘要:提示词设计是一个需要反复迭代的实验过程。建议从简单提示开始,逐步增加细节和上下文,并将复杂任务拆解为子任务。关键技巧包括:使用明确指令(如"总结"、"翻译")、添加具体描述、控制合理长度、提供示例格式。要避免模糊表述,尽量采用正向指令说明"要做什么"而非"不要做什么"。通过对比实验表明,具体、简洁且描述性的提示词能获得更优结果,而过于笼统或否定式的指令往往效果不佳。
2026-03-26 22:38:53
371
原创 Part02:基本概念以及基本要素
《大语言模型提示词基础指南》摘要:本文系统介绍了提示工程的核心要点,重点阐述了优质提示词的构成要素与优化方法。提示词质量直接影响输出效果,完整的提示应包含指令、上下文、输入数据和输出指示四要素。指南通过对比案例展示了从简单到精准的提示词演变过程,如补充上下文后模型输出显著改善。文章详细解析了零样本提示和少样本提示两种主流技术,并采用表格形式拆解要素对应关系。最后强调提示词格式需根据任务类型灵活调整,为使用者提供清晰的优化路径。(148字)
2026-03-26 22:38:09
322
原创 Part01:大语言模型设置
本文介绍了大语言模型(LLM)常见参数配置指南,重点解析了6个关键参数的作用及使用建议:1)Temperature控制输出随机性,低值适合事实性任务,高值适合创意任务;2)Top_p通过核采样技术控制结果确定性;3)MaxLength限制生成Token数量;4)StopSequences指定停止条件;5)FrequencyPenalty减少词语重复频率;6)PresencePenalty防止过度重复。建议同类参数只需调整其一,并针对具体任务类型进行优化配置。合理设置这些参数能显著提升模型输出的质量和适用性。
2026-03-26 22:37:34
263
原创 图论 | part01
题目要求在有向无环图中找出所有从节点1到节点n的路径。使用深度优先搜索(DFS)算法,通过邻接矩阵存储图结构,从起点1开始递归遍历所有可能路径。当到达终点n时记录当前路径,并通过回溯机制确保所有路径都被探索。若不存在路径则输出-1,否则按要求格式输出所有路径(节点间空格分隔,行末无空格)。关键点包括邻接矩阵构建、DFS递归实现和回溯处理,确保正确找到所有可达路径。时间复杂度取决于图的拓扑结构,空间复杂度主要用于存储路径结果。
2026-03-11 20:59:38
281
原创 单调栈 | part02
本文解析了两道基于单调栈的算法题:接雨水问题和柱状图最大矩形问题。对于接雨水问题,使用单调递减栈计算每个凹槽的积水量,通过比较左右边界高度与底部高度差来求解。柱状图问题则采用单调递增栈,通过寻找左右第一个比当前柱低的边界来计算最大矩形面积。两题都通过栈结构高效处理边界条件,其中柱状图问题需在数组首尾补0以处理边界情况。这两种解法都体现了单调栈在解决区间极值问题中的高效性和通用性。
2026-03-09 21:01:15
323
原创 单调栈 | part01
本文介绍了力扣上三道关于"下一个更大元素"问题的解法,均采用单调栈技术。739题计算每日温度后更高温度的天数差,496题在子集中寻找主数组的下一个更大值,503题处理循环数组情况。解法核心是维护单调递减栈,通过索引存储和取模运算高效解决问题。这些算法的时间复杂度均为O(N),空间复杂度O(N),适用于大规模数据。对于循环数组问题,通过双倍遍历和取模运算避免数组复制,优化空间使用。
2026-03-07 23:39:32
372
原创 动态规划 | part13
本文介绍了两个与回文相关的动态规划算法题解。第一题(647)统计字符串中所有回文子串的数量,使用二维dp数组记录子串[i,j]是否为回文,通过倒序循环i确保状态转移正确性。第二题(516)求最长回文子序列长度,dp数组存储子串[i,j]的最长回文子序列长度,当首尾字符相同时长度加2,否则取左右子问题的最大值。两题均采用从下往上的遍历顺序,利用动态规划的思想,通过子问题的解构建原问题的解。
2026-03-06 12:04:05
199
原创 动态规划 | part12
本文介绍了三个字符串相关的动态规划问题:1)计算字符串s中子序列t出现的次数,使用二维DP数组记录匹配方案数;2)计算使两个字符串相同的最小删除次数,通过DP数组存储状态转移;3)计算单词间的最小编辑距离(插入/删除/替换操作)。三个问题都采用相似的DP框架,初始化边界条件后,根据字符匹配情况分别处理:匹配时继承之前状态,不匹配时考虑不同操作的最小代价。解法时间复杂度均为O(mn),空间复杂度O(mn),适用于长度不超过1000的字符串。
2026-03-05 22:15:27
421
原创 Gen_AI 第八课 LLM的终生学习:持续学习与知识更新
大语言模型持续学习综述:本文系统探讨了通用大语言模型(LLM)实现持续学习的必要性及方法体系。研究指出,模型需通过参数更新应对新知识、新技能、新概念和遗忘需求等四大场景。重点分析了四种持续学习方法:梯度下降微调(面临灾难性遗忘挑战)、模型编辑(精确修改特定知识)、模型合并(参数空间算术运算)和测试时训练(动态适应)。文章强调后训练应作为最后手段,并揭示了保持局部性(Locality)是所有方法的核心挑战。最后提出评估持续学习效果的三大标准:可靠性、泛化性和局部性,为LLM的终生学习提供了系统性框架。
2026-03-05 19:07:39
408
原创 动态规划 | part11
本文总结了力扣平台上与子序列相关的经典动态规划问题。最长公共子序列(1143题)通过二维DP数组,在字符匹配时继承左上角值+1,不匹配时取左边或上边最大值。不相交的线(1035题)实质是最长公共子序列问题。最大子数组和(53题)使用一维DP,记录以当前元素结尾的最大和。判断子序列(392题)通过DP计算匹配长度,若等于s长度则返回true。这些问题的核心在于状态转移方程的设计:子序列问题允许跳过字符(取max),而子数组问题要求连续性(需重新开始或累加)。
2026-03-04 16:16:46
327
原创 动态规划 | part10
本文介绍了三道关于子序列/子数组的经典动态规划问题:1. 300题求最长递增子序列(非连续),使用一维dp数组记录以每个元素结尾的最长子序列长度,通过双重循环比较前驱元素来更新dp值;2. 674题求最长连续递增序列,只需比较相邻元素,简化为一重循环;3. 718题求两个数组的最长公共子数组,采用二维dp数组,当元素相等时继承左上角dp值加1。三题均需维护全局最大值作为最终结果,体现了动态规划"状态转移"的核心思想。
2026-03-03 19:18:51
374
原创 动态规划 | part09
本文分析了股票买卖问题的三种变体解法: 最多K次交易(188题):使用动态规划,定义2K+1种状态(买入/卖出交替),通过状态转移计算最大利润。 含冷冻期(309题):定义4种状态(持有、保持卖出、当日卖出、冷冻期),考虑卖出后一天不能买入的限制。 含手续费(714题):简化版无限交易,仅在卖出时扣除手续费,使用持有/不持有两种状态。 共同特点: 都采用动态规划方法 通过状态转移方程计算最优解 需要考虑交易限制条件(次数、冷冻期、手续费) 这些解法通过合理定义状态和转移条件,有效解决了不同约束下的股票买卖问
2026-03-02 21:15:42
483
原创 动态规划 | part08
本文总结了LeetCode上股票买卖问题的三种变体解法。121题要求只能买卖一次股票,使用动态规划维护持有/不持有两种状态;122题允许无限次买卖,解法类似但买入时需考虑之前利润;123题限制最多两次买卖,需要维护5种状态(无操作、第一次持有/不持有、第二次持有/不持有)。核心思路都是通过动态规划记录每天不同状态下的最大利润,最终返回最后一天不持有股票时的最大利润。时间复杂度均为O(n),空间复杂度O(n)。
2026-03-01 16:56:45
420
原创 动态规划 | part07
本文介绍了力扣上"打家劫舍"系列问题的三种变体及解法。第一题是线性房屋排列,使用动态规划,状态转移方程为dp[i] = max(dp[i-1], dp[i-2]+nums[i])。第二题是环形房屋排列,通过分别计算不含首元素和不含尾元素两种情况取最大值。第三题是二叉树房屋排列,采用后序遍历,返回包含偷与不偷当前节点的最大金额数组。三题都体现了动态规划思想在不同场景下的应用,从线性到环形再到树形结构,逐步提高问题复杂度。解法时间复杂度均为O(n),空间复杂度根据问题不同为O(n)或O(1)
2026-02-26 21:09:29
252
原创 动态规划 | part06
本文总结了LeetCode上三个典型的动态规划问题。322题"零钱兑换"使用完全背包思想求最少硬币数,需注意初始化和遍历顺序;279题"完全平方数"类似零钱兑换,转化为求最少的完全平方数组合;139题"单词拆分"采用完全背包的排列解法,判断字符串能否拆分为字典中的单词。三题均采用动态规划,但解法各有特点:前两题为组合问题,先遍历物品;后一题为排列问题,先遍历背包。关键点在于正确初始化dp数组和确定遍历顺序。
2026-02-26 00:40:10
729
原创 Gen_AI 第七课 LLM的学习过程
大型语言模型(LLM)的训练遵循三阶段框架:预训练(自监督学习语言和世界知识)、监督式微调(学习对话格式)和基于人类反馈的强化学习(对齐人类偏好)。预训练需要海量高质量数据并严格清洗,SFT通过少量优质数据激活模型能力,RLHF则用反馈机制优化输出。关键发现包括:数据质量优于数量、知识需多角度呈现、SFT可知识蒸馏降低标注成本、RLAIF用AI替代人类反馈。三阶段训练保持架构一致,通过参数继承实现知识连续传递,最终使模型掌握从语言理解到价值观对齐的全方位能力。
2026-02-25 11:09:03
899
原创 动态规划 | part05
摘要: 本文探讨了完全背包问题中的组合与排列解法差异,以LeetCode 518(零钱兑换II)和377(组合总和IV)为例。关键点在于遍历顺序: 组合数(不考虑顺序):外层循环硬币,内层循环金额,确保硬币按固定顺序使用,避免重复计数(如[1,2]与[2,1]视为同一组合)。 排列数(考虑顺序):外层循环金额,内层循环硬币,允许任意顺序组合(如[1,2]和[2,1]视为不同)。 代码示例展示了两种场景的动态规划实现,并延伸至爬楼梯问题(每次可跨1~m阶,求排列数)。核心结论:组合问题固定硬币顺序,排列问题需
2026-02-23 20:03:42
1037
原创 动态规划 | part04
本文摘要:本文分析了三个动态规划问题的解题思路。1049题通过将石头碰撞问题转化为0/1背包问题,寻找使两堆石头重量差最小的解;494题将目标和问题转化为求正数集合的大小,使用背包方法计算组合数;474题则采用二维背包思想,在0和1的数量限制下寻找最大子集。三个问题都运用了动态规划的核心思想:状态定义、转移方程和倒序遍历,展示了动态规划在解决组合优化问题中的灵活应用。解题关键在于将原问题转化为背包问题,并设计合适的状态表示和转移方式。
2026-02-21 23:02:57
549
原创 动态规划 | part03
这道题目要求判断给定的正整数数组是否能被分割成两个和相等的子集。解题思路是:首先计算数组总和,若为奇数则直接返回false;若为偶数,则转化为背包问题,寻找是否存在子集的和等于总和的一半。使用动态规划方法,定义dp数组表示容量为j时的最大价值(这里价值等于重量),通过状态转移方程dp[j] = max(dp[j], dp[j-nums[i]]+nums[i])进行计算。最终判断dp[target]是否等于target即可。该方法时间复杂度为O(n*target),空间复杂度为O(target)。
2026-02-20 18:30:33
221
原创 动态规划 | part02
本文介绍了LeetCode上两道关于机器人路径问题的动态规划解法。第一题"不同路径"要求计算m×n网格中从左上到右下的路径总数,使用动态规划数组dp[i][j]表示到达该位置的路径数,通过dp[i][j]=dp[i-1][j]+dp[i][j-1]递推公式求解。第二题"不同路径II"在网格中加入了障碍物,处理方式类似但遇到障碍物时跳过计算。两题都先初始化第一行和第一列,再逐步填充dp数组,最终返回右下角的值作为结果。
2026-02-18 19:26:51
249
原创 动态规划 | part01
也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n)。我们的递推公式 dp[i]是前面俩个台阶决定的,跳一步或者俩步,dp[i-1],dp[i-2],需要计算最小的花费,需要从二者中取最小的。输入:cost = [1,100,1,1,1,100,1,1,100,1]- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。解释:你将从下标为 1 的台阶开始。
2026-02-15 15:06:29
780
原创 贪心算法 | part05
本文包含两个算法题解:1. 合并区间问题:通过排序区间后遍历比较,合并重叠区间。核心思路是先按左端点排序,然后逐个检查并合并相邻的重叠区间,最后输出合并后的结果。2. 单调递增数字问题:通过从右向左遍历数字,当发现前一位大于后一位时减小前位并将后续位设为9,从而得到最大的单调递增数字。两个解法都采用了贪心算法的思想,分别通过排序和逆向遍历来优化处理过程。
2026-02-13 21:11:42
351
原创 Gen_AI 第六课 训练类神经网络的实用技巧
本文系统总结了深度学习的优化策略与模型改进方法。主要内容包括:1)区分优化不足与过拟合的诊断方法;2)优化器演进(从GD到Adam)及其原理;3)提升泛化能力的技巧(Dropout、权重初始化、预训练);4)模型结构设计(感受野、参数共享、残差连接);5)损失函数选择与数据增强策略;6)正则化方法(Weight Decay、BatchNorm)。文章强调当复杂模型表现不如简单基线时,应优先考虑优化问题而非过拟合,并指出Adam是目前最广泛使用的优化器。
2026-02-13 16:29:22
657
原创 贪心算法 | part04
本文分析了LeetCode中三个区间相关问题的解题思路:1. 452题"引爆气球"采用贪心算法,通过排序和比较右边界寻找最小箭数;2. 435题"无重叠区间"同样使用贪心策略,通过维护最小右边界计算需移除的区间数;3. 763题"划分字母区间"通过记录字符最后出现位置,用双指针确定划分点。三个问题都体现了区间处理中排序和边界维护的核心思想,452和435题解法相似,而763题则采用字符位置统计的创新方法。解题关键在于对特殊情况的预处理、适当的排序策
2026-02-10 18:39:12
313
原创 Gen_AI 第五课 深度学习&机器学习基本概念
摘要:生成式AI通过函数f(x)实现输入到输出的转换。机器学习分为三步:(1)设定评估目标(如最小化Loss);(2)确定函数选择范围;(3)优化函数参数。优化方法包括暴力求解和梯度下降法,后者可能陷入局部最优或鞍点。采用Batch和Shuffle技术可加速训练。需通过训练-验证-测试流程评估模型,注意过拟合问题,可通过调整函数范围或EarlyStopping解决。实践建议从简单模型开始,逐步增加复杂度,并警惕验证集过拟合导致测试表现不佳的风险。
2026-02-10 01:13:57
415
原创 贪心算法 | part03
本文介绍了四个贪心算法题目及其解法: 加油站问题:通过计算当前油量和总油量差值,找到唯一可行的起点。当总油量不足时返回-1。 分发糖果:两次遍历处理左右邻居关系,确保评分高的孩子获得更多糖果。 柠檬水找零:维护5元和10元钞票数量,优先用大面额找零,确保能正确找零。 身高重建队列:按身高降序和k值升序排序后,将每个人插入到队列的k位置。 这些题目展示了贪心算法在特定条件下的应用,通过局部最优选择达到全局最优解。
2026-02-08 22:11:07
668
原创 Gen_AI 补充内容 Logit Lens 和 Patchscopes
摘要:本文系统介绍了三种前沿的大语言模型可解释性技术:1)LogitLens通过逐层解嵌入揭示模型推理过程;2)FunctionVector通过提取行为向量操控模型特定能力;3)PatchScope实现跨模型知识迁移。这三种技术分别从单层解码、行为操控和知识移植三个维度,为理解大语言模型的内部工作机制提供了创新方法。文章详细阐述了各技术的原理、实现流程和应用场景,并通过代码示例展示了如何在实际中运用这些技术来分析模型行为、验证理论假设或进行模型编辑。
2026-02-08 16:40:32
668
原创 贪心算法 | part02
仔细想一想,跟我们的一般想法结果是一致的,我们期待的就是找到一天价格低的时候买入,再找一天高的时候卖出。比如到了一个低点,我们向后,得到的利润肯定是正的,如果高点与这个点相差了几天,我们就可以收集这几天的利润,也就是我们的一般想法,同时用的就是贪心每天的利润max,只加上正的利润。我们希望的是获取最大的利润,贪心思路就是我们要“贪”每天的利润,让每天的利润最好都是正的,我们可以计算股票价格数组,每天的利润,可以得到每天的利润,我们将所有正的利润都加在一起,最后的结果就是我们要的最大利润。
2026-02-07 22:59:05
450
原创 Gen_AI 第四课 模型评估
文章摘要:本文系统探讨了AI模型评估的两类方法。对于有标准答案的任务,分析了精确匹配、相似度评估和Embedding评估等方法及其局限性;针对开放性问题,介绍了人类评估和LLM作为评判者的方案。文章强调评估需考虑统计学特征(如风险分布)、多维度指标(延迟、成本等)以及安全性测试(攻击抵抗、偏见检测)。最后指出评估应避免过度依赖分数,需结合实际场景需求,关注模型的实际表现而非单纯指标优化。
2026-02-06 12:28:25
976
原创 Gen_AI 补充内容 RAG
RAG(检索增强生成)技术通过结合检索系统与大语言模型,构建了一个高效的知识问答系统。其核心流程包括知识库预处理、相关段落检索、提示增强和最终答案生成。系统采用混合检索策略,同时使用BM25稀疏检索和神经网络稠密检索,通过倒数排名融合方法取长补短。在分块优化方面,需平衡分块大小与重叠区域,推荐采用语义分块和元数据增强策略。RAG技术能有效减少模型幻觉,支持动态知识更新,同时保护数据隐私,是提升大模型知识准确性的重要方法。
2026-02-05 06:56:32
1085
原创 【苍穹外卖】Day05 Redis快速入门
Redis(Remote Dictionary Server)是一个开源的、基于内存的高性能 Key-Value 数据库。特性RedisMySQL存储介质内存(RAM)磁盘(Disk)数据结构Key-Value二维表(关系型)读写性能极高(10万+ QPS)中等持久化支持(RDB/AOF)天然支持适用场景缓存、会话、实时数据事务性数据存储。
2026-02-04 23:37:27
783
原创 贪心算法 | part01
例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。少于两个元素的序列也是摆动序列。我们用最大的饼干开始匹配,优先用掉最大的饼干去满足一个胃口大的小孩,然后再用第二大的饼干去投喂胃口稍小的小孩,依次循环。情况1:平坡情况 1 - 2 - 2 - 2 - 1的情况,这里的摆动序列长度是3。
2026-02-04 20:43:11
653
原创 Gen_AI 第三课 大模型内部原理
但是,我们注意到第一步骤,是找会影响当前token的其他token,但是影响的具体方面是很多的,所以通常很有多组attention (multi-head attention),例如某一层就是找形容词,某一层是找量词的。将每一个token都考虑一下相关度,先乘上一个矩阵,得到key向量,随后在于query直接dot product,算出的结果越大,就证明关联性越强。所以,有多层attention层,那就会有多个结果向量,我们需要将这些向量组合起来,变成一个向量。结果:输入越长,运算量就越大。
2026-02-03 20:22:47
1291
原创 回溯算法 | part04
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。解题:【去重关键】每层递归新建一个HashSet,记录本层已用过的数字【剪枝条件】两种情况跳过:1. path非空且当前数字 < path最后一个 → 不满足递增2. 本层已用过相同数字 → 去重(同一层不能用重复数字开头)要点说明每层递归新建HashSet,只去重,不去重时跳过,确保子序列严格递增路径长度>1就收集,而非只在叶子节点收集保证每次往后找,避免重复使用同一元素。
2026-02-03 17:36:33
715
原创 回溯算法 | part03
例如:"0.1.2.201" 和 "192.168.1.1" 是 有效的 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效的 IP 地址。示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]大家之前做了 40.组合总和II 和 78.子集 ,本题就是这两道题目的结合,建议自己独立做一做,本题涉及的知识,之前都讲过,没有新内容。
2026-02-01 20:42:30
426
原创 回溯算法 | part02
比如[1,1,2],应该只允许使用第一个1,不能从第二个1开始递归,因为前者会包含后者的得到的结果,比如都是[1,2],会有重复组合,所以我们需要进行树层的去重。给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。本题中给的数组是本身有重复元素的,但是结果要求不能有重复的组合。树层的去重:首先是当前元素不是数组中第一个元素,并且当前元素与前一个元素相等,同时还需要保证,当前递归没有使用重复元素。
2026-01-30 19:17:21
1183
原创 Gen_AI 第二课 Context Engineering
输入过长,一个任务需要多次操作,会涉及到非常多的token,同时很多的token,会让AI Agent无法理解这些信息,在合适条件下,资料越多,结果越好,相反,更加多的资料则会让Agent的结果正确率下降。,长期记忆,对记忆进行RAG。:工具说明,不要将所有工具使用说明都放到Context,用上面类似的方法(RAG),将每一个工具说明看做是一篇文章,用模型去判断哪些有用,将相关的工具说明放到context中。对话的时候,可以记住用户的输入讯息,AI"学会",换一个对话,就会失去。二者概念相同,关注点不同。
2026-01-30 02:17:55
585
原创 回溯算法 | part01
示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]回溯算法是一个纯暴力搜索的算法,适用于组合,切割,子集,排列,棋盘问题,理解回溯算法,可以将其转化为树的结构进行理解,n叉树。找出所有相加之和为 n 的 k 个数的组合。示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]]说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
2026-01-29 00:06:48
551
原创 Day18
你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]给定的树为二叉搜索树。
2026-01-27 21:42:20
313
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅