HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    神经网络是线性分类器吗(神经网络是线性分类器吗为什么)

    发布时间:2023-04-08 10:25:14     稿源: 创意岭    阅读: 115        

    大家好!今天让创意岭的小编来大家介绍下关于神经网络是线性分类器吗的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    神经网络是线性分类器吗(神经网络是线性分类器吗为什么)

    一、线性模型

    这一篇的内容旨在对之前学习过的四种不同线性分类模型( Logistic 回归、softmax回归、感知器和支持向量机 )做一个整理。这些模型的区别主要在于使用了不同的损失函数。

    线性模型(Linear Model)是机器学习中应用最广泛的模型,指通过样本特征的线性组合来进行预测的模型。给定一个 维样本 ,其线性组合函数为:

    其中 为 维的权重向量, 为偏置。线性回归就是典型的线性模型,直接用 来预测输出目标 。

    在分类问题中,由于输出 是一些离散的标签, 的值域为实数,因此无法直接用 来进行预测,需要引入一个 非线性的决策函数(Decision Function) 来预测输出目标:

    其中 也称为 判别函数(Discriminant Function)

    也就是说,一个线性分类模型(Linear Classification Model)或线性分类器(Linear Classifier),是由一个(或多个)线性的判别函数 和非线性的决策函数 组成。

    二分类(Binary Classification)的类标签 只有两种取值,通常可设为 。

    在二分类中我们只需要一个线性判别函数 。所有满足 的点组成一个分割超平面(Hyperplane),称为决策边界(Decision Boundary)或决策平面(Decision Surface)。决策边界将特征空间一分为二,划分成两个区域,每个区域对应一个类别。

    线性模型试图学习到参数 ,使得对于每个样本 尽量满足:

    上面两个公式也可以合并,即参数 尽量满足:

    接下来我们会看到,对线性模型来说, 这一表达式是十分重要的。

    于是我们可以定义: 对于训练集 ,若存在权重向量 ,对所有样本都满足 ,那么训练集 是线性可分的

    接下来我们考虑多分类的情形,假设一个多类分类问题的类别为 ,常用的方式有以下三种:

    若存在类别 ,对所有的其他类别 ,都满足 ,那么 属于类别 。即:

    “一对其余”和“一对一”都存在一个缺陷:特征空间中会存在一些难以确定类别的区域,而“argmax”方式很好地解决了这个问题 。下图给出了用这三种方式进行三类分类的示例,其中不同颜色的区域表示预测的类别,红色直线表示判别函数 的直线。在“argmax”方式中,类 和类 的决策边界实际上由 决定,其法向量为 。

    在本节中我们采用 以符合Logistic 回归的描述习惯。

    为解决连续线性函数不适合进行分类的问题,我们引入非线性函数 来预测类别标签的后验概率 :

    其中 通常称为 激活函数(Activation Function) ,其作用是把线性函数的值域从实数区间“挤压”到了 之间,可以用来表示概率。

    在Logistic回归中,我们使用Logistic函数来作为激活函数。标签 的后验概率为:

    标签 的后验概率为:

    进行变换后得到:

    其中 为样本 为正反例后验概率的比值,称为 几率(Odds) ,几率的对数称为对数几率。因此,Logistic 回归也称为 对数几率回归(Logit Regression)

    Logistic回归采用交叉熵作为损失函数,并使用梯度下降法来对参数进行优化。 其风险函数为:

    风险函数 是关于参数 的连续可导的凸函数。因此Logistic回归除了梯度下降法之外还可以用高阶的优化方法,比如牛顿法,来进行优化。

    Softmax回归,也称为多项(multinomial)或多类(multi-class)的Logistic回归,是 Logistic回归在多类分类问题上的推广

    对于多类问题,类别标签 可以有 个取值。给定一个样本x,Softmax回归预测的属于类别 的条件概率为:

    其中 是第 类的权重向量。

    Softmax回归的决策函数可以表示为:

    给定 个训练样本 , Softmax回归使用交叉熵损失函数来学习最优的参数矩阵 。

    采用交叉熵损失函数,Softmax回归模型的风险函数为:

    风险函数 关于 的梯度为:

    采用梯度下降法,Softmax回归的训练过程为:

    感知器可谓是最简单的人工神经网络,只有一个神经元。

    感知器是一种简单的两类线性分类模型,其分类准则为:

    给定N 个样本的训练集: ,其中 ,感知器学习算法试图找到一组参数 ,使得对于每个样本 有

    感知器的学习算法是一种错误驱动的在线学习算法,先初始化一个权重向量 (通常是全零向量),然后每次分错一个样本 时,即 ,就用这个样本来更新权重:

    根据感知器的学习策略,可以反推出 感知器的损失函数 为:

    采用随机梯度下降,其每次更新的梯度为:

    感知器收敛性不再证明,参考之前的笔记 https://www.jianshu.com/p/d83aa6c8068f 。

    感知器的学习到的权重向量和训练样本的顺序相关。 在迭代次序上排在后面的错误样本,比前面的错误样本对最终的权重向量影响更大 。比如有1000个训练样本,在迭代100个样本后,感知器已经学习到一个很好的权重向量。在接下来的899个样本上都预测正确,也没有更新权重向量。但是在最后第1000 个样本时预测错误,并更新了权重。这次更新可能反而使得权重向量变差。

    为了改善这种情况,可以使用“参数平均”的策略来提高感知器的鲁棒性,也叫 投票感知器 (投票感知器是一种集成模型)。

    投票感知器记录第 次更新后得到的权重 在之后的训练过程中正确分类样本的次数 。这样最后的分类器形式为:

    投票感知器虽然提高了感知器的泛化能力,但是需要保存 个权重向量。在实际操作中会带来额外的开销。因此,人们经常会使用一个简化的版本,也叫做平均感知器:

    其中 为平均的权重向量。

    给定N 个样本的训练集: ,其中 ,如果两类样本是线性可分的,即存在一个超平面:

    将两类样本分开,那么对于每个样本都有 。

    数据集 中每个样本 到分割超平面的距离为:

    定义整个数据集 中所有样本到分割超平面的最短距离为间隔(Margin) :

    如果间隔 越大,其分割超平面对两个数据集的划分越稳定,不容易受噪声等因素影响。支持向量机的目标是寻找一个超平面 使得 最大,即:

    令 ,则上式等价于:

    数据集中所有满足 的点,都称为 支持向量

    接下来的推导不详细叙述了,之前的笔记里已经记录过。

    软间隔的优化问题形式如下:

    其中 称为 Hinge损失函数 。 可以看作是正则化系数。

    其实这一节才是整理的关键,有助于厘清各个分类器之间的联系。

    二、神经网络:卷积神经网络(CNN)

    神经网络 最早是由心理学家和神经学家提出的,旨在寻求开发和测试神经的计算模拟。

    粗略地说, 神经网络 是一组连接的 输入/输出单元 ,其中每个连接都与一个 权 相关联。在学习阶段,通过调整权值,使得神经网络的预测准确性逐步提高。由于单元之间的连接,神经网络学习又称 连接者学习。

    神经网络是以模拟人脑神经元的数学模型为基础而建立的,它由一系列神经元组成,单元之间彼此连接。从信息处理角度看,神经元可以看作是一个多输入单输出的信息处理单元,根据神经元的特性和功能,可以把神经元抽象成一个简单的数学模型。

    神经网络有三个要素: 拓扑结构、连接方式、学习规则

    神经网络的拓扑结构 :神经网络的单元通常按照层次排列,根据网络的层次数,可以将神经网络分为单层神经网络、两层神经网络、三层神经网络等。结构简单的神经网络,在学习时收敛的速度快,但准确度低。

    神经网络的层数和每层的单元数由问题的复杂程度而定。问题越复杂,神经网络的层数就越多。例如,两层神经网络常用来解决线性问题,而多层网络就可以解决多元非线性问题

    神经网络的连接 :包括层次之间的连接和每一层内部的连接,连接的强度用权来表示。

    根据层次之间的连接方式,分为:

    1)前馈式网络:连接是单向的,上层单元的输出是下层单元的输入,如反向传播网络,Kohonen网络

    2)反馈式网络:除了单项的连接外,还把最后一层单元的输出作为第一层单元的输入,如Hopfield网络

    根据连接的范围,分为:

    1)全连接神经网络:每个单元和相邻层上的所有单元相连

    2)局部连接网络:每个单元只和相邻层上的部分单元相连

    神经网络的学习

    根据学习方法分:

    感知器:有监督的学习方法,训练样本的类别是已知的,并在学习的过程中指导模型的训练

    认知器:无监督的学习方法,训练样本类别未知,各单元通过竞争学习。

    根据学习时间分:

    离线网络:学习过程和使用过程是独立的

    在线网络:学习过程和使用过程是同时进行的

    根据学习规则分:

    相关学习网络:根据连接间的激活水平改变权系数

    纠错学习网络:根据输出单元的外部反馈改变权系数

    自组织学习网络:对输入进行自适应地学习

    摘自《数学之美》对人工神经网络的通俗理解:

    神经网络种类很多,常用的有如下四种:

    1)Hopfield网络,典型的反馈网络,结构单层,有相同的单元组成

    2)反向传播网络,前馈网络,结构多层,采用最小均方差的纠错学习规则,常用于语言识别和分类等问题

    3)Kohonen网络:典型的自组织网络,由输入层和输出层构成,全连接

    4)ART网络:自组织网络

    深度神经网络:

    Convolutional Neural Networks(CNN)卷积神经网络

    Recurrent neural Network(RNN)循环神经网络

    Deep Belief Networks(DBN)深度信念网络

    深度学习是指多层神经网络上运用各种机器学习算法解决图像,文本等各种问题的算法集合。深度学习从大类上可以归入神经网络,不过在具体实现上有许多变化。

    深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题。

    Machine Learning vs. Deep Learning 

    神经网络(主要是感知器)经常用于 分类

    神经网络的分类知识体现在网络连接上,被隐式地存储在连接的权值中。

    神经网络的学习就是通过迭代算法,对权值逐步修改的优化过程,学习的目标就是通过改变权值使训练集的样本都能被正确分类。

    神经网络特别适用于下列情况的分类问题:

    1) 数据量比较小,缺少足够的样本建立模型

    2) 数据的结构难以用传统的统计方法来描述

    3) 分类模型难以表示为传统的统计模型

    缺点:

    1) 需要很长的训练时间,因而对于有足够长训练时间的应用更合适。

    2) 需要大量的参数,这些通常主要靠经验确定,如网络拓扑或“结构”。

    3)  可解释性差 。该特点使得神经网络在数据挖掘的初期并不看好。

    优点:

    1) 分类的准确度高

    2)并行分布处理能力强

    3)分布存储及学习能力高

    4)对噪音数据有很强的鲁棒性和容错能力

    最流行的基于神经网络的分类算法是80年代提出的 后向传播算法 。后向传播算法在多路前馈神经网络上学习。 

    定义网络拓扑

    在开始训练之前,用户必须说明输入层的单元数、隐藏层数(如果多于一层)、每一隐藏层的单元数和输出层的单元数,以确定网络拓扑。

    对训练样本中每个属性的值进行规格化将有助于加快学习过程。通常,对输入值规格化,使得它们落入0.0和1.0之间。

    离散值属性可以重新编码,使得每个域值一个输入单元。例如,如果属性A的定义域为(a0,a1,a2),则可以分配三个输入单元表示A。即,我们可以用I0 ,I1 ,I2作为输入单元。每个单元初始化为0。如果A = a0,则I0置为1;如果A = a1,I1置1;如此下去。

    一个输出单元可以用来表示两个类(值1代表一个类,而值0代表另一个)。如果多于两个类,则每个类使用一个输出单元。

    隐藏层单元数设多少个“最好” ,没有明确的规则。

    网络设计是一个实验过程,并可能影响准确性。权的初值也可能影响准确性。如果某个经过训练的网络的准确率太低,则通常需要采用不同的网络拓扑或使用不同的初始权值,重复进行训练。

    后向传播算法学习过程:

    迭代地处理一组训练样本,将每个样本的网络预测与实际的类标号比较。

    每次迭代后,修改权值,使得网络预测和实际类之间的均方差最小。

    这种修改“后向”进行。即,由输出层,经由每个隐藏层,到第一个隐藏层(因此称作后向传播)。尽管不能保证,一般地,权将最终收敛,学习过程停止。

    算法终止条件:训练集中被正确分类的样本达到一定的比例,或者权系数趋近稳定。

    后向传播算法分为如下几步:

    1) 初始化权

    网络的权通常被初始化为很小的随机数(例如,范围从-1.0到1.0,或从-0.5到0.5)。

    每个单元都设有一个偏置(bias),偏置也被初始化为小随机数。

    2) 向前传播输入

    对于每一个样本X,重复下面两步:

    向前传播输入,向后传播误差

    计算各层每个单元的输入和输出。输入层:输出=输入=样本X的属性;即,对于单元j,Oj = Ij = Xj。隐藏层和输出层:输入=前一层的输出的线性组合,即,对于单元j, Ij =wij Oi + θj,输出=

    3) 向后传播误差

    计算各层每个单元的误差。

    输出层单元j,误差:

    Oj是单元j的实际输出,而Tj是j的真正输出。

    隐藏层单元j,误差:

    wjk是由j到下一层中单元k的连接的权,Errk是单元k的误差

    更新 权 和 偏差 ,以反映传播的误差。

    权由下式更新:

     其中,△wij是权wij的改变。l是学习率,通常取0和1之间的值。

     偏置由下式更新:

      其中,△θj是偏置θj的改变。

    Example

    人类视觉原理:

    深度学习的许多研究成果,离不开对大脑认知原理的研究,尤其是视觉原理的研究。1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和Torsten Wiesel,以及Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”, 可视皮层是分级的 。

    人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。

    对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:

    在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。

    可以很自然的想到:可以不可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类呢?答案是肯定的,这也是许多深度学习算法(包括CNN)的灵感来源。

    卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。

    CNN最早由Yann LeCun提出并应用在手写字体识别上。LeCun提出的网络称为LeNet,其网络结构如下:

    这是一个最典型的卷积网络,由 卷积层、池化层、全连接层 组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。

    CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

    降低参数量级:如果使用传统神经网络方式,对一张图片进行分类,那么,把图片的每个像素都连接到隐藏层节点上,对于一张1000x1000像素的图片,如果有1M隐藏层单元,一共有10^12个参数,这显然是不能接受的。

    但是在CNN里,可以大大减少参数个数,基于以下两个假设:

    1)最底层特征都是局部性的,也就是说,用10x10这样大小的过滤器就能表示边缘等底层特征

    2)图像上不同小片段,以及不同图像上的小片段的特征是类似的,也就是说,能用同样的一组分类器来描述各种各样不同的图像

    基于以上两个假设,就能把第一层网络结构简化

    用100个10x10的小过滤器,就能够描述整幅图片上的底层特征。

    卷积运算的定义如下图所示:

    如上图所示,一个5x5的图像,用一个3x3的 卷积核 :

       101

       010

       101

    来对图像进行卷积操作(可以理解为有一个滑动窗口,把卷积核与对应的图像像素做乘积然后求和),得到了3x3的卷积结果。

    这个过程可以理解为使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。在实际训练过程中, 卷积核的值是在学习过程中学到的。

    在具体应用中,往往有多个卷积核,可以认为, 每个卷积核代表了一种图像模式 ,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果设计了6个卷积核,可以理解为这个图像上有6种底层纹理模式,也就是用6种基础模式就能描绘出一副图像。以下就是24种不同的卷积核的示例:

    池化 的过程如下图所示:

    可以看到,原始图片是20x20的,对其进行采样,采样窗口为10x10,最终将其采样成为一个2x2大小的特征图。

    之所以这么做,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行采样。

    即使减少了许多数据,特征的统计属性仍能够描述图像,而且由于降低了数据维度,有效地避免了过拟合。

    在实际应用中,分为最大值采样(Max-Pooling)与平均值采样(Mean-Pooling)。

    LeNet网络结构:

    注意,上图中S2与C3的连接方式并不是全连接,而是部分连接。最后,通过全连接层C5、F6得到10个输出,对应10个数字的概率。

    卷积神经网络的训练过程与传统神经网络类似,也是参照了反向传播算法

    第一阶段,向前传播阶段:

    a)从样本集中取一个样本(X,Yp),将X输入网络;

    b)计算相应的实际输出Op

    第二阶段,向后传播阶段

    a)计算实际输出Op与相应的理想输出Yp的差;

    b)按极小化误差的方法反向传播调整权矩阵。

    三、图神经网络是怎么炼成的:GNN基本原理简介

    此文算是对Google Research这篇 A Gentle Introduction to Graph Neural Networks 神作的阅读笔记.

    十多年来,研究人员开发了一种称之为图神经网络(Graph Neural Networks,GNNs)的技术,旨在将如今在深度学习的诸多任务中摧枯拉朽的神经网络,应用到图结构之上,从而让神经网络捕捉到更错综复杂的交叉特征,以期待在一些任务上取得更佳的效果。鉴于操作图数据结构的复杂性,尽管已经发展了十几年,它在实际应用中却刚刚起步,即时是google也才开始研究将其被应用到药品研发、物理模拟、假新闻检测、交通预测和推荐系统等领域。

    尽管GNN是一个新兴的研究领域,但图结构的数据其实在我们身边无处不在。那么什么是图呢?

    这个理科生应该都清楚,图有点(Vertex)和边(Edge)两部分组成,一个图就代表了各个实体节点(node)之间的关系(edge):

    每个节点或者边都可以包含它的一些属性信息,比如如果一个节点表示一个人,那么就可以包含这个人的姓名、性别、身高、体重之类的..我们研究需要的信息。

    而这些信息,都可以用通用的向量的形式存入其中:

    还有别忘了一点,边是可以有方向的,按此我们还能分为有向图或是无向图。边的方向代表了信息的传递方向,例如a是b的微信好友,那b也是a的微信好友,好友关系自然是没方向的,而比如a是b的爹,那显然b就不是a的爹,此时叫爹的关系就是有有方向的。

    图结构的构建是非常灵活的,可以根据个人的设计构建出各种不一样的图。而作为开发者显然要结合实际解决的问题来构建合适的图。

    正如前面所提到的,图无处不在。你可能已经熟悉例如知识图谱、社交网络之类的图数据。当时显然,图是一种极其强大的通用数据表示,传统神经网络中用到的欧式空间的数据,同样可以用图来表示,例如可以将图像和文本建模为图结构数据。

    比如,我们可以将一张图片的每个像素作为图的节点,再将相邻的像素用边连接起来,就构造了一个该图像的图。

    如上图展示了一个5*5的图片的邻接矩阵表示和图表示。

    我们将每个单词作为节点,并将每个节点连接到下一个节点,就得到了一个文本的图:

    当然,在实践中我们并不会这样来编码文本和图像,因为所有的图和文本都是非常规则的结构,表示成图就多此一举了。

    我们再来看一些例子,这些数据的结构更加复杂,除了图之外很难用其他方式来表达。

    分子是构成物质的基石,我们可以用节点来表示它的原子和电子,用边来表示共价键,这样便将一个分子表示成了一个图:

    不同的图可以表示出不同的分子结构:

    都说社会是一个大熔炉,身处其中的人和事物之间会发生极其复杂的关系。这种关系的表示用普通的表格数据是很难表示的,而图却能很好的展现。

    下图是将莎士比亚歌剧《奥赛罗》中的任务关系表示成图:

    怎么样,如果没看过歌剧能推测出那些是主角吗?

    下面是将一个空手道竞标赛的对战关系构建为图:

    类似的可以表示为图的数据还有很多很多,比如论文的引用之类统统都可以表示为图,下面是现实世界中不同规模的数据图表示的统计数据:

    可见,各种各样规模的数据都可以轻松的用图来表示。

    在上面我们列举了这么多的图,那么我们该对这些图数据执行什么任务呢?

    图上的预测任务一般分为三类:

    下面我们通过具体的示例来说明GNN怎么来解决上述的三个级别的预测问题。

    在图级别的任务中,我们的目标是预测整个图的属性。例如我们通过分子图,来预测该分子的气味或是者它是否是与某些疾病有关的受体。

    它的输入是完整的图:

    输出是图的分类:

    节点级任务一般就是预测每个节点的类型。

    一个经典的例子就是Zach的空手道俱乐部。该数据集市一个单一的社交网络图,犹豫政治分歧,讲师Hi先生和管理员John之间不和导致空手道俱乐部分裂,其中的学员一部分效忠于Hi先生,一部分效忠于John。每个节点代表空手道联系着,边代表空手道之外这些成员的互动,预测问题就是判断这些节点是效忠于谁的。

    边级任务其实就是预测每个边的属性.

    在目标检测的语义分割任务中,我们也许不止要识别每个目标的类型,还需要预测各个目标之间的关系.我们可以将其描述为边级别的分类任务:给定表示图像中的对象的节点,我们希望预测哪些节点共享一条边,或者该边的值是多少。如果我们希望发现实体之间的连接,我们可以考虑图是完全连通的,并根据它们的预测值修剪边来得到一个稀疏图。

    用图表示就是这样的过程:

    那么我们要如何使用神经网络来处理上述各种类型的任务呢?

    首先要考虑的是如何将图结构数据适配到神经网络.

    回想一下啊,传统的神经网络输入的往往是矩阵形式的数据,那么要如何把图作为输入呢?

    图表示有四种类型的信息:节点(nodes),边(edges),全局上下文(global-context),联通性(connectivity).对于前三种信息,有一个非常简单的方案,比如将节点排序,然后每个节点表示为一个向量,所有节点就得到了一个节点的矩阵,同理,边和上下文也可以这么搞.

    但是要标识连通性就没有这么简单了,也许你会想到用临街矩阵来表示,但是这样表示会有明显的缺陷,因为节点数的规模往往是巨大的,对于一个数百万节点的图,那将耗费大量的空间,而且得到的矩阵往往也十分的稀疏,可以说空间利用率会很低.

    当然,你也许会想,可以用稀疏矩阵来存储,这样就只需要存储连通的情况,空间利用率将大大提升,但是我们还要考虑到一点,就是稀疏矩阵的高性能计算一直是个艰难的,尤其是在用到GPU的情况.

    并且,使用邻接矩阵还有一个问题就是各种不同的邻接矩阵可以标识相同的连通性,而这些矩阵并不能保证在神经网络中取的相同的效果.比如,同样的连通性,通过调换列的顺序,就能得到不同的邻接矩阵:

    现在,我们成功的将图结构成功表示成了置换不变的矩阵格式,终于可以使用图形神经网络(GNN)来做图形预测任务了。

    GNN是对保持图对称性(置换不变性)的图的所有属性(节点、边、全局上下文)的可优化变换。

    我们将使用Gilmer等人提出的“消息传递神经网络”框架构建GNN,并使用Battaglia等人介绍的图网络网络架构示意图。GNNS采用“图输入,图输出”架构,这意味着这些模型类型接受图作为输入,其中包含节点,边和全局上下文的信息,并逐步地转换这些图嵌入,而不会更改输入的连接图结构。

    我们使用最开始提到的那个图来构建一个最简单的GNN,输入的图是相应节点,边,全局信息的向量,我们针对每个向量使用一个MLP层来作变换,于是得到一个新的图.

    针对上述构建的最简单的GNN,我们如何在上面描述的任何任务中进行预测呢?这里我们仅仅考虑二进制分类的情况,但这个框架可以很容易地扩展到多类或回归的情况。

    如果是对节点分类,我们只要在最后一层接一个线性类器就可以了:

    但是上面的预测过程有点过于简单了,完全没有用到图的结构信息,我们在此基础上增加一个pooling操作,以增加它的边缘信息:

    具体操作是把待预测节点的邻居节点以及全局的信息进行聚合再做预测,即将这些embedding向量加到一起得到一个新的向量,再输入到最后的线性分类器.

    同理,如果我们只有节点相应边的信息的话,也可以用类似的方式pooling,然后得到节点的向量表示再输入分类器:

    反之,如果我们只有节点的信息,那么也可以用边所连接的两个节点来pooling出边的向量,然后将器输入到分类器预测边的类型:

    显然,不管是哪种任务,整个GNN的推理过程都是一样的,可以表示为这样一个端到端的过程:

    不过,显而易见的,这个简单的GNN在分类前只是对每个向量进行了一个变换,而没有用到图结构的任何信息,虽然在最后做预测的时候做了一些pooling的聚合,但也始终没有用到adjacency的信息,因此这个GNN的作用相当有限,但是它为我们提供了一个图结构层变换和堆叠的基本思路.

    针对上面最简单GNN的不足,我们可以在其中根据连通性增加更加复杂的变换从而引入整个图结构的信息,我们将这个过程称之为信息传递.

    信息传递包含三个步骤:

    这个过程有点类似于卷积操作,每个节点汇聚了其邻居的节点,经过多个层的变换,它将涵盖全图的信息.

    于是我们可以将这个节点信息传递应用到上述的图变换过程中:

    然后,我们发现它并没用用上边的信息,于是可以把边信息也加上,变成这样:

    既然把边的信息加上了,那怎么可以漏掉全局信息呢,于是完整的信息传递就可以表示成这样:

    以上,我们梳理了最简单的GNNs是怎么完成的,你应该已经对GNN有了一个基本的了解,就像学会了传统神经网络中最简单的全连接网络类似,关于GNN还有更多不同种类的更复杂的图需要取了解和学习,但你只要掌握了以上的思想,学习起来也是十分容易的.

    四、如何训练神经网络

    1、先别着急写代码

    训练神经网络前,别管代码,先从预处理数据集开始。我们先花几个小时的时间,了解数据的分布并找出其中的规律。

    Andrej有一次在整理数据时发现了重复的样本,还有一次发现了图像和标签中的错误。所以先看一眼数据能避免我们走很多弯路。

    由于神经网络实际上是数据集的压缩版本,因此您将能够查看网络(错误)预测并了解它们的来源。如果你的网络给你的预测看起来与你在数据中看到的内容不一致,那么就会有所收获。

    一旦从数据中发现规律,可以编写一些代码对他们进行搜索、过滤、排序。把数据可视化能帮助我们发现异常值,而异常值总能揭示数据的质量或预处理中的一些错误。

    2、设置端到端的训练评估框架

    处理完数据集,接下来就能开始训练模型了吗?并不能!下一步是建立一个完整的训练+评估框架。

    在这个阶段,我们选择一个简单又不至于搞砸的模型,比如线性分类器、CNN,可视化损失。获得准确度等衡量模型的标准,用模型进行预测。

    这个阶段的技巧有:

    · 固定随机种子

    使用固定的随机种子,来保证运行代码两次都获得相同的结果,消除差异因素。

    · 简单化

    在此阶段不要有任何幻想,不要扩增数据。扩增数据后面会用到,但是在这里不要使用,现在引入只会导致错误。

    · 在评估中添加有效数字

    在绘制测试集损失时,对整个测试集进行评估,不要只绘制批次测试损失图像,然后用Tensorboard对它们进行平滑处理。

    · 在初始阶段验证损失函数

    验证函数是否从正确的损失值开始。例如,如果正确初始化最后一层,则应在softmax初始化时测量-log(1/n_classes)。

    · 初始化

    正确初始化最后一层的权重。如果回归一些平均值为50的值,则将最终偏差初始化为50。如果有一个比例为1:10的不平衡数据集,请设置对数的偏差,使网络预测概率在初始化时为0.1。正确设置这些可以加速模型的收敛。

    · 人类基线

    监控除人为可解释和可检查的损失之外的指标。尽可能评估人的准确性并与之进行比较。或者对测试数据进行两次注释,并且对于每个示例,将一个注释视为预测,将第二个注释视为事实。

    · 设置一个独立于输入的基线

    最简单的方法是将所有输入设置为零,看看模型是否学会从输入中提取任何信息。

    · 过拟合一个batch

    增加了模型的容量并验证我们可以达到的最低损失。

    · 验证减少训练损失

    尝试稍微增加数据容量。

    以上就是关于神经网络是线性分类器吗相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    高烧42度一天人死了(高烧后神经受损的表现)

    图神经网络论文推荐

    图神经网络发展前景

    东莞烧烤十大排名(东莞烧烤十大排名店)

    杭州城市监理建设有限公司(杭州城市监理建设有限公司是国企吗)