個性化推薦、算法推薦這類概念已經在網際網路產品中十分常見,那麼,我們是否可以將個性化推薦概念應用到在線學習領域,藉助個性化推薦來提高學習效率?這篇文章里,作者談了談題庫個性化推題思路,一起來看一下。
個性化推薦、算法推薦這類概念已經在網際網路產品中十分常見,那麼,我們是否可以將個性化推薦概念應用到在線學習領域,藉助個性化推薦來提高學習效率?這篇文章里,作者談了談題庫個性化推題思路,一起來看一下。
在線教育提供了豐富的學習資源,也留下了大量學習者的學習數據,如何據此實現個性化推題來提高學習效率是個值得研究的課題。本篇文章先以抖音為例研究了一下推薦算法的思路,再把思路應用到題庫的個性化推題中。
為什麼選擇了抖音?提到推薦算法,大部分人腦中閃過的第一個詞可能就是「抖音」,抖音容易讓人上癮靠得就是推薦算法。
根據 Question Mobile 數據顯示,2023 年 9 月的抖音人均單日使用時長從 2022 年 9 月的 108.4 分鐘提升至 115.2 分鐘。
根據 Question Mobile 數據顯示,2023 年 9 月的抖音人均單日使用時長從 2022 年 9 月的 108.4 分鐘提升至 115.2 分鐘。
我們在抖音的產品表面能看到的就是每次上滑的時候,都能刷出一個系統覺得你喜歡的視頻。那麼推薦算法是什麼呢?
一句話來說,推薦算法就是把合適的內容推送給合適的人。
這個流程中體現出了三個過程:
要讓推薦系統識別用戶和物料並建立連接,需要將用戶和物料向量化——打標籤。所以在推薦前的準備工作,就是建立標籤體系,並給物料和用戶都打上標籤。
二、斷物:給物料打標籤
斷物指的就是系統把物料進行分析、歸類、打標籤。對於電商平台來說,物料就是商品;對於文章資訊平台來說,物料就是文章;對於題庫來說,物料就是試題。
1. 標籤類別
物料標籤可以分為分類標籤和內容標籤:
分類標籤和內容標籤的區別:
分類是一種嚴謹的數據組織方式,一般按照一個或多個維度自上而下、從整體到明細的窮舉,遵循「相互獨立,完全窮舉」的原則。而內容標籤是一種靈活的數據組織方式,放棄大而全的框架。
簡單來說,一個物料只能屬於一個分類,但是可以擁有一堆內容標籤。
2. 視頻怎麼打標籤
打標籤最基礎的方式就是靠人工,但是內容量過大時,人工打標籤效率會很低,所以需要機器來輔助,實現自動打標籤。怎麼自動給視頻打標籤呢?
一般採用的是對視頻封面圖、關鍵幀圖片進行圖像識別,提取音頻分析,提取字幕、視頻介紹等對文字進行分析,從中抽取出標籤,然後將得到的標籤進行整合,得到視頻的標籤。
參考連結: 愛奇藝短視頻智能標籤生成實踐
三、識人:建立用戶畫像
在建立用戶畫像之前,我們僅有用戶的行為數據,這些無法直接用於數據分析和模型訓練,所以需要將用戶的行為日誌進行處理,然後標籤化,這樣我們對用戶就有了一個直觀的認識,同時計算機也能夠理解用戶,將用戶的行為信息用於個性化推薦、廣告精準投放等領域。
用戶標籤按生成方式來劃分包括三種:事實類標籤、模型類標籤、預測類(基於機器學習挖掘)類標籤。
1. 事實標籤
事實標籤也叫統計標籤,是根據實際發生的原始數據統計得到的(原始數據包括網站/app 日誌、用戶填寫的表單、消費數據等等)。事實標籤構成了用戶畫像的基礎,也是數量最多的一種標籤。
比如:
模型標籤以事實標籤為基礎,按照指定規則生成,用於對用戶分群。該類標籤與業務緊密結合,通常由數據人員和業務人員配合完成。
比如:
按轉化:AARRR 轉化模型中從獲取的用戶到推薦的用戶分為五層。
3. 預測標籤
預測標籤通過機器學習挖掘產生,用於對用戶的某些缺失的屬性或某些行為進行預測判斷。例如:根據根據用戶的行為數據預測用戶的性別,用戶的消費習慣判斷其對某商品的偏好程度等。
這類標籤是通過機率模型產生,機率是介於 0-1 之間的數值。根據用戶消費過的內容(文本、圖片、視頻、商品等)數據,機器自動學習出用戶興趣、喜好等標籤及其機率,通過全面、完整、細緻地標籤化來生成用戶的個性化特徵。
比如:
小明的預測標籤:「汽車:0.1」,「寵物:0.8」,「航拍:0.7」
四、推薦流程
有了視頻的標籤和用戶的畫像之後,我們就可以通過推薦算法去匹配視頻和用戶了。上面小明的興趣標籤「汽車:0.1」「寵物:0.8」「航拍:0.7」,我們可以直接給用戶推薦寵物內容的視頻嗎?
在刷抖音的時候我們也能發現,每次滑動的時候推的往往不是固定的一個主題,即使同一個主題下面不同的視頻也會有個先後順序,所以我們需要有一個量化的方式來計算用戶對哪個視頻的喜愛度更高。
因為抖音是要給用戶推他最可能喜歡的視頻,而用戶在看視頻的過程中發生的任何互動都能代表用戶對視頻的興趣,比如點贊、評論、不喜歡等等,所以抖音假設用戶看一個視頻產生的價值等於用戶在這個視頻上發生的所有互動價值的總和。
舉個例子:小明打開抖音,默認進入了推薦 tab,有一個視頻在自動播放。小明很喜歡這個視頻,在看的過程中給視頻點了個贊。
這個過程中有兩種互動——觀看&點贊。用戶在觀看視頻時的每一次互動都有正面或者負面的價值,那麼這次行為裡面「小明觀看視頻」這件事情的價值是什麼,「小明點贊」的價值又是什麼呢?
1. 價值模型
在抖音平台中,互動的價值主要分為這樣幾種:
用戶的每次互動,都可能帶有上面的一種或多種價值。
想要衡量發生互動的價值,我們需要引入價值模型(V)。我們以點贊互動為例,用V_{like}來表示點贊的價值模型,來看一下小明這次點贊會產生哪些價值。
首先來拆解一下「小明點贊」這個行為有上面哪些價值:
用戶價值:
作者價值:
小明點贊增加了這個視頻的點贊數,對作者有激勵作用,特別是在低贊(is_like_lower_than_100)的時候,所有點贊也有作者價值;
平台價值:
如果視頻是騙贊視頻(is_like_bait),給它們過多的贊可能影響整體生態,所以在騙贊視頻上的點贊可能會有負向的平台價值。
所以:
V_{like}=1 + u_like_cnt*0.01 – same_tag_today*0.5 + is_like_lower_than_100*10 – is_like_bait*100
由上面公式可以看出,同一個用戶給不同的視頻點贊產生的價值是不同的,不同的用戶給同一個視頻點贊產生的價值也是不同的。
價值模型是對應該給用戶推薦什麼視頻的理解,計算方式不是一成不變的,需要反覆優化參數和權重,才能達到最好的效果。對價值模型做優化,需要把每個互動的價值分解清楚,從而最大化視頻推薦獲得的收益。
理解了價值模型之後,再看開頭的例子,小明看過視頻,點過贊,沒有發生其他互動。那麼這次視頻觀看的實際價值就是:
如果小明還做過其他互動呢?短視頻中都包括哪些互動方式——播放、點贊、收藏、評論、分享、不喜歡、關注作者等,前面提過用戶看一個視頻產生的價值等於用戶在這個視頻上發生的所有互動價值的總和,所以總價值:
2. 預測模型
我們應該給用戶推送價值最高的視頻。但是我們給用戶推送視頻的時候,互動還沒有發生,我們怎樣去計算實際產生的價值呢?
我們要預測視頻推送給用戶之後每個互動發生的機率,用價值的期望值來替代實際發生的價值來衡量。因此需要引入預測模型(P)。
預測模型是在排序時預測一切未知的事情發生的機率的模型。預測模型一般是機器學習模型,它們用視頻和用戶相關的數據做輸入,輸出一件事情發生的機率。模型的輸入叫做特徵,輸出叫做預估。
常見的預測模型包括兩類:
預測模型的輸入特徵可以分成這樣幾部分:
預測模型是個性化的,比如點贊模型預測的是當前用戶在當前場景下,看到當前視頻,點贊的機率。同一個視頻,對於不同的觀看者或在不同環境下的同一個觀看者,預測出的機率也是不同的,拿一個明星視頻舉例:
推薦系統的目標就是把價值最高的視頻推給用戶,引入預測模型(P)後,我們用期望值來代替實際發生的價值,所以價值公式就變成了樣子:
根據這個公式把候選集裡的視頻分別計算一下,按分值大小排序,分值最高的就是下一個要推薦給用戶的視頻。
4. 篩選視頻
抖音有幾十億條視頻,我們不可能直接把全部的視頻按上面的公式跑一下,計算出最高值的視頻作為下一個推薦的內容,因為數據量太大了。那麼怎麼從中選擇出來要推薦的視頻呢?
直接從大池子裡撈不現實,所以預先會維護一個小池子,可以叫推薦池。推薦池對所有用戶是幾乎完全一致的,通常包括比較新的視頻和表現比較好的老視頻。
用戶每次請求推薦流時,推薦服務會從推薦池中通過多個召回源初步選取幾千或者上萬個視頻,再用上面的公式進行計算。
召回源主要分兩種:
比如:
所有召回的視頻形成一個序列,就可以用上面的公式計算得分來排序了。
5. 效果評估
怎麼評估排序的效果好不好呢?主要是兩個步驟:
第一步:離線評估
在離線準備好的驗證集上進行數據驗證,如果效果優於先前的模型數據,則進行第二步,這裡的效果包含多個指標,比如準確率、覆蓋率、多樣性等,在不同階段側重的指標也許是不一樣的,這個就是產品經理要去把控確定的,當前這一產品階段側重點在哪裡或者是怎麼去取捨平衡。
第二步:線上實驗
直接對於線上用戶進行 AB 分桶實驗,先小流量實驗一段時間,一般在 10 天到半個月左右,對比實驗組和對照組數據;如果實驗數據為正向,則推到更多的用戶;如數據持續穩定,則推全到所有用戶。
抖音的推薦流程中哪些思路可以用在教育中?
抖音推薦流程中的核心在於對不同互動價值的拆解,並且可以根據戰略發展重心來不斷調整計算公式中的參數和權重。這個思路是可以借鑑的。
五、題庫個性化推題
個性化推題是個性化學習中的一個環節。個性化學習是個比較大的概念,它可以根據學員設定的目標和可投入時間生成符合學員自身訴求的個性化學習路線,讓「學-練-背-考」各個環節都適應學員自身。我們本次只針對學員在題庫練習中的智能推題部分。
俗話說,他山之石,可以攻玉。從上面抖音的推薦流程,我們可以推理出題庫中的題目推薦流程,實現學員的個性化學習。
推題的邏輯按以下幾個步驟:
對題目來說,最主要的標籤就是知識點,但是讓機器去理解題目考查的知識點內容比較困難,也不夠準確,所以主要採用人工打標籤的方式,靠教師專家去標註知識點。
題目標籤的維度:
考試類學科用戶的能力體現在什麼地方——體現在對知識點的掌握,對所有知識點的掌握水平越高,考試的時候就越容易考高分。
但知識點依託於題目,我們沒辦法直接得到學員對知識點是否掌握,只能通過學員作答題目的情況來分析他對知識點的掌握情況。學員對某個知識點的掌握水平越高,答對對應題目的機率就越高。
如上圖,橫坐標表示學員對知識點的掌握水平,縱坐標是答對某題的機率,隨著學員對知識點掌握水平提高,答對機率會無限趨近於 1。
除了知識點掌握水平,還有哪些因素影響學員作答是否正確呢?
一是題目的猜測係數。做題的時候除了答對,還能蒙對,比如不會就選 C。猜測係數是哪怕學員掌握水平極低,純憑猜測也有答對題目的機率(我們用c表示),在圖中的表示就是曲線和縱軸的交點。對於四個選項的單選題來說,猜測係數就是0.25。
二是題目的難度。同一個知識點下有不同難度的題目,學員對知識點的掌握水平相同的情況下,答對的機率也不一樣,題目的難度越高,答對的機率就會越低,如下圖。(題目的難度我們用d來表示)
題目的難度是反映答對題目所需要的對知識點的掌握水平,這是同一個維度的東西。從上圖中可以看出,學員對知識點的掌握水平和題目難度相等的時候,答對題目的機率是 0.5。
這個 0.5 的含義不是說學員每次作答時一定有 50%的幾率答對問題,而是表示在學員能力和題目難度匹配的情況下,通過大量重複試驗,學員答對和答錯的機會是相等的,就和拋硬幣一樣。
第三個因素是題目的區分度(我們用a來表示)。題目的區分度越高,我們越能區分出不同掌握水平的學員。表示在圖上就是曲線拐點處的斜率,區分度越高,斜率越大,學員對知識點的掌握水平提升一點,答對的機率會提升很多。
我們用什麼公式來表示上面圖中的曲線呢?因為答對題的機率:
所以採用邏輯回歸函數表示。
邏輯回歸的公式如下,這種方式可以把輸入的任意 x 值轉化為[0,1]之間的數:
那麼把上面的知識點掌握水平、題目猜測係數、題目區分度、題目難度代入公式,知識點掌握水平比題目難度高的越多,答對機率就會越高。題目的區分度會放大知識點掌握水平和題目難度的差值。所以題目區分度越高,知識點掌握水平與題目難度的差值與答對機率正相關性越大。
因此學員答對題目的機率:
這個公式就是項目反應理論(IRT)的核心內容。
我們把所有學員對每個題的歷史作答記錄都放入公式中(答對的題目 P=1,答錯的題目 P=0),可以計算出這四個參數,數據越多,計算出的參數的精度越高。
(具體的計算過程比較複雜,可以參考 項目反應理論(IRT)詳解 – 知乎 )
有了學員對知識點的掌握程度和題目屬性之後,我們就可以將用戶要做的題目的猜測係數、區分度、題目難度和學員的知識點掌握水平代入這個公式,來預測用戶做對的機率。
3. 需完善的問題
1)能力值的參考
上面這種方式我們可以計算出用戶對某個知識點掌握水平的絕對值,但這個值代表的意義是什麼?比如用戶對知識點 a 的掌握水平是 11.3,沒有外顯的價值。
外顯的內容應該是用戶可以直接感受到的,比如考試的預估分。因此,掌握水平的值達到多少可以在考試中取得多少分數,還需要補充其他維度的數據。
這方面可以通過助教的考後服務或者考後估分工具來收集學員在考試中的作答情況,以此與學員的能力模型形成關聯,比如:學員 A 掌握知識點 a 的水平 11.3,掌握知識點 b 的水平 5.6…考試中知識點a的題目3題全對,知識點b的題目對1錯1…整體考了178分。
數據量大之後,我們就可以建立模型,根據學員對每個知識點的掌握水平結合考試中知識點出現的機率來預測這個學員在考試中能夠考多少分。
2)學習曲線和遺忘曲線
這個公式只能計算到當前狀態下學員對知識點的掌握程度,但學員對知識點的掌握水平不僅會隨著學習的過程提高,也會隨著時間推移降低。
學習曲線理論:隨著持續性的嘗試和練習,學員能夠習得相關知識。
遺忘曲線理論:隨著時間推移,學員對於知識的記憶也越來越差,其知識水平會呈現下降趨勢。
學習曲線理論:隨著持續性的嘗試和練習,學員能夠習得相關知識。
遺忘曲線理論:隨著時間推移,學員對於知識的記憶也越來越差,其知識水平會呈現下降趨勢。
所以我們在計算學員對知識點的掌握程度時,需要引入記憶因子和遺忘因子,這是需要完善的地方。
4. 篩選題目
當前現狀最多的學科才幾千道題,幾萬道題以內大機率不太需要召回,直接全量跑即可,如果題目多形成題海的話才需要一些召回方式。
在題庫中可能會用到的一些召回方式如下:
我們應該給學員推什麼樣的題目?
就和抖音不會直接推用戶喜愛度最高的標籤的視頻一樣,我們也不能直接推用戶掌握水平最低的知識點對應的題目,這種單一的推薦目標是不合理的。比如一個學員未掌握知識點 a,我們一直給學員推考察知識點 a 的題目,其中可能會包含難度遠超出學員水平的題目,導致學員在學習過程中產生挫敗感。
抖音推給用戶的是 ta 喜歡的視頻,用戶在一個視頻上發生的所有互動都能代表他是不是喜歡這個視頻,所以抖音通過計算用戶在視頻上的互動價值之和來推薦值最大的視頻。
但在做題的場景下,我們需要考慮的是提升用戶對知識點的掌握水平,除了作答這種互動方式之外,其他的比如收藏題目、做筆記都是做完題後置的互動過程,這些對評估掌握水平幫助有限。所以我們不能直接採用每種互動價值加和的方式來計算推送題目的價值。
抖音價值的計算拆解的是互動行為,題庫中需要考慮學員在學習過程中的諸多學習需求,因此,我們在做推薦時拆解的是目標,讓推薦的題目滿足每個目標的價值加和最大。
需要考慮以下三個目標:
綜合這三個目標,來找出對用戶知識點掌握水平提升幫助最大的題目。接下來我們需要把每個目標的價值量化:
1)複習與探索
目標 1 的價值用V1表示。
我們需要全面了解學員對各知識點的掌握水平,所以優先應該推薦學員未做過的知識點。因此,系統推薦新知識點的題目時,賦給這個目標的價值一個正的值:
若學員在每個知識點下均做過題目,優先推其掌握水平低的知識點的題目(還需結合知識點的考頻),所以推的題目學員掌握水平越低,價值應該越高。仍然採用邏輯回歸公式:
可以控制價值的值在β2到 0 之間;
如果學員答錯了當前的題目,我們希望能讓用戶再次做相同知識點的題目,來確定學員的狀態,所以此時推薦系統推薦不同知識點的題目時,給予懲罰,賦給這個目標的價值一個負的值:
β1、β2、β3是可調的參數,如果希望學習新知識的機會高一些,可以調高β1的值。
2)難度平滑性
目標 2 的價值用V2表示,難度平滑性體現在要推的題目和上一個題目的難度是否接近,臨近兩個題目的難度越接近,目標的收益也應該越大。
所以我們用兩個題的難度差值的平方取負數來表示,這樣兩個題目難度越接近V2值越大(越趨近於 0),總收益越大。
3)學習熱情
如果一直給學員推薦極簡單或者極難的題,都會讓學員對結果不滿意,我們需要讓推的題符合學員的學習目標,來讓學員保持學習熱情。如果學員一直做對題目,需要提高推薦題目的難度;如果學員一直做錯題目,那麼就需要降低推薦題目的難度。
這個目標價值衡量的基本思想是:學員最近做題的表現與設置的目標因子越接近,價值應該越高。
這裡面我們引入一個學習目標因子:
可以通過學員自己設置的目標來對應,也可以根據學員的表現自動調整。
我們假設即將要推的題目是 t,回顧學員最近 N 次的學習記錄(答對 p=1,答錯 p=0),結合即將要推的題的預測答對機率,計算其平均表現。因此目標 3 的價值公式用V3表示:
學員如果希望獲得具有挑戰性的學習體驗,可以設置較低的 g 數值。
舉個例子:比如學習目標因子是 0.8 的學員最近 10 題的表現為 0,1,0,1,1,0,1,0,1,1,我們的窗口題數 N 設為 6,那麼:
我們現在有兩個題,一個答對機率是 0.2,一個答對機率是 0.8,計算一下就知道此時推答對機率高的題目當前目標的價值值更大。
綜上,每個目標的價值在總價值中會有不同的權重,給每個目標設置一個權重係數 λ ,那麼推一個題目的總的收益公式如下:
公式中的權重係數可以根據需求來調整,如果更關注推的題目難度的平滑性,就可以通過調高 λ2 的值來實現。用這個公式將候選集中的題目計算後,收益最高的題目就是接下來要推的題目。
當然,以上僅是設想的思路,但在實際應用過程中是否可行,還需要根據使用情況,不斷調整優化公式中的參數和權重,找到最合適的計算方式。
本文由 @YTY 原創發布於人人都是產品經理,未經許可,禁止轉載。
題圖來自 Unsplash,基於CC0協議