【图神经网络】神经网络基础

  • 引言
    • 本文是学习刘忠雨老师所著的《深入浅出图神经网络》过程中的笔记和记录整理,最后会有参考文献标注对应章节和内容中可能出现的参考文献、博文出处。

神经网络基础

机器学习分类

  • 是否有标签

    • 监督学习
      • 训练数据中每个样本都有标签,通过标签可以指导模型进行学习,学到具有判别性的特征。
    • 无监督学习
      • 训练数据完全没有标签,通过算法从数据中发现一些数据之间的约束关系,比如数据之间的关联、距离关系等。典型的无监督算法如聚类。
    • 半监督学习
      • 介于监督学习和无监督学习之间的一种学习方式。它的训练数据既包含有标签数据,也包含无标签数据。假设标签数据和无标签数据都是从同一个分布采样而来,那无标签数据中含有一些数据分布相关的信息,可以作为标签数据之外的补充。这种情况事实上是很常见的。比如在互联网行业,每天都会产生大量的数据,这些数据部分可能携带标签,但更多的数据是不带标签的,如果靠人工去标记这些无标签数据,代价是相当大的,而半监督学习可以提供一些解决思路。
  • 算法的输出

    • 分类问题
      • 模型的输出值是离散值
    • 回归问题
      • 模型的输出值是连续值

损失函数

  • 这里只列出几个常用的损失函数

平方损失函数

L ( y , f ( x : θ ) ) = ∑ i = 1 N ( y i − f ( x i : θ ) ) 2 / N \begin{aligned} L(y,f(x:\theta))=\sum_{i=1}^N(y_i-f(x_i:\theta))^2/N \end{aligned} L(y,f(x:θ))=i=1N(yif(xi:θ))2/N
    其中 N N N 是样本数量,它衡量的是模型预测的结果与标签之间的平方差,常用于回归类问题。

交叉熵函数

L ( y , f ( x ) ) = H ( p , q ) = − ∑ i = 1 N ( p ( y i ∣ x i ) l o g [ q ( y i ^ ∣ x i ) ] ) / N \begin{aligned} L(y,f(x)) = H(p,q) = -\sum_{i=1}^N(p(y_i|x_i)log[q(\hat{y_i}|x_i)]) / N \end{aligned} L(y,f(x))=H(p,q)=i=1N(p(yixi)log[q(yi^xi)])/N
    其中 p , q p,q p,q 分别表示数据标签的真实分布和模型预测给出的分布, p ( y i ∣ x i ) p(y_i|x_i) p(yixi) 表示样本 x i x_i xi 标签的真实分布。一般来说,样本 x i x_i xi 只属于某个类别 c k c_k ck,因此 p ( y i = c k ∣ x i ) = 1 p(y_i = c_k | x_i) = 1 p(yi=ckxi)=1,在其他类别上概率为0. q ( y i ^ = c k ∣ x i ) = 1 q(\hat{y_i} = c_k|x_i) = 1 q(yi^=ckxi)=1 表示给定样本 x i x_i xi 模型预测在各个类别上的概率分布。如果样本 x i x_i xi的标签为 c k c_k ck,那么上式可以简化为
L ( y , f ( x ) ) = − ∑ i = 1 N ( l o g [ q ( y i ^ ∣ x i ) ] ) / N \begin{aligned} L(y,f(x)) = -\sum_{i=1}^N(log[q(\hat{y_i}|x_i)]) / N \end{aligned} L(y,f(x))=i=1N(log[q(yi^xi)])/N
    可以看出在这种情况下,最小化交叉熵损失的本质就是最大化样本标签的似然概率。

激活函数

  • 激活函数是神经网络中一个非常重要的概念。它的非线性是的神经网络几乎可以任意逼近任何非线性函数。如果不适用激活函数,无论神经网络有多少层,其每一层的输出都是上一层输入的线性组合,这样构成的神经网络仍然是一个线性模型,表达能力有限。
  • 激活函数的一个基本要求是它们是连续可导的,可以允许在少数点上不可导

S型激活函数

  • 特点:有界,并且输入的绝对值越大,对应的梯度就越小,越趋近于0
Sigmoid

σ ( x ) = 1 / ( 1 + e − x ) \begin{aligned} \sigma(x) = 1 / (1+e^{-x}) \end{aligned} σ(x)=1/(1+ex)

Tanh

t a n h ( x ) = e x − e − x / ( e x + e − x ) \begin{aligned} tanh(x) = e^x-e^{-x} / (e^x +e^{-x}) \end{aligned} tanh(x)=exex/(ex+ex)

  • 上述几种激活函数的图像如下图所示:
    在这里插入图片描述

ReLU及其变种

ReLU
  • 线性整流函数(Rectified Linear Unit, ReLU)是目前深度学习模型中经常使用的激活函数。
  • 定义
    ReLU ⁡ ( x ) = { x  if  x ⩾ 0 0  if  x < 0 \begin{aligned} \operatorname {ReLU}(x)=\left\{\begin{array}{ll} x & \text { if } x \geqslant 0 \\ 0 & \text { if } x<0 \end{array} \right. \end{aligned} ReLU(x)={x0 if x0 if x<0
  • ReLU对输入的处理:当输入为负时,全部置零,当输入为正时,保持不变,这个特性被称为单侧抑制
  • 在隐藏层中,单侧抑制会为隐藏层的输出带来一定的稀疏性。同时由于它在输入为正时,输出保持不变,梯度为1,可以缓解梯度消失的问题。
  • 梯度
    ∇ x ReLU ⁡ ( x ) = { 1  if  x ⩾ 0 0  if  x < 0 \nabla_{x} \operatorname{ReLU}(x)=\left\{\begin{array}{ll} 1 & \text { if } x \geqslant 0 \\ 0 & \text { if } x<0 \end{array}\right. xReLU(x)={10 if x0 if x<0
  • 单侧抑制在某些情况下可能会导致某个神经元死亡,原因是如果某个神经元输出始终为负,那么在反向传播时,梯度永远为0,导致无法有效更新。
LeakyReLU
  • 在输入为负时,可以允许一定量的信息通过。

  • 定义
     LeakyReLU  ( x ) = { x  if  x > 0 λ x  if  x ⩽ 0 \text { LeakyReLU }(x)=\left\{\begin{array}{ll} x & \text { if } x>0 \\ \lambda x & \text { if } x \leqslant 0 \end{array}\right.  LeakyReLU (x)={xλx if x>0 if x0
        其中, λ > 0 \lambda>0 λ>0是一个超参数,通常取值0.2。这样就可以避免ReLU出现神经元死亡的现象。

  • 梯度
    ∇ x  LeakyReLU  ( x ) = { 1  if  x > 0 λ  if  x ≤ 0 \nabla_{x} \text { LeakyReLU }(x)=\left\{\begin{array}{ll} 1 & \text { if } x>0 \\ \lambda & \text { if } x \leq 0 \end{array}\right. x LeakyReLU (x)={1λ if x>0 if x0

PReLU
  • PReLU(Parametric ReLU)在LeakyReLU基础上更进一步,它将LeakyReLU中的超参数 λ \lambda λ改进为可训练的参数,并且每个神经元可以使用不同的参数。

  • 定义
    PReLU ⁡ ( x ) = { x  if  x > 0 α x  if  x ≤ 0 \operatorname{PReLU}(x)=\left\{\begin{array}{ll} x & \text { if } x>0 \\ \alpha x & \text { if } x \leq 0 \end{array}\right. PReLU(x)={xαx if x>0 if x0

ELU
  • 不同于LeakyReLU和PreLU在输入为负时,进行线性压缩,指数线性单元(Exponential Linear Unit,ELU)在输入为负时,进行非线性变换。
  • 定义
    ELU ⁡ ( x ) = { x  if  x ⩾ 0 α ( e x − 1 )  if  x < 0 } \operatorname{ELU}(x)=\left\{\begin{array}{ll} x & \text { if } x \geqslant 0 \\ \alpha\left(e^{x}-1\right) & \text { if } x<0 \end{array}\right\} ELU(x)={xα(ex1) if x0 if x<0}

    其中 α > 0 \alpha>0 α>0 α \alpha α是一个超参数,控制着输入为负时的饱和区。它具有调节激活值的均值为0的功能,可以加速神经网络的收敛。

  • 上述几种激活函数的图像如下图所示:
    在这里插入图片描述

优化困境

梯度消失

  • 导致梯度消失的原因在于激活函数的饱和性,比如Sigmoid、Tanh等都会到来这种问题,它们在函数值趋近于上下边界时,梯度通常比较小,再与误差项相乘将会变得更小。

局部最优

鞍点

  • 由于维度过高,深度神经网络模型常常存在很多鞍点。鞍点是值在该处梯度为0,但是它并不是最小值或最大值。当处于鞍点区域并且误差较大时,由于这部分区域梯度较小,模型收敛速度将受到极大影响,给人造成一种陷入局部最优的家乡。

参考文献

  1. 刘忠雨,李彦霖,周洋. 深入浅出图神经网络:GNN原理解析[M]. 北京:机械工业出版社,2020:17-38
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值