自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(354)
  • 收藏
  • 关注

原创 关于LLM的问题

LLaMa用RMSNorm(Root Mean Square Layer Normalization)取代了Layer Norm,RMSNorm是Layer Norm的一种变体,和Layer Norm中减去均值、除以方差的归一化方式不同,RMSNorm是直接除以均方根。使用旋转位置编码替代绝对位置编码,详见https://spaces.ac.cn/archives/8265。其中Swish=x⋅sigmoid(βx),SwiGLU=Swish(Wx+b)⨂(Vx+c)2)SwiGLU激活函数。

2023-07-20 12:06:11 180

原创 GQA: Training Generalized Multi-Query Transformer Models fromMulti-Head Checkpoints

本文还介绍了分组查询注意力 (GQA),这是一种广义的多查询注意力,它使用中间数量的键值头 (大于一个,小于查询头数)。多查询注意力(MQA)可以减少这种开销,仅使用单个键值头极大地加快了decoder推理速度,但会降低模型的容量和性能,并目不想为了更快的推理而单独训练一个模型。于是本文提出了一种方案,可以将现有的Multi-head 多头注意力模型升级为多查询注意力模型MQA,仅使用原始预训练计算量的5%。将所有头的键(key)和值(value)投影矩阵进行平均池化,合并成单个头部的矩阵。

2023-07-20 09:56:24 1060

原创 Leetcode 746 使用最小花费爬楼梯

一旦你支付此费用,即可选择向上爬一个或者两个台阶。- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。- 支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。- 支付 1 ,向上爬一个台阶,到达楼梯顶部。你将从下标为 1 的台阶开始。你将从下标为 0 的台阶开始。

2022-08-22 19:23:59 368 1

原创 codewars Unique In Order

代码】codewars Unique In Order。

2022-08-10 01:29:32 238

原创 关于关系抽取的问题

TPLinker定义三种标注EH2ET,SH2OH,ST2OT。假设序列长为N,实体类数为T个,关系类别为R个。根据标注标签生成2R+1个结果矩阵。EH-to-ET,同一实体的头尾关系,是1个N×N矩阵。SH-to-OH,subject和object的头部token间的关系,是R个N×N矩阵。ST-to-OT,subject和object的尾部token间的关系,是R个N×N矩阵。......

2022-08-03 17:25:29 302 1

原创 NC97 字符串出现次数的TopK问题

123"出现了2次,记["123","2"],"231"与"32"各出现1次,但是"231"字典序在"32"前面,记["231","1"],最后返回[["123","2"],["231","1"]]"b"出现了2次,记["b","2"],"a"与"c"各出现1次,但是a字典序在c前面,记["a","1"],最后返回[["b","2"],["a","1"]]数据范围字符串数满足1000000≤n≤100000,每个字符串长度100≤n≤10,25000≤k≤2500。字符仅包含数字和字母。...

2022-07-29 01:03:50 292

原创 关于语义相似度匹配的问题

而有监督版的SimCSE则是需要三元组的数据,它实际上就是把困难样本补充到标准的SimCSE上,即负样本不只有batch内的所有其他样本,还有标注的困难样本,但同时正样本依然不能缺,所以需要“(原始句子,相似句子,不相似句子)”的三元组数据。至于CoSENT,它只用到了标注好的正负样本对,也不包含随机采样batch内的其他样本来构建负样本的过程,我们也可以将它理解为对比学习,但它是“样本对”的对比学习,而不是像SimCSE的“样本”对比学习,也就是说,它的“单位”是一对句子而不是一个句子。...

2022-07-28 21:10:21 516

原创 NC91 最长上升子序列(三)

给定数组arr,设长度为n,输出arr的最长上升子序列。(如果有多个答案,请输出其中按数值(注区别于按单个字符的ASCII码值)进行比较的字典序最小的那个)其最长递增子序列有3个,(1,2,8)、(1,2,6)、(1,2,4)其中第三个按数值进行比较的字典序最小,故答案为(1,2,4)数据范围10000000000≤n≤200000,0≤arri​≤1000000000。要求空间复杂度O(n),时间复杂度O(nlogn)......

2022-07-27 02:54:39 275

原创 关于优化器的问题

Adamw即Adam+weightdecay,效果与Adam+L2正则化相同,但是计算效率更高,因为L2正则化需要在loss中加入正则项,之后再算梯度,最后再反向传播,而AdamW直接将正则项的梯度加入反向传播的公式中,省去了手动在loss中加正则项这一步。...

2022-07-25 01:28:49 121

原创 关于调参技巧的问题

刚开始模型对数据的“分布”理解为零,或者是说“均匀分布”(当然这取决于你的初始化),在第一轮训练的时候,每个数据点对模型来说都是新的,模型会很快地进行数据分布修正,如果这时候学习率就很大,极有可能导致开始的时候就对该数据“过拟合”,后面要通过多轮训练才能拉回来,浪费时间。在训练模型的时候,通常会遇到这种情况我们平衡模型的训练速度和损失(loss)后选择了相对合适的学习率(learningrate),但是训练集的损失下降到一定的程度后就不在下降了。学习率衰减的基本思想是学习率随着训练的进行逐渐衰减。...

2022-07-21 01:46:10 359

原创 关于公式和代码的问题

在不使用L2正则化时,求导结果中W前系数为1,现在W前面系数为1-ηλ,因为η、λ都是正的,所以1-ηλ小于1,它的效果是减小W,这也就是权重衰减(weightdecay)的由来。yic,符号函数,如果样本i的真实类别等于c取1,否则取0。yi,样本i的label,正类为1,负类为0。pic,观测样本,属于类别c的预测概率。pi,样本i预测为正类的概率。1Concat策略。..............................

2022-07-20 17:34:34 298

原创 TENER: Adapting Transformer Encoder for Name Entity Recognition

改进点:1. 原始transformer使用的是绝对位置编码,基于正弦函数的位置嵌入是距离感知的,缺乏方向性。中间加入线性变换之后,没有相对位置信息。第一点改进是在计算attention score的时候,考虑了相对位置信息,而这个相对位置本身是可以编码到距离信息和方向信息的。2. 第二点改进就是把attention公式中的缩放系数给去掉了,使得产生的attention score会使分数更加锐利,而这种锐利的注意力是更适用于NER任务的,因为句子中少数字可以组成实体,大部分非实体,平滑处理反而会增加噪声。

2022-07-13 14:48:10 288

原创 Deep Biaffine Attention for Neural Dependency Parsing

https://arxiv.org/abs/1611.01734基于图的依存句法分析需要解决两个问题:1. 哪两个节点连依存弧;2. 弧的标签是什么。这是一个不定类别的多分类问题。若句子中有n个词,包含虚根ROOT在内一共d=n+1个词。假设我们使用以hfl/chinese-electra-180g-small-discriminator(hfl/chinese-electra-180g-small-discriminator · Hugging Face)预训练模型作为特征抽取器,输出的特征向量R,维度为

2022-07-12 23:58:33 551

原创 关于tokenizer的问题

将最常出现的连续字节对合并,直到词表达到预定的大小时停止。BPE的一个问题是,如果遇到了unicode,基本字符集可能会很大。一种处理方法是我们以一个字节为一种“字符”,不管实际字符集用了几个字节来表示一个字符。这样的话,基础字符集的大小就锁定在了256。它的原理非常接近BPE,不同之处在于它做合并时,并不是直接找最高频的组合,而是选择能够最大化提升语言模型概率的连续字节对加入词表。与BPE或者WordPiece不同,Unigram的算法思想是从一个巨大的词汇表出发,再逐渐删除其中的子词,直到词表大小满足预

2022-07-07 19:19:19 186

原创 LeetCode 384 打乱数组

给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是 等可能 的。实现 Solution class:Solution(int[] nums) 使用整数数组 nums 初始化对象int[] reset() 重设数组到它的初始状态并返回int[] shuffle() 返回数组随机打乱后的结果 示例 1:输入["Solution", "shuffle", "reset", "shuffle"][[[1, 2, 3]], [], [], []]输出[nul

2022-07-07 00:29:45 81

原创 LeetCode 16 最接近的三数之和

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。示例 1:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。示例 2:输入:nums = [0,0,0], target = 1输出:0 提示:3 ...

2022-07-06 23:15:36 130

原创 LeetCode 557 反转字符串中的单词 III

给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入:s = "Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"示例 2:输入: s = "God Ding"输出:"doG gniD" 提示:1 ...

2022-07-06 16:39:59 99

原创 LeetCode 185 部门工资前三高的所有员工

表: Employee+--------------+---------+| Column Name | Type |+--------------+---------+| id | int || name | varchar || salary | int || departmentId | int |+--------------+---------+Id是该表的主键列。departmentId是Depar

2022-07-06 01:22:53 89

原创 LeetCode 231 2的幂

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。示例 1:输入:n = 1输出:true解释:20 = 1示例 2:输入:n = 16输出:true解释:24 = 16示例 3:输入:n = 3输出:false示例 4:输入:n = 4输出:true示例 5:输入:n = 5输出:false 提示:-231 ...

2022-07-05 18:46:59 125

原创 LeetCode 39 组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1:输入:candidates = [2,3,6,7], target = 7输出:[

2022-07-05 17:26:46 53

原创 LeetCode 59 螺旋矩阵 II

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]] 提示:1 ......

2022-06-29 23:40:46 86

原创 LeetCode 222 完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例 1:输入:root = [1,2,3,4,5,6]输出:6示例 2:输入:root = []输出:0示例 3:输入:root = [1]输出:1 提示:树中节点的数目范围是[0, 5 * 104]0 ......

2022-06-29 22:41:09 67

原创 LeetCode 494 目标和

给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。示例 1:输入:nums = [1,1,1,1,1], target = 3输出:5解释:一共有 5 种方法让最终目标和为 3 。-1 +

2022-06-28 21:56:33 107

原创 LeetCode 442 数组中重复的数据

给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。示例 1:输入:nums = [4,3,2,7,8,2,3,1]输出:[2,3]示例 2:输入:nums = [1,1,2]输出:[1]示例 3:输入:nums = [1]输出:[] 提示:n == nums.length1 ...

2022-06-27 23:42:48 86

原创 LeetCode 61 旋转链表

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 ...

2022-06-27 23:24:41 187

原创 LeetCode 1245 树的直径 NC99 多叉树的直径

给你这棵「无向树」,请你测算并返回它的「直径」:这棵树上最长简单路径的 边数。我们用一个由所有「边」组成的数组 edges 来表示一棵无向树,其中 edges[i] = [u, v] 表示节点 u 和 v 之间的双向边。树上的节点都已经用 {0, 1, ..., edges.length} 中的数做了标记,每个节点上的标记都是独一无二的。示例 1:输入:edges = [[0,1],[0,2]]输出:2解释:这棵树上最长的路径是 1 - 0 - 2,边数为 2。示例 2:输入:edges = [[0,

2022-06-27 01:55:54 140

原创 LeetCode 310 最小高度树

树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。给你一棵包含 n 个节点的树,标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表(每一个边都是一对标签),其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 之间存在一条无向边。可选择树中任何一个节点作为根。当选择节点 x 作为根节点时,设结果树的高度为 h 。在所有可能的树中,具有最小高度的树(即,min(h))被称为 最小高度树 。请

2022-06-26 21:20:24 73

原创 LeetCode 1553 吃掉N个橘子的最少天数

厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子:吃掉一个橘子。如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。每天你只能从以上 3 种方案中选择一种方案。请你返回吃掉所有 n 个橘子的最少天数。示例 1:输入:n = 10输出:4解释:你总共有 10 个橘子。第 1 天:吃 1 个橘子,剩余橘子数 10 - 1 = 9。第 2 天:吃 6 个橘子,剩余橘子数 9 - 2*(9/3)

2022-06-26 19:16:30 318

原创 LeetCode 89 格雷编码

n 位格雷码序列 是一个由 2n 个整数组成的序列,其中:每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)第一个整数是 0一个整数在序列中出现 不超过一次每对 相邻 整数的二进制表示 恰好一位不同 ,且第一个 和 最后一个 整数的二进制表示 恰好一位不同给你一个整数 n ,返回任一有效的 n 位格雷码序列 。示例 1:输入:n = 2输出:[0,1,3,2]解释:[0,1,3,2] 的二进制表示是 [00,01,11,10] 。- 00 和 01 有一位不同-

2022-06-26 18:05:01 63

原创 LeetCode 470 用 Rand7()实现Rand10()

给定方法 rand7 可生成 [1,7] 范围内的均匀随机整数,试写一个方法 rand10 生成 [1,10] 范围内的均匀随机整数。你只能调用 rand7() 且不能调用其他方法。请不要使用系统的 Math.random() 方法。每个测试用例将有一个内部参数 n,即你实现的函数 rand10() 在测试时将被调用的次数。请注意,这不是传递给 rand10() 的参数。示例 1:输入: 1输出: [2]示例 2:输入: 2输出: [2,8]示例 3:输入: 3输出: [3,8,10] 提示:1 .

2022-06-26 17:09:39 54

原创 LeetCode 292 Nim游戏

你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头。你们轮流进行自己的回合, 你作为先手 。每一回合,轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。示例 1:输入:n = 4输出:false 解释:以下是可能的结果:1. 移除1颗石头。你的朋友移走了3块石头,包括最后一块。你的朋友赢了。2. 移除2个石子。你的朋友

2022-06-26 00:35:27 65

原创 LeetCode 678 有效的括号字符串

给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:任何左括号 ( 必须有相应的右括号 )。任何右括号 ) 必须有相应的左括号 ( 。左括号 ( 必须在对应的右括号之前 )。* 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。一个空字符串也被视为有效字符串。示例 1:输入: "()"输出: True示例 2:输入: "(*)"输出: True示例 3:输入: "(*))"输出: True注意:字符串大小将在 [1

2022-06-25 21:51:49 107

原创 LeetCode 118 杨辉三角

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1输出: [[1]] 提示:1 ...

2022-06-23 02:12:48 90

转载 LeetCode 237 删除链表中的节点

请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9示例 2:输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释:指定链表中值为 1 的第三个节点

2022-06-23 01:54:17 57

原创 leetcode 74 搜索二维矩阵

给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。解题思路:用动态规划。定义一个用来存储之前的累加值的数组dp。从头开始遍历数组,遍历到数组元素arr[i]时,连续的最大的和可能为max(dp[i-1])+......

2022-06-23 01:14:31 74

原创 LeetCode 134 加油站

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。示例 1:输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]输出: 3解释:从 3 号加油站(索引为

2022-06-23 01:02:41 61

原创 LeetCode 96 不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。示例 1:输入:n = 3输出:5示例 2:输入:n = 1输出:1 提示:1

2022-06-23 00:03:54 112

原创 LeetCode 139 单词拆分

给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。示例 2:输入: s = "applepenapple", wordDict = ["apple",

2022-06-22 23:36:09 152

原创 LeetCode 26 删除有序数组中的重复项

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。判题标准:系统会用下面的代码来

2022-06-22 23:35:32 61

原创 LeetCode 1114 按序打印

给你一个类:public class Foo { public void first() { print("first"); } public void second() { print("second"); } public void third() { print("third"); }}三个不同的线程 A、B、C 将会共用一个 Foo 实例。线程 A 将会调用 first() 方法线程 B 将会调用 second() 方法线程 C 将会调用 third() 方法请设计修改程序,以

2022-06-22 22:53:00 134

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除