- 博客(182)
- 收藏
- 关注
原创 大模型 OLMoE 消融实验
OLMoE 是一个基于稀疏MoE 架构开源大语言模型。OLMoE-1B-7B 拥有7B 总参数,每次处理一个输入token 仅激活大约1B 参数,在5T token 大规模语料上进行预训练,后面进一步微调得到 OLMoE-1B-7B-INSTRUCT。OLMoE-1B-7B 在性能上超过了所有具有相似激活参数数量的大模型,甚至优于一些更大规模参数量的大模型,比如Llama2-13B-Chat 和 DeepSeekMoE-16B。MoE 架构可以在较小的计算成本下获得更优的性能表现。
2025-01-13 15:01:31
95
原创 细粒度生物医学多模态对比学习
论文[1] 构建一个全新的生物医学多模态数据集 PMC-15M,其规模比现有的生物医学多模态数据集 MIMIC-CXR 大两个数量级,并涵盖了广泛类型的生物医学图像。PMC-15M包含来自440万篇科学文章中的1500万对生物医学图像-文本对。基于PMC-15M,论文[1] 预训练了BiomedCLIP,一个多模态基础模型,并针对生物医学视觉-语言处理进行了领域微调。
2024-12-20 17:24:44
196
原创 复合图标题拆分
在学术论文、研究报告、教科书等领域,一张复合图通常由多个子图组成,每个子图都有其特定的内容和含义。复合图的标题(caption)通常包含各个子图的描述信息,因此拆分复合图标题有助于更好地理解和分析每个子图的内容。
2024-11-20 09:42:43
80
原创 多模态大模型 LLaVA
人类通过诸如视觉和语言等多种渠道与世界进行互动的方式,每种渠道在表达和交流某些概念方面都有其独特的优势,这有助于更好地理解世界。人工智能的一个核心目标是开发一种通用助手,这种助手可以有效地跟随多模态(视觉和语言)指令,符合人类意图以完成各种真实环境中的任务。为达到这一目的,研究社区发展能够处理多模态指令的大规模语言模型。特别是在利用机器生成的指令跟随数据对大规模语言模型进行微调以改善其在新任务上的零样本能力方面,尽管这种方法在多模态领域探索较少,但已经被证明是有益的。
2024-09-23 18:02:55
362
原创 Llama 3.1 大模型指令微调提升中文能力
Llama 3.1 是一个通用的大型语言模型,尽管它在多种语言上进行了训练,但在某些特定语言(如中文)上的表现可能不如专门针对该语言进行优化的模型。通过指令微调,可以提高模型在处理中文文本时的理解和生成能力。对于某些领域(如医疗、法律、科技等),可能存在大量的中文专业术语和特定表达。通过指令精调,可以让模型更好地理解和生成这些领域的中文内容。通用大模型Llama 3.1 在中文评测数据集C-Eval、CMMLU 上表现不佳,通过精调可以针对特定任务进行优化,提升模型在这些任务上的性能。
2024-09-12 11:47:38
1006
原创 Pytorch 高效快速加载大规模数据集
HDF5(Hierarchical Data Format version 5)是一种用于存储和管理大量数据的文件格式,支持高效的多维数组存储,支持多层级数据模型,能够存储复杂的科学数据。HDF5 通常以groups 和 datasets 的形式组织。")")0")
2024-08-06 15:52:22
472
1
原创 从头训练一个数学编程大模型
前段时间基于OLMO 框架利用8张卡从头训练一个1B 大模型,以本文做一个简单的工作总结。SFT 微调采用LLaMA-Factory,评测使用OpenCompass。大模型MathCode 面向的任务:能写代码,能做简单的数学题。
2024-07-16 12:23:01
252
原创 【大模型】预训练语料质量筛选
在大型语言模型(LLM)的开发过程中,预训练数据的规模和质量对塑造LLM的能力起着至关重要的作用。语言模型的数据集迅速扩大,其中最重要的是Common Crawl (CC) 数据集,包含近1T 个词。这样规模的数据集足以训练最大的模型。然而,未经筛选或轻度筛选的CC 数据集质量往往比经过精心构建的数据集要低。
2024-07-01 17:47:41
480
原创 大语言模型(一)OLMo
OLMo 是由AI2 发布的大语言模型以及构建框架,与大多数之前的尝试只发布模型权重和推理代码不同,OLMo 开源了整个框架,包括训练数据、训练代码以及模型评估代码。OLMo框架包括构建和研究语言模型所需的工具和资源。对于训练和建模,它包括完整的模型权重、训练代码、训练日志、消融实验、以Weights & Biases日志形式的训练指标,以及推理代码。这次发布包括我们的语言模型在7B规模上的四个变体,对应不同的架构、优化器和训练硬件,以及一个1B规模的模型,所有模型都至少训练了2T token。
2024-05-30 19:28:23
540
原创 【全同态加密神经网络】(二) HEAR
论文[1] 提出了一种支持全同态加密的卷积神经网络架构,该架构为低深度电路和低阶激活函数专门设计。基于该框架,论文提出了HEAR(Homomorphically Encrypted Action Recognition)模型,具备可扩展且低延迟的特点,可以作为云外包任务进行安全的CNN 模型推理,并且不会牺牲推理的准确性。此外,论文还提出了同态卷积操作的数学公式,并提出了一种有效的评估策略,以在单指令多数据(SIMD)的方式下利用打包密文的并行计算。我们使用密文打包技术,在整个评估过程中将层的多个节点表示为
2024-04-09 15:42:25
351
原创 【全同态加密神经网络】(一) LoLa
LoLa在处理CIFAR-10 数据集时,用到了3层卷积,具体模型结构请参看原论文[1]。以下关于的LoLa源码分析参考HEAR,与原论文[1] 中的模型结构有所不同。return out。
2024-03-27 15:56:58
415
原创 【后量子密码】CRYSTALS-KYBER 算法(二):密钥封装 KEM(附源码分析)
Kyber 算法是一种满足 IND-CCA2 安全的密钥封装机制(key-encapsulation mechanism,KEM),其安全性依赖于MLWE 问题的困难性。Kyber 算法构建采用了两阶段的方法:首先引入了一种IND-CPA 安全的公钥加密方案,用于加密长度为32字节的消息,称之为;然后使用改进的 Fujisaki-Okamoto(FO)变换来构建满足 IND-CCA2 安全KEM,称之为。
2023-09-06 12:58:39
3883
原创 【后量子密码】CRYSTALS-KYBER 算法(一):MLWE 问题与NTT(附源码分析)
大多数基于数论的密码学,如Diffie-Hellman协议和RSA加密系统,依赖于大整数因子分解或特定群的离散对数等困难问题。然而,Shor 在1997年给出了对所有这些问题的高效量子算法,这将使得基于数论的密码系统在未来量子计算机时代变得不安全。相比之下,目前对于格密码背后的困难问题,尚未有任何有效的量子攻击算法。Kyber是格密码的一种,其设计是Ring-LWE LPR加密方案的模格(module lattice)变种,并结合了位丢弃(bit-dropping)技术。
2023-09-04 17:50:26
2788
原创 SHA-3 哈希算法(附源码分析)
SHA-3竞赛是由美国国家标准技术研究所(NIST)于2007年启动的一项密码哈希函数竞赛。SHA代表“安全哈希算法”,哈希函数是一种将任意长度的数据转换为固定长度哈希值的算法,常用于数字签名、消息验证等领域。在启动SHA-3竞赛之前,SHA-2是最广泛使用的哈希函数标准。然而,由于一些安全性问题的发现,NIST决定启动SHA-3竞赛,以找到一种新的安全哈希算法来替代SHA-2。SHA-3竞赛的目标是选择一种新的密码哈希函数标准,该标准具有更好的安全性、更高的效率和更广泛的适用性。
2023-08-04 14:42:27
2007
原创 SHA-2 哈希算法(附源码分析)
SHA-2是一种密码学安全哈希函数算法族,包括了SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256等多个变种。SHA-2算法于2001年设计开发,是SHA-1算法的后继者。与前文介绍SM3算法 相类似,SHA-2算法采用了Merkle-Damgård 迭代哈希函数结构,它将消息分成若干个512位(64字节)的数据块,对每个数据块进行一系列的计算,并更新中间状态,最终得到指定长度的哈希值。SHA-2算法的内部运算包括位运算、逻辑运算、模运算、异或运算
2023-08-01 11:46:02
1649
原创 【国密】祖冲之序列密码算法ZUC(附源码分析)
序列密码(Stream cipher)是一种常用的加密算法,也被称为流密码或序列加密算法。与分组密码不同,序列密码以连续的文本流(比如比特流或字节流)为输入,同时以密钥和伪随机数发生器为基础,按照一定的算法对输入文本流进行加密操作,生成加密后的输出文本流。目前,比较常用的序列密码算法有RC4、Salsa20、ChaCha20等。与分组密码相比,序列密码的加密过程更为简单快速,因为它不需要对明文进行分组,而是对连续的文本流进行处理。这也意味着序列密码可以支持流加密模式,可以用于对实时数据流进行加密,比如对网络
2023-07-18 16:36:18
2155
原创 散列消息认证码HMAC(附源码实现)
HMAC(Hash-based Message Authentication Code,扩展为keyed-Hash Message Authentication Code)是一种基于散列函数的消息认证码(MAC)算法,同时结合一个加密密钥,用于确保消息的完整性和身份验证,以及防止消息被篡改或伪造。HMAC算法的原理是将消息与一个密钥进行结合,并使用散列函数(如SHA-256、MD5、SM3等)对结合后的结果进行计算。这个计算结果就是HMAC的输出,也就是MAC值。接收方可以使用相同的密钥和散列函数对传输
2023-07-12 13:46:22
694
原创 【国密】SM3密码杂凑算法(附源码分析)
SM3 算法的设计目标是满足密码学的强度要求,具有高效性、安全性和灵活性。SM3 算法的输入为任意长度的消息,输出为一个 256 位的杂凑值。消息填充,将消息进行填充,使其长度满足 512 位的倍数。消息分组,将填充后的消息分按512 比特进行分组。压缩函数,并对每个数据块进行压缩计算,得到中间状态值。消息扩展:根据中间状态值进行消息扩展,得到下一个数据块的输入。输出变换,将最后一个数据块的中间状态值进行处理,得到 256 比特的杂凑值。
2023-07-11 14:51:05
1034
原创 【数据压缩】LZ77算法原理及实现
LZ77算法是采用字典做数据压缩的算法,由以色列的两位大神Jacob Ziv与Abraham Lempel在1977年发表的论文《A Universal Algorithm for Sequential Data Compression》中提出。基于统计的数据压缩编码,比如Huffman编码,需要得到先验知识——信源的字符频率,然后进行压缩。但是在大多数情况下,这种先验知识是很难预先获得。因此,设计一种更为通用的数据压缩编码显得尤为重要。LZ77数据压缩算法应运而生,其核心思想:利用数据的来进行数据压缩。
2023-06-28 16:01:52
704
原创 【图论】深入理解Dijsktra算法
Dijsktra算法是大牛Dijsktra于1956年提出,用来解决有向图单源最短路径问题;但是不能解决负权的有向图,若要解决负权图则需要用到Bellman-Ford算法。Dijsktra算法思想:在DFS遍历图的过程中,每一次取出离源点的最近距离的点,将该点标记为已访问,松弛与该点相邻的结点。有向图记为Gnm,其中,n为顶点数,m为边数;且eab表示从结点a到结点b的边。di记录源点到结点i的距离,U为未访问的结点集合,V为已访问的结点集合。
2023-06-28 14:39:38
646
原创 Java中的逆变与协变
逆变与协变用来描述类型转换(type transformation)后的继承关系,其定义:如果AAABBB表示类型,f⋅f(\cdot)f⋅表示类型转换,≤\leq≤表示继承关系(比如,A≤BA \leq BA≤B表示AAA是由BBB派生出来的子类);f⋅f(\cdot)f⋅是逆变(contravariant)的,当A≤BA \leq BA≤B时有fB≤fAfB≤fA成立;
2023-06-12 17:05:31
646
原创 【后量子密码】SPHINCS+ 算法(一):FORS与超树(附源码分析)
OTS(One-Time Signature)是一种只能使用一次的签名方案。在OTS中,签名密钥只能用于生成一次签名,一旦签名被验证,密钥就不能再用于生成其他签名。Lamport OTS就是一种典型的OTS方案。FTS(Few-Time Signature)是一种可以使用有限次数的签名方案。在FTS中,签名密钥可以用于生成多次签名,但是每次签名都会暴露一些密钥信息,降低密钥的安全性。因此,FTS方案适用于需要多次签名的场景,但需要权衡签名次数和密钥安全性。
2023-06-05 16:26:57
2863
原创 【后量子密码】SPHINCS+ 算法(二):签名与验签(附源码分析)
本节介绍SPHINCS+ 算法的密钥生成、签名与验签。nnn:安全参数;www:Winternitz参数,WOTS+签名分解的基底;hhh:超树的高度;ddd:超树中子树的层数;kkk:FORS 树的数量;ttt:FORS 树的叶子节点数。
2023-06-05 11:05:27
3351
1
原创 【国密】SM2 椭圆曲线公钥密码算法(附源码分析)
Koblitz与Miller分别于1985年各自独立地将椭圆曲线应用于公钥密码系统。本文要介绍的SM2算法即为一种椭圆曲线密码算法(elliptic curve cryptograph,ECC)。ECC安全性依赖于椭圆曲线离散对数问题(elliptic curve discrete logarithm problem,ECDLP) 的困难性。在多倍点运算中,QkP已知多倍点Q与基点P,求解倍数k的问题被称为ECDLP。目前只存在指数级计算复杂度的ECDLP求解方法;
2023-05-12 18:14:12
1584
原创 【国密】SM9算法R-ate对计算(二):扭曲线Frobenius 自同态映射
BN 曲线存在同构映射ΦM−1将G2上的点映射到Fp2上的 6 次乘扭曲线E′y2x3βb,其中β∈Fp2,并且在Fp2上既不是二次元也不是三次元,选择β使得r∣#E′Fp2。扭曲线E′Fp2到常曲线EFp12的同构映射定义为ΦME′Fp2→EFp12xy↦β−1/3xβ−1/2ySM9算法定义扭曲线参数β−2。
2023-04-26 16:18:27
786
原创 【国密】SM9算法R-ate对计算(三):最终幂
在上文中计算R-ate对的Miller loop 算法中第十四行中为计算最终幂(final exponentiation),指数eerp12−1p6−1⋅p21⋅rp4−p21其中,p6−1与p21均可以通过Frobenius 自同构来加速计算(具体不表,详见比如,fp6−1fp6−1⋅f−1fp21fp2⋅f。因此,前两个部分的计算量较低,可视作简单部分。
2023-04-25 17:43:35
447
原创 【国密】SM9算法R-ate对计算(一):线函数
Barreto 和 Naehrig 提出了一种构造素域 Fp\mathbb{F}_pFp 上适合对的常曲线的方法,通过此方法构造的曲线称 为 BN 曲线。BN 曲线方程为E:y2=x3+bE: y^2 = x^3+bE:y2=x3+b其中b≠0b \ne 0b=0,嵌入次数 k=12k=12k=12,曲线阶rrr也是素数。BN基域特征 ppp,曲线阶 rrr,Frobenius 映射的迹 trtrtr 可通过参数 ttt 来确定:p(t)=36t4+36t3+24t2+6t+1r(t)=36t4+3
2023-04-07 15:21:05
602
原创 【国密】SM9算法 Frobenius自同构加速十二次扩域方幂计算(附源码分析)
若R\mathbb{R}R是个特征为素数 ppp 的交换环,定义 R\mathbb{R}R 上的 Frobenius 自同态为f:R→Rf: \mathbb{R} \rightarrow \mathbb{R} f:R→R对于 a∈Ra \in \mathbb{R}a∈R,定义f(a)=apf(a)=a^pf(a)=ap。从这个定义容易证明:对于∀a,b∈R\forall a,b \in \mathbb{R}∀a,b∈R,满足(a+b)p=ap+bp(a+b)^p = a^p + b^p(a+b)p=a
2023-03-30 18:25:30
654
原创 Barrett模乘与蒙哥马利模乘算法(附源码实现)
公钥密码学(Public-Key Cryptography, PKC)由Diffie与Hellman于1970年代提出,在现代信息社会中得到了广泛应用。此后基于各种数学困难问题,越来越多的公钥密码算法被设计出来,比如RSA、ElGamal、椭圆曲线ECC算法等。在RSA算法中,模幂(modular exponentiation)是最核心的计算,而模乘(modular multiplication)算法则是模幂计算的基础。在ECC算法中,模乘计算也是必不可少的计算操作之一。
2023-03-09 16:58:01
2234
原创 椭圆曲线标量乘法快速算法(附源码实现)
对于标量乘法的快速算法,最重要的是标量k的分解表示。由于点算法求逆几乎是一个零计算量问题,因此在二进制基础上变化得到 NAF 表示,可以减轻该表示的汉明总量,达到加速计算的目的。如果k是奇数,那么余数r被设计成取+1或-1,保证了(k-r)/2一定是偶数,下一位NAF二进制表示值为0。这样保证了NAF(k)符号二进制表示的非零数密度为1/3,减少了点加法运算量。,(k-r)/2作为下一次迭代的输入,保证了接下来的w-1个表示值为0。基于此,wNAF算法被提出来,用宽度为w的窗口预存多倍点结果2P 至。
2023-02-07 16:47:53
1778
1
原创 【国密】基于SM2的协同签名与协同解密方案
两方协同签名指客户端与服务端协同完成签名、验签操作,具体实现方案参考了信工所专利[3]。在业务应用中,两方或多方的协同签名一般采用门限签名方案可以用来构造。门限密码算法在多方协作的相关场景中应用十分广泛,可以实现数据联合授权、认证、密钥安全恢复、密钥安全交换等需求,在诸多分布式多方计算协议中均可见其身影。在上述两方协同签名方案中,最巧妙的地方在于签名值s分量的构造,通过一些列数学变换,得以恢复。以下从两方协同签名方案介绍入手,介绍门限密码在协同签名中的应用。解决上述问题的关键在于门限密码算法的巧妙构造。
2023-02-07 14:49:00
7183
1
原创 RSA加密算法
RSA加密算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,算法名字取自三位的姓氏首字母;其安全性部分依赖于大整数分解的困难。之所以说“部分依赖于”,是因为至今还没证明RSA的安全性完全依赖于大整数分解。
2022-09-22 10:06:36
632
1
原创 多标签分类
1. 算法多标签分类的适用场景较为常见,比如,一份歌单可能既属于标签旅行也属于标签驾车。有别于多分类分类,多标签分类中每个标签不是互斥的。多标签分类算法大概有两类流派:采用One-vs-Rest(或其他方法)组合多个二分类基分类器;改造经典的单分类器,比如,AdaBoost-MH与ML-KNN。One-vs-Rest基本思想:为每一个标签\(y_i\)构造一个二分类器,正样本为含有...
2018-10-17 17:29:00
108
原创 时间序列异常检测算法S-H-ESD
其中,\(N\)为数据集的样本数,\(t_{\alpha/(2N), N-2}\)为显著度(significance level)等于\(\alpha/(2N)\)、自由度(degrees of freedom)等于\(N-2\)的t分布临界值。若\(R_i > \lambda_j\),则原假设\(H_0\)不成立,该样本点为异常点;其中,\(X\)为原时间序列数据,\(S_X\)为STL分解后的周期分量,\(\tilde{X}\)为\(X\)的中位数。重复以上步骤\(k\)次至算法结束。
2018-06-20 10:48:00
268
原创 开源中文分词工具探析(七):LTP
LTP是哈工大开源的一套中文语言处理系统,涵盖了基本功能:分词、词性标注、命名实体识别、依存句法分析、语义角色标注、语义依存分析等。【开源中文分词工具探析】系列:开源中文分词工具探析(一):ICTCLAS (NLPIR)开源中文分词工具探析(二):Jieba开源中文分词工具探析(三):Ansj开源中文分词工具探析(四):THULAC开源中文分词工具探析(五):FNLP开源中文分...
2018-06-11 16:52:00
874
原创 开源中文分词工具探析(六):Stanford CoreNLP
CoreNLP是由斯坦福大学开源的一套Java NLP工具,提供诸如:词性标注(part-of-speech (POS) tagger)、命名实体识别(named entity recognizer (NER))、情感分析(sentiment analysis)等功能。【开源中文分词工具探析】系列:开源中文分词工具探析(一):ICTCLAS (NLPIR)开源中文分词工具探析(二):J...
2018-02-07 21:24:00
1107
原创 DFS实现排列组合
所谓排列,是指从给定的元素序列中依次取出元素,需要考虑取出顺序。比如,取出元素3, 5,因取出顺序的不同,则形成的序列{3, 5}与{5, 3}是不同的排列序列。对于长度为n的元素序列取出k个元素,则共有A(n, k)种取法。所谓组合,也是从元素序列中依次取出元素,与排列不同的是不需要考虑取出顺序;因此其取法数为C(n, k)。LeetCode有两个问题分属于组合、排列:77. Combina...
2017-09-12 20:29:00
184
原创 时间序列分解算法:STL
1. 详解STL (Seasonal-Trend decomposition procedure based on Loess) [1] 为时序分解中一种常见的算法,基于LOESS将某时刻的数据\(Y_v\)分解为趋势分量(trend component)、周期分量(seasonal component)和余项(remainder component):\[Y_v = T _v + S_v ...
2017-08-18 16:15:00
1381
原创 局部加权回归LOWESS
1. LOWESS用kNN做平均回归:\[\hat{f(x)} = Ave(y_i | x_i \in N_k(x))\]其中,\(N_k(x)\)为距离点x最近k个点组成的邻域集合(neighborhood set)。这种邻域平均回归存在很多缺点:没有考虑到不同距离的邻近点应有不同的权重;拟合的曲线不连续(discontinuous),如下图。因此引入kernel加权平滑:...
2017-08-17 17:26:00
438
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人