【2018/ICLR】FEW-SHOT LEARNING WITH GRAPH NEURAL NETWORKS
文章链接:https://arxiv.org/pdf/1711.04043.pdf TL;DR 文章中将graph neural network与few-shot learning任务相结合,在模型的通用性,性能和采样复杂度之间做了一个很好的权衡,并且在不同实验的基础上比较了不同学习算法的优劣性。 Dataset/Algorithm/Model 文章中首先根据任务模型划分了不同学习方法之间的区别,数学模型如下所示: T={{(x1,l1),…(xs,ls)},{x~1,…,x~r},{xˉ1,…,xˉt};li∈{1,K},xi,x~j,xˉj∼Pl(RN)} and Y=(y1,…,yt)∈{1,K}t\begin{aligned} \mathcal{T} &=\left\{\left\{\left(x_{1}, l_{1}\right), \ldots\left(x_{s}, l_{s}\right)\right\},\left\{\tilde{x}_{1}, \ldots, \tilde{x}_{r}\right\},\left\{\bar{x}_{1}, \ldot ...
【2015/WWW】LINE:Large-scale Information Network Embedding
论文: LINE: Large-scale Information Network Embedding 源码: https://github.com/tangjianpku/LINE TL; DR DeepWalk首先使用DFS随机游走方法在图中进行采样,然后使用word2vec在采样的序列中学习图中顶点的低维向量表示。LINE也是一种基于邻域相似假设的方法,只不过与DeepWalk使用DFS构造邻域不同的是,LINE可以看作是一种使用BFS构造邻域的算法,包含一阶相似度和二阶相似度两种定义。LINE可以应用在有向/无向、无权/加权图中。DeepWalk仅能用于无权无向图中。 Model/Algorithm 节点相似度定义 LINE算法对图中顶点的相似度定义如下: First-order proximity 一阶相似度用于描述图中成对顶点之间的局部相似度。例如,在社交网络中相互交友的人往往有着相似的兴趣;在万维网上相互链接的页面倾向于谈论类似的话题。形式化描述为若 uuu , vvv 之间存在直连边,则边权 wuvw_{uv}wuv 即为两个顶点的相似度,若不存在直连边,则1阶 ...
基于 PyG 自定义构造 GNN 网络
基于 PyG 构造消息传递网络 图上的卷积操作主要包含两部分:节点消息传递与消息聚集。假设 xi(k−1)∈RF\mathbf{x}_i^{(k-1)} \in \mathbb{R}^{F}xi(k−1)∈RF 表示k−1k-1k−1层节点的特征,ej,i∈RD\mathbf{e}_{j, i} \in \mathbb{R}^{D}ej,i∈RD表示节点jjj到节点iii 的边的特征。那么消息传递的图神经网络可以表示为: xi(k)=γ(k)(xi(k−1),□j∈N(i)ϕ(k)(xi(k−1),xj(k−1),ej,i))\mathbf{x}_{i}^{(k)}=\gamma^{(k)}\left(\mathbf{x}_{i}^{(k-1)}, \square_{j \in \mathcal{N}(i)} \phi^{(k)}\left(\mathbf{x}_{i}^{(k-1)}, \mathbf{x}_{j}^{(k-1)}, \mathbf{e}_{j, i}\right)\right) xi(k)=γ(k)(xi(k−1),□j∈N(i)ϕ(k)(xi(k−1) ...
CNN 中的多种卷积方法
各种卷积运算 group convolution(群卷积或分组卷积) point-wise convolution (点卷积) separable convolution(可分离卷积) depth-wise convolution (深度卷积) dilated convolution (空洞卷积、扩张卷积) transposed convolution(转置卷积) group convolution(群卷积或分组卷积) 假设上一层的feature map总共有N个,即通道数channel=N,也就是说上一层有N个卷积核。假设群卷积的群数目M。那么该群卷积层的操作就是,先将channel分成M份。每一个group对应N/M个channel,与之独立连接。然后各个group卷积完成后将输出叠在一起concatenate,作为这一层的输出channel。(把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。)如下图所示: point-wise convolution (点卷积) point-wise convolution是一种卷积操作,而且是一种特殊 ...
使用 jsDelivr CDN 对 Github 图床进行加速
背景 最开始博客都是使用七牛云存储作为图床,七牛云注册认证后有10G永久免费空间,每月10G国内和10G国外流量,速度相当快,七牛云是国内专业CDN服务商,插件支持比较多,有免费ssl证书。计费问题 > 免费额度须知 最开始以为这10G流量可以使用非常长时间,没想到七牛云https流量收费啊!而且现在网站都需迁为https才能显示网站安全!因此,本人使用七牛云图床一个月后就发现欠费了😂 作为一个穷学生党,虽然七牛云价格便宜但是毕竟不免费啊,因此就需要另寻一免费的图床!以前一直使用github pages 写博客,但其缺点是图片访问速度较慢,有办法可以加速图片访问吗?当然有,本文就介绍一种使用 jsDelivr CDN 加速 Github 图床访问的方法。 jsDelivr 介绍 jsDelivr 是国外的一家优秀的公共 CDN 服务提供商,也是首个打通中国大陆(网宿公司运营)与海外的免费 CDN 服务。jsDelivr 有一个十分好用的功能——它可以加速 Github 仓库的文件。因此可以借Github 搭建一个免费、全球访问速度超快的图床。 解决思路 首先在 Github ...
PyTorch 简明学习教程与高效编程技巧
背景 邻近毕业季事情多且杂,已很长时间未接触PyTorch编程了,不动手实践以前学习的内容就慢慢淡忘了,而且现在PyTorch已更新到版本1.5.0,回想起最开始学习PyTorch时还是版本0.4.1只能感叹技术迭代和AI发展的速度太快了啊!以前学习的 tutorials 换电脑时也丢了…遂… 本篇文章首先简单过一遍PyTorch基础内容,再结合 Github 上的 tutorials 学习一些高效的PyTorch编程技巧! 对于初学者,当然首推PyTorch官方教程: PyTorch tutorials Pytorch 教程与实践 基础内容可以直接阅读官方60分钟入门教程 DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ 由于这个以前学习PyTorch时已经走过了,因此现在换条路走走了! 直接学习Github上的高效PyTorch编程技巧,此处学习大佬 Phd Vahid,这位Phd Github中有两个仓库 EffectiveTensorflow 和 EffectivePyTorch,其中EffectiveTensorflow库已接近870 ...
【2019/CVPR】3D Hand Shape and Pose Estimation from a Single RGB Image
文章链接:https://arxiv.org/pdf/1903.00812.pdf TL;DR 本文基于图卷积提出了一个端到端的手势网格生成方法。在训练中,由于真实数据缺少3D mesh,本文基于深度图提出了一个弱监督学习的训练pipeline,主要是将3D mesh经过一个Renderer生成深度图,再用深度图进行训练model。除此之外,文章公布了一个新的Synthetic+Real手势数据集:数据中包括手的3D locations和3D meshes。 Dataset/Algorithm/Model 文章中model的pipeline如下所示: 根据我对hand pose estimation的了解, 这pipeline的主要创新点在于中间加上了 Graph CNN 生成了3D hand mesh, 在利用 hand mesh数据loss训练model. Graph CNN (关注的点) 对于前半部分网络提取出来的特征,先通过FC层之后reshape到80个顶点的mesh shape, 每个顶点包含64D的特征。然后经过上采样和4层Graph Conv得到包含1280个顶点 ...
【2018/ECCV】Weakly-supervised 3D Hand Pose Estimation from Monocular RGB Images
文章链接:http://openaccess.thecvf.com/content_ECCV_2018/papers/Yujun_Cai_Weakly-supervised_3D_Hand_ECCV_2018_paper.pdf TL;DR 在3D hand pose estmation任务中,由于标注的准确性和数量限制,目前方法3D还原效果一般。文中提出了一种RGB和depth image结合的弱监督模型,能够取得不错的效果。 Algorithm/Model contributions Introduce the weakly supervised problem of leveraging low-cost depth maps during training for 3D hand pose estimation from RGB images. Propose an end-to-end learning based 3D hand pose estimation model for weakly-supervised adaptation from fully-anno ...
PageRank 算法度量节点重要性
本文主要介绍 PageRank 算法原理和其 Python 实现 PageRank 算法原理 如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是 PageRank 值会相对较高。 如果一个 PageRank 值很高的网页链接到一个其他的网页,那么被链接到的网页的 PageRank 值会相应地因此而提高。 计算公式: PR(pi)=α∑pj∈MpiPR(pj)L(pj)+1−αNPR(p_i)=\alpha\sum_{p_j\in M_{p_i}}\frac{PR(p_j)}{L(p_j)}+\frac{1-\alpha}{N} PR(pi)=αpj∈Mpi∑L(pj)PR(pj)+N1−α 其中MpiM_{p_i}Mpi是所有对pip_ipi网页有出链的网页集合,L(pj)L(p_j)L(pj)是网页pjp_jpj的出链的数目,NNN是网页总数,α\alphaα取值一般为 0.85。 Python 实现过程 将 Pagerank 算法运用在社团检测中,需要对计算公式进行重构。如果是有向图可以依然按照上式进行计算,如果是无向图那么将节点的 ...
【2018/ECCV】Pose-Normalized Image Generation for Person Re-identification
文章链接:http://openaccess.thecvf.com/content_ECCV_2018/papers/Xuelin_Qian_Pose-Normalized_Image_Generation_ECCV_2018_paper.pdf TL;DR 文章中提出了一种基于姿势标准化的图像生成方法来解决不同pose下的Re-id问题. 主要思路是使用一个PN-GAN将数据中的所有行人归一化到8个姿态中, 将从真实数据中提取到的行人特征和生成数据中提取到的行人特征融合之后做re-id匹配。 Dataset/Algorithm/Model 文中模型的pipeline如下所示: 文章的主要创新点在于提出了PN-GAN模型, 生成了标准pose下相同人的不同pose图片, 然后将生成的图片特征和初始图片特征进行融合作为Re-id的特征.其中PN-GAN模型如下所示: 对于标准的pose, 文章中提出了八种, 如下图所示: Experiment Detail Thoughts 文中通过将pose归一化来去除掉variant pose对Re-id模型提取特征的影响. 最后实验的效 ...
PyTorch 高效编程手册
pytorch-cookbook 本文代码基于PyTorch 1.0版本,需要用到以下包 123456789import collectionsimport osimport shutilimport tqdmimport numpy as npimport PIL.Imageimport torchimport torchvision 1. 基础配置 (1) check pytorch version 1234torch.__version__ # PyTorch versiontorch.version.cuda # Corresponding CUDA versiontorch.backends.cudnn.version() # Corresponding cuDNN versiontorch.cuda.get_device_name(0) # GPU type (2) update pytorch 1conda update pytorch torchvision -c pytorch (3) random seed ...
Plotly Express 绘图教程
Plotly Express 简介 Plotly Express 是一个新的高级 Python 可视化库:它是 Plotly.py 的高级封装,它为复杂的图表提供了一个简单的语法。 参考 官方文档 散点图 1import plotly.express as px 123iris = px.data.iris()fig = px.scatter(iris, x='sepal_length', y='sepal_width')fig.show() 123fig = px.scatter(iris, x='sepal_length', y='sepal_width', color='species', marginal_x='histogram', marginal_y='box', trendline='ols')fig.show() 1234iris['error'] = i ...
t-SNE 可视化算法
背景 t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非常流行的非线性降维技术,主要用来对高维数据进行可视化,了解和验证数据或者模型。t-SNE属于流行学习(manifold learning),假设数据是均匀采样于一个高维欧氏空间中的低维流形,流形学习就是从高维采样数据中恢复低维流形结构,即找到高维空间中的低维流形,并求出相应的嵌入映射,以实现维数约简或者数据可视化。 t-SNE 基本理论 假设一个数据集XXX,数据集中每个样本都是DDD维的,X∈RDX\in R^DX∈RD,t-SNE的目的是生成一个低维的特征集Y∈RdY\in R^dY∈Rd来表征样本,其中 ddd 远小于 DDD。最典型的为d=2d=2d=2,从而将高维样本数据在二维平面上表示,方便观察数据的分布特性。 在降维过程中,目的是使原始空间中的两个样本点x_ix\_ix_i和x_jx\_jx_j在降维后的空间中对应的点y_iy\_iy_i和y_jy\_jy_j保持同样的距离分布。为了达到这样的效果,t-SNE将原始空间的相似性建模为概率密度,并且相似性的分布由 ...
机器学习问题处理框架
参考链接:approaching-almost-any-machine-learning-problem 机器学习算法工程技能: 先看一张问题处理的流程图: 上面的框架图主要包括问题处理的流程和主要的方法,本人觉得总结的相当好。 应用算法解决Kaggle问题,一般具有一下步骤: 第一步:识别问题 第二步:分离数据 第三步:构造提取特征 第四步:组合数据 第五步:分解 第六步:选择特征 第七步:选择算法进行训练 利用Python做数据分析时,可以使用以下集成的包: Anaconda 包含大部分数据科学分析所用的包 pandas 将数据转为Dataframe进行处理 scikit-learn 包含机器学习算法模型 matplotlib 画图包 xgboost 集成决策树 keras/Tensorflow/Pytorch 深度学习框架 tqdm 进度条 Community/IGraph/networkX 社团检测相关包 第一步:识别问题 首先明确这个问题是回归还是分类。通过问题和数据可以判断出来,一般情况下数据由X和Label组成,Label可以一列 ...
节点相似性度量指标汇总
本文主要介绍复杂网络中顶点相似性度量指标。 基于局部信息的节点相似度指标 共同邻居 sxy=∣Γ(x)∩Γ(y)∣s_{xy}=|\Gamma(x)\cap\Gamma(y)| sxy=∣Γ(x)∩Γ(y)∣ Salton指标 sxy=∣Γ(x)∩Γ(y)∣k(x)×k(y)s_{xy}=\frac{|\Gamma(x)\cap\Gamma(y)|}{\sqrt{k(x)×k(y)}} sxy=k(x)×k(y)∣Γ(x)∩Γ(y)∣ Jaccard指标 sxy=∣Γ(x)∩Γ(y)∣∣Γ(x)∪Γ(y)∣s_{xy}=\frac{|\Gamma(x)\cap\Gamma(y)|}{|\Gamma(x)\cup\Gamma(y)|} sxy=∣Γ(x)∪Γ(y)∣∣Γ(x)∩Γ(y)∣ Sorenson指标 sxy=2∣Γ(x)∩Γ(y)∣k(x)+k(y)s_{xy}=\frac{2|\Gamma(x)\cap\Gamma(y)|}{k(x)+k(y)} sxy=k(x)+k(y)2∣Γ(x)∩Γ(y)∣ 大度节点有利指标(HPI) sxy=∣Γ(x)∩Γ(y)∣ ...