生成周刊·第四期


论文

Constitutional AI: Harmlessness from AI Feedback

Anthropic AI由OpenAI前任领导人(包括兄弟姐妹Daniela 和Dario Amodei)创立,于2023年1月发布了对名为Claude的新聊天机器人的有限测试,以与ChatGPT竞争。这篇文章是Anthropic AI发表的关于Claude的一篇论文。不知道为什么,感觉社区好像没太在意的样子。

descript

这篇文章标题就很有趣:宪法AI。人类首先指定几条LLM输出应当遵守的"宪法"(比如无害、比如有帮助),然后让LLM去判断LLM生成的文本是否遵守这些"宪法",借助AI模型的Feedback起到InstructGPT中人类的Feedback的作用,即经过微调+强化学习两步得到一个更符合人类期望的语言模型。这篇文章主旨是control AI behavior more precisely and with far fewer human labels.

前面思路说的比较玄乎,我尝试再low一点总结一下:人预先定义几个分类问题让LLM去做,比如"<一长串问题><一长串回答>,前面的回答是不是有帮助啊?",LLM生成"有/无",就算完成了一个分类问题了。多定义几个分类问题,充当InstructGPT里面的reward函数,节省人工标注成本。

🔼以上就是我一个NLP门外汉大概看文章的感觉了。我感觉在文生图领域利用"RL from AI/Human Feedback"提升图片生成质量是很值得探索的。最近文生图领域已经有文章做了类似的尝试: [2302.12192] Aligning Text-to-Image Models using Human Feedback 。但这篇论文个人感觉做的有些粗糙,浅尝辄止。它落脚点是提升prompt和图片语义一致性,这一点其实不需要或者说也不能用RLHF来解决:一致性差是不是主要原因是SD使用的CLIP的Text Encoder能力不足呢?又或者像DALLE2一样拆出一个prior模块就能比较好的解决这个问题?

另外,文生图模型和LLM还有一个挺核心的区别:LLM能同时完成判别任务和生成任务(虽然判别任务是通过生成完成的)。文生图模型是没法做类似于Constitutional AI这种事情的,需要单独训练另外一个模型来辅助完成。我也挺好奇,如果给定一个prompt,生成一堆图片,然后用其它打分模型比如BLIP2、美学评分等等给生成图片排个序,然后拿排序靠前的图片和prompt组成image-text pair,多收集一些,然后finetune一下文生图模型,效果能改进多少。

回到Constitutional AI这篇文章,其实它几十个名字的作者列表以及第七章的分工总结也挺有意义,方便大公司按名索骥,也可以用来预估搞一个ChatGPT需要的人力以及人员构成。

Control, Control, More Control!

精确地控制文生图模型一直是社区的共同的追求。这一两周ControlNet和T2I-Adapter成了game changer,把AI绘画的可控性提升了一个level。同时这两个论文都支持一个特性:**在SD1.5上训练的辅助网络,其它比如Anything之类的finetune网络同样可用。**这点非常关键。

对这两篇论文的详细介绍我就不多写了(太麻烦了,写生成周刊真的累),直接指路我觉得写的挺好的一篇文章:

精确控制 AI 图像生成的破冰方案,ControlNet 和 T2I-Adapter - 知乎

我这里罗列一下最近看的相关文章:

  1. [2302.08453] T2I-Adapter: Learning Adapters to Dig out More Controllable Ability for Text-to-Image Diffusion Models

  2. [2302.05543] Adding Conditional Control to Text-to-Image Diffusion Models

  3. [2302.02284v1] Design Booster: A Text-Guided Diffusion Model for Image Translation with Spatial Layout Preservation

  4. [2211.13752] Sketch-Guided Text-to-Image Diffusion Models

  5. [2301.07093] GLIGEN: Open-Set Grounded Text-to-Image Generation

  6. [2302.03011v1] Structure and Content-Guided Video Synthesis with Diffusion Models

ReDi: Efficient Learning-Free Diffusion Inference via Trajectory Retrieval

descript
{width=“6.299305555555556in” height=“3.024094488188976in”}

这篇论文非常有意思,之前搜索+文生图的想象空间被限制到了搜文本或者搜图片,这篇文章说,其实Diffusion的轨迹也可以被搜索!通过搜索一个和prompt最相似的轨迹,直接跳过一些Diffusion Step,这样既可以加速图片生成过程,也可以实现一些跨域迁移任务(比如StyleTransfer、Image Translation)。真没想到!

Neural Congealing: Aligning Images to a Joint Semantic Atlas

descript
{width=“6.299305555555556in” height=“1.7756430446194225in”}

这篇"Congealing"相关的论文,主要是demo惊艳了我,能把in the wild图片的主体align到标准姿态。

只言片语

[2302.02070v1] Semantic-Guided Image Augmentation with Pre-trained Models

这篇文章介绍了一个利用BLIP生成caption的策略:同时用Nucleus sampling和Beam search生成caption,再用clip-score排序。其对两种生成caption策略的介绍可控参考。

Nucleus sampling generates more diverse and surprising captions, which contain more new information. Beam search tends to generate safe captions that are common, hence offering less extra knowledge.

we expect the captions to provide further information not limited to objects in the figure, such as background, color, etc.

我感觉,可以在得到不是那么准确但足够丰富的caption后,结合NLP方法拆分caption为属性,这样可以生成原图一些不是那么准确但相关的tag。

之后我搜索了一下,Huggingface 有写过一篇详细介绍不同生成文本方法的博客: How to generate text: using different decoding methods for language generation with Transformers

The Economics of Large Language Models

OneFlow团队有把这个文章翻译成中文: ChatGPT背后的经济账

作者大概估算出:

OpenAI的API定价为0.02美元/1000词,但我们估计其成本约为0.0035美元/1000词,占定价的20%左右。这就意味着:对于一台一直运行的机器而言,其毛利率约为80%。

如果将ChatGPT集成到搜索引擎中,各种优化后,可能"在搜索中融入高性能LLM的成本大约占据当前查询收入的15%(现有的基础设施成本除外)"

训练ChatGPT需要收集哪些数据? Dr Alan D. Thompson – Life Architect

OneFlow团队有把这个文章翻译成中文: ChatGPT数据集之谜

热心的牛人分析OpenAI透露出的一些细枝末节,归纳出ChatGPT/GPT3的训练数据是如何收集的。

[2302.04858v1] Re-ViLM: Retrieval-Augmented Visual Language Model for Zero and Few-Shot Image Captioning

这篇文章是做Retrieval-Augmentation的模型的,需要从大数据库中用CLIP基于图片搜索相关caption,因此这篇文章中包含了很多对于数据集的分析。论文说现有数据集有很多相似图片有不同的caption,同时很多不同的图片有相同的caption。第一种情况挺自然地,比如COCO就是一张图有5个caption;但第二种情况之前还没想过。文章将多张图片有相同caption的情况分为以下三种:

descript
{width=“6.299305555555556in” height=“3.8775273403324584in”}

三种数据对本论文这种基于搜索增广的方法都是有害的,但不一定不利于VL预训练。比如类型2,我感觉也没啥太大问题。但第三种类型的数据可能表明caption的描述性不够,而第一种数据则图文不一定匹配。

本篇论文也介绍了一些在做基于搜索增广的方法时应该注意的数据处理方法。比如如何找数据集中存在很强相关性的image-text samples(构造image-text interleaved datasets):

  1. 用CLIP Image Embedding的**L2距离(归一化过的)**在0.4-0.6之间去卡相关的样本。作者认为L2距离太近了可能导致找到的相关图片其实都是同一张图片加水印,crop等等的结果。这里用L2距离也挺有趣,没懂为啥。

  2. 在第一步筛出来的数据中,找到caption的clip text embedding最像的4个样本。这样构成了一组内容相近的5对 text-image samples。

链接

  1. AIGC 艺术家样式库 lib.KALOS.art 包含1300+艺术家共3万余张 4v1 样式图片,由Midjourney、SD1.5、SD2.1分别生成。每个艺术家都生成了8~11种常见主题,如 人像、风景、科幻、街景、动物、花卉等主题。可以当作一个很好的艺术家索引,看上哪个艺术家了,就把他加入prompt。(虽然不知道艺术家本人乐意不乐意)。

  2. https://twitter.com/justLV/status/1626281106927669248 首先将多视角的视频主体转成" Layered Neural Atlases",然后通过img2img转化成期望的风格,之后再投影回去。是一种感觉很合理的,为3维物体上纹理(替换纹理)的方案。

  3. 通向AGI之路:大型语言模型(LLM)技术精要 - 知乎 ChatGPT今年在公众视角爆红后,出现了一堆解读的文章,但看下来,还是这篇讲解更为深入,是写给行内人的好文章。

  4. Why did all of the public reproduction of GPT-3 fail? In which tasks should we use GPT-3.5/ChatGPT? 作者分析了一下为啥开源的大模型虽然参数量和GPT3比较接近,但性能差很多。每次训练大模型都是在赌,工程太大了,随便一个地方出现短板就会导致结果不好。

  5. Color Coded Text Generation - a Hugging Face Space by joaogante 原来NLP模型在生成文本的时候,每个文本span是存在一个对应的概率的,可视化出来后,能debug模型到底哪部分很确定,哪部分不确定。

  6. GitHub - toshiaki1729/stable-diffusion-webui-text2prompt: Extension to generate prompt from simple text for SD web UI by AUTOMATIC1111 偶然看到的一个小项目,挺有意思的。将用户输入的prompt和现有的tag根据相似度替换,这样把一个完整的句子,替换成多个Danbooru的tag。这样的做法配合上根据Danbooru tag训练的模型,能取得更好的效果。另外这个操作发展一下也可以用来给用户任意输入的文本"消毒",避免风险。

  7. Release Controllable Generation: Pix2Pix0, Attend and Excite, SEGA, SAG, ... · huggingface/diffusers · GitHub diffuers又出了一个大版本,这次包含很多能提升生成图片是可控性的方法。本来这里面有好几篇文章我都想单独介绍的,结果发现diffusers甚至将它们合并到了一个release里面。这次release我主要关注下面这些新东西:

    a. Attend and excite。这个方法能提升模型对"一只猫和一只企鹅"这种多主体prompt的生成能力。本来甚至期待这方法能在多人img2img下发挥作用,但现在ControlNet一出,估计只需要参考参考思路了...

    b. MultiDiffusion panorama 这个方法能在一幅图里面融合多个prompt生成的结果。应该重点看看这个方法是怎么保证融合自然的。它放出的效果图有点吸引我。另外可以和 GitHub - albarji/mixture-of-diffusers: Mixture of Diffusers for scene composition and high resolution image generation这个方法对比一下?

    c. 可以通过conda/pip install xformers来安装xformers了,避免了每次编译或复制编译结果。

    d. diffusers测试了PyTorch2.0加持下SD的速度。下面的加速表可以参考。很棒!


GPU Batch Vanilla xFormers PyTorch2.0 SDPA + Speed over Size Attention SDPA torch.compile xformers (%)

A100 10 12.02 8.7 8.79 7.89 9.31

A100 16 18.95 13.57 13.67 12.25 9.73


  1. I Like Flan - a Hugging Face Space by osanseviero 对比FLAN-T5和T5。体验下指令式与原来的NLP模型的区别。(其实我还是没太悟出来为啥FLAN就好。

  2. Plug-and-Play Diffusion Features for Text-Driven Image-to-Image Translation 用SD做img2img的一堆论文里贴图看起来比较好的一篇。不过说起来,相关文章太多了,也不知道哪个最好用...看不过来了!

  3. Danbooru 标签超市 Danbooru的标签体系非常庞杂,这个网站有对tag的树状整理。工作量很大,感激!这个网站还开源了,数据都有。真的,太贴心了...

  4. Token Merging: Your ViT but faster Meta的一篇论文,Transformer的token预先做一个融合,然后再做attention操作,这样可以加速,策略听起来很合理。git repo说是会公开SD加速的效果,期待一下。