自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cufewxy的博客

对机器学习、量化投资感兴趣,尽量用最朴实的语言解释原理

  • 博客(33)
  • 收藏
  • 关注

原创 GRU门控循环单元

GRU(Gated Recurrent Unit)是RNN的一个变体,在2014年被提出。与LSTM类似,同样是为了解决RNN处理长序列时梯度爆炸或梯度消失的问题。与LSTM相比,GRU的结构更简单,参数更少,效果却与LSTM持平。

2025-03-11 17:47:08 839

原创 LSTM长短期记忆网络

LSTM介绍

2025-03-11 15:20:26 818

原创 知识蒸馏技术

知识蒸馏(Knowledge Distillation)是深度学习领域很火的概念,是一种模型压缩、知识迁移的技术。它从一个参数多、结构复杂、维护成本高的大模型(称为教师模型)迁移到参数少、结构简单、维护成本低的小模型(称为学生模型)。迁移的原因很简单,复杂的大模型虽然能够取得很好的效果,但是参数量过大,推理成本高,计算量过大,需要的硬件资源多,很难在资源小的硬件上运行(尤其是移动设备)。知识蒸馏通过将大模型迁移到小模型,降低资源要求的同时尽可能使模型的效果不下降过多。

2025-03-03 15:12:52 307

原创 RNN循环神经网络

RNN(Recurrent Neural Network),即循环神经网络,是用于解决序列数据的神经网络。回顾一下最基础的BPNN以及专用于图像识别的CNN,他们的输入与时间先后无关,但是有时输入的数据是序列数据,需要考虑序列中前后顺序关系的影响,此时RNN就派上用场了。RNN是训练出固定的一套参数,接收序列当前时刻的输入以及上一时刻的输出,形成这一时刻的输出。

2025-03-03 15:12:34 925

原创 逻辑回归(Logistic)模型

Logistic回归(逻辑回归)是基础的分类模型,将输出限定在0-1之间,表示分类的概率。在分类时,可设定阈值为0.5,概率超过0.5表示正例,小于0.5表示负例。应用场景包括医学检测(是否患病,肿瘤良性恶性)、金融(信用卡违约)、市场营销(客户是否流失)等。

2025-02-27 17:58:27 808

原创 GPT模型介绍

GPT由OpenAI研发,从2018年起已推出多个版本,如GPT-1,GPT-2,GPT-3,GPT-3.5,GPT-4等。为人们所熟知的ChatGPT是基于GPT模型开发的,专门用于人机对话交互。ChatGPT 在 GPT 的基础上,采用了RLHF(人类反馈强化学习)等技术进行微调,通过让人类对模型生成的回复进行排序和打分,再利用奖励模型来进一步优化,使 ChatGPT 能够生成更符合人类偏好和对话场景的回答,使得对话的连贯性、准确性和相关性上表现更优。

2025-02-27 13:20:03 484

原创 BERT模型深入理解——自然语言处理的里程碑

2018年谷歌团队发布了BERT(Bidirectional Encoder Representations from Transformers)模型,在自然语言处理领域引领了技术性的革命。BERT创新性地使用预训练+微调模式,先用预训练在大量无标注的语料中进行自监督学习,学习到语言的通用规律,然后在少量有标注的数据中进行有监督学习,适配更精细化的任务。这种模式一直影响到最新的大模型结构,预训练后的模型在大模型中也称为基座模型。

2025-02-27 13:19:12 938

原创 Transformer解析——(五)代码解析及拓展

代码参考了笔者在此基础上跑通并增加了很多注释,带注释的版本已上传到Github(注意需要下载语料库corpus放到目录data\transformer_demo\corpus下。具体细节请参考注释,下面仅展示整体代码结构。

2025-02-21 16:12:53 710

原创 Transformer解析——(四)Decoder

Decoder与Encoder的结构非常类似,下面具体解析。与Encoder相比,Decoder增加了一个交叉注意力的模块,其他模块的结构与Encoder类似。注意,Decoder的训练和预测差别很大。在训练时,将目标序列(比如在英译中任务里,目标序列就是中文)通过Input Embedding和Positional Encoding后,并行输入到自注意力模块中,注意使用Look Ahead Mask避免训练第i个词时使用了i以后的词。

2025-02-21 14:26:58 883

原创 Transformer解析——(三)Encoder

F(x)在预测y时,需要剥离x的信息,因此需要竭尽所能,在x以外产生新的特征。k1的梯度为x1,k2的梯度为x2,所以k1的梯度将远远大于k2,因此k1的更新幅度更大,k2的更新幅度更小。第二,稳定优化过程。在自然语言处理中,每一句话的token长度(即特征数量)是不同的,BN无法对变长特征做归一化,所以不适合自然语言处理,而LN适合变长数据,可对单个样本各特征之间做归一化。从数学上,缓解了梯度消失的问题,因为现在输入会直接参与输出,即使F(x)的梯度为0,y对x的梯度也至少为1,保证权重正常更新。

2025-02-21 13:13:02 661

原创 Transformer解析——(二)Attention注意力机制

Attention是一个独立的模型,在各种深度学习中都可以使用,只是transformer将其发扬光大了。本文我们先跳出transformer模型,关注Attention模型本身。本文我们介绍自注意力(self-attention),在后文Decoder的说明中再讲解交叉注意力(cross-attention)。自注意力指单词对同一句话中每个词产生注意力。为什么要用自注意力机制?Attention顾名思义是指输入序列中单词“注意”到了整个句子的每个词。

2025-02-21 10:39:56 897

原创 Transformer解析——(一)概述

Token是语言模型中常见的概念,中文可称为“词元”,是文本处理的基本单元。第一,方便识别词与词之间的相对位置关系,因为第i个词与第i+k个词之间是有规律的,基于正弦和余弦定理,sin(i+k)=sin(i)cos(k)+cos(i)sin(k), cos(i+k)=cos(i)cos(k)-sin(i)sin(k),因此,两个前后间隔k个位置的编码是有线性规律的,这就像是编码阶段预留的“彩蛋”,后续transformer训练时也可以找到这种规律,从而理清楚词与词之间的位置关系。需要设置输入和输出大小。

2025-02-20 20:36:10 1217

原创 Celery任务阻塞问题排查

以上2个问题都遇到了Celery任务卡住的问题,其原因十分类似,但具体细节又不相同。它们都是在多进程模式下产生的,问题1是因为子进程之间数据库连接池的冲突,问题2是因为子进程之间数据库驱动文件的冲突。Celery中多进程只支持fork,不支持spawn,因此使用多进程非常容易导致任务卡住。在解决此类问题时,一方面在代码中多打些日志,具体定位程序在哪里卡住,另一方面使用strace等命令,查看程序最后一次进行调用的资源。

2025-02-07 17:40:13 1024 1

原创 信创数据库使用问题汇总

笔者工作中需要使用多种信创数据库,在使用过程中发现一些问题,现记录如下。

2025-02-07 17:04:46 684

原创 VAE变分自编码器(二)——数学推导及代码解析

因为在给定q(z|x)的情况下P(x|z)尽可能高,这就表示先用Encoder根据输入x得到输出z,然后利用Decoder根据z得到一个正态分布的均值和方差,为了让其产生x的几率最大,均值应该与x接近,标准差越小越好,实践中只让Decoder产生均值,不会再让其产生标准差了。是不好直接求的,从公式字面意思看,其包含两部分,一是z的分布,可以假设是一个正态分布;可以看到,推导后右式是KL散度,是一定大于0的,因此左式是一个Lower Bound,记为Lb,一定小于似然函数。该结果与上一篇博文中描述一致。

2025-01-24 11:07:52 668

原创 VAE变分自编码器(一)——基本概念

VAE(Variational AutoEncoder)变分自编码器是在AE的基础上发展而来的。整体网络结构、训练过程与AE很相似。

2025-01-24 11:06:18 1253

原创 AutoEncoder自编码器

AutoEncoder(自编码器,以下简称AE)不需要标签Label数据,只需要样本数据(例如一组图像/声音),因此可认为是自监督学习。自监督学习不需要标注数据,例如在已有的样本图片基础上随机地遮盖部分区域,使模型学习到填充此区域的方法。大语言模型也是自监督学习的一种,将语料输入到大模型中,不需要标注,语言模型通过做填空题的方式学习。自监督学习也可称为预训练pretrain,之后可将预训练好的模型微调后用做下游的任务中。例如大模型中预训练好的基座模型再通过微调适配场景。

2025-01-21 14:46:55 480

原创 熵相关概念(二)——交叉熵、JS散度、Wasserstein距离

上一篇其实已经给出了交叉熵的定义在深度学习的训练中,KL散度可以表示真实分布与拟合分布之间的距离,而KL散度=交叉熵-熵,真实分布的熵是固定的,不管拟合出什么分布,真实分布的熵是不变的,因此经常会看到使用交叉熵作为损失函数。使用交叉熵代替均方误差还可以缓解梯度消失问题,见此文的说明。

2025-01-20 14:06:32 649

原创 熵相关概念(一)——熵、KL散度

事件的信息量与其概率有关,假设X是离散型随机变量,X=x的信息量为,概率越大,信息量越低。关于这一点的解释,网上有很多例子,比如说太阳从东方升起概率为100%,提供的信息量很低;太阳从西边升起概率为0%,提供的信息量很大,笔者隐约觉得这种解释有偷换概念嫌疑,等深入理解信息论后再举例。熵为事件的期望/平均信息量,表示为。

2025-01-18 22:08:24 756

原创 深度学习中的卷积和反卷积(四)——卷积和反卷积的梯度

请注意,计算y对x的梯度时,如果y、x都是矩阵,梯度理应是每一个y对每一个x求偏导的结果。但在Tensorflow中,gradient是返回了总和的梯度。如果想求出每个分量的梯度,应该使用Jacobian矩阵。这一点困扰了笔者很久,直到翻到文档才恍然大悟。

2025-01-15 12:07:05 863

原创 Dijkstra(迪杰斯特拉)最短路径算法

Dijkstra(迪杰斯特拉)算法是非常经典的最短路径寻找算法,适用于加权图中寻找起点到终点的最短路径。图是一种数据结构,包含节点和边。节点与节点之间通过边相连,加权图是指边上有权重,算法目标是寻找从起点到终点的一条路径,使得其中所有边的权重之和最小。举例来说,我们要从北京开车导航到深圳,每一个城市都是节点,城市与城市之间的道路是边,道路的长短是边的权重。目标是规划一条路径,使得从起点到终点行驶的道路最短,查看经过了哪些城市。

2025-01-14 16:10:42 781

原创 深度学习中的卷积和反卷积(三)——卷积和反卷积的计算

卷积核是3*3的形式,输入图像是4*4的形式,步长为1,则可以将卷积操作转换为矩阵操作,其中卷积核转变成了一个4*16的稀疏矩阵(稀疏是指其中很多元素是0),将输入图像展开成一列形式16*1,得到输出图像reshape成4*1的形式。卷积和反卷积里都有stride和padding参数,但是同一个参数在卷积和反卷积里的作用不一样,非常容易使人困惑,本文试图理清他们的关系,并用实际数值例子演示计算过程。观察卷积核里的最左侧点A,这是卷积核的头,剩下2个圆圈是卷积核的身体。注意反卷积不是可逆的,因为。

2025-01-09 10:09:36 123

原创 深度学习中的卷积和反卷积(二)——反卷积的介绍

反卷积(deconvolution)又称转置卷积,是卷积的拟操作,常用于GAN等模型中。反卷积是上采样的一种,上采样是指将特征图维度恢复到原始图的维度,这种增大维度的过程被称为上采样。上采样可以用插值或反卷积实现。在CNN中,卷积一般会让图像尺寸变小,属于下采样。例如最大化池化(可视为特殊的卷积)是将相邻像素中最大的像素提取出来,丢弃了其他不重要的像素。卷积和反卷积是相反的过程。GAN等生成模型中经常使用反卷积,为什么呢?因为隐含层(特征图)包含最基本的图像特征,一般维度很小。

2025-01-07 09:39:06 1521

原创 深度学习中的卷积和反卷积(一)——卷积的介绍

卷积是一种数学运算,记为f,g的卷积连续的定义为离散的定义为从定义式中可发现卷积的要点:(1)卷积的入参为n;(2)2个函数遍历所有可能的入参,求乘积后求和;(3)在此过程中保证2个函数的入参之和为n。单纯看计算公式不算复杂,但让人疑惑为什么设计成这种形式?下面我们举一些例子加深理解。

2025-01-07 09:34:49 1389 1

原创 五子棋版AlphaZero中的MCTS算法(一)——MCTS介绍和python实现

MCTS的概念和Python代码实例

2024-12-30 18:39:09 1062

原创 GAN对抗生成网络(二)——算法及Python实现

算法步骤和Python实现

2024-12-30 18:05:36 1528

原创 GAN对抗生成网络(一)——基本原理及数学推导

符号含义文物例子中的对应概念样本,例如GAN的目标是生成图片,则此处泛指图像字画真实数据概率分布真字画的技艺Generator,本质是一个神经网络,输入概率分布中的随机噪声,输出为x造假者最优的Generator训练好的造假者Generator对应的概率分布造假者的技艺概率分布中的噪音,例如高斯分布抽样出的样本造假者的输入,可理解为当时模具的状态、制作哪幅字画的决定两个分布之间的距离真实制作工艺和造假制作工艺的区别。

2024-12-28 19:22:13 1277

原创 Flow Field——流场寻路算法

广度优先是一种树的遍历方式,和深度优先是相对的。广度优先是指先将目标格子的所有邻居塞入队列,而如果是深度优先,做法则是找到目标格子的一个邻居,然后继续找这个邻居的邻居,“一条道走到底”。举个形象的例子,如果老师需要遍历全班的同学到办公室一个一个谈话,那么老师先叫其中一名同学到办公室谈话,结束后让他回教室叫上前后左右位置的同学来办公室排队,每位同学都如此操作,已谈过的不必再谈,就实现了全班的遍历。上述代码的解析:定义一个队列,先将目标格子推入队列,将其取出后寻找其邻居,每个邻居的距离等于当前格子距离+1。

2024-12-26 13:57:06 612

原创 卷积神经网络CNN(二)池化、结构、误差反向传播

上一篇介绍了CNN基本概念和卷积的知识,CNN的特征抽取除了包含卷积,还包含池化。池化池化又叫子采样,是特殊的卷积。池化比较好理解,还是上篇公司工作交接的例子,每个销售区域有100个老员工,我们可以先推举一个最懂本区域的业务人员参与交接(如各区域的领导),其他人员不必参与交接;或者每个区域内部先开一个会,把100个老员工的经验结合在一起,生成一个会议纪要,根据这份纪要与新员工交接。这实际对应两种池...

2018-05-29 14:42:21 7558 2

原创 卷积神经网络CNN(一)基本概念、卷积

卷积神经网络(Convolutional Neural Network)是一个专门针对图像识别问题设计的神经网络。它模仿人类识别图像的多层过程:瞳孔摄入像素;大脑皮层某些细胞初步处理,发现形状边缘、方向;抽象判定形状(如圆形、方形);进一步抽象判定(如判断物体是气球)。CNN与BPNN的异同如果了解BPNN的框架,那么更容易理解CNN了。本文从CNN与BPNN的异同点出发,分析CNN的结构。首先相...

2018-05-28 21:56:44 36616 2

原创 BP神经网络(BPNN)

本文简要介绍BP神经网络(BPNN, Back Propagation Neural Network)的思想。BP神经网络是最基础的神经网络,结果采用前向传播,误差反向(Back Propagation)传播方式进行。BP神经网络是有监督学习,不妨想象这么一个应用场景:输入数据是很多银行用户的年龄、职业、收入等,输出数据是该用户借钱后是否还贷。作为银行风控部门的负责人,你希望建立一个神经网络模型,...

2018-05-28 16:37:47 95652 5

原创 K-Means

概述K-Means相对比较简单,是一个无监督的聚类算法。给定一堆无标签的数据,将他们聚为K类,K事先是不知道的,需要自己确定。例如,你是一个鞋子制造商的产品经理,需要根据消费者的脚长,设置S、M、L码。根据市场调研,获取了很多消费者的脚长,如何确定初始化中心点...

2018-05-23 16:22:46 589 1

原创 K近邻算法

概述K近邻(K-nearest neighbor,k-NN)可以是分类和回归方法,是一种有监督方法。通俗的说,k近邻回归的思想是,假如想预测你的收入,那么通过某种距离计算(如考虑行业、学历、年龄等),找k个和你相似的人,他们的收入求均值即作为你的收入预测。根据k个邻居的类别,采用多数表决等方法确定新实例的类别,或根据邻居的值预测新实例的值。k近邻的三个要素:①距离度量,②k(邻居数)的选择,③分类...

2018-05-23 15:43:08 2478 1

空空如也

空空如也

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

TA关注的人

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