一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

ChatGPT背后的技術(shù)-基于人類反饋的強化學(xué)習(RLHF) 理論篇

 520jefferson 2023-04-11 發(fā)布于日本

作者簡介



作者:Surika

原文:

  https://zhuanlan.zhihu.com/p/616708590

*封面由new bing創(chuàng)作,prompt為depicting pictures about reinforcement learning based on human feedback, impressionism style.

**本文在整理時參考了互聯(lián)網(wǎng)上眾多資料,僅用于學(xué)術(shù)交流,如有侵權(quán)請聯(lián)系。

ChatGPT基礎(chǔ)回顧

ChatGPT不是突然產(chǎn)生的,從最早的GPT一步步進化到今天,是OpenAI背后無數(shù)人多年積累的結(jié)果。中間經(jīng)歷的幾個主要版本:

圖片

GPT家族的發(fā)展歷程

GPT-1 用的是無監(jiān)督預(yù)訓(xùn)練 + 有監(jiān)督微調(diào),只有簡單的單向語言模型任務(wù);

GPT-2用的是純無監(jiān)督預(yù)訓(xùn)練,使用更多的數(shù)據(jù),更大的模型,又新增了幾個輔助的訓(xùn)練任務(wù);

GPT-3 沿用了 GPT-2 的純無監(jiān)督預(yù)訓(xùn)練,但是數(shù)據(jù)大了好幾個量級。它使用45TB的超大規(guī)模數(shù)據(jù),175B的超大參數(shù)量模型。另外加入了Meta-learning的訓(xùn)練任務(wù),提高了Few shot和Zero-shot任務(wù)上的表現(xiàn);

InstructGPT加入了近兩年流行的prompt-learning。另外更重要的是,加入了強化學(xué)習,即RLHF(Reinforcement Learning from Human Feedback),基于人工反饋機制的強化學(xué)習,也是后面著重介紹的模塊。

ChatGPT:目前沒有開源代碼或論文參考,從網(wǎng)上的推測來看,應(yīng)該是在InstructGPT的基礎(chǔ)上,進一步優(yōu)化了多輪對話效果。與其前身InstructGPT相比,ChatGPT試圖減少有害和誤導(dǎo)性的回復(fù)。

下圖是ChatGPT的訓(xùn)練過程,本文要介紹的RLHF技術(shù)主要是第二步和第三步的內(nèi)容:

(1) 利用gpt自回歸式的語言模型在大規(guī)模的語料上進行無監(jiān)督的預(yù)訓(xùn)練,得到生成模型

(2) 然后人工對用戶提示文本后,GPT生成句子的結(jié)果進行打分。產(chǎn)生形式為(提示文本,GPT生成句子,得分)的數(shù)據(jù)集,訓(xùn)練打分模型

(3) 最后利用強化學(xué)習的方式 讓打分模型去優(yōu)化生成模型的效果。

chatgpt效果如此好,主要可以歸結(jié)于兩個原因:

一是訓(xùn)練語料的質(zhì)量、多樣性。openai搭建了40多人的團隊去收集和標注數(shù)據(jù)。而且訓(xùn)練一個gpt3.5大約要花1000多w美刀,所以數(shù)據(jù)和算力不容忽視。

二是基于強化學(xué)習的訓(xùn)練方式。其中(2)(3)步被學(xué)術(shù)界叫做 Reinforcement Learning From Human Feedback 。其實就利用人類的反饋去優(yōu)化 你的目標模型,讓模型輸出更符合人類直覺的結(jié)果。chatgpt 采用PPO算法利用打分模型去進一步優(yōu)化生成模型。

由于數(shù)據(jù)和算力我們無從下手,本著對chatgpt 深入學(xué)習的心態(tài),我們先研究一下chatgpt 強化學(xué)習的部分的基礎(chǔ)知識。

圖片

ChatGPT的訓(xùn)練方法,RLHF主要涉及其中的第二步和第三步

強化學(xué)習背景知識

基礎(chǔ)概念

以下兩頁PPT中講解了強化學(xué)習的一些基礎(chǔ)概念。需要注意的是,強化學(xué)習需要一個交互的過程,而且要解決的是序列決策問題。這里如果要展開還會涉及到馬爾科夫決策過程,本文中先不做過多敘述。

圖片

圖片

強化學(xué)習有許多在游戲上的應(yīng)用。用熟悉的super mario來舉個例子,我們可以操縱的游戲角色mario是可以交互的智能體agent,游戲中每一幀的畫面中要交互的場景即enviroment,游戲角色依據(jù)當前環(huán)境做出新的動作,而環(huán)境會對角色的每個動作作出反饋,例如吃到了金幣會有加成,而被擊中則不是一個好消息,這樣的反饋可以量化為獎勵reward,這種獎勵值可以幫助學(xué)習如何選擇最合適的動作,也就是在交互中學(xué)習。

特點

圖片

強化學(xué)習與監(jiān)督學(xué)習、無監(jiān)督學(xué)習的關(guān)系

這張圖說明了強化學(xué)習與我們熟悉的監(jiān)督學(xué)習、無監(jiān)督學(xué)習的關(guān)系。強化學(xué)習是和監(jiān)督學(xué)習,非監(jiān)督學(xué)習并列的第三種機器學(xué)習方法。

我們可以通過與熟悉的監(jiān)督學(xué)習比較,來說明強化學(xué)習的一些特點。

(1)強化學(xué)習處理的大多數(shù)是序列數(shù)據(jù),其很難像監(jiān)督學(xué)習的樣本一樣滿足獨立同分布。在強化學(xué)習的訓(xùn)練過程中,時間非常重要。因為我們得到的是有時間關(guān)聯(lián)的數(shù)據(jù)(sequential data),而不是獨立同分布的數(shù)據(jù)。在機器學(xué)習中,如果觀測數(shù)據(jù)有非常強的關(guān)聯(lián),會使得訓(xùn)練非常不穩(wěn)定。這也是為什么在監(jiān)督學(xué)習中,我們希望數(shù)據(jù)盡量滿足獨立同分布,這樣就可以消除數(shù)據(jù)之間的相關(guān)性。

(2)在強化學(xué)習過程中,沒有非常強的監(jiān)督者(supervisor),只有獎勵信號(reward signal)。并且獎勵信號是延遲的.

(3)強化學(xué)習智能體會從環(huán)境中獲得延遲的獎勵,即環(huán)境會在很久以后才告訴我們之前所采取的動作到底是不是有效的。因為我們沒有得到即時反饋,所以智能體使用強化學(xué)習來學(xué)習就非常困難。當我們采取一個動作后,如果使用監(jiān)督學(xué)習,就可以立刻獲得一個指導(dǎo),比如,我們現(xiàn)在采取了一個錯誤的動作,正確的動作應(yīng)該是什么。而在強化學(xué)習中,環(huán)境可能會告訴我們這個動作是錯誤的,但是它并不會告訴我們正確的動作是什么。而且更困難的是,它可能是在一兩分鐘過后才告訴我們這個動作是錯誤的。所以這也是強化學(xué)習和監(jiān)督學(xué)習不同的地方。

(4)強化學(xué)習會試錯探索,它通過探索環(huán)境來獲取對環(huán)境的理解。學(xué)習器并沒有告訴我們每一步正確的動作應(yīng)該是什么,學(xué)習器需要自己去發(fā)現(xiàn)哪些動作可以帶來最多的獎勵,只能通過不停地嘗試來發(fā)現(xiàn)最有利的動作。智能體獲得自己能力的過程,其實是不斷地試錯探索(trial-and-error exploration)的過程。探索(exploration)和利用(exploitation)是強化學(xué)習中非常核心的問題。其中,探索指嘗試一些新的動作,這些新的動作有可能會使我們得到更多的獎勵,也有可能使我們“一無所有”;利用指采取已知的可以獲得最多獎勵的動作,重復(fù)執(zhí)行這個動作,因為我們知道這樣做可以獲得一定的獎勵。因此,我們需要在探索和利用之間進行權(quán)衡,這也是在監(jiān)督學(xué)習中沒有的情況。

最后一點,智能體的動作會影響它隨后得到的數(shù)據(jù),這一點是非常重要的。在訓(xùn)練智能體的過程中,很多時候我們也是通過正在學(xué)習的智能體與環(huán)境交互來得到數(shù)據(jù)的。所以如果在訓(xùn)練過程中,智能體不能保持穩(wěn)定,就會使我們采集到的數(shù)據(jù)非常糟糕。我們通過數(shù)據(jù)來訓(xùn)練智能體,如果數(shù)據(jù)有問題,整個訓(xùn)練過程就會失敗。所以在強化學(xué)習中一個非常重要的問題就是,怎么讓智能體的動作一直穩(wěn)定地提升。用下棋來舉個形象的例子,在監(jiān)督學(xué)習中,棋手的上限往往取決于老師的上限,也就是俗話說的”和臭棋簍子下棋,越下越臭“;而在強化學(xué)習的設(shè)置下,即使有著資質(zhì)平平甚至有些笨的起點,也有自己和自己下,有朝一日悟道飛升的可能性。

再來看看強化學(xué)習和非監(jiān)督學(xué)習的區(qū)別。也還是在獎勵值這個地方。非監(jiān)督學(xué)習是沒有輸出值也沒有獎勵值的,它只有數(shù)據(jù)特征。同時和監(jiān)督學(xué)習一樣,數(shù)據(jù)之間也都是獨立的,沒有強化學(xué)習這樣的前后依賴關(guān)系。

可以總結(jié)說,監(jiān)督學(xué)習是從外部監(jiān)督者提供的帶標注訓(xùn)練集中進行學(xué)習,也就是由任務(wù)驅(qū)動型;

非監(jiān)督學(xué)習是一個典型的尋找未標注數(shù)據(jù)中隱含結(jié)構(gòu)的過程,也就是數(shù)據(jù)驅(qū)動型;

強化學(xué)習則更偏重于智能體與環(huán)境的交互, 這帶來了一個獨有的挑戰(zhàn) ——“試錯(exploration)”與“開發(fā)(exploitation)”之間的折中權(quán)衡,智能體必須開發(fā)已有的經(jīng)驗來獲取收益,同時也要進行試探,使得未來可以獲得更好的動作選擇空間,也就是說可以從錯誤中學(xué)習。

圖片

強化學(xué)習和監(jiān)督學(xué)習的概念對應(yīng)

但在NLP的實際實驗中,強化學(xué)習和監(jiān)督學(xué)習也一些概念之間也存在著對應(yīng)的關(guān)系,上圖中做了說明。該圖出處為 HeptaAI:強化學(xué)習一:基礎(chǔ)部分

文本生成中的強化學(xué)習

讓我們落到文本生成的實際場景中。如圖所示,文本生成的問題,可以建模為一個token空間上的序列決策問題(選擇一個token后繼續(xù)選擇另一個token)

  • State:對話上下文

  • Action:回復(fù)的token space上的token

  • Reward:生成的質(zhì)量判別

  • Episode:一次完整的解碼生成回復(fù)的過程

圖片

強化學(xué)習的分類

最后,我們來看強化學(xué)習下算法的分類法。

根據(jù)一種比較通行的分類法,強化學(xué)習可以分為基于值的方法、基于策略的方法和actor-critic方法這三類。

基于值函數(shù)的學(xué)習方法要學(xué)習一個價值函數(shù), 去計算每個動作在當前環(huán)境下的價值,目標就是獲取最大的動作價值,即我每一步采取回報最大的動作和環(huán)境進行互動。Value-Based的方法輸出的是動作的價值,選擇價值最高的動作。適用于非連續(xù)的動作。常見的方法有Q-learning、Deep Q Network和Sarsa。其基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示,在編碼網(wǎng)絡(luò)之后,直接用一個全連接層來為每個狀態(tài)輸出一個分數(shù)。

圖片

基于策略梯度的學(xué)習方法去學(xué)習策略函數(shù),去計算當前前環(huán)境下每個動作的概率,目標是獲取最大的狀態(tài)價值,即該動作發(fā)生后期望回報越大越好。

Policy-Based的方法直接輸出下一步動作的概率,根據(jù)概率來選取動作。但不一定概率最高就會選擇該動作,還是會從整體進行考慮。適用于非連續(xù)和連續(xù)的動作。常見的方法有Policy gradients。從圖中可以看出來,在全連接層之后還有一個softmax層,從而將打分轉(zhuǎn)化成概率。

圖片

Actor-Critic 融合了上述兩種方法,價值函數(shù)和策略函數(shù)一起進行優(yōu)化。價值函數(shù)負責在環(huán)境學(xué)習并提升自己的價值判斷能力,而策略函數(shù)則接受價值函數(shù)的評價,盡量采取在價值函數(shù)那可以得到高分的策略。

圖片

PPO算法

有了前面的基礎(chǔ),就可以引入ChatGPT中實際使用的強化學(xué)習方法,PPO算法,這也是OpenAI的RL工作中常用的算法。本章內(nèi)容主要來自李宏毅老師的強化學(xué)習課程,視頻和課程網(wǎng)站鏈接附在下面。

課程視頻的B站鏈接:李宏毅深度強化學(xué)習(國語)課程(2018)_嗶哩嗶哩_bilibili 

課程網(wǎng)站: Hung-yi Lee

PG算法之前,主流的基于價值的強化學(xué)習算法,在給定一個狀態(tài)下,計算采取每個動作的價值,我們選擇在所有狀態(tài)下具有最大的期望獎勵的行動。如果我們省略中間的步驟,即直接根據(jù)當前的狀態(tài)來選擇動作,也就引出了強化學(xué)習中的另一種很重要的算法,即策略梯度(Policy Gradient, PG)。也就是說,其目的是是直接建模與優(yōu)化Policy

舉例如圖所示:輸入當前的狀態(tài),輸出action的概率分布,依據(jù)概率分布選擇下一個action。

圖片

策略梯度它通過觀測信息選出一個行為直接進行反向傳播,利用reward獎勵直接對選擇行為的可能性進行增強和減弱,好的行為會被增加下一次被選中的概率,不好的行為會被減弱下次被選中的概率。

下一張圖就是policy gradient的具體過程。就是先有一個策略θ,之后用這個策略來收獲很多數(shù)據(jù),收集很多s,a的成對資料,得到一堆游戲記錄,即圖片,獎勵是圖片。這里state是隨機性的,相同的state不見得會有相同的action。然后將收集到的資料帶入公式中,計算梯度,也就是log probability 圖片,然后取gradient,乘上weight,就是當前策略的reward。基于這個reward去更新模型,用更新的模型再來獲取數(shù)據(jù),之后再更新模型,如此循環(huán)反復(fù)。

圖片

之前提到的PG算法,我們有一個agent,他與環(huán)境互動,然后學(xué)習更新,這個過程中的policy都是同一個。因此,當我們更新參數(shù)之后,之前計算的策略的所有概率就都不對了,這時候就需要重新去采樣。之前采樣出來的數(shù)據(jù)都不能用了,換句話說,過程中的數(shù)據(jù)都只能用一次。這就造成了policy gradient會花很多時間在采樣數(shù)據(jù)上,因為所有的數(shù)據(jù)都只能更新一次,更新一次之后就要重新采樣。

因此,有了PPO算法的改進原因。我們希望可以用一個舊策略收集到的數(shù)據(jù)來訓(xùn)練新策略,這意味著我們可以重復(fù)利用這些數(shù)據(jù)來更新策略多次,效率上可以提升很多。具體來說,PPO算法利用重要性采樣的思想,在不知道策略路徑的概率p的情況下,通過模擬一個近似的q分布,只要p同q分布不差的太遠,通過多輪迭代可以快速參數(shù)收斂

重要性采樣的過程如下。開始時x服從于p(x)分布,可以展開為對px計算積分,然后分子分母同乘q(x),通過變形,調(diào)整為從q采樣x,并且需要承上一個權(quán)重p(x)比q(x),來修正p q兩個分布之間的差異。

圖片

總結(jié)來說,近線策略優(yōu)化算法PPO 即屬于AC框架下的算法,在采樣策略梯度算法訓(xùn)練方法的同時,重復(fù)利用歷史采樣的數(shù)據(jù)進行網(wǎng)絡(luò)參數(shù)更新,提升了策略梯度方法的學(xué)習效率。PPO重要的突破就是在于對新舊新舊策略器參數(shù)進行了約束,希望新的策略網(wǎng)絡(luò)和舊策略網(wǎng)絡(luò)的越接近越好。近線策略優(yōu)化的意思就是:新策略網(wǎng)絡(luò)要利用到舊策略網(wǎng)絡(luò)采樣的數(shù)據(jù)進行學(xué)習,不希望這兩個策略相差特別大,否則就會學(xué)偏。

但重要性采樣依然存在一個問題。我們用q代替了p來采樣x,但是兩個隨機變量的分布,即使均值mean一樣,也不代表方差variance一樣。推導(dǎo)過程可以看左邊的公式。第一行是我們上一頁ppt推出來的結(jié)論。根據(jù)黃色框中的方差計算的方法,我們可以寫出第三行到第四行的公式。根據(jù)這個推導(dǎo)過程可以看見,兩個方差之間存在這差異p(x)比q(x),因此,如果p(x)比q(x)的數(shù)值很大,就會造成方差很大。理論上來說,如果采樣次數(shù)很多,p和q得到的期望會是一樣的。但如果采樣次數(shù)不夠多,就可能會有很大的差別。

直觀的用右邊的圖來說明一下。藍線是p(x)的分布,綠線是q(x)的分布,紅線是f(x)。以分布來說,p(x)采樣的點多數(shù)在左邊,f(x)是負的;但q(x)采樣的點多數(shù)在右邊,是正的。因此,采樣樣本數(shù)不多的情況,兩者之間差異會很大。

圖片

上面的是不能重用數(shù)據(jù)的版本,強化學(xué)習中稱為on policy。用theta策略與環(huán)境互動,采樣出軌跡圖片并計算期望值。

下面是可以重用的版本,用 圖片與環(huán)境互動。它是另一個agent,用于示范給要更新的 圖片 看,讓  知道與環(huán)境互動會發(fā)生的情況,以此來訓(xùn)練圖片 ,這時候軌跡圖片使用 圖片來采樣的,這么做的優(yōu)點是可以利用相同的數(shù)據(jù)多次。

應(yīng)用我們前面介紹的重要性采樣的思想,只要乘上權(quán)重p(x)比q(x),用在這里也就是圖片比上圖片

根據(jù)一系列的推導(dǎo)和演化,我們可以得到最后這個公式,一個新的目標函數(shù)。這個推導(dǎo)是根據(jù)藍色框里的公式來的。

我們前面也提到了,在重要性采樣中,如果用于采樣的和需要更新的兩個策略分布差距太大,就會出問題,具體到PG的場景中,也就是不能讓 圖片差異過大。如何避免的方式就是我們最后的主角:PPO算法。

圖片

為了不讓圖片差異過大,PPO的解法是在里面加入一個約束項,也就是圖片

KL散度簡單來說就是衡量二者有多相似,我們希望這兩個分布越像越好。

算法的步驟如下:

第一步:初始化Policy的參數(shù)圖片

2.在每次迭代中,首先使用圖片與環(huán)境互動,得到一堆圖片數(shù)據(jù)對, 計算優(yōu)勢函數(shù),我們這里可以理解成獎勵。

而不同于PG算法只能應(yīng)用一次數(shù)據(jù),PPO可以多次訓(xùn)練圖片。

目標函數(shù)即中間這個式子。

這里還有一個trick,即動態(tài)更新 圖片 。我們設(shè)置一個可以接受的最大、最小KL,成為適應(yīng)性KL懲罰。如果目前的KL大于設(shè)定的KL最大值,說明懲罰項沒有發(fā)揮效果,就加大 圖片  ;如果比最小值小,說明懲罰項太強了,就減少 圖片

圖片

使用KL散度的是初版的PPO算法,因為要計算KL散度還是有點復(fù)雜,因此延伸出了PPO2算法。

它的目標函數(shù)由兩項組成,需要選擇兩項里的較小項。clip函數(shù)中有三項,它的意思是當?shù)谝豁椥∮诘诙棔r回傳圖片當?shù)谝豁棿笥诘谌棔r回傳 圖片 ,這里 圖片 是個超參數(shù)。

我們將clip處理的部分畫成了圖,即藍色虛線。橫軸是三項里的第一項,圖片,縱軸是clip的實際輸出。當clip大于圖片時,輸出圖片;輸出小于圖片時,輸出圖片;介于中間時,直接輸出值。紅線是取值范圍。

看著兩個圖,A我們先當成獎勵reward理解。直觀來看,獎勵大于0時,說明這個s,a對是好的,我們希望增加他出現(xiàn)的概率,也就是圖片越大越好,但圖片的比值不能超過圖片;獎勵小于0時,說明這個s,a對是不好的,我們希望增加他減少的概率,也就是圖片越小越好,但圖片的比值不能小于圖片

圖片

這是PPO的論文給出的實驗結(jié)果,紫色的線是PPO2的效果,基本都是在第一第二的位置上,效果是非常不錯的。

圖片

RLHF發(fā)展歷程

在了解了最基本的強化學(xué)習之后,我們再來對比一下RL和RLHF的區(qū)別和聯(lián)系。

圖片

上面的圖是前面出現(xiàn)過的基本強化學(xué)習的概念,下面是RLHF的示意圖??梢娖渲械脑睾透拍罨臼枪蚕淼模煌囊簿褪羌t框中的部分,在agent和environment之前,出現(xiàn)了第三個可以參與交互的對象:人類,并由其衍生了一系列步驟。

實際上,RLHF并不是突然出現(xiàn)的事物,最早在2017年的NIPS就出現(xiàn)了這一思想。而在2020年的NIPS上,OpenAI已經(jīng)嘗試將其用于文本摘要任務(wù),并取得了很好的效果。圖中可見,RLHF的步驟框架從2020年這篇工作開始,就基本確定了。

圖片

NIPS 2017

圖片

這篇工作針對的是獎勵函數(shù)設(shè)計的問題。獎勵函數(shù)設(shè)計是強化學(xué)習中的一個難題。從本質(zhì)上講,獎勵函數(shù)是對任務(wù)目標的一種抽象,也是我們向 agent 傳達任務(wù)目標的橋梁。當任務(wù)非常復(fù)雜時,很難將目標轉(zhuǎn)化為獎勵函數(shù)這種形式化、數(shù)字化的表征。試想一下,如何為煎雞蛋這個任務(wù)設(shè)計獎勵函數(shù)?雖然將煎雞蛋這個任務(wù)數(shù)字化抽象為獎勵函數(shù)很困難,但是我們?nèi)祟悎?zhí)行這個任務(wù)則沒什么難度,也就是說,我們可以以相對低的成本獲取很多完成這個任務(wù)的專家軌跡,這樣我們就可以做模仿學(xué)習(IL),比如我們可以先用逆強化學(xué)習(IRL)方法從專家軌跡中恢復(fù)獎勵函數(shù),再用這個獎勵函數(shù)做 RL。這種方法雖然有效,但是仍存在限制,假如任務(wù)太難了,以至于普通人很難完成呢?比如遙控玩具飛機做特技,或者控制一個虛擬機器人后空翻,這些特殊任務(wù)需要訓(xùn)練有素的專業(yè)人士提供專家軌跡,成本就又上去了。注意到從提供獎勵函數(shù)到提供任務(wù)軌跡,我們降低了對人能力的要求,從而降低成本。按這個思路繼續(xù)下去,雖然我們不能給出復(fù)雜任務(wù)的完整軌跡,但是評估某條軌跡的效果還是比較容易的。比如后空翻任務(wù),我們一眼就能看出某段軌跡是不是后空翻,并且能對完成質(zhì)量給出大概的評估。顯然,可以把這個評估作為這一段軌跡的 return,執(zhí)行 MC 類的 RL 方法。這看起來好像不錯,但我們普通人不是專業(yè)裁判,且通常沒有一個詳盡的評價標準,難以給出穩(wěn)定的定量評估分數(shù)。于是我們再次降低要求,只要人類定性地對比兩條軌跡哪個比較好就行了。

本文提出的就是一種利用上述 “人類偏好” 進行 DRL 的方法,非正式地說, agent 的目標是通過向人類發(fā)出盡量少的偏好比較請求,生成人類喜歡的軌跡。

圖片

考慮通過一系列步驟與環(huán)境交互的代理:在每個時刻t,代理從環(huán)境中接收到一個觀測o,然后向環(huán)境發(fā)送一個動作a,軌跡片段是觀察和動作組成的序列。圖片表示相比圖片代表的意思是,o1 a1獲得的reward要大于o2 a2獲得的reward。。(論文中使用的是偏序關(guān)系的符號大于,這里為了打字方便直接用>代替了)這里圖片

在之前的RL工作中,r是有定量的評估公式的。但像在上一頁里介紹的,我們現(xiàn)在沒有定量評估所需的獎勵函數(shù)r,就只能定性評估agent滿足人咧偏好的程度。此外還有一個問題,因為系統(tǒng)很難每次重置成同樣的狀態(tài),因此用于比較的軌跡片段通常從不同的狀態(tài)開始,這增加了人類比較評估的難度,也使得人類的比較結(jié)果更難解釋,但是本方法克服了此困難。

優(yōu)化策略使用偏好誘導(dǎo),人類的判斷記錄在一個三元組圖片圖片是兩段軌跡片段,圖片是{1,2}上的分布,表示用戶首選的軌跡片段。

如果人類選擇一個軌跡片段作為首選,則 圖片 將其所有權(quán)重放在該選擇上;如果人類將片段標記為同樣好的選擇,則 圖片 是均勻分布;如果人類將片段標記為不可比較,則數(shù)據(jù)庫中不包含此比較。

最后是擬合獎勵函數(shù),我們將獎勵函數(shù)的估計值解釋為偏好預(yù)測器,最小化預(yù)測偏好分布和實際人類偏好分布之間的交叉熵損失。

圖片

實驗結(jié)果也非常的好。更形象的結(jié)果展示,可以看這個openai博客里發(fā)布的視頻https:///research/learning-from-human-preferences

對這篇文章更詳細的解讀可以參考:
 論文翻譯 -- Deep Reinforcement Learning from Human Preferences

論文理解【IL - IRL】 -- Deep Reinforcement Learning from Human Preferences

文本摘要+RLHF, NIPS 2020

圖片

這篇工作是OpenAI早于ChatGPT兩年發(fā)表在NeurIPS 2020,在這篇文章中ChatGPT的框架雛形已經(jīng)顯現(xiàn)。文章專注于英文摘要任務(wù),所用的方法和ChatGPT基本一致,包括了ChatGPT的核心方法,RLHF。這篇工作在知乎上也有許多介紹,我做PPT的時候主要參考了以下兩篇:

讀論文:Learning to summarize from human feedback

ChatGPT技術(shù)精要,RLHF相關(guān)論文筆記(一)——Learning to summarize from human feedback

這篇工作解決的問題聚焦在不合理的評價指標上,在文本生成領(lǐng)域這同樣是一個棘手的問題。隨著語言模型變得越來越強大,訓(xùn)練和評估越來越受到用于特定任務(wù)的數(shù)據(jù)和指標的限制。例如,摘要任務(wù)訓(xùn)練模型使用ROUGE等一些自動化指標進行評估,但這些指標都不能完全刻畫我們對摘要質(zhì)量的需求。傳統(tǒng)的通過監(jiān)督學(xué)習和最大化對數(shù)似然并不是一個好的方法。因為在摘要、翻譯等任務(wù)中,可能同時有幾個相差很大的輸出文本都是高質(zhì)量的輸出,而最大化對數(shù)似然只會迫使模型輸出去接近訓(xùn)練集reference里的那個版本的文本。這篇文章專注于英文摘要任務(wù),不采用極大化詞的對數(shù)似然損失,而是利用收集到的human feedback數(shù)據(jù)通過監(jiān)督學(xué)習專門訓(xùn)練一個打分模型來直接捕獲人類的偏好,然后再使用這個模型通過強化學(xué)習來訓(xùn)練生成模型。

圖片

本研究使用來自 Reddit 的 TL;DR 摘要數(shù)據(jù)集,該數(shù)據(jù)集包含 3M 的帖子文本以及相應(yīng)的摘要信息。通過一系列數(shù)據(jù)預(yù)處理,我們僅保留了包含 24 到 48 個 token 的人工編寫摘要的帖子,并將摘要長度最大化以減少長度對質(zhì)量的潛在影響。最終,我們獲得了一個包含 123,169 個帖子的數(shù)據(jù)集。選擇 CNN/DM 數(shù)據(jù)集的原因是該數(shù)據(jù)集的基線非常強,可以通過簡單的提取方法實現(xiàn)。

本研究的目標是生成質(zhì)量盡可能好、長度不超過 48 個 token 的摘要。摘要的質(zhì)量標準是能夠準確地傳達原文的內(nèi)容,以滿足只讀摘要不讀原文的讀者的需求。

前一項研究報告了“我們希望我們的模型學(xué)習的質(zhì)量概念和人工標注人員實際評估的質(zhì)量概念之間的不匹配”,導(dǎo)致模型生成的摘要在標注員看來是高質(zhì)量的,但在研究人員看來卻是相當?shù)唾|(zhì)量的。

與前一項研究相比,本研究采取了兩個措施來提高人工標注數(shù)據(jù)的質(zhì)量。首先,我們完全過渡到離線設(shè)置,向人工標注人員發(fā)送大批次的比較數(shù)據(jù),并在累積的數(shù)據(jù)上重新訓(xùn)練模型。其次,我們與標注員保持密切聯(lián)系,為他們提供詳細的指導(dǎo),回答他們在共享聊天室中的問題,并定期向他們提供反饋。我們對所有標注員進行了培訓(xùn),以確保他們的標注結(jié)果與我們的標準高度一致,并在項目過程中不斷監(jiān)測標注員和研究人員之間的一致性。

最后,我們的一致性數(shù)據(jù)非常良好,標注員與專家之間的一致性達到了77%,而專家之間的一致性達到了73%。我們的主干模型采用了 GPT-3 結(jié)構(gòu),并在 1.3B 和 6.7B 兩個參數(shù)量的模型上進行了 Human Feedback 實驗。

圖片

首先,對LM進行自回歸預(yù)訓(xùn)練是第一步。這包括對兩個模型進行LM的token預(yù)測自回歸預(yù)訓(xùn)練,并在構(gòu)建的摘要數(shù)據(jù)集上對模型進行有監(jiān)督的fine-tune,以獲得監(jiān)督模型。使用這些監(jiān)督模型對初始摘要進行抽樣,以進行比較,并將其用作baseline來收集多個候選的原文-摘要對數(shù)據(jù)。這些數(shù)據(jù)基于當前策略、初始策略、原文摘要和其他不同的baseline生成,并成對發(fā)送給標注人員來選擇最佳的那一個。

其次,利用第一步標注好的數(shù)據(jù)來訓(xùn)練一個獎勵模型,以模擬人類偏好。在監(jiān)督模型的基礎(chǔ)上進行獎勵模型(RM)的訓(xùn)練,是通過在其上增加一個輸出標量的線性head來實現(xiàn)的。訓(xùn)練結(jié)束后將reward模型輸出歸一化,以便參考文章數(shù)據(jù)的摘要達到0的平均分。

公式里x是post,y0和y1是兩個summary, reward model要預(yù)測哪個是人類認為更好地。如果人類認為yi更好,RM loss寫成這個公式。

第三步是利用第二步訓(xùn)練得到的獎勵模型輸出的logit來引導(dǎo)強化學(xué)習過程,從而訓(xùn)練摘要生成模型。這是通過使用強化學(xué)習來實現(xiàn)的,并且用于生成最終結(jié)果的模型(策略模型)是另一個進行fine-tune的模型。通過將獎勵模型的輸出作為使用PPO算法最大化的整個摘要的獎勵,在每個時間步驟都是一個BPE token。只有在整個摘要生成完之后,才會有可用于監(jiān)督信號的reward。在生成單個單詞時,沒有監(jiān)督信號可用。

作者在獎勵中加入了一個KL散度懲罰項,具有以下兩個好處。首先,它可以作為熵獎勵,鼓勵策略進行探索,從而防止其坍塌為單一模式。其次,它確保策略不會學(xué)習產(chǎn)生與獎勵模型在訓(xùn)練期間看到的結(jié)果有太大不同的輸出,從而防止模型訓(xùn)飛了。

圖片

左上角是人工評估最喜歡的輸出,縱坐標是被選為最喜歡的比例??梢奌F的結(jié)果大大超越了監(jiān)督學(xué)習的結(jié)果。

右上角是文章還從覆蓋度、準確度、流暢性、整體質(zhì)量四個方面對各模型的結(jié)果進行了對比。發(fā)現(xiàn)HF模型在每一個方面都有優(yōu)勢,而且在覆蓋度方面很突出。

左下角是泛化性評估。評估模型在其他數(shù)據(jù)集上的遷移能力(OOD)。雖然HF在訓(xùn)練時有生成長度的限制,但是從結(jié)果可以看到,模型的效果基本和相同結(jié)構(gòu)模型在目標領(lǐng)域數(shù)據(jù)上訓(xùn)練的結(jié)果一樣好,比另外兩個模型好出一大截。

HF的遷移性能也非常優(yōu)秀,接近了監(jiān)督學(xué)習的效果。反觀監(jiān)督學(xué)習的遷移效果很差,甚至還不如pretrain only。

右下角表示利用ROUGE作為reward來優(yōu)化模型,人類評估效果上會很快就達到峰值,并穩(wěn)步下降,收斂。效果相比其他RM的差了很多

雖然作者提出的方法效果非常好,但是作者在文末也承認了這篇工作的方法資源消耗巨大,達到了320 GPU / 天和數(shù)千小時的人工標注時間。這個成本確實不是一般研究團隊所能承受的了的,目前來看對于硬件,人力成本和時間成本的消耗是其最大的局限性。但是其應(yīng)用前景非常廣闊,給模型注入人類的偏好,讓大模型更好地對齊人。ChatGPT的巨大成功也證明了這一方法可行性。

ChatGPT中的RLHF

有了前面兩篇的鋪墊,我們就可以正式來看chatgpt是怎么做的了。

圖片

第一步是花錢招人給問題(prompt)寫回答(demonstration),使用經(jīng)典的預(yù)訓(xùn)練目標訓(xùn)練一個語言模型GPT3。這一步大家都懂,就不用說了。這一步可以多訓(xùn)幾個版本,第二步會用到。

這一步里比較值得說的就是預(yù)訓(xùn)練模型的選擇。首先,我們。對這一步的模型,OpenAI 在其第一個流行的 RLHF 模型 InstructGPT 中使用了較小版本的 GPT-3; Anthropic 使用了 1000 萬 ~ 520 億參數(shù)的 Transformer 模型進行訓(xùn)練;DeepMind 使用了自家的 2800 億參數(shù)模型 。

這里可以用額外的文本或者條件對這個 LM 進行微調(diào),例如 OpenAI 對 “更可取” (preferable) 的人工生成文本進行了微調(diào),而 Anthropic 按 “有用、誠實和無害” 的標準在上下文線索上蒸餾了原始的 LM。這里或許使用了昂貴的增強數(shù)據(jù),但并不是 RLHF 必須的一步。由于 RLHF 還是一個尚待探索的領(lǐng)域,對于” 哪種模型” 適合作為 RLHF 的起點并沒有明確的答案。

接下來,我們會基于 LM 來生成訓(xùn)練獎勵模型的數(shù)據(jù),并在這一步引入人類的偏好信息。

圖片

在第二部中,針對問題的多個回答,我們可以使用多個模型來產(chǎn)生,包括初始模型、finetune模型和人工模型等,然后使用獎勵模型/偏好模型來對這些回答進行打分。這個獎勵模型接收prompt和response兩個文本作為輸入,輸出一個標量獎勵。獎勵模型的訓(xùn)練是RLHF流程中非常重要的一個環(huán)節(jié),實際上是一個監(jiān)督學(xué)習過程。

在RM的訓(xùn)練過程中,我們可以從Prompt數(shù)據(jù)集中選取一些數(shù)據(jù)作為訓(xùn)練集,在輸入初始模型后,可以產(chǎn)生多個response,這些response可以是多個語言模型生成的,也可以是generate之后采樣得到的,只要保證這些response是針對同一個prompt生成的即可。接下來,我們需要對這些response進行排名,人工對這些回答進行排序,按照一些標準(比如可讀性、正確性等)進行排序。這里需要注意,我們不直接對文本標注分數(shù)來訓(xùn)練RM,因為標注者的價值觀不同會導(dǎo)致標注分數(shù)不準確且存在噪音。相反,我們使用排名來比較多個模型的輸出,并構(gòu)建更好的規(guī)范數(shù)據(jù)集。

對于排名方式,一種成功的方式是對不同模型在相同提示下的輸出進行比較,并使用Elo系統(tǒng)建立一個完整的排名。使用pair-wise loss將rank計算為具體的分數(shù),然后歸一化為標量獎勵值。InstructGPT論文使用的是pair-wise loss,也可以使用經(jīng)典的ELO算法來實現(xiàn)。通過這些排名結(jié)果,我們可以得到針對同一個prompt的response的分數(shù),這些分數(shù)將被用于訓(xùn)練RM模型。需要注意的是,這些訓(xùn)練數(shù)據(jù)集可以從預(yù)定義數(shù)據(jù)集中采樣生成,也可以通過Amazon Mechanical Turk等渠道獲得。

最后,這一獎勵模型的訓(xùn)練對于RLHF算法的無縫接入非常重要。我們可以用端到端的方式使用LM來建模,也可以使用模塊化的系統(tǒng)建模。這一獎勵數(shù)值對于后續(xù)的RL算法來說至關(guān)重要。

圖片


接下來是最后一步:利用 RM 輸出的獎勵,用強化學(xué)習方式微調(diào)優(yōu)化 LM。

最后一階段是強化學(xué)習微調(diào)階段。在這一步中,數(shù)據(jù)集規(guī)模更大,且不再需要人工參與。這一步的方法可以概括為以下四個部分:

首先,使用第一階段監(jiān)督模型的參數(shù)來初始化PPO模型的參數(shù)。接著,使用PPO模型生成回答,并使用第二階段的RM模型對回答進行評估和打分。最后,通過打分,更新訓(xùn)練PPO模型的參數(shù)。

讓我們將微調(diào)任務(wù)表述為強化學(xué)習問題。我們認為輸入的prompt是狀態(tài)(state),輸出的response是動作(action),想要得到的策略(policy)就是怎么從prompt生成action能夠得到最大的reward,也就是擬合人類的偏好。

這個策略的行為空間(action space)是語言模型(LM)的詞表對應(yīng)的所有詞元,通常在50k數(shù)量級左右。所有的狀態(tài)是可能的輸入詞元序列,也比較大(詞匯量 ^ 輸入標記的數(shù)量)。獎勵函數(shù)是偏好模型和策略轉(zhuǎn)變約束(Policy shift constraint)的組合。

PPO算法確定的獎勵函數(shù)具體計算如下:將prompt輸入初始LM和當前微調(diào)的LM,分別得到了輸出文本。將來自當前策略的文本傳遞給RM,得到一個標量的獎勵。將兩個模型生成的文本進行比較,計算差異的懲罰項。在來自O(shè)penAI、Anthropic和DeepMind的多篇論文中,該懲罰項被設(shè)計為輸出詞分布序列之間的KL散度的縮放。這一項被用于懲罰RL策略在每個訓(xùn)練批次中生成大幅偏離初始模型的文本,以確保模型輸出合理連貫的文本。如果去掉這一懲罰項,可能會導(dǎo)致模型在優(yōu)化中生成亂碼文本來愚弄獎勵模型提供高獎勵值。此外,OpenAI在InstructGPT上實驗了在PPO添加新的預(yù)訓(xùn)練梯度,以保證RL模型能夠保留好的語言模型能力??梢灶A(yù)見到,隨著RLHF研究的進展,獎勵函數(shù)的公式會繼續(xù)進化。

作為一個可選項,RLHF可以通過迭代RM和策略共同優(yōu)化。隨著策略模型的更新,用戶可以繼續(xù)將輸出和早期的輸出進行合并排名。Anthropic 在他們的論文中討論了迭代在線 RLHF,其中策略的迭代包含在跨模型的 Elo 排名系統(tǒng)中。這樣引入策略和 RM 演變的復(fù)雜動態(tài),代表了一個復(fù)雜和開放的研究問題。

對這一部分,已經(jīng)有許多非常優(yōu)秀且深入的解析,例如以下兩篇:

https:///blog/rlhf* 官方中文翻譯:ChatGPT 背后的“功臣”——RLHF 技術(shù)詳解

Akiko:從零實現(xiàn)ChatGPT——RLHF技術(shù)筆記

后ChatGPT時代:應(yīng)用與未來展望

ChatGPT的主要成功要歸結(jié)于采用RLHF來精調(diào)語言大模型。既然RLHF效果這么好,自然也有工作嘗試將這個思路遷移到其他任務(wù)上。近日谷歌AI團隊將類似的思路用于文生圖大模型:基于人類反饋來精調(diào)Stable Diffusion模型來提升生成效果。

文生圖+RLHF

目前的文生圖模型雖然已經(jīng)能夠取得比較好的圖像生成效果,但是很多時候往往難以生成與輸入文本精確匹配的圖像,特別是在組合圖像生成方面。為此,谷歌最新的論文Aligning Text-to-Image Models using Human Feedback提出了基于人類反饋的三步精調(diào)方法來改善這個問題。

該工作更詳細的介紹可見 當ChatGPT和Stable Diffusion碰撞:谷歌用人類反饋提升文生圖效果

圖片

圖片

圖片

圖片

圖片

下面是一些圖像生成樣例,也可以看出精調(diào)后的模型在文本語義對齊上的提升。

這個論文只是基于人類反饋在文生圖模型上一個嘗試,看起來還是有一定的效果,但是主要的問題是圖像生成質(zhì)量出現(xiàn)下降,比如出現(xiàn)過飽和以及失真的圖像。雖然加入未標注的數(shù)據(jù)集和預(yù)訓(xùn)練數(shù)據(jù)集,能在一定程度上改善這個問題。

論文在120個文本上基于人類打分來對原始模型和精調(diào)后的模型來進行對比,結(jié)果如下所示,可以看到在圖像和文本對齊方面,模型效果有明顯的提升(50% vs 3%),但是在圖像生成質(zhì)量上(fidelity)有稍微的下降(MS-COCO數(shù)據(jù)集上的FID也有下降),論文認為主要的原因是設(shè)計的數(shù)據(jù)集主要目標是為了對齊文本和圖像,數(shù)據(jù)集的多樣性較少,而且采用的預(yù)訓(xùn)練數(shù)據(jù)集只是一個很小的子集,如果采用更大的數(shù)據(jù)集,應(yīng)該可以進一步改善這個問題。從消融實驗來看,采用未標注數(shù)據(jù)集和預(yù)訓(xùn)練數(shù)據(jù)集來進行正則化,對于保證圖像生成質(zhì)量還是非常關(guān)鍵的。

總結(jié)與展望

對于ChatGPT成功的關(guān)鍵,我個人認為可以總結(jié)為以下三點:

  • 優(yōu)秀的大模型

  • 高質(zhì)量數(shù)據(jù):garbage in garbage out

  • Human in the loop:有多少人工就有多少智能

三者缺一不可,而其中,雖然ChatGPT為代表的RLHF技術(shù)非常有影響力,引發(fā)了巨大的關(guān)注,但仍然存在若干局限性:

  • RLHF 范式訓(xùn)練出來的這些模型雖然效果更好,但仍然可能輸出有害或事實上不準確的文本。這種不完美則是 RLHF 的長期挑戰(zhàn)和優(yōu)化目標。在基于 RLHF 范式訓(xùn)練模型時,人工標注的成本是非常高昂的,而 RLHF 性能最終僅能達到標注人員的知識水平。

  • 此外,這里的人工標注主要是為RM模型標注輸出文本的排序結(jié)果,而若想要用人工去撰寫答案的方式來訓(xùn)練模型,那成本更是不可想象的。

  • RLHF的流程還有很多值得改進的地方,其中,改進 RL 優(yōu)化器顯得尤為重要。PPO 是一種基于信賴域優(yōu)化的相對較舊的RL算法,但沒有其他更好的算法來優(yōu)化 RLHF 了。

作為討論班里技術(shù)系列的最后一期,這頁PPT總結(jié)了ChatGPT背后技術(shù)的發(fā)展歷程:

圖片

這個討論班是3月初講的,沒過幾天gpt-4就來了...

2017年之前早已有之的一些數(shù)學(xué)/AI/RL等基礎(chǔ)技術(shù),比如微積分、概率統(tǒng)計、最優(yōu)化、策略梯度、TRPO算法(2015年提出)

2017年6月OpenAI聯(lián)合DeepMind首次正式提出的RLHF,試圖解決的問題是,在獎勵函數(shù)不夠明確的情況下,通過基于人類對事物比較的偏好而非絕對獎勵值訓(xùn)練獎勵函數(shù),最后通過TRPO算法迭代策略

2017年7月的OpenAI團隊提出的對TRPO算法的改進:PPO算法

2017年6月的Transformer/Self-Attention

2018年6月的GPT(Generative Pre-trained Transformer),其關(guān)鍵構(gòu)成是基于Transformer-Decoder的Masked Self-Attention

2019年2月的融合prompt learning的GPT2,prompt learning的意義在于小樣本也能出大效果

2020年5月的GPT3,參數(shù)規(guī)模到了1750億,而且這一年的9月份OpenAI已經(jīng)開始研究GPT3與RLHF的結(jié)合了(即上邊介紹的文本摘要的工作),且此時用的策略優(yōu)化方法為PPO

2021年7月的Codex,通過對GPT3進行大量的代碼訓(xùn)練迭代而出Codex,從而具備代碼/推理能力

2021年9月Google提出的FLAN大模型:基于指令微調(diào)技術(shù)Instruction Fine-Tuning (IFT)

2022年1月的Google研究者提出的思維鏈技術(shù)(Chain of Thought,簡稱CoT)

2022年3月的OpenAI正式發(fā)布instructGPT:GPT3 + 指令學(xué)習 + RLHF + PPO,其中,遵循人類指令的學(xué)習instruction learning,和prompt learning的核心區(qū)別在于instruction learning會提供更多的指令引導(dǎo)模型輸出更符合預(yù)期的結(jié)果

2021年第4季度逐步發(fā)展而來的GPT3.5

2022年11月的ChatGPT:語言模型層面的核心架構(gòu)是GPT3.5(基于Transformer-Decoder的Masked Self-Attention且融合了Codex的代碼/推理能力、instruction learning等技術(shù)) + RLHF + PPO

由此可見,ChatGPT非一蹴而就、橫空出世,背后其實經(jīng)過了各個前置技術(shù)的發(fā)展、迭代、結(jié)合而成。在準備這期討論班的時候GPT-4還沒有發(fā)布,而在整理博客的這個節(jié)點,GPT-4在升級的同時,還新加入了多模態(tài)的能力。在這個時間節(jié)點的NLPer無可避免的站在時代的前沿,面對未知的未來發(fā)展趨勢,希望這篇介紹可以幫大家更好的了解背景、思考未來、擁抱變化。

進技術(shù)交流群請?zhí)砑覣INLP小助手微信(id: ainlp2)

請備注具體方向+所用到的相關(guān)技術(shù)點

關(guān)于AINLP

AINLP 是一個有趣有AI的自然語言處理社區(qū),專注于 AI、NLP、機器學(xué)習、深度學(xué)習、推薦算法等相關(guān)技術(shù)的分享,主題包括文本摘要、智能問答、聊天機器人、機器翻譯、自動生成、知識圖譜、預(yù)訓(xùn)練模型、推薦系統(tǒng)、計算廣告、招聘信息、求職經(jīng)驗分享等,歡迎關(guān)注!加技術(shù)交流群請?zhí)砑覣INLP小助手微信(id:ainlp2),備注工作/研究方向+加群目的。

閱讀至此了,分享、點贊、在看三選一吧??

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩欧美第一页在线观看| 91香蕉国产观看免费人人| 成人国产激情在线视频| 亚洲视频偷拍福利来袭| 国产一区二区三区草莓av| 久久婷婷综合色拍亚洲| 在线观看国产成人av天堂野外| 亚洲男人天堂网在线视频| 欧美日韩在线第一页日韩| 午夜精品久久久99热连载| 久久这里只有精品中文字幕| 精品国产91亚洲一区二区三区| 99亚洲综合精品成人网色播| 中文字幕亚洲精品乱码加勒比| 老司机激情五月天在线不卡 | 99少妇偷拍视频在线| 欧美又黑又粗大又硬又爽| 国产亚洲精品久久久优势| 久久少妇诱惑免费视频| 麻豆剧果冻传媒一二三区| 91日韩欧美在线视频| 国产精品久久香蕉国产线| 正在播放国产又粗又长| 国产成人午夜福利片片| 午夜福利大片亚洲一区| 国产人妻熟女高跟丝袜| 东京热男人的天堂社区| 99久久精品久久免费| 日韩毛片视频免费观看| 欧美黑人在线精品极品| 最近日韩在线免费黄片| 夫妻性生活动态图视频| 手机在线不卡国产视频| 欧美成人国产精品高清| 日本精品中文字幕人妻| 不卡中文字幕在线免费看| 日韩中文字幕欧美亚洲| 欧美有码黄片免费在线视频| 91天堂免费在线观看| 一区二区三区人妻在线| 激情偷拍一区二区三区视频|