当前位置: 首页 > 编程日记 > 正文

知乎算法团队负责人孙付伟:Graph Embedding在知乎的应用实践

640?wx_fmt=png

演讲嘉宾 | 孙付伟
出品 | AI科技大本营(ID:rgznai100)

9月6-7日,在由CSDN主办的2019中国AI开发者大会(AI ProCon 2019)的 机器学习专场中,知乎算法团队负责人孙付伟在机器学习专场中分享了《Graph Embedding及其在知乎的实践》。

Graph Embedding 技术是一种将图的拓扑结构进行向量表示的方法,从而获取到网络关系信息,应用于推荐等多种场景。在本报告中,孙付伟重点讲了Graph Embedding 技术,以及在知乎的具体实践,包括知乎用户embedding 的实践和在在知乎收藏夹数据中的应用。未来,知乎还计划用Graph Embedding进行会员购买预测,以及个性化推送的召回。

以下为演讲内容实录:

很高兴能够参加这次AI开发者大会。我今天分享的是GraphEmbedding及其在知乎的一些实践。
什么是Graph Embedding呢?这些年来深度学习发展速度非常快,但是一直遇到一个问题,我们现实的世界当中很多是以图存在的,比如社交关系,比如搜索行为、购买行为,它形成的都是一种图的表示关系。但是传统的Embedding,包括在自然当中图关系的挖掘,其实做的远远不够。从2014年开始,已经有一些业内学者在这方面做一些深入研究,研究Embedding是否可以做图的表征,接下来我会简单做个介绍。之后我会分享一下Graph Embedding在知乎的两个应用,一个是用户Embedding的表示,一个是知乎收藏夹数据的Embedding挖掘。最后是对今天分享的总结,以及我们未来的具体工作规划。
首先讲一下知乎的业务背景。知乎现在已经是一个综合性的问答社区,截止到今年1月份,我们的用户数超过2.2亿,累计超过3000万的问题提出,并由此带来1.3亿的优质回答。除此之外,我们还有大量的文章,盐选专栏、电子书等等其他多种产品形态。在这样一个大的问答社区当中,本质上来说,其实一个问答社区是一种连接关系,万物都是一个连接关系。

640?wx_fmt=png


在问答社区里面包含了三大块:一块是人和人之间的连接,一块是人与内容之间的连接。比如说在知乎的搜索和推荐当中,就存在着大量的连接关系,我们会根据用户的关注页关系来推荐内容。还有一块是内容自身的连接,在知乎有一个特殊的功能“收藏夹”,并且这个收藏夹是公开的,大概有几千万个,意味着其他用户是可以看到别人的收藏。这就会形成内容和内容之间的连接。在知乎这样一个万物都是连接的问答社区当中,如何有效表征这种连接关系,是我们这几年一直在思考一个点。

640?wx_fmt=png

上图我们以站内一些数据做了一个连接关系的展现,其实一种大的连接点,会形成千千万万的连接。用户关系挖掘会有助于我们社群关系的连接提升,也有助于用户群体的发现。

既然是图关系,我们为什么要用到Graph Embedding呢?在面对图结构的时候,我们传统的序列Embedding经常不知道该怎么去处理。图这种连接关系是没有序列状的表示,怎么去做这件事?为了解决这样一个问题,从2014年一直到现在,Graph Embedding变成了业内一个全新的研究方向。
我先介绍一些经典的技术和方法。首先我们看第一个,2014年deep walk提出可以算作Graph Embedding迈出来的第一步工作。这篇文章的思想相对来说还是比较简单的,它是借助了word2Vec之前的图表序列,随机游走方式,将图以序列方式表征。举一个例子,这个图更容易跟我们现实当中结合起来,最左侧是用户购买,或者贡献购买之间的关系。根据贡献购买之间的关系之后,走一步randomwalk生成,形成商品关系之间的序列,形成序列之后,就可以借助于Graph Embedding思想进行表示。可以说,它已经打开了Graph Embedding这扇门,让大家了解其实图也是一个我们需要去深入连接的点。

640?wx_fmt=png

2014年deep walk打开这扇门之后,2015年微软发表了LINE这篇文章,这篇文章有两个核心的概念需要说明一下,它明确定义了图当中的相似度如何表征,这里表征用了两个概念,一个是1阶相似度,节点和节点之间存在直接的连接,叫1阶相似度。比如右侧的6和7,7和8,这种连接关系都是1阶连接,当它存在边,它的边就是它的相似度,如果不存在边,它的1阶相似度就是0。2阶相似度主要说的是它们的两个节点之间并不存在直接连接关系,但是它的邻居是大量重合的,主要衡量的是两个节点的网络结构相似度的程度是多少。

比方说在这个图里面,5和6,1阶相似度是0,2阶相似度可以是另外一种值。通过这种方式我们就可以把图的这种关系用这样的定义来刻画出来,我们在现实当中经常需要去挖掘的是,除了它的1阶关系,还要用到它的2阶关系,从而能够应用到把这个Embedding学出来它们的网络结构的表征,从而应用于推荐这些场景。讲完概念之后我们再来看1阶相似度和2阶相似度如何定义问题的。

640?wx_fmt=png


我们先说一个机器学习的问题,里面有一个叫预测概率、经验概率、和优化目标。在优化目标上,核心点主要预测的是交叉商的优化目标,这部分只是表征了一个正样本,我们其实还存在负样本,对负样本采用负采样的方式,把优化目标作为一个改造,形成这样一个表征,这是1阶相似度。2阶相似度,优化目标和上面是类似的。这是基于上面这种关系我们把它的优化目标做一个简单说明,这篇文章里面做了三点优化技巧。
首先,1阶和2阶可以分开训练的,因为每个都有自己的优化目标,这篇文章里面特殊的技巧,分开训练,在一些应用场景里面把它concat到一起做预测。其次是wij,权重范围相当大,所以我们在去做预测推广的时候它的学习率是很难控制的,这里采用了一个技术方案,边采样,EdgeSample,从而降低这个问题。对于冷启动的事,当一个节点边较少的时候,怎么去处理,在现实当中冷启动经常会遇到这样的问题,这篇文章已经开始考虑了节点冷启动问题,它用的一个手段是,往外扩充,用它的2阶邻居,它的3阶点来去处理它们2阶相似度,放在2阶相似度上来表明。这个是2015年的一篇文章。
2016年有两篇文章,一篇文章在Deep walk的扩展,我们可以想一下randomwalk整个流程,类似于深度优先搜索的挖掘路径,这篇文章和Deep walk唯一差别是,它既考虑了DFS,又考虑了BFS,可以把结构信息学得更全面一些。分为同质性和结构性,它们形成的序列越接近,Embedding表征越相似,比如说U和S1、S2这些,表征越接近越好。结构性,两个结构越接近,学出来的Embedding表征越相似。如果我要更倾向于BFS,U和S6更接近一些。如果是DFS,相近的这些Embedding表征更相似。所以,这篇文章是做了结构性和同质性的某种中和,但是怎么来调节它们俩之间的权重,怎么来控制,其实用了一个跳转概率,来控制BFS和DFS的倾向性。

640?wx_fmt=png

以下图为例,当一个T节点进入到下一个节点V的时候,到V这个节点之后,下一步应该朝哪个节点走呢?这里定义两个参数,分别是p和q,通过这两个参数来控制我到底v朝X2、X3随机走,还是返回。在v到t的跳转概率反而越来越小,越大就偏重于DFS,如果t越小就偏重于BFS。这篇文章把p和q做了一系列参数实验。整个效果看一看是不是我刚才说的内容。

当它越靠近DFS的时候,它们学出来的是这种促的信息,学Embedding表征越来越相近。如果是靠近BFS,节点连接的关系信息学的会更相近一些。

640?wx_fmt=png

这是2016年的第一篇文章,在Deepwalk基础上做了进一步演进,主要是解决结构性的问题。
第二篇文章,SDNE这篇文章,这两篇文章都发表在KDD2016年的两篇文章,上面那篇文章是在Deep walk基础上做扩展,这篇文章是在LINE基础上做扩张。图的网络结构信息分成local和global的,local是LINE里面1阶关系,直接相连关系,global说的是邻居之间跟它的连接关系,这是它的一个对应。

这篇文章又用了另外一种思路,非监督的autoencoder方式,来得到Embedding表示,我们先来看右侧这个图,globalEmbedding的图的结构。它的Embedding表示什么呢?和我相连的那些节点权重就是这里面的表征,xi是这样表征,autoencoder之后会形成新的表征,我们去衡量它原始的表征和新的表征之间的相似度,就是我们优化的一个点。xi用邻居的信息来表征它自身特征的,其实是global的概念。(原文当中的图是错的,这个地方是local,这个是global,其实我们反过来看,应该是画错了,这个词画错了。)

640?wx_fmt=png

这个是针对i这个节点,针对j这个节点也一样,也会学出来这个表征,最终i这个节点的表示是中间这一层,我们是要去度量中间这两个节点的相似度,来去表征。它的优化函数,加了一个因子。这篇文章可以说是用了我们N的更复杂的autoencoder的思想,在LINE的基础上做了扩展。
这篇文章其实也有应用,在阿里,凑单系统里面,这是他们开放的一个博客里面有所提到,凑单系统里面做这件事,怎么做呢?拿到用户同时购买的内容序列,形成这样一个图的表示。在这个图的表示里面去用加权的walk做采样,为什么做采样?这个表征是说它与它相连的那些节点之间的权重,当我这个数据量规模,像淘宝这样一个大的数据规模里边,连接关系是特别特别多的。先对样本做采样,采样的方式是对热门数据做加权,它想表征出来让热门数据推荐的更充分一些,然后做了这样一个加权,这个里面用的结构其实就是SDNE。
不过它在SDNE里边加了这样一个全连接,能跟它的现有系统做一个比较,这是它的一个变化。它在双11预热期间,在点击和多样性这两个指标上,据它的公开表述说,它的点击提升了13%,它做成实时化之后,在这个基础上又提升了4%。它们内部多样性指标直接翻了接近 1倍。

640?wx_fmt=png

这是2016年的第二篇文章。
在2018年阿里又写了一篇文章,主要用在解决我们在图里面表征冷启动的一些问题,有些节点它的信息较少,我们怎么去处理。EGES是在2018年KDD上发表的,核心点主要是在Deepwalk基础之上加入了对冷启动商品的处理,加入的方式叫side information,两个商品之间尽管没有共现的关系,尽管共现关系特别少,但是还有其他额外的知识信息,知识图的信息是可以用起来的。比如说属于同一个店铺,属于同一个品类,属于同一类价格区间等等,大概十几类sideinformation,把这个信息变成了它在图当中利用特殊的相似度链接,把它拼接起来,形成一个新的更完备的图。后面的工作就比较简单了,形成这个链接之后,不同的连接关系,通过sideinformation信息学的某种表征,把向上连接作为不同权重来去学习它。

640?wx_fmt=png

这篇文章思路是比较简单的,但是它具有很强的实操性,在业内已经有几个公司都在用这篇思路来做Embedding召回,一会儿我们可以去看在知乎上的效果。
上面简单说了一下Graph Embedding这些年主要的技术点,当然,还有最新的我还没有讲到。我下面主要讲一讲GraphEmbedding在知乎的两个实践,现在Graph Embedding在知乎应该有三四个分别的应用,我先拿这两个,因为这两个和上面的文章是一一对应的。

第一个,关于用户Embedding表示,这个是我们在2017年的时候做的一个尝试,我们在知乎大概有几千万的存在大量链接关系的用户,为了强化他们在社区上的互相影响,并且让他们形成一种社区的概念,做用户的推荐,或者说用户群体的挖掘,变成我们不得不考虑的一件事。当时考虑一个点,用GraphEmbedding思路,我们去学一下Embedding,看看它的效果。这里面的思想其实比较简单,就是纯的Deepwalk,通过筛选,大概筛选出2400万用户群体,根据它的关系挖掘,形成这样的关系链路,形成关系序列,最后就是用Deepwalk思想做了预测。

640?wx_fmt=png

上图是我们跑完之后的效果图,做机器学习和深度学习的会比较了解这些同学。
上面的思想比较简单,2017年做的,今年上半年我又做了第二件事,EGES,阿里2018年的那篇文章,知乎有几千万收藏夹的数据,这是两个例子,深度学习,用户自己编辑的收藏夹,我们可以看到相关文章,常用的,什么是梯度下降法,机器学习最好的课程是什么等等,一系列文章,形成了收藏夹。这些是成长相关的文章,比如自律,提升自我竞争力等等。当然,这些数据全是用户自己对外公开的数据,因为收藏夹数据要么是自己看的收藏夹,要么是公开的收藏夹,我们用的数据都是公开的,用户愿意分享的收藏夹数据。
这个收藏夹数据包含了大量有价值的内容,2018年的时候,我们大量都在用一些协同过滤思想来做这件事,挖掘它们之间的关系。当时遇到两个问题没太好解决。第一个问题,长尾的内容不太好表示。第二个问题,默认了用户的这个序列,在我们协同过滤里边浏览的序列,但是在实际当中,它这个先后是没有任何关系的。所以,在矩阵协同分解的时候,我们认为它无法表达更强的传播能力,让它学的多样性不够,总体效果也可能会有些损失,等一会儿我们来看看是不是这样。
其实思想还是借助于业内他们的思路,他们是基于共同购买,我们是基于收藏夹的内容,做一些筛选,构建Graph,节点为内容,而没有把收藏夹变成其中一个节点,这个其实是有一个考虑的。大家可以想想为什么,我们的内容可能和收藏夹是不成比例的,在我们收藏的内容,如果把它变成一个节点,它可能学出来的会有些问题,当然,这是我们睬的一些坑,后面挖掘出来的东西。如果它贡献了,我们就认为它存在一条边。
在收藏夹数据里边,我们跟淘宝可能不太一样的地方是,我们更期望的是推荐出来它的真正Embedding相似,而不是推荐一些热门的。所以,在这里我们会对热门内容降采样,并且考虑做序列挖掘的时候,考虑了BFS挖掘信息。我们还引入了自身的side information信息,例如topic,两篇文章同一作者等等这样的信息,加入到我们的Embedding学习当中。这是我们做的几个概念。
训练集,110万节点,构建3亿条边,Random walk和EGES差不多,每个节点会进行10次walk,最终效果是下面这个结果。本来还有它作为Embedding召回在线上应用的东西,但是那些东西不太适合在这个场景去说,所以我就没有把那些东西添上。我们先以一个事例说明效果。
同样是两个回答,这两个回答都是说为什么白居易写了《琵琶行》却不娶琵琶女,我们可以看用协同过滤推出来的效果,右侧是我们基于EGES推出来的。基本上是偏重于诗词,还有一些是雅称,还有一些是关于鲁迅文学相关的,大概是这样一个推荐的效果,这是在召回上。我们现在这个东西会用在好几个推荐场景,比方说个性化推送,比方说做内容回答的推荐等等等等,还有问题的推荐。这是两个在知乎的具体实践。

640?wx_fmt=png

最后做一个简单总结,我们认为Graph Embedding在这些年已经成为推荐系统、计算广告等领域一种新的流行做法,并且Graph这种图的表征还在如火如荼的开展当中。我们认为它的影响会持续放大。我们现在跟着业内最前沿的脚步往前走,看看如何达到更好地把最新的技术前沿应用到知乎具体的算法场景当中。
其次,关于未来规划,我们在这里面会涉及到两点,一是会员购买预测,知乎现在的会员业务中涉及到像淘宝一样购买场景,但是这里面存在一个问题,它的数据更稀疏,如何在稀疏的数据当中学出来Embedding表示,是我们要考虑的一个点。第二个是个性化推送的召回,目前已经上线。二是更多的技术尝试,我们在用户画像当中只用到了Embedding挖掘,但用户的持续兴趣、关注兴趣、浏览文章等等,有大量信息是可以去用的,但是这个信息我们现在还没有做进一步的尝试,这将是我们下一步要尝试的点。第二点,根据SDNE那篇文章,我们认为它那个表征会更自然一些,现在想法是会把side information信息与SDNE结合,看看会不会有别样的效果提升。

(*本文为AI科技大本营原创文章,转载信联系 1092722531)

精彩推荐


由易观携手CSDN联合主办的第三届易观算法大赛正在火热进行中!冠军奖3万元,每团队不超过5人参赛。

本次比赛主要预测访问平台的相关事件的PV,UV流量(包括Web端,移动端等),大赛将会提供相应事件的流量数据,以及对应时间段内的所有事件明细表和用户属性表等数据,进行模型训练,并用训练好的模型预测规定日期范围内的事件流量。

640?wx_fmt=jpeg
推荐阅读
  • 顶配12699 元、没有5G,“浴霸三摄”的iPhone你会买吗

  • 卷积神经网络中十大拍案叫绝的操作

  • 5大必知的图算法,附Python代码实现

  • 如何在Apache Flink中使用Python API?

  • 使用Python进行机器学习的假设检验(附链接&代码)

  • 备受期待的原子交换,将如何对中心化交易所构成威胁?

  • 马云淡出「理想国」

640?wx_fmt=png
你点的每个“在看”,我都认真当成了喜欢

相关文章:

一维码Codabar简介及其解码实现(zxing-cpp)

一维码Codabar:由4条黑色线条,3条白色线条,合计7条线条所组成,每一个字元与字元之间有一间隙Gap做区隔。条形码Codabar包含21个字元:(1)、10个数字0~9;(2)、””, ”-”,”*”, ”/”, ”$”, .”, ”:”等7个特殊符号…

node 压缩模块速成

1. 压缩与解压缩处理可以使用zlib模块进行压缩及解压缩处理,压缩文件以后可以减少体积,加快传输速度和节约带宽 代码2. 压缩对象压缩和解压缩对象都是一个可读可写流方法说明zlib.createGzip返回Gzip流对象,使用Gzip算法对数据进行压缩处理zlib.createGu…

hadoop作业初始化过程详解(源码分析第三篇)

(一)概述我们在上一篇blog已经详细的分析了一个作业从用户输入提交命令到到达JobTracker之前的各个过程。在作业到达JobTracker之后初始化之前,JobTracker会通过submitJob方法,为每个作业都创建一个JobInProgress对象(本文以后简称…

百度无人车急刹车

导语:没人会怀疑人工智能在未来的地位,也没人会怀疑无人驾驶将改变我们的生活,但百度首次出现亏损,“现金牛”业务遭遇越发严重的挑战,无人驾驶行业的征途却越发漫长且荆棘密布,这个公司该如何走到“流着奶…

STM32中EXTI和NVIC的关系

(1)NVIC(嵌套向量中断):NVIC是Cortex-M3核心的一部分,关于它的资料不在《STM32的技术参考手册》中,应查阅ARM公司的《Cortex-M3技术参考手册》Cortex-M3的向量中断统一由NVIC管理。 (2)EXTI(外部…

一维码Code 93简介及其解码实现(zxing-cpp)

一维码Code 93: Code 93码与Code 39码的字符集相同,但93码的密度要比39码高,因而在面积不足的情况下,可以用93码代替39码。它没有自校验功能,为了确保数据安全性,采用了双校验字符,其可靠性比39条码还要高.一维码Code 39的介绍可以参考&#…

HEVC/H.265 的未来必须是使用并行处理(OpenCL?) OpenCV和OpenCL区别

1 扩展库简介OpenCV(Open Source Computer Vision Library)是一个致力于实时处理计算机视觉问题的开源库。它最初由Intel公司开发,以GPL许可协议发布,后来由Willow Garage基金会负责开发和维护,以BSD许可协议发布&…

一维码Code 128简介及其解码实现(zxing-cpp)

一维码Code 128:1981年推出,是一种长度可变、连续性的字母数字条码。与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大。Code 128特性&…

21个必须知道的机器学习开源工具!

作者 | SebastianScholl译者 | 刘静,责编 | 郭芮出品 | CSDN(ID:CSDNnews)本文将介绍21种用于机器学习的开源工具。以下为译文:你肯定已经了解流行的开源工具,如R、Python、Jupyter笔记本等。但是&#xff…

eclipse中egit插件使用

2019独角兽企业重金招聘Python工程师标准>>> 这篇文章当时制作有点粗糙,建议阅读升级版:eclipse中egit插件使用--升级版 使用git作为项目的代码管理工具现在是越来越火,网上有各种各样的文章、博客、讨论,其中以命令行…

一维码EAN 8简介及其解码实现(zxing-cpp)

一维码EAN 8:属于国际标准条码,由8个数字组成,属EAN的简易编码形式(EAN缩短码)。当包装面积小于120平方公分以下无法使用标准码时,可以申请使用缩短码。依结构的不同,EAN条码可区分为:1. EAN 1…

三年、四大顶会,深度推荐系统18篇论文只有7个可以复现

作者 | 深度传送门来源 | 深度传送门(ID:gh_5faae7b50fc5)导读:本文是“深度推荐系统”专栏的第十篇文章,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化。本文主要根据RecSys 2019中论文…

PHP教程中验证正整数is_int($value+0),为什么要这样?

2019独角兽企业重金招聘Python工程师标准>>> 最近学习PHP应用,其中有一段是要验证变量是否为正整数,除了is_numeric($value)外,还要加上is_int($value0)且($value0) > 0,为什么还要 0呢?直接验证$value不…

[给12306支招]取消车票预订-采用全额预售(充值)

为什么80%的码农都做不了架构师?>>> 取消车票预订 预订给车票销售带来的负面效应: 产生"占座", 如果用户不付款就会造成席位在支付期内无法销售.回收成本, 超过支付期需要回收车票.恶意占座, 如果恶意占座会造成大量真正要买票的客户无法购票…

一维码ITF 25简介及其解码实现(zxing-cpp)

一维码ITF 25又称交插25条码,常用在序号,外箱编号等应用。交插25码是一种条和空都表示信息的条码,交插25码有两种单元宽度,每一个条码字符由五个单元组成,其中二个宽单元,三个窄单元。在一个交插25码符号中…

微软云计算业务增长,或成全球最具价值上市公司

近日,有消息指出,微软公司在云计算业务上的豪赌正在取得回报,目前微软已超越苹果公司,成为全球市值最高的上市公司。就在几年前,这家软件制造商的市场前景还不被人看好,随着个人电脑销量的大幅度下滑&#…

激光雷达,马斯克看不上,却又无可替代?

作者 | Xingwei来源 | 辣笔小星(ID:XingweiSteven)【导读】最近Velodyne挑起的激光雷达LiDAR专利之战成为了业界热点。可以说在严苛的自动驾驶系统中激光雷达成为一种不可替代的传感器。今天让我们详细聊聊激光雷达LIDAR是怎么回事。什么是激光雷达LIDAR…

解决CSV文件中长数字以科学记数格式保存问题

今天因为需要做数据导入到数据表中,用xlxs文件做好了转化为csv文件,结果一看,傻眼了,全部变为科学记数了,在xlxs设置好的单元格格式为文本,可是转化为csv之后就变为了常规,而且也改变了。源文件…

假设检验怎么做?这次把方法+Python代码一并教给你

(图片付费下载于视觉中国)作者 | Jose Garcia译者 | 张睿毅校对 | 张一豪、林亦霖编辑 | 于腾凯来源 | 数据派THU(ID:DatapiTHU)【导读】本文中,作者给出了假设检验的解读与Python实现的详细的假设检验中的…

C++实现tar包解析

tar(tape archive)是Unix和类Unix系统上文件打包工具,可以将多个文件合并为一个文件,使用tar工具打出来的包称为tar包。一般打包后的文件名后缀为”.tar”,也可以为其它。tar代表未被压缩的tar文件,已被压缩的tar文件则追加压缩文…

HTML5的学习,各个标签的尝试

style标签的使用可以更好的改变各个标题风格 基本标签<p>,标题<h>,这里br是换行。 超链接的使用&#xff0c;属性href。 表格的使用table。 最后就是图片 img&#xff0c;和音频audio插入地址即可。 今天的学习就分享这些&#xff0c;谢谢大家。转载于:https://www…

Android获取内部和SDCard的存储空间

有时我们开Android项目开发时会用到文件存储或上传文件的一些操作&#xff0c;那么我们前提是要获取到该存储设备的大小&#xff0c;以方便于与我们需要操作的文件的大小做比较&#xff0c;如果操作的文件大小小于存储空间&#xff0c;那么就可以继续操作&#xff0c;反之则不能…

排序算法 Java实现

选择排序 核心思想 选择最小元素&#xff0c;与第一个元素交换位置&#xff1b;剩下的元素中选择最小元素&#xff0c;与当前剩余元素的最前边的元素交换位置。 分析 选择排序的比较次数与序列的初始排序无关&#xff0c;比较次数都是N(N-1)/2。 移动次数最多只有n-1次。 因此&…

正则表达式简介及在C++11中的简单使用

正则表达式(regular expression)是计算机科学中的一个概念&#xff0c;又称规则表达式&#xff0c;通常简写为regex、regexp、RE、regexps、regexes、regexen。 正则表达式是一种文本模式。正则表达式是强大、便捷、高效的文本处理工具。正则表达式本身&#xff0c;加上如同一…

经典再读 | NASNet:神经架构搜索网络在图像分类中的表现

&#xff08;图片付费下载于视觉中国&#xff09;作者 | Sik-Ho Tsang译者 | Rachel编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】从 AutoML 到 NAS&#xff0c;都是企业和开发者的热门关注技术&#xff0c;以往我们也分享了很多相关…

javascript面向对象技术基础(二)

数组我们已经提到过,对象是无序数据的集合,而数组则是有序数据的集合,数组中的数据(元素)通过索引(从0开始)来访问,数组中的数据可以是任何的数据类型.数组本身仍旧是对象,但是由于数组的很多特性,通常情况下把数组和对象区别开来分别对待(Throughout this book, objects and a…

MediaPipe:Google Research 开源的跨平台多媒体机器学习模型应用框架

作者 | MediaPipe 团队来源 | TensorFlow&#xff08;ID&#xff1a;tensorflowers&#xff09;【导读】我爱计算机视觉&#xff08;aicvml&#xff09;CV君推荐道&#xff1a;“虽然它是出自Google Research&#xff0c;但不是一个实验品&#xff0c;而是已经应用于谷歌多款产…

机器学习研究的七个迷思

作者 Oscar Chang 总结了机器学习研究中的七大迷思&#xff0c;每个问题都很有趣&#xff0c;也可能是你在研究机器学习的过程中曾经遇到过的“想当然”问题。AI 前线对这篇文章进行了编译&#xff0c;以飨读者。迷思之一&#xff1a;TensorFlow 是张量操作库 它实际上就是一个…

Caffe源码中common文件分析

Caffe源码(caffe version:09868ac , date: 2015.08.15)中的一些重要头文件如caffe.hpp、blob.hpp等或者外部调用Caffe库使用时&#xff0c;一般都会include<caffe/common.hpp>文件&#xff0c;下面分析此文件的内容&#xff1a;1. include的文件&#xff1a;boost中…

编程乐趣:C#彻底删除文件

经常用360的文件粉碎&#xff0c;删除隐私文件貌似还不错的。不过C#也可以实现彻底删除文件。试了下用360文件恢复恢复不了源文件了。代码如下&#xff1a;public class AbsoluteFile{public event EventHandler FinishDeleteFileEvent null;public event EventHandler Finish…