【EMNLP 2023】面向Stable Diffusion的自動Prompt工程算法

近日,阿里云人工智能平臺PAI與華南理工大學朱金輝教授團隊合作在自然語言處理頂級會議EMNLP2023上發表了BeautifulPrompt的深度生成模型,可以從簡單的圖片描述中生成高質量的提示詞,從而使文生圖模型能夠生成更美觀的圖像。BeautifulPrompt通過對低質量和高質量的提示進行微調,并進一步提出了一種基于強化學習和視覺信號反饋的技術,以最大化生成提示的獎勵值。

論文:

Tingfeng Cao, Chengyu Wang, Bingyan Liu, Ziheng Wu, Jinhui Zhu, Jun Huang. BeautifulPrompt: Towards Automatic Prompt Engineering for Text-to-Image Synthesis. EMNLP 2023 (Industry Track)

背景

文生圖是AIGC中最引人注目和廣泛應用的技術之一,旨在通過文本輸入創建逼真的圖像。最近,隨著大型模型建模能力的提升,文生圖模型得到快速的發展。大規模的TIS模型,如DALLE-2、Imagen和stable diffusion,顯著提高了最先進的性能,并允許沒有藝術專業知識的用戶通過個人想象力創建前所未有的圖像。

然而,文成圖模型要求用戶在模型推理之前編寫文本提示(例如“一艘雄偉的帆船”)。編寫滿足設計師或藝術工作者需求的這些提示充滿了不確定性,就像開盲盒一樣。這是由于訓練數據的質量問題,導致需要詳細的描述才能生成高質量的圖像。在現實場景中,非專家往往很難手工編寫這些提示,并且需要通過試錯的迭代修改來重新生成圖像,從而導致時間和計算資源的嚴重浪費。

提示工程(prompt engineering)是一個新興的研究領域,旨在探索如何為深度生成模型提供提示,并提高人與AI之間直接交互的效率。因此,我們關注于大語言模型(LLM)自動地生成高質量的提示詞,下圖展示了使用簡單的圖片描述和BeautifulPrompt之后生產的圖片。

算法概述

數據收集

我們提出一個自動化收集prompt優化的數據集方案:

原始數據源是DiffusionDB,它只包含未配對的提示。啟發式地,我們根據提示的長度、提示中包含的某些標簽等將提示分為低質量提示和高質量提示。

接下來,我們

i)使用BLIP 對與高質量提示相關的圖像進行caption,并將結果視為相應的低質量提示,因為說明文字較短且缺乏細節;

ii)使用ChatGPT對高質量的提示進行總結,并將總結視為低質量的提示;

iii)使用ChatGPT從低質量的提示生成更好的提示;結果被認為是高質量的提示。

通過以上三種方法,我們獲得了大量的提示對;然而,這些提示對的質量無法保證。因此,我們需要進行進一步的數據清理和過濾。我們清洗了包含色情、政治敏感等不適合工作場景的數據,并對圖片的美觀值進行篩選。得到最終的數據集。與InstructGPT類似,我們采用了三階段的訓練,整體訓練架構圖如下:

Step 1. SFT

給定提示對的數據集D=\{(\mathbf{x},\mathbf{y})\},其中包含低質量提示對\mathbf{x}和高質量提示對\mathbf{y},我們對僅解碼器語言模型(BLOOM)進行微調,以輸出具有給定指令和低質量提示的高質量令牌token\mathbf{y} = \{y_1, ..., y_n \}

我們使用自回歸語言建模目標來微調語言模型:

\mathcal{L}_{sft} = - \sum_i \log P(y_i\mid \mathbf{x}, y_1, ..., y_{i-1})

Step 2. RM

我們基于PickScore 和 Aesthetic Score來訓練獎勵模型。

簡單地說,PickScore是一個基于文本到圖像提示和真實用戶偏好的大型數據集訓練的偏好模型,它在預測人類對圖像的偏好方面表現出超人的表現。我們計算低質量提示和相應高質量提示生成的圖像的PickScore。為了減少隨機種子對TIS模型生成的圖像質量的影響,我們使用8種不同的隨機種子生成圖像并對結果進行平均。計算的平均PickScore\mathbb{PS} 被用作訓練獎勵模型的基礎真相。損失函數為:

\mathcal{L}_{ps} = - \frac{1}{N}\sum_i^N \text{MSE}(r_{ps}(\mathbf{x}, \mathbf{y}), \mathbb{PS}),

其中r_{ps}(\mathbf{x}, \mathbf{y})是提示對(\mathbf{x},\mathbf{y})的獎勵模型的標量輸出。MSE是均方誤差。N為樣本總數。

類似地,獎勵模型還被訓練以將圖像中的相應提示與美學分數匹配\mathbb{AES}:

其中r_{aes}(\mathbf{y})是獎勵模型的標量輸出。

最后,我們使用\alpha作為平衡因子,將兩個獎勵模型的得分組合為最終獎勵:

r(\mathbf{x}, \mathbf{y}) = \alpha \cdot r_{ps}(\mathbf{x}, \mathbf{y}) + (1 - \alpha) \cdot r_{aes}

Step 3. PPO(RL)

由于收集到的數據集不可避免地包含一些噪聲,例如,低質量提示與相應的高質量提示之間的一致性相對較低,因此監督訓練模型\rho的性能可能不令人滿意。為了進一步提高模型性能,我們初始化一個策略\pi = \rho,然后微調\pi來使用強化學習執行任務。我們利用近端策略優化(PPO) 算法直接優化預期獎勵:

\mathbb{E}_{\mathbf{x}\sim D, \mathbf{y} \sim \pi(\cdot \mid \mathbf{x})} [r(\mathbf{x}, \mathbf{y}) - \beta\cdot\log \frac{\pi(\mathbf{y}\mid\mathbf{x})}{\rho (\mathbf{y}\mid\mathbf{x})}],

其中\beta為Kullback-Leibler (KL)罰系數。它可以防止政策偏離\rho。我們在這里采用自適應KL懲罰。

算法評測

為了驗證BeautifulPrompt的有效性,我們在一些基于模型打分的客觀指標和人類主觀評估上做了實驗:

我們也對算法的模塊進行了詳細有效性分析,我們可以算法的各個流程都是有效的。

為了更好地服務開源社區,BeautifulPrompt算法的源代碼即將貢獻在自然語言處理算法框架EasyNLP中,歡迎NLP從業人員和研究者使用。

EasyNLP開源框架:GitHub - alibaba/EasyNLP: EasyNLP: A Comprehensive and Easy-to-use NLP Toolkit

參考文獻

  • Chengyu Wang, Minghui Qiu, Taolin Zhang, Tingting Liu, Lei Li, Jianing Wang, Ming Wang, Jun Huang, Wei Lin. EasyNLP: A Comprehensive and Easy-to-use Toolkit for Natural Language Processing. EMNLP 2022
  • Stiennon, Nisan, et al. "Learning to summarize with human feedback." Advances in Neural Information Processing Systems 33 (2020): 3008-3021
  • Rombach, Robin, et al. "High-resolution image synthesis with latent diffusion models." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2022
  • Kirstain, Yuval, et al. "Pick-a-pic: An open dataset of user preferences for text-to-image generation." arXiv preprint arXiv:2305.01569 (2023)

論文信息

論文標題:BeautifulPrompt: Towards Automatic Prompt Engineering for Text-to-Image Synthesis
論文作者:曹庭鋒、汪誠愚、劉冰雁、吳梓恒、朱金輝、黃俊
論文pdf鏈接:https://arxiv.org/abs/2311.06752

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214509.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214509.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214509.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android--Jetpack--Databinding源碼解析

慢品人間煙火色,閑觀萬事歲月長 一,基本使用 關于databinding的基本使用請看之前的文章 Android--Jetpack--Databinding詳解-CSDN博客 二,xml布局解析 分析源碼呢,主要就是從兩方面入手,一個是使用,一個…

STM32F407-14.1.0-01高級定時器簡介

TIM1 和 TIM8 簡介 高級控制定時器(TIM1 和 TIM8)包含一個 16 位自動重載計數器,該計數器由可編程預分頻器驅動。 此類定時器可用于各種用途,包括測量輸入信號的脈沖寬度(輸入捕獲),或者生成輸出…

微軟NativeApi-NtQuerySystemInformation

微軟有一個比較實用的Native接口:NtQuerySystemInformation,具體可以參考微軟msdn官方文檔:NtQuerySystemInformation, 是一個系統函數,用于收集特定于所提供的指定種類的系統信息。ProcessHacker等工具使用NtQuerySys…

Javascript 數組array賦值與取值

Javascript 數組array賦值與取值 目錄 Javascript 數組array賦值與取值 一、數組元素的賦值 1、在創建Array對象時直接賦值 2、利用Array對象的元素下標對數組進行賦值 二、數組元素的獲取 一、數組元素的賦值 對數組元素賦值共有2種方法: (1&am…

每日一題,頭歌平臺c語言題目

任務描述 題目描述:輸入一個字符串,輸出反序后的字符串。 相關知識(略) 編程要求 請仔細閱讀右側代碼,結合相關知識,在Begin-End區域內進行代碼補充。 輸入 一行字符 輸出 逆序后的字符串 測試說明 樣例輸入&…

項目實戰第四十七講:易寶支付對接詳解(保姆級教程)

易寶支付對接(保姆級教程) 為了實現項目的支付需求,公司選擇了易寶支付進行對接,本文是項目實戰第四十七講,詳解易寶支付對接。 文章目錄 易寶支付對接(保姆級教程)1、需求背景2、流程圖3、技術方案4、相關接口4.1、入駐相關(商戶入網)4.2、賬戶相關接口(充值、提現、…

【LVGL】STM32F429IGT6(在野火官網的LCD例程上)移植LVGL官方的例程(還沒寫完,有問題 排查中)

這里寫目錄標題 前言一、本次實驗準備1、硬件2、軟件 二、移植LVGL代碼1、獲取LVGL官方源碼2、整理一下,下載后的源碼文件3、開始移植 三、移植顯示驅動1、enable LVGL2、修改報錯部分3、修改lv_config4、修改lv_port_disp.c文件到此步遇到的問題 Undefined symbol …

Vue路由守衛筆記

路由守衛 當路由切換時,判斷權限 路由守衛類型 1.全局守衛 2.獨享守衛 3.組件內守衛 1.全局守衛 1.前置路由守衛 全局前置路由守衛————初始化的時候被調用、每次路由切換之前被調用 在需要加上路由守衛的路由配置中加上 meta:{isAuth&#xff1…

x的平方根算法(leetcode第69題)

題目描述: 給你一個非負整數 x ,計算并返回 x 的 算術平方根 。由于返回類型是整數,結果只保留 整數部分 ,小數部分將被 舍去 。注意:不允許使用任何內置指數函數和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。…

react中img引入本地圖片的方式

在html文件中,可以直接<img src=./roadBook.png /> 但是在jsx文件中,不支持這種寫法 必須這樣寫 在css樣式中 App.css .img{background: url(./img/roadBook.png) }App.js import ./App.css;<div className=img></div> 1.基于es6Module //導入 import…

【PTA-C語言】實驗五-一維數組

如果代碼存在問題&#xff0c;麻煩大家指正 ~ ~有幫助麻煩點個贊 ~ ~ 實驗五-一維數組 7-1 查找整數&#xff08;分數 15&#xff09;7-2 交換最小值和最大值&#xff08;分數 15&#xff09;7-3 簡化的插入排序&#xff08;分數 15&#xff09;7-4 刪除指定數據&#xff08;分…

node14升級node16之后,webpack3項目無法啟動處理

node從14升級到16之后&#xff0c;項目就無法啟動了&#xff0c;研究了webpack3升級5&#xff0c;研究好幾個小時都無法啟動&#xff0c;最后發現&#xff0c;微微升級幾個版本就可以了。webpack還是3 版本改了好多個的&#xff0c;但是不確定具體是哪幾個起作用的&#xff0c;…

var、let、const 的區別?

var 1、var 聲明的變量在全局內有效 2、可以重復聲明 3、var 聲明的變量存在變量提升 let 1、遇到{}可開啟塊級作用域 2、不能重復聲明--- 可以防止變量重復定義產生的沖突&#xff0c;會直接報錯 3、let 聲明的變量不存在變量提升 const 1、const 聲明…

解讀unity內置的軟陰影處理方式

解讀unity內置的軟陰影處理方式&#xff1a; 參考網址&#xff1a; https://blog.csdn.net/cgy56191948/article/details/105726682 https://blog.csdn.net/weixin_45776473/article/details/119582218 https://tajourney.games/5482/ 上面的博客已經論述了&#xff0c;為何出現…

個人博客搭建保姆級教程-Nginx篇

官方文檔 nginx documentation 說明 nginx是我們本次教程使用的http服務器。它能承受很高的并發&#xff0c;并且安裝簡單&#xff0c;占用內存少。 在服務器篇我們提到了nginx的安裝&#xff0c;在發布篇我們簡述了該怎么放置我們創建的博客html文檔。 在本篇&#xff0c…

css的復合選擇器(有案例)

目錄 復合選擇器的描述 后代選擇器&#xff08;常用重點&#xff09; 子選擇器 并集選擇器&#xff08;重點常用&#xff09; 偽類選擇器 鏈接偽類選擇器 focus 偽類選擇器 知識總結&#xff1a; 案例實現&#xff1a; 復合選擇器的描述 在 CSS 中&#xff0c;可以根…

日志門面slf4j和各日志框架

簡介 簡單日志門面(Simple Logging Facade For Java) SLF4J主要是為了給Java日志訪問提供一套標準、規范的API框架&#xff0c; 其主要意義在于提供接口&#xff0c;具體的實現可以交由其他日志框架&#xff0c;如log4j、logback、log4j2。 對于一般的Java項目而言&#xff…

一個用于處理嵌入式系統中的 NAND Flash 存儲器的工具 `kobs-ng`

一個用于處理嵌入式系統中的 NAND Flash 存儲器的工具 kobs-ng kobs-ng 是一個用于處理嵌入式系統中的 NAND Flash 存儲器的工具。它是 U-Boot&#xff08;開源引導加載程序&#xff09;中的一個子項目&#xff0c;用于擦除、寫入和讀取 NAND Flash 設備上的數據。 以下是 kob…

SpringData JPA 搭建 xml的 配置方式

1.導入版本管理依賴 到父項目里 <dependencyManagement><dependencies><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-bom</artifactId><version>2021.1.10</version><scope>…

【力扣100】238.除自身以外數組的乘積

添加鏈接描述 class Solution:def productExceptSelf(self, nums: List[int]) -> List[int]:# 構造第i個數的左右數組n len(nums)left,right,res [1]*n,[1]*n,[1]*nfor i in range(1,n):left[i] nums[i-1]*left[i-1]for i in range(n-2,-1,-1):right[i] nums[i1]*right…