LiveBot: Generating Live Video Comments Based on Visual and Textual Contexts 論文筆記

源碼: https://go.ctolib.com/article/wiki/104234

彈幕,已經成爲人們看視頻的一種習慣;不同用戶之間的彈幕往往會形成上下文回覆關係,更讓彈幕成爲一種新的社交模式。基於這一現象,微軟亞洲研究院設計了一款名爲 LiveBot 的自動彈幕生成系統。在這一系統中需要克服兩個難點:一是要充分理解視頻內容,根據其他用戶的評論彈幕生成適當的內容;二是要在合適的時間點顯示在對應的視頻幀之上。

實驗結果表明,LiveBot 能夠準確地學習到真實用戶在觀看視頻時進行彈幕評論的行爲特點,有效地進行了視頻內容的理解和用戶評論的交互,同時在客觀評價指標上也取得優異的成績。

無監督機器翻譯的最新性能提升

最近一年,無監督機器翻譯逐漸成爲機器翻譯界的一個研究熱點。在無監督場景下,神經機器翻譯模型主要通過聯合訓練(joint training)或交替回譯(iterative back-translation)進行逐步迭代。但是由於缺乏有效的監督信號,回譯得到的僞訓練數據中會包含大量的噪音,這些噪音在迭代的過程中,會被神經機器翻譯模型強大的模式匹配能力放大,從而損害模型最終的翻譯性能。

 

摘要

彈幕的內容一般是對該視頻的評論以及與其他彈幕的交流互動,自動生成實時的彈幕需要AI能理解視頻內容和他人發的彈幕(真人),所以這是一個很適合AI同時處理動態視覺和語言的測試平臺。在本次論文工作中,我們構建了一個大規模的彈幕數據集,包括了2361個視頻中的895929條評論。然後我們將引入兩個神經網絡生成基於視覺和文本上下文的實時彈幕,比之前的seq2seq有着更好的表現。最後,我們針對自動實時評論提供一個基於檢索的評估協議,要求模型對一組由對數似然得到的候選評論進行分類,並評估相應衡量指標(如平均倒數等級?)。最後放到一起,展示了第一個“livebot”

介紹

基於彈幕的種種優勢,我們提出一個新的任務:自動彈幕生成。彈幕及有對視頻的評論,也有對他人發的彈幕的迴應,所以自動生成實時的彈幕需要AI能理解視頻內容和他人發的彈幕(真人)並能做出迴應。所以這是一個很適合AI同時處理動態視覺和語言的測試平臺。

現在已經有很多任務可以用來評估AI處理視覺與語言的能力,包括 image captioning 圖像字幕 (Donahue et al. 2017; Fang et al. 2015; Karpathy and Fei-Fei 2017), video description (Rohrbach et al. 2015; Venugopalan et al. 2015a; Venugopalan et al. 2015b), visual question answering (Agrawal, Batra, and Parikh 2016; Antol et al. 2015), and visual dialogue (Das et al. 2017).

彈幕生成與上述任務都不同,圖像字幕目的是生成圖像的文字描述,視頻描述是生成對視頻的描述,這兩個任務都只需要機器理解圖像或視頻,而不需要與真人有交流。視覺問題回答和視覺對話則在人機交互邁出了重要的一步。給一個圖像,機器要回答出關於圖像的問題或者能與人類進行多輪對話。而與這兩種任務不同的是,彈幕需要理解視頻並且分享觀點或觀看他人經驗,是一項更有挑戰性的任務。

自動彈幕的獨特挑戰是評論與視頻之間複雜的依賴關係,首先,彈幕與視頻以及當前時刻的其他彈幕有關,而當前時刻的其他彈幕也都依賴與視頻。其次,彈幕不僅取決於當前視頻幀,還取決於當前幀的周圍幀,因爲觀看者可以評論之前的視頻內容或者即將播放的視頻內容,所以,我們將彈幕任務表述爲:給定視頻V,視頻中的一幀F,時間戳T和該相應時間周圍的彈幕C(如果有的話),當框架I在時間戳附件,機器應該做出有關當前幀的評論或附近幀F的評論。

在這項工作中,我們製作了一個“livebot”去爲視頻生成彈幕,我們構建了一個包括了2361個視頻和其中的895929條評論的數據集,相關數據從bilibili中收集。

彈幕數據集

在本節中,我們將介紹我們提出的實時評論數據集。 我們首先描述我們如何收集數據和拆分數據集。 然後我們分析彈幕的屬性。

視頻與彈幕的收集

抓取了前10頁的搜索結果,查詢包含19個類別,包括寵物,體育,動畫,食品,娛樂,技術等等,刪除掉重複以及短視頻,過濾低質量或少量彈幕的視頻,以保證數據質量。最後得到2361個視頻。

在每個視頻中,我們收集彈幕並抓取他們相應的時間戳,以便我們確定評論的背景(周圍的幀和評論)。我們使用python的包——Jieba標記所有的彈幕。最後得到了895929條有時間戳相對應的彈幕。

我們還下載了視頻的音頻,我們發現將音頻片段與評論對齊是比較困難的,所以我們不打算對音頻你進行分段,而是保留視頻的整個音頻。

下圖是一個例子。

數據集拆分

來自相同視頻的彈幕不會只出現在在訓練集或測試集中以免過擬合。最後,將數據集分爲2161爲訓練集,100測試集,100驗證集,彈幕拆分爲818905訓練集,42405測試集,34609個驗證集。

數據統計

與其他數據集相比,bilibili數據集代表了最全面,最多樣化,最複雜的可用於視頻-文本學習的數據集

彈幕分析

1.長度分佈

我們可以看到大多數彈幕不超過5個單詞或10個字符。 一個原因是5箇中文單詞或者10個漢字包含足夠的信息與他人交流。 另一個原因是觀衆經常在觀看期間發彈幕,所以他們更喜歡簡短快速的評論,而不是花很多時間做長而詳細的評論。

2.相鄰評論之前的相關性

對於每條彈幕,我們選擇相鄰的20條彈幕形成20個彈幕對。我們就edit distance, tf-idf, and human scoring(編輯距離,df-idf,人類得分)這三個指標計算這些彈幕對。human scoring,我們要求三個註釋器對兩個註釋之間的語義相關性進行評分,並且得分範圍從1到5,根據彈幕的時間間隔,我們進行分組:0-1s,1-3s,3-5s,5-10s,以及10s以上。 我們取所有彈幕對的平均分數,結果如下,臨近的彈幕相關性更高。

      生成彈幕的一個挑戰在於視頻與彈幕複雜的依賴性關係。爲了模擬這種依賴性,我們介紹兩種基於視覺背景(周圍幀)和文本上下文(周圍的評論)可以生成彈幕的方法。這兩種方法是基於兩種流行的文本生成的架構:RNN和變壓器。我們將兩種方法表示爲融合RNN模型和同一變壓器模型。

問題表述

我們提供一個視頻v,一個時間戳T,和該時間戳附近的評論C,模型應該可以生成一個該幀相應的或者可以迴應該時間戳其他彈幕的新一條彈幕y。因爲視頻也許會比較長或者同一時間有很多彈幕,所以不用將整段視頻和所有彈幕當作輸入,我們只需保留時間戳T附近的m幀(我們幀之間的間隔設置爲1秒)和n條彈幕。我們將m幀表示爲 I = {I1, I2, · · · , Im},將n條彈幕表示爲 C = {C1, C2, · · · , Cn} 。模型的目的是生成彈幕 y = {y1, y2, · · · , yk},k是句子中單詞的數量。

模型1:融合RNN模型

該模型由三部分組成:一個視頻編碼器,一個文本編碼器,一個評論解碼器,視頻編碼器使用CNN頂層的lstm層對m個連續幀進行編碼,文本編碼器將m幀周圍的彈幕輸入到LSTM層的向量中。最後,評論解碼器生成彈幕。

(1)視頻編碼器:

在視頻編碼器中,每幀Ii首先通過卷積層將其編碼爲矢量vi。然後使用一個LSTM層將多有幀向量編碼輸入他們的隱藏層hi

vi = CNN(Ii) (1)    hi = LSTM(vi , hi−1) (2)

(2)文本編碼器:

每條周圍彈幕Ci首先通過編碼成爲一系列字級表示,使用字級LSTM層:

我們使用最後一層的隱藏狀態作爲代表表示然後我們使用句子級的LSTM層用注意機制編碼所有到句子級的彈幕表示gi    (注意機制???)

在注意的幫助下,評論表示包含來自視頻的信息

(3)評論解碼器:

這個模型生成的評論是基於周圍彈幕以及周圍幀的。因此,生成語句的概率憤怒如下:

單詞wi的概率分佈如下:

模型二:統一變壓器模型

同一變壓器模型不同於融合RNN模型的層次結構,而是使用線性結構來捕獲彈幕和視頻的依賴關係。與融合RNN模型相似的是,同一變壓器模型也包含三個部分:視頻編碼,文本編碼以及評論解碼

(1)視頻編碼器:

與融合RNN模型相似,這裏視頻編碼器首先使用卷積層將每一幀Ii編碼爲向量vi。然後使用一個變壓器層將所有幀向量編碼入最後的表示層hi

在變壓器內,每個幀的表示層vi與其他幀表示層一同表示爲v的集合 v = {v1, v2, · · · , vm}.

(2)文本編碼器

不同於融合RNN模型,我們將所有彈幕串聯爲一個單詞序列, e = {e1, e2, · · · , eL},作爲文本編碼器的輸入,這樣每個單詞可以直接促成自我注意組件(self-attention)【 Self attention是Google在“Attention is all you need”論文中提出的”The transformer”模型中主要的概念之一,我們可以把”The transformer”想成是個黑盒子,將輸入句輸入這個黑盒子,就會產生目標句。

表示層中每個彈幕中的單詞可被表示爲

在文本編碼器內部,有兩個多頭注意組件,第一個參與文本輸入e,第二個參與視頻編碼的輸出h。

(3)評論解碼器

我們使用變壓器層生成彈幕。概率分佈爲

單詞yi的計算爲

在評論解碼器內部,有三個多頭注意組件,第一個參與評論輸入y,後兩個分別參與視頻輸出編碼器h和文本編碼器g。

評估指標

關於視頻的彈幕內容是非常豐富的,找出可與模型輸出結果進行比較的參考是比較困難的。blue和rouge等評估指標是不適合此次項目的。受到對話模型評估的啓發,我們將評估方法指定爲排名。要求模型對一組候選的彈幕進行基於對數似然進行排序。由於模型生成評分最高的評論,所以通過排名判斷一個好的模型,在候選的頂層正確的評論是合理的(?)。

候選評論集有以下:

正確:人類提供的相應視頻的真實評論。

也許正確:50個最與視頻標題相似的彈幕。我們使用視頻標題作爲查詢來檢索基於訓練集的評論關於它們的tf-idf值的餘弦相似性。我們選擇前30條不是正確評論的作爲也許正確的評論。

次數最多:來自數據集前20條出現次數最多的評論。這些評論一般都是無意義的,比如“2333”“哈哈哈哈”,因爲不帶有信息,因此被視爲不正確評論。

隨機:在選擇完正確、也許正確、次數最多的後,爲了填滿候選集,我們可以從訓練集中隨機地選擇一些評論。直到候選集中有100條不同地評論

我們根據以下指標衡量排名:recall(在前K個提供評論中人類評論地比例),mean rank(人類評論的平均等級),平均倒數排名(人類評論平均倒數的排名)

實驗

設置

對這兩種模型,詞彙量都要限制訓練集內出現次數最多地30000詞彙內,我們在編碼器和解碼器中使用一個共享潛入層,並將嵌入層大小設爲512。對於CNN編碼器,使用 Pytorch提供的一個18層的預訓練resnet。對於這兩個模型, batch size設爲64, 隱藏層尺寸512。我們使用 Adam優化方法訓練我們的模型。Adam超參數爲 learning rate α = 0.0003,兩個動量參數β1 = 0.9、β2 = 0.999,以及

baselines

  • S2S-I :解碼器生成目標彈幕的基礎上,使用CNN對幀進行編碼。此模型僅使用視頻作爲輸入

  • S2S-C: 解碼器生成評論的基礎上,使用一層LSTM處理周圍的彈幕,這個模型可以看作傳統的seq2seq,只使用周圍彈幕作爲輸入。

  • S2S-IC:可以同時使用視頻和文本信息。該模型有兩個編碼器分別對畫面及評論進行編碼,然後連接兩個編碼器的輸出,用LSTM解碼器對輸出結果進行解碼。

結果

訓練階段,我們對 S2S-IC、融合RNN模型,統一變壓器模型都進行了視頻和文本訓練。S2S-I只是用了視頻進行訓練,S2S-C只是用了彈幕進項訓練。在測試階段,我們在三種設置下評估這些模型:僅視頻,僅評論和兩者都有。僅有視頻,表示模型僅使用圖像作爲輸入(最近的5幀),這模擬了沒有周圍評論可用的情況。 僅有評論表示模型僅接收周圍彈幕的輸入(最近的5條彈幕),這模擬了視頻質量低的情況。 兩者都表示視頻和周圍評論都可用於模型的情況(最近的5幀和評論)。

以下結果可以看出,我們提出的模型在任何情況下都優於baseline,僅有彈幕作爲輸入的結果優於僅有視頻作爲輸入,是因爲周圍的彈幕可以提供有關下一條彈幕的信息。

我們從三個方面評估生成的彈幕:流暢性:生成評論是否流利(無視與視頻相關性);相關性:衡量生成彈幕與視頻的相關性。正確性:綜合測量由人類產生的彈幕在上下文中的置信度。在以上三個方面,我們都規定了得分爲{1,2,3,4,5}中的整數。越高越好。 分數由三個人類註解評估最後我們將三個評分的平均值作爲最終結果。結果如下,在三個模型中,我們提出的模型表現最好。不過相關性始終低於其他兩個是因爲彈幕不是總與視頻內容相關,也許與周圍的彈幕有關。統一變壓器生成的彈幕相對來說,更接近真人發出的彈幕。

 

相關工作:

一個與本課題類似的課題是圖像標題生成,這是一個已經研究很長時間的領域,目前的工作是通過逐步合併網絡改善表現。

另一個比較類似的課題是視頻字幕生成,Venugopalan et al. (2015a)建議使用CNN提取圖像特徵,使用LSTM進行編碼並解碼出一個句子。Das et al. (2017)介紹了一個視覺對話系統,ai需要通過給定圖像或對話歷史圖像來回答問題。

 

有關注意機制還不太瞭解,下一篇讀下 https://arxiv.org/pdf/1706.03762.pdf

https://kexue.fm/archives/4765

https://www.yiyibooks.cn/yiyibooks/Attention_Is_All_You_Need/index.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章