日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

convE模型

發布時間:2024/3/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 convE模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 《convolutional 2D knowledge graph embedding》論文解讀
      • 研究問題
      • 寫作動機(motivation)
      • 模型詳細描述
      • 模型的整體框架圖
      • 實驗
        • 數據集
        • 實驗結果
      • Reference

《convolutional 2D knowledge graph embedding》論文解讀

研究問題

現有知識圖譜均存在屬性、實體、關系的缺失,現實世界中知識圖譜的用途較為多樣,并涉及到問答、推薦等多種領域,為此對知識圖譜的補全進行研究顯得尤為重要。

寫作動機(motivation)

本文從神經網絡進行知識圖譜為出發點,考慮到淺層的連接預測任務常常用來做鏈接預測任務,但淺層的鏈接預測模型缺乏提取深層次特征的能力,盲目增加embedding_size又會導致過擬合現象,本文基于次設計參數高效、計算快速的卷積神經網絡來做知識圖譜表示學習。

模型詳細描述

模型表示為
ψ ( e s , e o ) = f ( v e c ( f ( [ e s ^ ; r r ^ ] ) ) ? ω ) e o \psi(e_s,e_o)=f(vec(f([\hat{e_s};\hat{r_r}]))*\omega)e_o ψ(es?,eo?)=f(vec(f([es?^?;rr?^?]))?ω)eo?
其中 e s ^ \hat{e_s} es?^? r r ^ \hat{r_r} rr?^?分別表示頭實體與關系的向量表示,*表示卷積操作,f是一個非線性的函數,采用relu函數做激活,score fuction定義為 p = σ ( ω r ( e s , e o ) ) p=\sigma(\omega_r(e_s,e_o)) p=σ(ωr?(es?,eo?))
損失函數使用二元的交叉熵
L ( p , t ) = ? 1 N ∑ ( t i ? l o g ( p i ) + ( 1 ? t i ) ? l o g ( 1 ? p i ) ) L(p,t)=-\frac{1}{N}\sum{(t_i \cdot log(p_i)+(1-t_i)\cdot log(1-p_i))} L(p,t)=?N1?(ti??log(pi?)+(1?ti?)?log(1?pi?))

convE模型源代碼

class ConvE(torch.nn.Module):def __init__(self, args, num_entities, num_relations):super(ConvE, self).__init__()self.emb_e = torch.nn.Embedding(num_entities, args.embedding_dim, padding_idx=0)self.emb_rel = torch.nn.Embedding(num_relations, args.embedding_dim, padding_idx=0)self.inp_drop = torch.nn.Dropout(args.input_drop)self.hidden_drop = torch.nn.Dropout(args.hidden_drop)self.feature_map_drop = torch.nn.Dropout2d(args.feat_drop)self.loss = torch.nn.BCELoss()self.emb_dim1 = args.embedding_shape1self.emb_dim2 = args.embedding_dim // self.emb_dim1self.conv1 = torch.nn.Conv2d(1, 32, (3, 3), 1, 0, bias=args.use_bias)self.bn0 = torch.nn.BatchNorm2d(1)self.bn1 = torch.nn.BatchNorm2d(32)self.bn2 = torch.nn.BatchNorm1d(args.embedding_dim)self.register_parameter('b', Parameter(torch.zeros(num_entities)))self.fc = torch.nn.Linear(args.hidden_size,args.embedding_dim)print(num_entities, num_relations)def init(self):xavier_normal_(self.emb_e.weight.data)xavier_normal_(self.emb_rel.weight.data)def forward(self, e1, rel):e1_embedded= self.emb_e(e1).view(-1, 1, self.emb_dim1, self.emb_dim2)rel_embedded = self.emb_rel(rel).view(-1, 1, self.emb_dim1, self.emb_dim2)stacked_inputs = torch.cat([e1_embedded, rel_embedded], 2)stacked_inputs = self.bn0(stacked_inputs)x= self.inp_drop(stacked_inputs)x= self.conv1(x)x= self.bn1(x)x= F.relu(x)x = self.feature_map_drop(x)x = x.view(x.shape[0], -1)x = self.fc(x)x = self.hidden_drop(x)x = self.bn2(x)x = F.relu(x)x = torch.mm(x, self.emb_e.weight.transpose(1,0))x += self.b.expand_as(x)pred = torch.sigmoid(x)return

convE模型首先將實體和關系向量表示轉化為2維,并對其進行cat操作,并對編碼后的數據進行dropout操作,之后進行卷積、batchnormalize等,之后經過一個全聯接層并使用softmax得到對應的概率。

模型的整體框架圖

實驗

數據集

為驗證模型的有效性,作者使用WN18,FB15K,YAGO3-10,Countires等公開數據集進行對比

實驗結果


參數結果對比,可以看出相同參數下,模型準確率較高

Reference

http://nysdy.com/post/Convolutional%202D%20Knowledge%20Graph%20Embeddings/

源代碼地址

總結

以上是生活随笔為你收集整理的convE模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。