新聞中心

        EEPW首頁 > 智能計算 > 設計應用 > 如何建立中游領域性KG(知識圖)

        如何建立中游領域性KG(知識圖)

        作者:高煥堂 時間:2025-04-19 來源:EEPW 收藏


        本文引用地址:http://www.104case.com/article/202504/469577.htm

        1   復習:上游行業性KG

        在前一期《如何善用通用性行業KG》文章里,曾舉例說明了基于FlavorGraph 通用性上游KG,來建立下游任務型KG。其中,通用性行業KG(如Flavor Graph)蘊含豐富的行業共享性知識,而企業則針對小領域的特殊需求(如拉面的烹飪過程、食材搭配、口味調配等)。這種模式是一種知識驅動的AI 遷移學習,其建立的企業KG(如FoodKG)更具針對性,能加速AI針對企業目標的應用。其架構如下圖1所示。

        1745023064750313.png

        圖1 行業KG支持下游任務

        其中的核心任務是:將行業FlavorGraph的節點嵌入(node embedding)作為企業FoodKG + GCN的初始特征(initial features),讓外部的行業性知識來增強本地圖譜的表現。初始特征來自于成熟的譜,代表了節點間的隱含語義與結構關系。這種初始化能顯著提升模型在各行業的學習能力和性能。

        2   三層KG架構設計

        從上圖-1里,可以看到其為兩層KG架構。其中,下游任務KG直接使用上游任務KG,兩者常常會出現過度相依,降低了靈活性。此時,可以考慮建立三層KG架構,其添加了中間層KG,帶來上游與下游KG之間的松耦合(loose coupling)關系,創造了整體架構的靈活性。茲說明各層KG 架構設計要點,如下:

        第一層:上游通用性行業大KG

        設計要點:利用開源的FlavorGraph行業大KG+GNN。建立「食材?分子成分?味覺特性」的三重組關系,表達食材與其主要香氣化學物的對應關系。

        第二層:中游特定領域KG

        設計要點:建構以特定領域的「共現」關系,例如在同一份發酵菜單中出現的食材群。自定義發酵食譜共現圖,使用共現關聯矩陣或DGL異質圖作為模型訓練素材。使用GraphSAGE/GAT/GCN訓練contextual食材嵌入,讓語意更貼近文化與地方搭配習慣。

        第三層:下游任務型應用KG

        設計要點:聚焦在人與物的關系:顧客?食材,建立異質圖。加入偏好分數、食用紀錄、健康因子等個人化屬性。融合GNN score(語意內積)與群體差異(CF_ link)做出創新食譜、食材推薦。

        3   承先啟后:設計

        A.認識上游KG的既有架構

        首先觀察通用性FlavorGraph 里,內含兩種節點(Node):食材(Ingredient)和風味化合物(Flavor compound)。也含有兩種邊(Edge):ingr-ingr共現邊和ingr-fcomp成分邊。如下圖2 所示:

        1745023227296056.png

        圖2 上游KG的架構

        這兩種邊協助FlavorGraph架構起跨食材與化合物的知識網絡。其含義如下:

        ●   ingr-ingr共現邊:即< 食材- 食材> 之共現關系

            ●   含義:這條邊代表兩種食材之間的風味分子相似性(Flavor Compound Similarity)。

            ●   使用場景:當兩種食材具有類似的化學風味分子(Flavor compounds),這FlavorGraph就會建立一條ingr-i表示它們可能能夠很好地搭配(互補)。

            ●   應用例子:洋蔥與大蒜可能具有共同的硫化物化合物,因此在許多料理中常一起使用。

        ●   ingr-fcomp成分邊:即< 食材- 風味化合物> 之包含關系

            ●   含義:這條邊表示某個食材中實際包含某個特定的風味化合物(或稱:風味分子)。

            ●   使用場景:建立從食材節點(Ingredient node)指向風味化合物節點(Flavor compound node)的連結,描繪食材的化學組成。

            ●   應用例子:香菜(Cilantro)會連結到decanal 或linalool這類風味化合物。

        以表格說明如下:

        1745134080974635.png

        以Python 代碼(片段)表示如下:

        1745134134457205.png

        這種通用性行業KG蘊含了豐富的行業共享性知識。

        B.中游KG的架構設計

        一旦充分熟悉了上游大KG 的架構了,就能承先啟后、繼往開來,設計出一個了。例如,基于FlavorGraph 的預訓練嵌入(Embedding)來建立發酵食品的領域性(中游)<食譜?食材KG>,它將具備語意豐富的風味知識結構。從上圖-2里,可以觀察到,FlavorGraph的核心節點是:食材,而其< 食材?食材>邊是分子層級風味成分的相似性之關聯,又稱為:下層(分子)的共現性。

        接著,仍以食材為中心,添加上層視角的觀察,會發現到:上層(食譜)的共現性。亦即,兩種食材出現于同一食譜的共現性。這就構成一個中游KG的基礎架構了。如下圖3所示。

        1745027229277449.png

        圖3 中游KG的架構

        茲以Python 代碼( 片段) 表示如下:

        1745134218774337.png

        現在已經在Python 代碼里定義好了一個異構圖(Heterograph)。接著,就能拿它(異構圖)來訓練GNN模型。例如,其完整代碼執行時,訓練GIN模型100回合,輸出如下:

        image.png

        于是,訓練好了中游KG模型,并且生成各節點的嵌入表示,儲存于mid_ingredient_embeddings.csv檔案里。

        4   下游任務KG &應用開發

        這是最貼近消費者的下游應用層,可以將顧客數據(如偏好、點餐行為等)建成下游KG,結合中游KG模型學得的食材嵌入(Embedding),透過GNN預測出每位顧客對食材的潛在偏好。我們更導入傳統策略如K-means分群、和反事實連結(Counterfactual link)推薦,成為一個商業性的AI推薦引擎。例如,可以建立一個下游KG,如下圖4所示:

        1745027321476441.png

        茲以Python代碼( 片段) 表示如下:

        1745134362531793.png

        1745134402759706.png

        例如,其完整代碼執行時,輸出如下:

        image.png

        這先讀取中游KG 的節點嵌入,作為下游KG 的初期節點特征。接著,對全部客人(customer)節點特征,進行K-means分群(Clustering),然后探索出反事實連結,而輸出推薦內容。

        5   結語

        上游大KG設計思維是,選擇具可信度的領域知識來源(如FlavorGraph、專業食材文獻),著重于「可轉為語意向量」的屬性建構,例如分子、味覺分類、功能卷標。其設計時應盡量通用與可重復使用,讓其他任務也能延伸引用。亦即,整合了化學組成、風味關聯,建立食材之間的語意知識網絡。

        中游領域KG設計思維是,以「任務情境」為驅動(例如:發酵菜單、飲食場景),其圖結構可簡單(如共現)但要具有代表性與數據源依據,可以從同一菜單中出現的食材建立雙邊共現關系。亦即,捕捉到「能共煮」、「風味類似」等潛在語意,為后續推薦提供基礎。

        下游應用任務KG設計思維是,聚焦在人與物的關系:顧客?食材,建立異質圖。加入偏好分數、食用紀錄、健康因子等個人化屬性。并融合GNN score(語意內積)、K-Means(分群)與群體差異(CF_link)做出推薦。例如,在<食譜?食材> 的包含邊,添加一個邊屬性(attribute):烹煮順序。如下圖5 所示:

        1745027556317639.png

        圖5 更多下游應用KG

        在這下游KG 模型里,將客人、食材與食譜建構成異質圖,導入GNN與 KMeans推薦模型,一旦找到CF_links,就能推薦創新食譜給客人,也能提供創新制程(SOP)給廚師(可能是機器人),不亦美哉。

        (本文來源于《EEPW》



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 新密市| 隆德县| 内丘县| 资溪县| 石门县| 龙海市| 金山区| 江孜县| 沂南县| 广宗县| 眉山市| 湟源县| 阿拉善盟| 陵川县| 郸城县| 自治县| 武川县| 武夷山市| 那坡县| 泽库县| 古浪县| 玛曲县| 镇原县| 会泽县| 得荣县| 卫辉市| 灵石县| 平定县| 图木舒克市| 涞源县| 蓝山县| 凤城市| 彭州市| 开化县| 通江县| 库伦旗| 钟山县| 类乌齐县| 万载县| 班戈县| 黄骅市|