1. 什么是知识图谱?
是结构化的语义知识库,用于迅速描述物理世界中的概念及其相互关系。它的基本单位是(实体-关系-实体) 就是点-线-点。
存储类型有结构化和非结构化的数据。结构化数据就是关系数据库,一张表格,关系很清楚,非结构化就是图片、音频、文本等。存储非结构化数据的方式:一个是通过RDF(资源描述框架)这样的规范存储格式来进行存储,还有一种方法,就是使用图数据库来进行存储,常用的有Neo4j等。
RDF应该有点像我写过的xml文件,用来放网站数据库的
知识图谱的技术框架如下。分成三个流程:信息抽取、知识融合、知识加工。
2. 什么是图嵌入graph embedding 神经网络
图嵌入就是在建立好一个知识图谱后,在知识图谱上发现新的关联(例如药物与药物之间是否发生新的事件,疾病 预测),在构建的知识图谱的基础上学习实体和关系的表示向量,预测药物治疗疾病的可能性。
模型的输入是三元组,物品-事件-物品。
模型会对实体和关系分别建立embedding,想要知道实体-关系向量,就是将实体向量×关系向量。
图嵌入技术主要分成两类:平移距离模型和语义匹配模型
(1)平移距离模型:基于距离的评分函数进行打分
比如已知(A,e1,B)(B,e2,C) 求(AC)之间的事件,就可以将两个向量相加,得到的向量再与输入计算相似度(如图TransE)
期望是前两个向量相加的结果趋近于ref,loss就是余弦相似度,不断迭代,优化embedding层。
(2)语义匹配模型
基于相似性的评分函数,通过匹配实体的潜在语义和向量空间中包含的关系来度量事实的可信度。
3. 交叉熵损失和平方损失的区别?
4. 三数之和
5. 有10亿个32位整数,如何找出重复数?
6. 爬楼梯(动态规划)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
动态规划题首先:确定状态转移方程
爬到第i层的方法=爬到第i-1层的方法+爬到第i-2层的方法,即dp[i] = dp[i-1] + dp[i-2]
再确定初始状态 dp[1] = 1, dp[2] = 2.
太简单了不写代码。然后就是进阶版爬楼梯:
如果每次最多能爬m个台阶,有多少种方法可以到达楼顶?
6-拓展:最小花费爬楼梯(动态规划)
是一样的,都是简单题
def minCostClimbingStairs(self, cost: List[int]) -> int:
dp = [0,0]
n = len(cost)
for i in range(2,n+1):
dp.append( min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1]))
return dp[n]