- 博客(43)
- 收藏
- 关注
原创 【无标题】
2. 陈丹琦团队提出的一种改进GPT-3的模型,其可以扩展到任意的预训练模型上,并可以在小样本情景下更好的进行微调。4. 这是一篇跨任务泛化的工作,采用检索增强的方法实现了零资源的跨任务泛化能力增强。作者发现,使用对比句子目标的预训练可以显著提高语言模型在连贯对话生成任务上的性能,尤其是在长对话场景中。3. 本文主要对ICL和PEFT方法,在少样本场景下进行了严谨的实验对比,发现PEFT方法在取得很高精度的情况下,同时很大降低了计算消耗,可以作为替代ICL针对fine-tuning范式缺陷的一个解决方案。
2023-04-19 12:02:31
255
原创 关于冻结网络深层和浅层参数的方法
反正,将参数的require_grad设置为False。想要固定后续变量,训练前序变量,用detach。主要参考了这篇博客。
2023-04-03 20:07:26
191
原创 prefix-tuning: optimizing continuous prompt for generation
有一类方法是使用了adapter tuning,freeze大多数的ptm的参数,嵌入额外的task-specific的参数,只调整部分参数。题外话:Roberta相对于bert的区别。训练方式和数据集做了一定的改动。保持LLM不变,调整一小部分参数continuous task-specific vector,即prefix。现有的方法fine-tune,参数量太大,GPT2 774M,GPT3 175B。更大的batch size,更多的训练数据,更长的训练时间。在更长的句子上训练。
2023-04-03 18:16:21
336
原创 Decoupling Knowledge from Memorization : Retrieval-augmented Prompt Learning-NIPS2022
虽然我不觉得这个会有什么很大的提升,[CLS]不也是句子中的各个token的表示的加权求和吗?(感觉和NMT caideng的文章好像啊)收到以上思想的启发,本文提出利用检索和关联的方法,提升prompt learning的泛化性,在generalization和memorization之间寻找一个平衡。inference的时候,通过插入非参数化的k近邻的信息,提升分类的性能。本文的实验是在zero-shot和few-shot的场景下进行的,实验结果证明了所提出的检索机制对于稀缺样本具有更好的泛化性能。
2023-03-27 18:53:54
329
原创 深度学习模型的交叉验证
交叉验证是为了避免随机性给模型带来的对比不公平的情况,所以在各种训练数据和测试数据的安排下对不同的模型结构进行多次训练和选择,求均值和方差之后进行对比。深度学习模型的交叉验证方法,是为了测试两种不同的模型结构的优势,而不是测试一种模型到什么时候收敛,初学的时候弄混了。一个attention的pytorch的实现的记录和参考吧。留一:这种实在数据非常非常少的时候用的。
2023-02-23 20:49:07
412
原创 In-context Learning
advantages: 提供了与LLM进行交流的可解释的接口,通过template和demonstration将人类知识和LLM更好的结合;更像人类的预测思维,会根据类比;warmup是介于pretraining和 inference之间的,可选择的,一般是调整llm或者增加一些参数,不同于fine-tune,不会对llm针对具体任务进行训练。严格说ICL是prompt learning的子类,其中的demonstration和是prompt的一种,只不过demonstration是很多的xy对构成的。
2023-02-16 16:11:43
967
原创 课程内容介绍和Python(一)
课程介绍:1.Python程序设计语言2.深度学习——神经网络基础3.具有实际背景问题的提出以及解决Python1.面向对象编程,语法简单,支持动态输入,解释性语言(输入完成后就能运行)。适合于应用程序的动态开发。 1)面向对象 2)可扩展,可移植,可嵌入(与其他语言相互嵌入) 3)丰富的库(开源性),函数集合,数学模型。(C++ STL)具有普遍性
2018-01-17 17:19:33
2088
原创 冒泡排序
从第一个数开始,通过比较(将大数后移)将其沉底,也就是说没一次都将除了上一次沉底的那个数以外的所有的数中的最大数放到了这些数的最后。有n个数,进行n-1次冒泡排序,第i次进行n-1-i次比较交换。贴代码:#include #includeusing namespace std;void BinSort(int a[],int n){ for(int i=0;i<n-
2017-06-05 21:44:51
242
原创 直接插入排序
直接插入排序:将待排序序列分为有序区和无序区,不断的将无序区的元素插入有序区。插入的时候要依次比较有序区的元素找到合适的插入位置。可以顺序比较,也可以逆序比较。这里采用逆序比较方法,即把r[i]和r[i-1],r[i-2]......r[1]比较,在r[0]处设置哨兵。#include using namespace std;void InsertSort(int a[],int n)
2017-05-31 21:25:35
243
原创 折半查找
折半查找也成二分查找,是一种高效率的算法,算法思路很简单不多说,时间复杂度为O(log2 n)。#include using namespace std;int Search_Bin(int a[],int n,int key){ int low=0,high=n-1; while(low<=high) { int mid=(low+hig
2017-05-24 22:44:27
214
原创 图论之拓扑排序
DAG图:有向无环图,是描述一项工程或系统的进行过程的有效工具。一般的工程可以分为若干个活动,而这些活动之间存在着某种约束条件,也就是说某一项工程的进行必须在另一项工程的完成的前提之下完成。比如说:只有学完高数和C语言才能学数据结构。(不然学不会)2333AOV网:用顶点表示活动,用弧表示活动中的优先关系的有向图,也称为顶点表示活动的网。(这里书中讲到几个概念:前驱,后继,直接前驱
2017-05-15 22:32:59
663
原创 字符串匹配的BF算法
已知两个字符串,一个主串S,一个子串T,求子串在主串中是否出现。如果出现,输出子串在主串中的位置。利用暴力求解算法,每次比较主串和子串中的一个字符是否相等,如果相等,两个串的下标均后移。如果不相等,子串下标回到零,主串下标回到上一次开始比较的下一个位置。也就是说,每匹配失败一次,子串相对主串只移动一个字符的位置。在最好的情况下,该算法的时间复杂度为O(m+n),在最坏的情况下,时间复杂度为O(
2017-04-11 15:02:23
947
原创 删除一个字符串中的空格
思路①:利用循环,碰到空格即删除(通过覆盖来删除),但是要注意连续空格的情况,还要注意每次删除一个字符后字符串的长度都要减一。#include #include#includeusing namespace std;void DeleteSpace(char *s){ int len=strlen(s); for(int i=0;i<len;i++) {
2017-04-11 14:44:52
2384
原创 链表的逆置
构建一个链表以后,从第一个点开始,逐渐改变他和后面的点的指针。并且要加一个辅助点来记住改变指针的点后的点。这里要注意的是记住将第一个点的next变成空,将head的next变成最后一个顶点。#include #include#include#includeusing namespace std;typedef struct LNode{ int data; st
2017-03-31 20:29:59
281
原创 括号匹配
给你一堆括号,判断他是否是匹配好了的。例如:{([] [])},属于匹配成功。而()[)}属于匹配失败。下面我们开始考虑匹配失败的情况1)括号种类本身就不匹配,比如(]。2)左括号的个数小于右括号 的个数。{[()]]}3)左括号的个数多于右括号的个数。{[(()]}
2017-03-28 15:27:44
241
原创 最少的硬币(线性规划)
现在我们有面值为1,3,5元的硬币若干枚,想要用最少的硬币个数凑够n元。这是一个线性规划的问题。 既然是线性规划,就要定义状态,并推算出状态转移方程。定义状态f[i]为凑够i元需要的最少的硬币数。这里用顺推,从i=0开始,不需要硬币来凑,f[0]=0。 i=1,f[1]=f[1-1]+1=f[0]+1=1;
2017-03-27 22:48:50
494
原创 链表的构建,插入,删除
大体上就是构建一个具有n个点的链表,利用前插法,就是不断地把结点往头结点的后面插入。既然是如此,那么越往后插入的结点在链表中就越靠前。所以在输入链表结点的data值的时候应该是逆序输入的。包括链表的插入,要注意的是灵活改变指针指向。删除要注意的是不仅要改变指针的指向,还要将要删除的那块空间释放掉。注意malloc和free配对使用。贴代码贴代码:#include #
2017-03-24 22:04:22
398
原创 指针利用(C语言)
在刷二级题库的时候看到这道题目,指针学的着实不够好,那就写一下写一下。题目描述大体上是这样的:有这样一个字符串,由字母和*组成,删除其中所有的*,但是末尾的*不能删除。定义了一个指针已经指向了最后一个字母。例如: ***AB***C*D***DCF******输出结果是:ABCDDCF******下面贴代码:
2017-03-23 20:03:17
297
原创 最短路 Dijkstra算法
这是一类求单源最短路的算法,也就是求某一个顶点到其他所有顶点的最短路。它是按照最短路径递增的顺序来计算的。 先说一下大体思路:将图中的顶点分为两个集合,S,V-S。S存储已经求出最短路径的顶点,V-S存储未求出最短路的顶点。然后算法就是不断额的求出V-S中顶点的最短路,然后把它加入S中,直到所有顶点的最短路都求出,也就是V-S是空集。 选择邻接矩阵的数据结构来存储图。 下面先交
2017-03-09 21:53:13
247
原创 最短路Floyd算法
先说一下我觉的比较简单的一个吧,至少看起来是很简单也比较容易理解,就是Floyd算法。该算法是用来求多源最短路的算法,也就是说,求图中任意两个点之间的最短路。 他的主要思想就是初始状态是所要求最短路的起点和中点,然后不停地将其他点往这两个顶点之间加。 首先要用一中数据结构来存储图吧,一般来讲还是用邻接矩阵。m[i][j]表示由i到j的最短路。当i==j的时候赋为0,如果
2017-03-08 22:18:32
194
原创 十六进制转十进制
问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535还别说,这编程真是一天不练就不行。编个进制转化都会WA好几遍,还是怪自己能力不够。下面就顺便在程序中注释一下当时在哪里出错,不管是思路上还是代码技巧上#in
2017-03-07 14:48:04
332
原创 KMP
论这曾经那么烧心的KMP。。。其实我看它的基本思想也看了挺久时间,其实,也就那么回事,只是说可能自己的思维和简单的总结性语言跟代码有点不一样。两个字符串,一个主串a,一个模式串b。将模式串与主串相匹配,如果有匹配的部分,就返回匹配成功的位置。传统的暴力方法是:从a[0]开始匹配,匹配不成功,再依次从a[1],a[2]...a[i]开始匹配,这样算法的时间复杂度是O(nm
2017-03-03 19:11:23
216
原创 并查集
并查集在我看来算是比较简单的了,也就是说,给你 n 个点,这些点分别属于不同的集合,需要求这些点总共在几个集合中。可以利用树 的数据结构,在同一个集合的点有同一个父亲,也就是有同一个根节点。初始化每一个点都在不同的集合中,每次查找两个点是否在同一个集合中,也就是是否具有同一个根节点,然后按照要求将两个点合并到同一个集合中。 建立一个一维数组,下标表示点的编号,数组值表示其根节点的编号。
2017-03-01 19:21:11
172
原创 STL
STL=STL = Standard Template Library,标准模板库,惠普实验室开发的一系列软件的统称。它是容器、算法和一些其他组件的集合。 STL分为容器,迭代器,空间配置器,配接器,算法,仿函数六个部分。序列式容器 向量(vector)连续存储的元素,可变长数组 头文件:#include 创建vector对象
2017-02-28 20:27:21
174
原创 最小生成树
算法一:Prim算法(可称为加点法) 点集记为v。 定义一个集合U,来存储已经在生成树中的点。v-u是未在生成树中的点。定义一个closedge数组,分为两个区域,一个存储最小边在u中的顶点,另一个存储最小边的权值。将初始顶点加入U中,初始化closedge数组。选择最小边closedge[k],将K加入集合U,输出此边。更新closedge[]的值,选择集合V-U中点到k和u之间较小的哪
2017-02-28 18:12:46
394
原创 宽度优先搜索bfs
好吧,今天看了bfs,其实发现基本思想也是不过如此。只是,应用还是不太会。bfs是宽度优先,从根节点开始,依次访问它的所有邻接点,然后再按顺序访问邻接点的邻接点,先被访问的点的邻接点先被访问。由于要按这样的顺序访问,所以需要用到队列。求最短路径和迷宫类型的题目都可以利用Bfs.下面是基本步骤:1)从图中的某个顶点v出发,访问v。2)依次访问V的各个没有被
2017-02-27 21:43:40
349
原创 深度优先搜索(dfs)
深度优先搜索的一般步骤:1)从顶点V出发,访问v。2)找出刚才访问过的顶点的第一个未被访问的邻接点,访问该顶点。以该顶点为新顶点,重复此步骤,直到刚访问的顶点没有没有未被访问过的邻接点为止。3)返回前一个访问过的仍有未被访问过的邻接点的顶点,找出该顶点的下一个未被访问过的邻接点,访问该顶点。4)重复2)3)步骤,直到所有点都被访问过。搜索结束。(图的存储
2017-02-26 22:58:54
785
原创 时间复杂度
1.时间频度:一个算法中语句的执行次数称为时间频度或者语句频度,用T(n)表示。其中n是问题规模。2.时间复杂度:若存在一个辅助函数f(n)使得当n趋近于无穷大的时候T(n)/f(n)趋向于一个不为0的常数,那么就是说T(n)和f(n)是同数量级函数,可以表示为T(n)=O(f(n)),O(f(n))称为渐进时间复杂度,简称时间复杂度。 时间复杂度相同,但是时间频度不一定相
2017-02-24 20:41:00
1763
原创 大背包的解决方案
Problem DescriptionGiven a set of n items, each with a weight w[i] and a value v[i], determine a way to choose the items into a knapsack so that the total weight is less than or equal to a given l
2017-02-09 22:17:14
320
原创 油田问题(dfs)
一个很经典的油田问题:输入一个m行n列的字符矩阵,输出统计字符@组成多少个八连块。如果两个@相邻(横竖对角线方向),那么他们属于同一个八连快。例如下图中有4个八连块。 *****@ @*****
2017-02-09 21:26:58
1071
原创 二分查找
查找是排序的重要意义之一。在有序列表中查找一个数往往采用二分法。二分法利用了一种逐步缩小范围的思想。int bsearch(int *a,int x,int y,int v){ int m; while(x<y) { m=x+(y-x)/2; if(a[m]==v)return m; else if(a[m]>v)y=m
2017-02-08 21:46:15
406
原创 快速排序
快速排序是通用的内部排序算法。相对归并排序来说速度更快并且不需要辅助空间(那个b数组)。快速排序的版本有很多种。用分治的思想来看快速排序:1.划分问题:把数组的元素重排后分成左右两部分,左边的任意元素都小于等于右边的任意元素。2.递归求解:把左右两部分分别进行排序。3.合并问题:不用合并,此时数组已经完全有序。代码实现:void sort(int *a,
2017-02-08 21:10:11
226
原创 归并排序
归并排序采用分治的思想:1.划分问题:将序列分成元素个数尽量相等的两个序列。2.递归求解:把两半元素分别排序。3.合并问题:把两个有序表合并成一个。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。void MemeryArr
2017-02-08 20:40:29
230
原创 简单排序与检索
给出n个数,从这n个数查找一个数x并输出这个数的位置。#include#includeusing namespace std;const int maxn=10000;int main(){ int n,x,a[maxn];//n个数中查找x while(scanf("%d%d",&n,&x)==2&&n) { for(int i=0;i<n;i
2017-02-08 20:35:05
224
原创 区间合并
Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the
2017-02-04 16:02:26
311
原创 LUCAS
Lucas定理主要应用于求C(n,m)%p p是素数(从n取m组合,模上P)。 公式:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p).
2017-01-25 16:19:03
390
原创 数论之青蛙约会
Problem Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永
2017-01-24 21:46:51
316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人