2024-02-19

大力出奇迹

前几天Sora出来后才仔细看了下diffusion,发觉确实算挺取巧的.

按照naive的intuition或者说不那么现代的方式的话,可能需要segmentaion为基础的composite的方式去生成图片,即使扯点deep learning/network的,可能也是类似一些style transfer之类的加上去,从架构上看是比较可控/微调/可解释一些.

而diffusion的思路其实更类似gan那类.
并不寻求一个符合直觉的正向生成,而是采用了一个逆向的拟合方式.

既然经过network transform之后,天然地至少在某一层是一种没什么visual意义的雪花/噪声图片.
那么换个思路,如果可以拟合出一个反向的逆函数的话,就存在用一组看似噪声的高维数据来生成图片了.

也就是如果已知道一个视觉图像到噪声数据图片的变换
f(visual) -> embed(d) 

然后暴力拟合出一个逆函数.
visual <- f`(embed(d))  = g(embed(d))
的话,事情就简单了.

尤其如果training的时候把d拆成图像本身的一种变换加上prompt/llm space的embedded的两个线性变换去做的话,直觉上就容易出不可控/稳定的文字生成图片了.

因为形式上来说,llm本身有一定的描述能力.
毕竟只要文本源足够大,各种文字/词组之间的关联关系是可以以概率转移函数的形态体现的.

而image的某种transform再线性地见进去做training的话,本质上就是再给定一种新的语言预料去fine tune一种translation而已.
只不过这种新语言可能是一种像素分布的某类维度空间的re-projection.

当然,这只是一种直觉上的理解.

实际的结果可能也像stable diffusion这个ip所提示的那样,这种没有其他regularaion的生成图片可能很容易出现扭曲和错误.

所以基于这个大前提上的进一步的fine tune也可能有其他奇技淫巧.

像OpenAI的Sora白皮书里提到的SDEdit的思路.

它提供的是一种对于图片做一种指定区域re-paint/regenerate或者说patch/inpaint的算是工具网络思路.

大致的思路也是跟diffusion一样是拟合一个逆向函数.
对指定区域对应某个intermediate的高维或者结果的局部做replacement,然后再用拟合的函数正向生成回去.

这样一种局部diffusion的做法的可能的另外一个副产品就是对非patch区域的保真/稳定的一个网络.
毕竟,可能只要稍微调整下reward函数就可以distil出来了.

然后比如通过增减prompt的某些特定部分的差异生成加上这种preserve quality,就容易自身反馈地regularate出比较smooth的结果了吧.

而视频生成的话,看白皮书的意思是把帧间变换的patch当作某种形式的embed/prompt去做的.

所以思路上可能也没什么太大的新东西.

各家的差别可能也就在于training阶段堆叠的这些工具fine tune网络的多少和复杂度以及素材的多样性情况了.

当然,还有一个就是算力的能力/容量问题了.

基本上大力出奇迹这句话算是话糙理不糙.

形式上,这个行业可能更像材料/高分子化学这类略玄学的领域.
需要某种形式的天赋去炼丹碰运气.

你也不能说没有方法论指导.
但是正确的方法论/feature的选取并不能保证能出期望的结果.

毕竟产出的过程其实并不太可控,哪些因素影响结果的预期性其实也是个未知数.

所以某种程度上来说,DeepMind致力于医学和高分子领域这些,倒算是某种天命宿命的冥冥感.


聊聊卡布里尼

最近看了部片叫卡布里尼,算是可能这段时间来比较有意思的一部电影. 故事也不算复杂,就是一个意大利修女去美国传教,建立慈善性质医院的故事. 某种程度上来说,也很一般的西方普世价值主旋律. 但是如果换一套叙事手法,比如共产国际的社会主义革命建立无产阶级广厦千万间的角度来看的话,也不是...