问题:我现在正在学习扩散背后的方法(DDPM、基于分数的方法和其他方法)。我想知道研究人员究竟是如何提出这个想法的?
发明新方法的过程是这样的吗?
- 我们想制作更好的图像生成器。
- 哦,数据永远都不够......
- 让我们通过添加一些噪声破坏来乘以数据
- 这样做效果不错,如果我们制作一个去噪网络呢?
- 如果我们制作一个网络,从纯噪声中生成图像呢?
- 这样不行,如果我们把去噪步骤做得更小一些呢?
- 这样就成功了!现在,让我们创建一些理论来解释它为什么有效。
- 撰写论文
或者像这样?
- 我们想制作更好的图像生成器。
- 我们非常了解 "非平衡热力学",并想尝试以某种方式应用它
- 我们以某种方式想出了一种依赖于该理论数学的算法
- 成功了
- 我们撰写论文。
通常哪个在先?数学还是算法?
网友回答:
1、在人们如何提出这些想法的过程中,你忘记了一个步骤,那就是文献综述!人们会从许多其他人的工作中得到了启发,这些工作与 DDPM 论文中的内容非常相似。
我认为一般的过程是:
- -通过阅读论文了解该领域
- 找出应用/方法中的漏洞
- 提出新方法来填补这些漏洞
- 用现有的理论来支持这些方法,或许再加上一点自己的理论
我不认为人们会在阅读了该领域的论文后直接提出新理论,然后将其付诸实施。尽管在大多数论文中,介绍会让你相信是按照这样的顺序进行的(介绍、背景、理论、应用)。
我也在研究扩散理论,学习曲线非常陡峭,但一旦你习惯了,就会发现都是一样的东西,朗热文、贝叶斯等等。
2、实际上,我也在研究基于扩散/分数的模型,学习曲线很陡峭,因为它包含了从统计学、物理学和其他领域借鉴的理论。而这些理论已经非常庞杂和先进,因此要快速掌握其中的概念并不容易。我学得越深,就越复杂,但我经常能学到一些新的有趣的东西。
3、从外观上看,这些想法似乎不知从何而来。但如果你多年来一直在思考去噪和变异自动编码器,那么扩散模型的想法就是这些想法的自然综合。
4、就扩散模型而言,我认为最初的研究人员具有物理学背景,并从物理学的角度研究了生成模型。直到一些博士生将其与架构工程结合起来,几年后人们才意识到这一点。
一般来说,我认为研究人员在学习过程中会开发一套他们喜欢的技术工具包,
- 当他们研究问题时,通常会通过这套工具包的视角来看待问题。
- 这个工具包可以是任何东西:理论、数值近似、算法、架构等。
- 这就是为什么博士生的 "探索-开发 "策略能取得很好的效果。
- 如果你跟踪研究人员或实验室的工作,工具包通常会显露出来。
- 这也是为什么你经常能看到一些论文写着 "X 就是 Y",比如随机优化就是贝叶斯推理。
5、你想研究信息论和概率分布的偏微分方程(想想福克-普朗克和随机与扩散过程--微分方程),这是一个奇妙的数学领域,有着令人难以置信的深度和深远的应用。
我想你会真正体会到它的广度和深度,但要记住这一点。
应用数学并不总是对一门学科公正,我相信更多的是想法和直觉:
- 最终你会在研究图论时看到同样的想法被应用到信息传播、影响传播、数据传播等方面......
这就是你通往神经网络和 Ai 扩散的道路。
发明新算法源于一个创造性的过程:
- "如果我这样做而不是这样做会怎样",
- "这样做能改进吗?
- 然后是 "为什么"<--这就是你的数学,但你首先需要知道其他算法 "为什么 "会起效。
在许多情况下,如果你看一下基础论文,你正在研究的想法就是在这篇论文中提出的,然后再看看研究人员的背景,我还没见过没有数学家参与的论文。
6、另外,我想我有点应付了事,因为这些数学知识真的很难消化,如果这些研究人员先提出理论,然后再进行实际应用,我会觉得不可思议。对我来说,那真是不可思议。
如果实际实现不成功怎么办?不知怎么的,我觉得开发代码比开发理论更省钱。也许我只是有偏见(我 90% 的工作都是软件)。
7、如果您已有统计学背景,这根本不是什么大问题。有一个定理叫做 Rao-Blackwell 定理,说的是如果你把一个估计值作为 "充分统计量 "的条件,你就能得到一个更好的估计值。如果你对它已经很熟悉了,就不难看出现有的方法并说:"哦,我知道如何改进它,只要用 Rao-Blackwell 定理就可以了"。这就是 DDIM 所要做的--采用现有的方法,使用现有的工具,使其具有更低的方差。
老实说,很多时候理论比代码更容易开发。主要是因为理论抽象了许多可能的代码实现。如果你在不理解理论的情况下实现了某些东西,而它却不起作用,你该从哪里开始修复呢?你的超参数有问题吗?是否存在漏洞?这个想法是不是从根本上就不对?理论告诉你,如果你从某个假设出发,就会得到某个结果。因此,如果你没有得到预期的结果,那一定是某个假设错了,这就给了你一个开始修正它的地方。这让你对结果有了一定程度的控制,而试验和错误则没有。
8、老实说,通常人们会尝试不同的事情,最终有些事情会奏效。然后他们写下理论/数学来尝试解释为什么会这样。
9、我认为两者都有很多。例如,在 NLP 领域,人们要么以纯粹的语言学为重点,要么以纯粹的计算机科学为重点来解决主要的大模型问题,但有时它们并不能很好地重叠。
10、数学和算法之间通常会有很多来回,但起点取决于个人。有些人有更理论的方法;有些人则有更多的理论方法。他们根据他们试图解决的数学问题仔细构建算法。其他人从猜测开始,计算出数学结果,然后根据需要进行更新。
11、扩散方法与图像变分自动编码器的方法非常相似,其研究根源可以追溯到几十年前。我建议阅读一些最初的论文,并检查引言中使用的参考文献以了解有关该主题的一些历史。
12、算法(工程/执行)是第一位的,如果你是一名研究人员/实践者,试图使用该模型(我的意思是第一位,并不意味着你以后不需要理解它)。在我看来,你确实需要了解基本原理才能创造出新的东西。而作为实践者,你必须能够快速复制并亲眼看到结果。