我正在嘗試建立一個背景關系強盜。因為我喜歡對動作進行排名,所以我想切換到一個有條件的背景關系老虎機(正如我在這里讀到的)。
但是現在我無法理解新的 vw 格式。
vawpal wabbit wiki的例子是這樣的:
ccb shared | s_1 s_2
ccb action | a:1 b:1 c:1
ccb action | a:0.5 b:2 c:1
ccb action | a:0.5
ccb action | c:1
ccb slot | d:4
ccb slot 1:0.8:0.8,0:0.2 0,1,3 | d:7
不幸的是,我不了解插槽部分。我知道這告訴了所選操作的成本和概率。
ccb slot 1:0.8:0.8,0:0.2 0,1,3
是否有可能有多個選擇的動作?
我也不明白為什么它需要插槽部分的功能?此外,我不完全理解為什么我們必須告訴它要包含的操作 ID?它的目的是什么?此外,預測需要哪種格式?如果我還沒有任何行動費用,為什么它需要插槽部分?
非常感謝提前和最好的問候
編輯:自從 Vowpal Wabbit 由 MS Research 開發以來,我查看了azure 檔案。我想我找到了有用的資訊。一旦我找到答案,我就會把它們貼在這里。
uj5u.com熱心網友回復:
您可能有興趣查看 VW 的 wiki 頁面,其中包含有關 CCB 的一些資訊:
https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Conditional-Contextual-Bandit
您可以將 CCB 視為 CB 之上的一層,它運行一個單獨的 CB 示例,其中包含每個插槽的所有操作,但是當插槽選擇它時,操作被排除在外。上面的示例可能使用了比您的目的所需的更多的功能。如果您只想對操作進行排名,這將是一個更好的格式:
ccb 共享 | s_1 s_2
ccb 行動 | a:1 b:1 c:1
ccb 動作 | a:0.5 b:2 c:1
ccb 動作 | a:0.5
ccb 動作 | c:1
ccb 插槽 1:0.8:0.8 |
ccb 插槽 0:0.8:0.8 |
ccb 插槽 3:0.8:0.8 |
ccb 插槽 2:0.8:0.8 |
這個例子可以用于學習和預測,但是如果你只是想做預測,你可以使用像這樣的未標記槽:
ccb 共享 | s_1 s_2
ccb 行動 | a:1 b:1 c:1
ccb 動作 | a:0.5 b:2 c:1
ccb 動作 | a:0.5
ccb 動作 | c:1
ccb 插槽 |
ccb插槽|
ccb插槽|
ccb插槽|
我將分別回答您的每個問題:
我也不明白為什么它需要插槽部分的功能?
插槽不需要功能。如果您希望每個插槽以不同的方式學習,他們可以使用功能,但這不是必需的。如果您正在嘗試排名操作,您可能不想要特定于插槽的功能。
此外,我不完全理解為什么我們必須告訴它要包含的操作 ID?
你不需要這樣做。默認情況下,尚未選擇的所有操作都將包含在每個插槽中。例如,如果有動作 0,1,2,3 并且槽 0 選擇動作 1,則槽 1 將有動作 1,2,3 可用。從這個意義上說,每個后面的動作都不會包括從先前槽中選擇的動作,因此每個槽選擇的動作將按順序排列動作。
它的目的是什么?
如果您想要一個更復雜的帶有專門插槽的系統,您可能希望從插槽中明確排除某些操作,但對于簡單的對操作進行排名,您不會想要這樣做。
此外,預測需要哪種格式?
可以對任何 CCB 示例(標記或未標記)進行預測。您不需要對示例執行任何特殊操作,只需指定-p pred_file.txt標志即可將預測輸出到該檔案。
如果我還沒有任何行動費用,為什么它需要插槽部分?
如果你沒有成本(所以你只是在做預測),槽的數量將代表你想要做出的預測的數量。如果您只想找到前 n 個操作,則只能使用 n 個插槽。如果您有任何其他問題,請告訴我。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/374942.html
