学习日志(2025-4-25)
今天终于看完了 UCSD 的 CSE 234 的 required reading 1.2,足足一章,确实是内容很多,主要就是介绍了目前的四种主流模型,MLP、CNN、RNN 和 Transformer。确实算得上是详略得当,refresh my memory again。后面还有一些计算方面的介绍,虽然没有很深入,确实不错。
Notes---苏剑林博客(神经网络与深度学习基础)
其实很久之前就看到过别人推荐他的 blog 了,但是一直没看,最近虽然也很忙,但是总是不想干“正事”,就忙里偷闲,看看能不能把他的 blog 读完吧。 我的 Reading List 主要是根据知乎上一个同学(WhyWait)整理的,所以也就按照他的分类来读了。 这一篇 Notes 就是关于“神经网络与深度学习基础”这个分类底下的 Blog,希望这一次自己能够坚持下来,至少把和自己相关的部分看完。 闲聊:神经网络与深度学习 这篇博客写在 2015 年,但其实里面的很多想法到今天也很有用,从某种程度上从底层解释了神经网络从何而来,为什么能 work。 大部分人都知道,神经网络其实就是一个拟合函数,虽然网络里的单个节点只是一个非常简单的函数,但是大家也都知道我们已经证明了只要我们把足够多的这种简单函数复合到一起,可以拟合任意一种函数。 大部分也知道,很多时候神经网络其实干的事情是“抽特征”,如果你特征抽的好,只需要一个非常简单的 MLP 就可以去的很好的效果。 可其实大部分人都没有系统的知道,上面这两点就是我们的 key...
Notes---苏剑林博客(词向量与Embedding技术)
这一篇 Notes 就是关于“词向量与Embedding技术”这个分类底下的 Blog,这个是第二个部分。 词向量与Embedding究竟是怎么回事? 词向量可以说是语言模型最重要的基石之一,正是有了词向量,我们才有了一个比较好的方式来用数字表示语言。从某种意义上讲,语言到词向量的过程,就是把人类语言翻译成机器语言的过程。 我第一次知道词向量,差不多是 2023 年左右,我大二左右,然后要上物理
Using Clip to Music Generation
最近看到了 CLIP,CLIP 应该算是多模态,或者算是 CV 那边的工作,但是我看到了非常多的把 CLIP 用到自己领域去做的文章,而且 CLIP 又很简单,最重要的一点是可以直接做 Zero-shot,我觉得我们可以直接尝试把 CLIP 模型用到我现在的这个 Music accompaniment generation 里。
理解 Zero-Shot, One-Shot, 和 Few-Shot 学习
在机器学习,特别是计算机视觉领域,我们经常希望模型能够像人类一样,通过极少量的样本甚至仅仅通过描述就能认识新事物。Zero-Shot, One-Shot, 和 Few-Shot 学习就是旨在实现这一目标的关键技术。这些术语描述了模型在面对一个从未见过的“新类别”时,学习和识别它所需要的样本数量。 基础:在“基类”上预训练 所有这些学习范式都有一个共同的起点:一个在大量标注数据(包含丰富的“基类”或“可见类”,Seen Classes)上预训练好的模型。这个预训练阶段的目的并非让模型记住这些基类,而是让它学习到一种通用的、可迁移的能力,例如: 学会提取鲁棒且有意义的视觉特征。 学会如何“学习”和“比较”(即元学习或度量学习)。 学会关联图像的视觉空间和文字的语义空间。 有了这个强大的预训练模型作为基础,我们才能讨论它如何应对“未见类别”。 Zero-Shot Learning (零样本学习) 当模型需要识别一个新类别,但没有任何(K=0)该类别的图像样本时,我们称之为零样本学习。 工作原理: 既然没有图像样本,模型依赖于辅助的语义信息 (Semantic...
300 元 Mac mini 秒变家用 Nas
最近一直想组一个 NAS,正好家里有闲鱼上二手淘来本来想用来当跳板机的 Mac mini,可以直接用上。 最开始本来想的是,用虚拟机装飞牛,当时想着刷一个初始化一下,结果把系统整没了,也装不回来了,直接一不做而不休,直接刷个飞牛,也不搞虚拟机了。整个过程比想象的简单多了,我基本上就参考了这一个 blog,过程还是比较详细的。 制作引导 U 盘最好找一个 16 G 的,不过我用的都是 8 G 的,也是初中的时候剩下的,正好能用上,用的工具是 BalenaEtcher,它有 Mac 版本,把飞牛的 iso 文件刷进去就可以了。我整个操作都非常丝滑,一点报错没有。 后面的装系统也是,就按照前面那个 blog 的流程走就行。 成品如下: 目前有点问题的地方就是理论上我应该是一个千兆网口,不知道为什么是个飞牛识别出来是个百兆,不知道卡在哪里了。 其次就是家里没有 ipv6 这就意味着在外网看流畅看视频基本不太可能了,感觉再申请一个然后搞 DDNS 也挺麻烦,我在美国是有 ipv6 的,但是 DDNS...
多模态中的 Single String 与 Two String
多模态AI如何理解世界?一文读懂单序列与双序列模型 多模态人工智能的浪潮正在席卷而来,从能够理解图片和文字的 LLaVA,到能生成视频的 Sora,AI 正在以前所未有的方式将不同类型的信息联系起来。 那么,这些多模态模型究竟是如何将图像、文本等不同模态的信息融合在一起的呢? 目前,主流的架构可以归纳为两大阵营:**单序列(Single String)**和双序列(Two String)。理解这两种范式,就能抓住多模态模型的核心。 1. 单序列(Single String)方法:一次看懂,全局理解 核心思想:将所有模态的数据都转化为同一种“语言”(Token),然后将它们像串珠子一样拼接成一个长长的序列,交给一个统一的 Transformer 模型进行处理。 这就像是“一图胜千言”。模型将图像视为一长串“视觉词汇”,将它们与文本中的普通词汇放在一起,在同一个注意力空间中进行交互和理解。 工作流程: 图像编码:将一张图片分割成许多小块(Patches)。 特征投影:使用一个视觉编码器将这些 Patches 转化为一系列图像 Token,并投影到与文本 Token...
StreamMUSE
Fake Offline def fake_offline(): model = load_from_checkpoint(model_path) # Convert midi file to tensor # midi file -> [1, num_logical_ticks, max_polyphony*2] x_mel, x_acc = conter_midi_to_tensor(midi_path) # fake inference round for i in range(n_round): # get right prompts prompt_length_i = prompt_length + i*gen_interval_ticks x_mel_pre = get_proper_mel_prompt_length(prompt_length_i) x_acc_pre = get_proper_acc_prompt_length(prompt_length_i) x =...
标准卷积过程
在看 MLSys 相关的东西的时候,经常能看到准对卷积操作做的优化,但是我总是忘卷积操作具体是怎么做的,在这里记一下。 标准卷积计算过程 输入图片的维度: 一张彩色图片通常有三个维度:高度 (H) x 宽度 (W) x 输入通道数 (C_in)。对于 RGB 图片,C_in 通常是 3。 单个卷积核的维度: 一个卷积核(或称为滤波器)的完整形状是 核高 (K_H) x 核宽 (K_W) x 输入通道数 (C_in)。 例如,如果输入图片有 3 个通道(RGB),并且你使用 3×3 的卷积核,那么一个卷积核的实际形状是 3×3×3。它包含了对应每个输入通道的 3×3 切片。 卷积操作的内部过程: 当一个卷积核在输入图片的某个局部区域滑动时,它会进行以下操作: 逐通道相乘: 卷积核的每个切片会与输入图片对应通道的局部区域进行逐元素的乘法。 求和: 将所有通道上(例如 RGB...