- 博客(81)
- 收藏
- 关注
原创 元学习meta learning
元学习(Meta Learning)是机器学习的一个分支,目标是让机器“学会如何学习”。它通过训练一个学习算法,使其能快速适应新任务,只需少量数据。与传统机器学习专注于单一任务(如猫狗分类)不同,元学习关注如何让模型在多种任务上表现良好。费曼式讲解想象你在教一个学生做数学题。传统机器学习是教他只做加法,给他很多加法题练习。元学习是教他如何快速学会任何新题型,比如只给他几道乘法例题,他就能自己学会乘法。这种“学习方法”的训练对智能体和AGI至关重要。损失函数。
2025-06-13 13:37:19
550
原创 life long learning
生命周期学习(Life Long Learning, LLL),也称为持续学习或增量学习,是机器学习的一个重要领域,旨在让机器能够像人类一样,在时间轴上持续学习新任务,同时保留对之前任务的知识。与迁移学习(Transfer Learning)不同,迁移学习关注将一个任务的知识应用于另一个任务,而 LLL 要求机器在学习新任务后仍能执行旧任务。费曼式讲解想象你在学骑自行车(任务1),后来又学滑板(任务2)。如果学滑板后忘了怎么骑自行车,这就很尴尬。
2025-06-13 13:31:03
386
原创 神经网络压缩
网络压缩是通过减少机器学习模型的参数数量和计算需求,使其更小、更高效的技术。大型模型(如多模态大模型)通常有数亿参数,计算成本高,难以在手机、机器人等设备上运行。压缩技术让这些模型“轻量化”,适合资源受限的环境。费曼式讲解想象你有一个超级大的行李箱,装满了衣服(模型参数),但你只能带一个小背包旅行(资源受限设备)。网络压缩就像整理行李,只带必需品,扔掉不重要的衣服,但还要保证你能应对各种场合(模型性能)。
2025-06-13 10:20:30
1770
1
原创 机器学习的可解释性
重点:局部和全局解释并重,揭示模型的决策细节和整体行为。方法:用可解释模型(如 LIME)近似复杂模型。未来:研究者正致力于让深度网络和大型语言模型更透明,同时保持高性能。
2025-06-10 13:37:35
765
原创 BERT
BERT,全称是“双向编码器表示来自变换器”(Bidirectional Encoder Representations from Transformers),听起来可能有点复杂,但其实它就像一个超级聪明的“阅读理解机器”。想象你读一篇文章,想理解某个词的意思,不仅看它前面的句子,还要看后面的内容,BERT 就是这样工作的。它能同时考虑一个词的前后上下文,这样理解得更准确。BERT 是基于 Transformer 架构的,这是一种在人工智能中很流行的技术。
2025-06-08 13:29:07
1165
原创 BERT, GPT, Transformer之间的关系
想象你是一个翻译员,要把一句话从中文翻译成英文。你需要同时看句子里的每个词,理解它们之间的关系。就像一个超级翻译助手,它用“自注意力机制”(Attention)一次处理所有词,快速找出重要联系,比老式的翻译机(RNN)更快更聪明。Transformer 是 2017 年由 Vaswani 等人提出的神经网络架构(论文:《Attention is All You Need》),主要用于自然语言处理(NLP)。自注意力机制(Self-Attention):让模型关注句子中不同词之间的关系。
2025-06-07 18:53:19
1246
原创 机器翻译模型笔记
功能:将输入句子转为嵌入向量,使用双向 GRU 处理。代码# 初始化编码器,继承自FairseqEncoderself.embed_tokens = embed_tokens # 词嵌入层,将token ID映射为嵌入向量self.embed_dim = args.encoder_embed_dim # 嵌入向量的维度,从参数中获取self.hidden_dim = args.encoder_ffn_embed_dim # GRU隐藏层的维度,从参数中获取。
2025-06-04 21:35:48
883
原创 简单transformer运用
任务:从语音特征(梅尔频谱图,mel-spectrogram)中分类扬声器(600 个类别)。数据集:Voxceleb2 数据集的子集,包含 600 个扬声器的音频特征。目标学习使用 Transformer 模型(Simple 级别)。调整 Transformer 参数(Medium 级别)。构建 Conformer(Hard 级别,代码中未实现)。进一步实现 Self-Attention Pooling 和 Additive Margin Softmax(Boss 级别,代码中未实现)
2025-06-03 21:38:19
808
原创 Pointer Network
Pointer Network 是一种神经网络模型,最初由 Vinyals 等人(2015)提出,用于解决输出序列中的元素直接从输入序列中“选择”的问题。传统的神经网络输出是固定的词汇表(比如 10 万个词),但在一些任务中,输出可能是输入序列的子集或重新排列,这时就需要 Pointer Network。普通网络的问题:如果用普通网络做排序任务(比如给数字 [3, 1, 4] 排序成 [1, 3, 4]),输出需要从固定词汇表中选词,但输入可能是任意数字(不在词汇表中)。
2025-06-03 20:45:37
1026
原创 non-autoregressive sequence generation
Autoregressive(自回归):每一个输出依赖于前一个输出每一步的生成依赖前一个 token:$y_t \sim P(y_t | y_1, y_2, ..., y_{t-1})$无法并行解码,推理慢示例:Transformer、GPT并行生成,加速显著适合实时任务,如翻译、语音识别序列生成是指根据输入条件 x,生成输出序列 y = (y₁, y₂, ..., yₜ)。机器翻译:将一种语言翻译为另一种语言(如英文到德文)。图像描述生成:为图像生成文本描述(如“一个女人在公园里扔飞盘”)。
2025-06-03 20:31:05
1104
原创 Transformer
masked self-attention,和原本的attention的区别是只能考虑左边的输入,无法考虑右边的输入,因为decoder输出都是一个一个token的,而且输入也是encoder一个一个输出的。at和nat的区别,个人理解是串行和并行的区别,at是一个一个输出的,nat是一次就把整个句子输出的。decoder的输入,除了开始的那个向量,其他的向量都是前一个输出,根据之前的输入来考虑输出。当我们从四次发财到一次发财,我们可以发现,读四次发财都是对的,但是读一次发财竟然少了一个发字。
2025-05-28 20:00:51
328
原创 Batch Normalization[[
我们经过一层normalization后的x经过w得到z再经过activate function得到a,那么a和z实际上对w2是input,那么就有可能特征差异大,所以要在z或者a再做一次normalization,在哪里做其实差异不大。如果我们真正在做application的时候,资料不是一个batch的传进来,我们无法累计到一个batch再计算,我们就得用滑动平均来计算。z是向量/矩阵,但是经过normalization后,每一个z的小改变就会引起后面三个a的改变,相比input时候是单独改变。
2025-05-28 18:11:23
372
原创 Unsupervised Learning-Word Embedding
乘以权重矩阵 (W_1) 后,实际上就是“选中”了 (W_1) 的某一行,这一行就是 (x_{i-2}) 这个词的词向量(在 (W_1) 这个矩阵里的表示)。就是选中 (W_2) 的某一行,这一行就是 (x_{i-1}) 这个词的词向量(在 (W_2) 这个矩阵里的表示)。我们想要将input的后一个词是一样的,我们就要将input的两个词放置在同一空间的相邻位置,我们就要通过w来调整,传统的1 of N 的encoding无法让意义相近的词汇产生联系,word class可以将相近的词汇放到一起。
2025-05-27 20:23:36
1853
原创 Graph Neural Network(GNN)
部分内容说明💛 中间黄色GNN 的核心机制是图卷积(Spatial vs Spectral)🟫 棕色框Spatial 里的不同聚合策略和实例方法🟧 桃色框Spectral 的发展脉络(ChebNet → GCN → HyperGCN)✅ 绿色框GNN 支持的主要 AI 任务🔵 蓝色框GNN 在 NLP 中的重要应用方向。
2025-05-26 20:47:07
1074
原创 recurrent neural network(rnn)
slot filling,给一段话,把相关信息丢到对应slot里面可以这样,用feedforward network来解决,输入时向量输出就是可能被分到哪个slot里的概率但这会有问题,因为同样的词汇,在不同上下文中可能会有不同含义,比如说,第一句话中,taipei被分到了目的地里,但是第二句话中.taipei其实是出发地,但是因为feedforward network没办法辨识出来,所以还是会被分到目的地中。
2025-05-22 17:00:45
819
原创 自注意力机制
我们说一句话,每个单词都是一个向量,我们当然可以创造出一个非常长的向量,它的长度是世界上所有单词的数量,然后是哪个单词,就在对应位置置1,但是这样会造成一个问题,就是我们没有办法让单词间产生联系,比如说我们没有办法让cat和dog产生联系,尽管他们都是动物,所以有了一个word embedding,这个东西能让有相近语义的词汇聚集在附近。我们可以用self-attention,它可以输入进整个sequence,然后输出对应的值,但是这些值是考虑到整个句子得到的值,然后这些值再作为输入进入function。
2025-05-21 18:45:20
734
原创 优化model我们可能会怎么做(具体)
MixUp是一种先进的数据增强技术,它通过线性组合两个不同的训练样本及其标签来创建新的训练数据。测试时数据增强是一种高级技术,它在模型推理阶段(而不仅仅是训练阶段)应用数据变换,以提高预测准确性。模型集成是机器学习中的一种强大技术,它通过组合多个模型的预测结果来获得比单个模型更好的性能。接下来是test time augmentation,测试时数据增强。其中有一个mix up,是将两个图片叠加起来,testing的权重多一点会好一点。用多的vali其实没啥用。
2025-05-20 14:50:31
662
原创 Spatial Transformer Layer
接下来就是讲解一个空间变换层地例子:我们可以看到,layerl就是layerl-1经过平移得到的,其中,我们layerl中的每一个元素,是上一层每一个元素与权重相乘之后再相加得到的结果,这个权重是什么呢,是当i = n - 1, j = m时,w = 1, 不然w = 0,这就可以让我们上一个layer中的元素在这一个layer中往下一格,所以其实靠w来进行变换。其实,它的工作原理是这样的,看起来好像这个index搞反了,但实际上没有,这是反向映射,我们根据l来找l-1。重要的是找到相应的w。
2025-05-17 17:53:59
379
原创 深度学习让鱼与熊掌兼得
于是我们可以发现,这是dimension上的差别,neuron数量之间有极大差距,也可以这么说,实现同一个function,shallow的model更复杂,也就更容易overfitting。通常,一个大的复杂的模型的loss会低,但是拟合方面不够,小的模型在拟合方面更好,但是loss高,我们可以通过深度学习来得到一个有着低loss的小模型。结果是这样的,这证明同样参数量的时候,深的模型会更好,也更有效率。第二层是这样子的一个关系,那么第三层是什么样的关系呢。接下来解释为什么深度比宽度好。
2025-05-15 17:53:25
315
原创 为什么使用了测试集还是有可能过拟合
根据文档中的示例,模型ℋ3在验证集Dval上的损失最低(L ℎ3*, Dval = 0.5),因此被认为是最好的模型。这是因为当你使用验证集来选择最佳模型时,实际上你是在“训练”过程中使用了验证集的信息,即验证集的数据被用来指导模型的选择。这意味着最终选定的模型ℋval= {ℎ1*, ℎ2*, ℎ3*}是基于验证集的表现来决定的,这可能会导致模型对验证集产生过拟合。总之,尽管使用了验证集可以帮助减少过拟合的风险,但如果验证集本身也被过度利用于模型选择,则可能导致所选模型对验证集也产生了过拟合。
2025-05-15 16:35:05
281
原创 cnn卷积神经网络
我们输入的这个数据包含了很多dimension,100x100x3维, 假设我们一层有1000个神经元,那么我们就会有3x10e7个weight,有太多的这个参数了,虽然可以让我们的模型更有弹性,能力更强,但也增加了over fitting的风险,如果我们是要考虑影像本身的特性,那么我们是不是真的需要每一neuron对每一个dimension都有一个weight呢。答案是不用的,我们可以共享参数,就算是两个neuron的参数一样,因为他们的输入是不一样的,所以输出也是不一样的(图中的neuron是同一个。
2025-05-15 16:08:32
990
原创 new optimizers for dl
但是,因为有一个lower bound和一个higher bound,其实我们也无法做到adaptive,无法自动调整这个lr,那么,既然我们没办法去调整adam,我们就转向调整sgdm,sgdm的缺点是比较慢,无法自动调整lr,我们就在想,能不能先找到合适的lr,让它快一点。gradient突然变大后,任然根据先前的这个状态去调整 ,被先前的gradient牵着鼻子走,图中的小gradient影响了大的gradient,导致移动的不够多,所以有人提出了这样子的一个策略:amsgrad。
2025-05-14 19:16:37
274
原创 类神经网络训练失败怎么办?如何去优化模型,调整参数?
我们可能会疑惑:local minima和saddle point哪个更常见呢,其实我们可以通过升维来进行降维打击,比如说,在二维中看起来像local minimum,但是我们升到三维,它就有可能是saddle point,所以local minimum并没有我们想象的那么多。在我们判断了这个critical points 后,如果是saddle point, 我们可以找到负的特征值,然后找到特征向量,朝着这个方向,可以减少loss。如果我们卡在saddle point的话,我们有办法可以突破。
2025-05-12 19:53:51
272
原创 训练模型的一些思路和技巧
我们有时候测出来不准可能是training and testing data有不一样的分布,比如说疫情2020年的资料和2021年资料。如果是简单模型更好,那么可以说明是我们的optimization 的问题,我们要换一个optim.可能是因为模型比较简单,function set并没有包含到可以起决定性作用的function,如果模型训练的效果不好,training loss太大,我们可以先关注model bias,我们要重新定义model,可以增加更多的features,也可以叠加更多层.
2025-05-12 15:07:00
352
原创 tensorboard in pytorch
加载 FashionMNIST 数据集,并将其分为训练集和验证集。对数据进行预处理,将图像转换为 PyTorch 张量,并进行标准化。使用DataLoader批量加载数据,方便训练时一次性输入多个图像。定义了图像的类别标签,这些标签用于后续训练和评估模型。简而言之,这段代码准备了数据,使得我们可以直接拿来训练一个图像分类模型,自动识别不同类型的服装。else:这段代码是用来从训练集中取出一批图像,并将它们可视化显示出来的,适用于调试或初步查看训练数据。
2025-05-10 13:13:22
788
原创 dropout层
Dropout 层通过在训练过程中随机“丢弃”神经网络中的一部分神经元,强迫网络不依赖于某个特定的神经元,从而减少过拟合的风险。这相当于让某些神经元不参与当前训练的计算,从而让模型在不同的训练过程中使用不同的网络结构。:通过在训练过程中随机丢弃神经元,Dropout 能够避免网络过度依赖某些特定的神经元,从而增强模型的泛化能力。:网络在每次训练时会丢弃不同的神经元,这使得网络变得更加健壮,能够适应不同的输入数据,增强了模型的泛化能力。表示有 40% 的神经元会被随机丢弃,剩下的 60% 会被保留。
2025-05-09 20:45:56
453
原创 LSTM的简单模型
LSTMTagger类是一个用于自然语言处理(NLP)的模型,主要用于词性标注任务。其核心是LSTM(长短时记忆网络),能够处理序列数据。模型由三部分组成:1)词向量嵌入层,将单词映射为高维向量;2)LSTM层,处理词向量并生成隐藏状态,捕捉词间关系;3)全连接层,将隐藏状态转换为标签。工作流程包括:词嵌入、LSTM处理、标签预测和Softmax计算。例如,输入句子["I", "am", "learning"],模型会将其转换为词向量,通过LSTM
2025-05-09 20:17:22
815
原创 pytorch基础的学习
文章摘要:本文详细介绍了在PyTorch中加载和处理数据集的多种方法,包括使用内置数据集、自定义数据集、ImageFolder、TensorDataset以及文本数据集的加载。文章还涵盖了数据增强、自定义采样器、多进程加载等高级特性,并提供了一个完整的MNIST数据集加载和LeNet模型训练的示例。通过这些方法,用户可以灵活地处理不同类型的数据集,并高效地进行深度学习模型的训练和测试。
2025-05-09 19:22:33
1907
原创 CS61A:SCHEME LIST
这个比较令人疑惑的可能是为什么最后一行是(list (list ...)),其实很简单,append的两个东西,一个是even-subsets(cdr s),这个cdr s已经是列表了,再加上even-subsets,是列表的列表,另一个是map,lambda中是将t再构造一个列表,t是cdr s中的子集。
2025-04-22 19:04:00
257
原创 CS61A:DATA EXAMPLES
因为 `b[1]` 和 `t` 指向同一个列表对象,所以通过 `b[1][1]` 修改这个列表的内容时,`t` 也会看到同样的变化。• 修改 `b[1][1]` 为 `0` 等同于修改 `t[1]` 为 `0`,所以 `t` 变为 `[5, 0]`。• 这里的 `[t]` 是将 `t` 作为单个元素添加到新列表中,因此 `a[2]` 是对 `t` 的引用。• `b[1]` 是 `t` 的引用,因此 `b[1][1]` 实际上是 `t[1]`。为什么 `t[1]` 会改变?
2025-04-20 15:50:21
234
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅