摘要:
粗排/精排的個性化多任務學習模型,能預估20多個不同的預估值,如點擊率、有效播放率、播放時長、點贊率、關注率等,那如何用它來排序呢?從多任務學習到多目標排序,中間有一個過渡,即如何把這些預估值融合成一個單一的排序分,最后實現多目標精排。這也就引入了本文要介紹的正題:多目標融合(multi-task fusion, MTF)。手工融合的優點在于其目標權重就指示了目標在融合公式中的重要度,比較直觀且可解釋性強。當然其缺點也非常明顯,這個權重系數對于所有用戶都是一樣的,缺少個性化。那么,我們是否可以用模型來學習超參數呢?這就涉及到了融合超參數的學習方法了,也即用一個模型來學習各預估分數的組合權重。 閱讀全文
粗排/精排的個性化多任務學習模型,能預估20多個不同的預估值,如點擊率、有效播放率、播放時長、點贊率、關注率等,那如何用它來排序呢?從多任務學習到多目標排序,中間有一個過渡,即如何把這些預估值融合成一個單一的排序分,最后實現多目標精排。這也就引入了本文要介紹的正題:多目標融合(multi-task fusion, MTF)。手工融合的優點在于其目標權重就指示了目標在融合公式中的重要度,比較直觀且可解釋性強。當然其缺點也非常明顯,這個權重系數對于所有用戶都是一樣的,缺少個性化。那么,我們是否可以用模型來學習超參數呢?這就涉及到了融合超參數的學習方法了,也即用一個模型來學習各預估分數的組合權重。 閱讀全文
posted @ 2024-05-18 16:30
orion-orion
閱讀(7658)
評論(0)
推薦(1)

圖對比學習(Graph Contrastive Learning, GCL)旨在以自監督的方式學習圖的節點表征。具體而言,先以特定方式對原圖A進行增廣,得到兩個增廣后的視圖(view)V1和V2做為對比對(也可以是原圖和增廣后的視圖做為對比對),并經由GCN進行編碼得到兩個增廣視圖中的節點embeddings。接著,對于某個目標節點i,我們需要使其在某個增廣視圖中的embedding去接近在另一個增廣視圖中的正樣本embedding,而遠離負樣本embedding。不過,均勻隨機的邊擾動很難做為有效的增廣來使用,這啟發我們去構思比均勻擾動更好的圖增廣方法。我們知道圖譜可以做為許多圖的結構屬性的一個綜合性總結,包括聚類系數、連通性等等。那么,基于圖譜的圖增廣方法就是順理成章的了。
K為圖G的MarKov轉移算子,則我們稱算子L = I - K為圖G的(歸一化)Laplacian算子。通過研究L,我們就能把握Laplacian二次型E[f]=?f, Lf?的特性,從而把握圖G的特性,這是譜圖理論中至關重要的一點。事實上,我們可以找到Laplacian算子的n個相互正交的規范化特征向量(范數為1)及其對應的特征值。而這事實上和我們在線性代數課程中所學過的譜定理密切相關。我們前面證明過Markov轉移算子K是自伴的,則L=I?K也是自伴的(事實上,又由于?f, Lf??0,L還是半正定的)。
以下部分是我學習CMU 15-751: TCS Toolkit的課堂筆記。接下來將要介紹的是譜圖論(spectral graph theory)的關鍵,也就是Laplacian二次型(Laplacian quadratic form)。直觀地理解,Laplacian二次型刻畫了圖的“能量”(energy)。它在其它語境下,又被稱為Dirichlet形式(Dirichlet form),局部方差(local variance),解析邊界大小(analytic boundary size)。直覺上,其值越小,也就意味著f更加“光滑”(smooth),即其值不會沿著邊變化得太劇烈。
在機器學習,尤其是涉及異構數據的遷移學習/聯邦學習中,我們常常會涉及互信息相關的優化項,我上半年的第一份工作也是致力于此。其思想雖然簡單,但其具體的估計與優化手段而言卻大有門道,我們今天來好好總結一下,也算是對我研一下學期一個收尾。為了解決互信息估計的的難解性,我們的方法是不直接對互信息進行估計,而是采用變分近似的手段,來得出互信息的下界/上界做為近似,轉而對互信息的下界/上界進行最大化/最小化。
在上一篇博客中,我們介紹了用Python對來實現一個Scheme求值器。然而,我們跳過了部分特殊形式(special forms)和基本過程(primitive procedures)實現的介紹,如特殊形式中的delay、cons-stream,基本過程中的force、streawn-car、stream-map等。事實上,以上特殊形式和基本過程都和惰性求值與流相關。這篇博客我們將介紹如何用Python來實現Scheme中的惰性求值和流,并使用惰性求值的原理來為我們的Scheme解釋器增添尾遞歸的支持。所謂流,一言以蔽之,就是使用了惰性求值技術的表。它初始化時并沒有完全生成,而是能夠動態地按需構造,從而同時提升程序的計算和存儲效率。
元語言抽象就是建立新的語言。它在工程設計的所有分支中都扮演著重要的角色,在計算機程序設計領域更是特別重要。因為這個領域中,我們不僅可以設計新的語言,還可以通過構造求值器的方式實現這些語言。對某個程序設計語言的求值器(或者解釋器)也是一個過程,在應用于這個語言的一個表達式時,它能夠執行求值這個表達式所要求的動作。接下來我們將要討論如何關于在一些語言的基礎上構造新的語言。在這篇博客里,我們將用Python語言去構造一個Scheme語言的求值器。事實上求值器的實現語言無關緊要,我們也可以用Scheme語言去構造Scheme語言的求值器。用于被求值語言同樣的語言寫出來的求值器被稱為元循環(metacircular)。
然而,目前大多數域泛化方法需要將不同領域的數據進行集中收集。然而在現實場景下,由于隱私性的考慮,數據常常是分布式收集的。因此我們需要考慮聯邦域泛化(federated domain generalization, FedDG)方法。這里需要注意的是,傳統的域泛化方法常常要求直接對齊表征或操作數據,這在聯邦場景下是違反數據隱私性的。此外對于跨域的聯邦學習,由于客戶端異構的數據分布/領域漂移(如不同的圖像風格)所導致的模型偏差(bias),直接聚合本地模型的參數也會導致次優(sub-optimal)的全局模型,從而更難泛化到新的目標域。
眾所周知,bash命令執行的時候會輸出信息,但有時這些信息必須要經過幾次處理之后才能得到我們想要的格式,此時應該如何處置?這就牽涉到 管道命令(pipe) 了。管道命令使用的是|這個界定符號。每個管道后面接的第一個數據必定是命令,而且這個命令必須要能夠接受標準輸出的數據才行,這樣的命令才可為管道命令。接下來我們選取grep、sed、awk這三個用于文本處理的管道命令來進行介紹。這三個命令可謂是Linux下操作文本的三大利器,合稱Linux文本處理三劍客。
在Linux系統中,執行一個程序或命令就可以觸發一個進程,系統會給予這個進程一個ID,稱為PID,同時根據觸發這個進程的用戶與相關屬性關系,基于這個PID一組有效的權限設置。舉個常見的例子,我們要操作系統的時候通常是利用ssh連接程序或直接在主機上登錄,然后獲取shell。默認的shell是bash,對應的路徑為/bin/bash,那么同時間的每個人登錄都是執行/bin/bash,不過每個人獲取的權限不同。
浙公網安備 33010602011771號