<ul class="dashed" data-apple-notes-indent-amount="0"><li><span style="font-family: '.PingFangUITextSC-Regular'">文章标题:</span>Cones: Concept Neurons in Diffusion Models for Customized Generation</li><li><span style="font-family: '.PingFangSC-Regular'">文章地址:</span><a href="https://arxiv.org/abs/2303.05125">https://arxiv.org/abs/2303.05125</a> </li><li>ICML 2023</li></ul> <img src="https://res.cloudinary.com/montaigne-io/image/upload/v1729304804/8FA688CF-8BBE-4C12-894D-98025037E23A.png" style="background-color:initial;max-width:min(100%,1164px);max-height:min(1078px);;background-image:url(https://res.cloudinary.com/montaigne-io/image/upload/v1729304804/8FA688CF-8BBE-4C12-894D-98025037E23A.png);height:auto;width:100%;object-fit:cover;background-size:cover;display:block;" width="1164" height="1078"><ul class="dashed" data-apple-notes-indent-amount="0"><li></li></ul> 人脑对于不同语义特征的刺激会有不同的神经元做出反应。文章探讨现代的深度神经网络是否也存在这种行为。具体来说,文章在扩散模型中找到了对特定概念做出反应的神经元的小集合。作者称这些神经元为概念神经元,可以通过特定概念的刺激,对网络中梯度进行数据分析来识别这些神经元。这些概念神经元在对生成结果的解释性和编辑性展示了非常吸引人的特性。关闭这些神经元(将值设为0)可以直接生成对应的概念在不同的场景中。将多个概念神经元集合串联起来可以清晰地在一张图片中生成所有相关的概念,更进一步微调几步可以增强多概念的生成能力,可能是第一个可以可控生成四个及以上概念在一张图像的方法。对于大规模应用,这些概念神经元对硬件环境非常友好,因为仅需要存储一个稀疏的整数索引的集合,而不是float32类型的值,相比之前的对象驱动的生成方法减少了90%的存储消耗。 具体来说,这些概念神经元就是扩散模型中的一些参数,并且只聚焦于模型中的KV层,这些参数如果满足以下条件,就视为我们的概念神经元: <img src="https://res.cloudinary.com/montaigne-io/image/upload/v1729309321/878134AE-49C9-4145-80B9-6738F029BBF3.png" style="background-color:initial;max-width:min(100%,800px);max-height:min(384px);;background-image:url(https://res.cloudinary.com/montaigne-io/image/upload/v1729309321/878134AE-49C9-4145-80B9-6738F029BBF3.png);height:auto;width:100%;object-fit:cover;background-size:cover;display:block;" width="800" height="384"> 其实很好理解:我们的目的是找到一组参数,该参数满足其绝对值减少时,DreamBooth的重建损失也会减少,因此对于正参数来说,其梯度大于0,对于负参数来说,其梯度小于0。从而作者就提出了主图中的算法,来识别这些概念神经元:首先这些神经元从0到初始值都满足上面的条件,可以放宽这个条件,即从中间进行K次采样,其和大于某个特定的超参数,对于采样作者设计了一个方式,该采样方式在参数值与其对应的梯度值相乘的绝对值非常小的时候采样更稠密,相反更稀疏,从而可以同时过滤掉那些满足条件比较模糊的区域的参数。 下图可见,在关闭概念神经元之后,特定的token的注意力图呈现了特定概念的轮廓。说明了这些神经元与相关的概念具有很强的联系。 <img src="https://res.cloudinary.com/montaigne-io/image/upload/v1729309968/8A5565E4-4AE4-438B-9BA5-AF2BB3006C9B.png" style="background-color:initial;max-width:min(100%,1550px);max-height:min(558px);;background-image:url(https://res.cloudinary.com/montaigne-io/image/upload/v1729309968/8A5565E4-4AE4-438B-9BA5-AF2BB3006C9B.png);height:auto;width:100%;object-fit:cover;background-size:cover;display:block;" width="1550" height="558"> 并且,在神经元的值于不同精度下,其结果都非常接近,这展示了控制对象生成中这些概念神经元的鲁棒性。 <img src="https://res.cloudinary.com/montaigne-io/image/upload/v1729310170/B46D8235-D037-45AC-87C8-F2105375C7E1.png" style="background-color:initial;max-width:min(100%,1588px);max-height:min(956px);;background-image:url(https://res.cloudinary.com/montaigne-io/image/upload/v1729310170/B46D8235-D037-45AC-87C8-F2105375C7E1.png);height:auto;width:100%;object-fit:cover;background-size:cover;display:block;" width="1588" height="956"> 概念神经元还具有良好的叠加性,用于多概念生成。如下图,同时将两个对象的概念神经元关闭,可以实现两个概念的同时生成。 <img src="https://res.cloudinary.com/montaigne-io/image/upload/v1729310378/63CBFCB9-2309-4C4D-B8D9-1497F7646D65.png" style="background-color:initial;max-width:min(100%,1200px);max-height:min(686px);;background-image:url(https://res.cloudinary.com/montaigne-io/image/upload/v1729310378/63CBFCB9-2309-4C4D-B8D9-1497F7646D65.png);height:auto;width:100%;object-fit:cover;background-size:cover;display:block;" width="1200" height="686"> 对于多个对象的生成,可以将这些概念神经元组合起来,通过进一步微调,可以得到更加精细的概念神经元集合掩码。 <img src="https://res.cloudinary.com/montaigne-io/image/upload/v1729326281/264B6D0A-ED77-42E6-903C-58459815072C.png" style="background-color:initial;max-width:min(100%,1162px);max-height:min(658px);;background-image:url(https://res.cloudinary.com/montaigne-io/image/upload/v1729326281/264B6D0A-ED77-42E6-903C-58459815072C.png);height:auto;width:100%;object-fit:cover;background-size:cover;display:block;" width="1162" height="658"> 并且,文章还展示了不同概念的神经元共享的神经元的数量是非常少的,并且将不同概念的神经元组合起来的集合与从头开始发现他们的集合有超过50%的相似度。 <img src="https://res.cloudinary.com/montaigne-io/image/upload/v1729326686/2F4ED6E4-B515-49C7-BBE2-6369C0A75067.png" style="background-color:initial;max-width:min(100%,1184px);max-height:min(804px);;background-image:url(https://res.cloudinary.com/montaigne-io/image/upload/v1729326686/2F4ED6E4-B515-49C7-BBE2-6369C0A75067.png);height:auto;width:100%;object-fit:cover;background-size:cover;display:block;" width="1184" height="804"> 最后文章展示了该方法在组合多概念生成的超强能力,比之前的方法都好不少。 <img src="https://res.cloudinary.com/montaigne-io/image/upload/v1729327106/C796722D-3541-4744-ACE5-FB2CB733892F.png" style="background-color:initial;max-width:min(100%,2316px);max-height:min(1890px);;background-image:url(https://res.cloudinary.com/montaigne-io/image/upload/v1729327106/C796722D-3541-4744-ACE5-FB2CB733892F.png);height:auto;width:100%;object-fit:cover;background-size:cover;display:block;" width="2316" height="1890"> <ul class="dashed" data-apple-notes-indent-amount="0"><li>数据:无训练集</li><li>指标:图像对齐度;文本对齐度;(都用CLIP,对于多对象的图像对齐度,文章使用每个概念的对齐度之和来衡量)</li><li>硬件:1 A100</li><li>开源:其第二版:<a href="https://github.com/ali-vilab/Cones-V2">https://github.com/ali-vilab/Cones-V2</a> </li></ul>