LiveBot 和 Response to LiveBot:彈幕生成

LiveBot
  1. LiveBot: Generating Live Video Comments Based on Visual and Textual Contexts
    LiveBot code: https://github.com/lancopku/livebot
  2. Response to LiveBot: Generating Live Video Comments Based
    on Visual and Textual Contexts

    OpenNMT-Livebot code: https://github.com/fireflyHunter/OpenNMT-Livebot

LiveBot是微軟亞洲研究院2019的文章,2020讀過,覺得蠻有趣。前段時(shí)間,因緣巧合看了Response to LiveBot [看標(biāo)題時(shí)候,還沒意識到是給livebot找bug],一瞬間又想起了這篇文章。因此放在一起,記錄下,便于后面工作應(yīng)用。

現(xiàn)在很多視頻網(wǎng)站都有彈幕功能,方便觀看者進(jìn)行信息交互。LiveBot,俗稱彈幕機(jī)器人,是基于b站數(shù)據(jù),根據(jù)視頻幀信息及對應(yīng)的彈幕信息,再生產(chǎn)新彈幕的模型。


LiveBot 4種文本生成任務(wù)

圖示四種文本生成任務(wù):

  1. image captioning:圖文描述,輸入視覺信息,輸出文本信息;
  2. vision question answering:視覺qa問答,輸入視覺信息和文本信息,輸出文本信息;
  3. machine translation:機(jī)器翻譯,輸入和輸出都是文本信息;
  4. live commenting:LiveBot,輸入視覺信息,以及依賴視覺信息的文本信息,輸出文本信息。

4和2的最大區(qū)別,就是輸入文本是否依賴視覺信息,更精確的說,2的輸入視覺和文本信息是對齊的,而4的文本信息不僅與當(dāng)前幀信息對齊,還可能是視頻幀之前or之后【比如“前方高能預(yù)警”】的信息,或者是對之前彈幕信息的再反饋【比如彈幕的battle】,從邏輯上看更加復(fù)雜。

LiveBot的主要貢獻(xiàn)

  1. 首個(gè)做彈幕機(jī)器人任務(wù)的;
  2. 構(gòu)建了彈幕數(shù)據(jù)Live Comment Dataset,包含2361個(gè)視頻及對應(yīng)的895929條評論信息;
  3. 提供了2種融合視頻和文本信息的模型方案,fusion RNN和unified transformer model;
  4. 提出了檢索式retrieval-based的評估方案。

數(shù)據(jù)構(gòu)造

數(shù)據(jù)收集
基于b站的搜索排行,爬取前10頁的視頻結(jié)果。搜索的信息包含寵物,體育,娛樂等19個(gè)類目。經(jīng)過視頻去重,過濾短視頻,低質(zhì)視頻,以及彈幕少的視頻的預(yù)處理后,共得到2361個(gè)視頻。

對每個(gè)視頻,抓取彈幕,及彈幕出現(xiàn)的時(shí)間戳。經(jīng)過結(jié)巴分詞后,一共得到895929條【彈幕,對應(yīng)視頻,彈幕出現(xiàn)視頻時(shí)間戳】信息。

如下圖所示,abc為三個(gè)時(shí)間對應(yīng)的視覺信息,下面列表為每個(gè)彈幕出現(xiàn)的視頻時(shí)間。比如,48s時(shí),有彈幕“橘貓是短腿嗎”。
LiveBot 數(shù)據(jù)集案例

訓(xùn)練測試數(shù)據(jù)
為避免過擬合,訓(xùn)練和測試數(shù)據(jù)中的視頻是不重疊的。

LiveBot 訓(xùn)練數(shù)據(jù)詳情

和其他數(shù)據(jù)集對比

LiveBot 常見文本生成數(shù)據(jù)集

YouCook和TACos-M-L:廚藝領(lǐng)域的數(shù)據(jù)集,針對行為描述;
M-VAD和MPII-MD:電影領(lǐng)域的數(shù)據(jù)集。
表格中的數(shù)據(jù)集,大部分?jǐn)?shù)據(jù)量不大,且都是專有領(lǐng)域的數(shù)據(jù),本文收集的數(shù)據(jù)從數(shù)據(jù)量,內(nèi)容多樣性,復(fù)雜度上,都有優(yōu)越性。

數(shù)據(jù)分析

LiveBot 彈幕相似度分析

LiveBot 彈幕長度分布

  1. 彈幕文本長度都偏低,大部分都低于5個(gè)詞or10個(gè)字,這個(gè)長度的中文滿足用戶快速傳遞簡短的信息的需求,符合彈幕的特性;
  2. 相鄰彈幕的相關(guān)性分析,對每個(gè)評論,選擇相鄰的20條彈幕,計(jì)算他們之間的tfidf,編輯距離,以及人工打分。同時(shí),還對不同時(shí)間間隔[小于1s,1-3s, 3-5s,5~10s,大于10s]的評論對進(jìn)行相關(guān)性打分,結(jié)果顯而易見,時(shí)間間隔短的[相鄰彈幕],相關(guān)性強(qiáng)于非相鄰彈幕。

模型結(jié)構(gòu)

前文提到,LiveBot的彈幕,不僅僅和視頻內(nèi)容有關(guān),還可能和其他彈幕內(nèi)容有關(guān)。當(dāng)前的彈幕,可以是對當(dāng)前幀的內(nèi)容理解,也可能是對之前或者之后視頻內(nèi)容的理解,還可以是和其他彈幕的互動(dòng)。
對上述復(fù)雜的依賴關(guān)系,文中提出2種模型架構(gòu)。

基本定義

type concept
V 視頻
f 視頻的一幀
t 對應(yīng)幀的時(shí)間戳
C 圍繞這個(gè)時(shí)間戳的評論集
I 圍繞這個(gè)時(shí)間戳的幀集合

對長視頻來說,如果將一整個(gè)視頻和所有彈幕信息作為輸入,不是很合理。因此,文中對一個(gè)視頻,只輸入m個(gè)幀信息,以及時(shí)間t時(shí)的n個(gè)評論作為輸入。具體可表示為:
視頻幀集合:I = \lbrace{ I_1,I_2,...,I_m\rbrace },時(shí)間間隔為1s
彈幕集合:C = \lbrace{ C_1,C_2,..,C_n \rbrace }
輸出彈幕token集合:y = \lbrace { y_1,y_2,..,y_k\rbrace}
輸出的彈幕,時(shí)間戳和輸入時(shí)間戳相近,內(nèi)容可能和視頻相關(guān),或和彈幕相關(guān)。

Model1: Fusional RNN Model

LiveBot Fusional RNN Model

Fusional RNN Model由video encoder, text encoder和comment decoder組成。

Video Encoder

m個(gè)連續(xù)幀信息經(jīng)過CNN編碼后,經(jīng)過雙向LSTM,得到視頻信息。

  1. 每幀I_i經(jīng)過CNN得到向量v_iv_i = CNN(I_i)
  2. m個(gè)幀信息視為序列,經(jīng)過LSTM,得到向量h_ih_i = LSTM(v_i,h_{i-1})

Text Encoder

對每個(gè)彈幕進(jìn)行詞級別的編碼,再進(jìn)行句子級別的編碼。

  1. 對彈幕C_i分詞,經(jīng)過word-level LSTM:r_i^j = LSTM(C_i^j,r_i^{j-1}),得到的r_i^{L(i)}就是該彈幕的語義信息x_i
  2. 將所有的彈幕信息經(jīng)過sentence-level LSTM后,和視頻信息做attention,得到融合文本和視頻信息的表達(dá):
    \hat g_i = LSTM(x_i,g_{i-1})
    g_i = attention(\hat g_i,h)

Comment Decoder

生成的評論和周圍的彈幕及相關(guān)的視頻信息可以表示為:
p(y_0,..,y_T|h,g) = \Pi_t p(y_t|y_0,...,y_{t-1},h,g)

生成的每個(gè)詞可以表示為:
\hat s_i = LSTM(y_{i-1},s_{i-1})
s_i = Attention(\hat s_i,h,g)
p(w_i|w_0,...,w_{i-1},h) = Softmax(Ws_i)

Model2: Unified Transformer Model

LiveBot UTM

顧名思義,就是將之前的LSTM轉(zhuǎn)換成Transformer。
同樣由2個(gè)encoder和一個(gè)decoder組成。

Video Encoder

  1. v_i = CNN(I_i);
  2. 經(jīng)過CNN的所有幀向量集合:v = \{v_1,v_2,...,v_m \}
  3. h_i = Transformer(v_i,v)

Text Encoder

1.n個(gè)彈幕拼接,結(jié)巴分詞,得到詞序列:e = \lbrace{e_1,..,e_L \rbrace }
2.g_i = Transformer(e_i, e, h)

Comment Decoder

生成的評論和周圍的彈幕及相關(guān)的視頻信息可以表示為:
p(y_0,..,y_T|h,g) = \Pi_t p(w_t|w_0,...,w_{t-1},h,g)

每個(gè)詞y_i的概率分布可表示為:
s_i = Transformer(y_i,y,h,g)
p(y_i|y_0,...,y_{i-1},h,g) = Softmax(Ws_i)

評價(jià)指標(biāo)

彈幕內(nèi)容多種多樣,模型的產(chǎn)出不能直接找到對照的候選集,因此常見的BLEU,ROUGE的評測方案就不合適了。受對話模型的評估方法啟發(fā),文中提出了一種基于log-likelihood的候選集排序方案。當(dāng)模型生成的評論有很高的分?jǐn)?shù)時(shí),那么在候選集排序時(shí),模型就能將正確的彈幕排在前列。

候選集的選擇

  1. Correct:對應(yīng)視頻真人彈幕;
  2. Plausible:50個(gè)和視頻標(biāo)題最相似的彈幕。視頻標(biāo)題作為query,基于tf-idf對訓(xùn)練集中的評論進(jìn)行cosine相似計(jì)算得到。其中30個(gè)評論非Correct的,作為Plausible。換句話說,有30個(gè)彈幕不是對應(yīng)視頻的彈幕,而是基于相似計(jì)算從訓(xùn)練集檢索得到;
  3. Popular:頻次最高的20個(gè)彈幕,比如‘2333’,‘太棒啦’,‘哈哈哈哈哈’,這類萬金油評論,被視為不正確的評論;
  4. Random:除了上述3種彈幕,還隨機(jī)選擇其他彈幕,將候選集擴(kuò)充到100個(gè)。

排序指標(biāo)

  1. Recall@k:topk推薦中,真人評論占比;
  2. Mean Rank:真人評論排序求平均;
  3. Mean Reciprocal Rank:真人評論排序倒數(shù)求平均。

真人評價(jià)指標(biāo)
評分標(biāo)準(zhǔn)[1,2,3,4,5], 越高越好。

  1. Fluency:流暢度;
  2. Relevance:生成的彈幕和視頻的相關(guān)性;
  3. Correctness:生成的彈幕是真人彈幕的置信度。

實(shí)驗(yàn)

Baselines

  1. S3S-I:使用CNN,輸入只有視覺(相鄰5幀視頻)信息,輸出評論;
  2. S2S-C:使用LSTM,輸入只有彈幕(相鄰5個(gè)評論)信息,輸出評論;
  3. S2S-IC:使用LSTM,輸入包含視覺和彈幕信息,分別編碼,輸出評論。

結(jié)果

LiveBot 各種指標(biāo)結(jié)果

對baseline模型進(jìn)行評測,結(jié)果顯示,聯(lián)合視覺和文本信息生產(chǎn)的彈幕優(yōu)于comment only 優(yōu)于 video only。

LiveBot 真人評估結(jié)果

####################################################
2020年囫圇吞棗的看完LiveBot[1]后,留下的印象是,以后做論壇式多模態(tài)生成時(shí),可以嘗試下。雖然知道作者有公開code,草草略過就罷。前兩天看到Response to LiveBot[2],作者復(fù)現(xiàn)了LiveBot公開的Unified Transformer model代碼,發(fā)現(xiàn)模型結(jié)果比LiveBot的baseline差,進(jìn)而發(fā)現(xiàn)代碼漏洞,并重建了代碼。
OpenNMT-Livebot code: https://github.com/fireflyHunter/OpenNMT-Livebot
####################################################

Response to LiveBot
  1. Candidate Set Ranking [Issue #1-2]
    對候選集的排序,原code通過cross-entropy進(jìn)行降序,而paper中提及到好的候選集應(yīng)該排在前列,意味著cross-entropy應(yīng)該升序。
    這個(gè)問題在github已被其他研究人員指出[GitHub Issue]。
    修改這個(gè)排序問題后,模型得分升了一點(diǎn),和[GitHub Issue]的結(jié)果接近,但仍遠(yuǎn)低于LiveBot的baselines。

  2. Candidate Scores [Issue #1-3]
    候選集得分計(jì)算,原code使用的是每個(gè)token的cross-entropy的和,而不是平均。這種計(jì)算方式對短文本很友好,作者發(fā)現(xiàn),重排候選集,排在前面的很多評論都只有一個(gè)詞。
    原code的計(jì)算:
    Score(c) = \sum_i^L CrossEntropy(g_i,h_i)
    本文:
    Score(c) = \frac {\sum_i^L CrossEntropy(g_i,h_i)}{ \#Valids}
    #Valids為候選集的非padding的token數(shù)量。
    更新這個(gè)問題后,模型效果接近LiveBot的baselines。

  3. Construction of the Plausible Set [Issue #1-4]
    構(gòu)建Plausible候選集時(shí),原文介紹是基于視頻標(biāo)題進(jìn)行的檢索。實(shí)際發(fā)現(xiàn),是根據(jù)當(dāng)前的上下文評論(圍繞真實(shí)評論的評論)進(jìn)行的檢索。
    因?yàn)樵紨?shù)據(jù)和生成的數(shù)據(jù)集的映射關(guān)系原文沒有提供,因此無法基于原始數(shù)據(jù)重建新的數(shù)據(jù)集,只能根據(jù)原文方案,根據(jù)視頻標(biāo)題重建Plausible候選集。

  4. The training/Testing Set [No duplicate]

    數(shù)據(jù)集比較

    前文提到,LiveBot構(gòu)造了含有2361個(gè)視頻和895929個(gè)彈幕的數(shù)據(jù)集,且訓(xùn)練集和測試集是無交集的。
    實(shí)際17771個(gè)評論有5436個(gè)重疊。雖然有些常用評論可以用在不同的視頻下,但有些針對視頻的特殊評論,也出現(xiàn)在訓(xùn)練集和測試集了;
    另一方面,在原始數(shù)據(jù)中,通過視頻標(biāo)題區(qū)分視頻時(shí),發(fā)現(xiàn)有38個(gè)視頻重復(fù)多次。
    因此,基于原始數(shù)據(jù),去重,再重建數(shù)據(jù)集,結(jié)果如上圖。

每個(gè)issuse解決后的結(jié)果如下

每個(gè)issue解決后的復(fù)現(xiàn)結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容