神经网络

欢迎访问本人blog网站:www.xuanworld.top

​ 神经网络就是构建一种数学模型,模仿人脑神经系统,这就称为人工神经网络,简称神经网络。在机器学习领域,神经网络是指由很多人工神经元构成的网络结构模型,这些人工神经元之间的连接强度是可学习的参数。

​ 神经网络的初衷是为了能够模拟人类的大脑,在1980s和1990s之间应用的十分广泛。后来神经网络技术逐渐被冷落,主要原因就是神经网络所需的计算量较大。最近芯片技术的突飞猛进,导致神经网络技术又重新被人们所重视。

神奇的题外话

​ 以前我们认为人的大脑由不同的组织组成,比如负责听觉的大脑部分只能处理听觉信息,负责视觉的大脑部分只能处理视觉信息,但是后来的实验却证明事实可能并非如此,如图所示,我们将大脑负责听觉的部分进行处理,使其无法接受到来自听觉的信号。同时,我们将传递视觉信号的神经给接到这个地方。结果我们发现,处理听觉的大脑部分学会了处理视觉!!!,这些实验被称为神经重接实验。所以我们可以假设所有的大脑部分其实都是由同一种组织构成,存在某种机制能够使相同的组织进行学习从而完成不同的任务。

​ 这就是神经算法的一种简单原理,或者说最终目的,顶尖的科学家希望通过模拟大脑的运行方法实现真正的人工智能。

1 神经元

神经元是神经网络进行信息处理的基本单元,其主要是模拟生物神经元的结构和 特性,接收输入信号并产生输出。

生物上神经元的原理

生物神经元通常具有一个轴突和多个树突,树突可以用来接受信息。当输入的神经信号超过一定的阙值之后,他就会处于兴奋状态,产生电脉冲,轴突尾部的许多末梢可以与其他神经元的树突连接,将脉冲信号传给其他的神经元。

1.1 MP神经元

MP神经元是心理学家McCulloch和数学家Pitts根据生物神经元结构提出的一种非常简单的神经元模型。

一个基本的神经元包括三个基本的组成部分:输入信号、线性组合和非线性激活函数。

(a1,a2,a3是输入信号,w1,w2,w3是输入信号的权值。)

2 多层感知器

2.1 单隐层感知器

首先我们来看一下它的结构图形

由于小废物Rytter不喜欢书本上那总难以理解的公式化炫技解释,所以我将以人话进行解释:这种结构的输入会首先经过输入层映射到隐藏层,然后再通过隐藏层映射到输出层,其实就是对输入的信息进行变换。这两种映射叫做激活函数。

2.2 感知器的信息传递

信息通过多次传递,传递到最后一层

向前传播:指的就是信号从输入到输出的一层层传播。这种传播可以很好的用向量进行表示。

3 激活函数

激活函数是神经网络中十分重要的概念,他的非线性使神经网络更加复杂,能够去表示更多的东西。

激活函数有多种多样,一个基本要求是他们要连续可导,常用的有S型激活函数和ReLU变种。

3.1 S型激活函数

S型激活函数中比较典型的是Sigmoid和Tanh,这种激活函数的特点是有界,并且输入的绝对值越大,对应的梯度就越小,越趋近于0.

Sigma函数的定义是: σ(x)=11+e−x\sigma(x)=\frac{1}{1+e^{-x}}σ(x)=1+e−x1​,值域在0到1之间

将任意输入全部压缩到0到1之间,在神经网络中经常作为二分类器最后一层激活函数,可将任意实数值转化为概率。而且还可以作为类似开关的调节器,对其他信息进行调节。

另一种函数是Tanh函数,定义式为: tanh(x)=ex−e−xex+e−xtanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}tanh(x)=ex+e−xex−e−x​

相较于sigma函数,tanh函数的范围更大一些,为(-1,1),也可以作为开关调节信息。

3.2 ReLU及其变种

3.2.1 ReLU

ReLU是目前深度学习中经常使用的激活函数。

ReLU函数的表达式为:

ReLU(x)={x,ifx≥00,ifx<0ReLU(x)=\begin{cases}{x, \ if \ x\ge 0}\\ {0, \ if \ x<0}\end{cases}ReLU(x)={x, if x≥00, if x<0​

可以看出,ReLU对正负值的处理方式完全不同,当输入为负时全部置零,而输入为正时保持不变,这种特性叫做单侧抑制。单侧抑制会导致某个神经元死亡,原因是如果某个神经元输出一直为负,则进行传播的时候就会一直输出为0,导致无法进行有效的更新。

为避免以上情况,所以ReLU函数还会有许多变种。

3.2.2 LeakyReLU

LeakyReLU表达式为

LeakyReLU(x)={x,ifx>0λx,ifx≤0LeakyReLU(x)=\begin{cases}{x, \ if \ x>0}\\{\lambda x,if \ x \le 0} \end{cases}LeakyReLU(x)={x, if x>0λx,if x≤0​

λ\lambdaλ取值一般取0.2

3.2.3 PReLU

它将LeakyReLU中的λ\lambdaλ改进为可以训练的参数,并且每个神经元可以使用不同的参数。

PReLU(x)={x,ifx>0ax,ifx≤0PReLU(x)=\begin{cases}{x, \ if \ x>0}\\{ax,if \ x \le 0} \end{cases}PReLU(x)={x, if x>0ax,if x≤0​

3.2.4 ELU

输入为负时,进行非线性压缩变换。

ELU(x)={x,ifx≥0α(ex−1),ifx<0ELU(x)=\begin{cases}{x, \ if \ x \ge 0}\\{\alpha(e^x-1),if \ x < 0} \end{cases}ELU(x)={x, if x≥0α(ex−1),if x<0​

图神经网络(CNN)三相关推荐

  1. 图神经网络(三)GCN的变体与框架(4)GNN的通用框架

    图神经网络(三)GCN的变体与框架(4)GNN的通用框架 3.4 GNN的通用框架 3.4.1 MPNN 3.4.2 NLNN 1.内积 2.全连接 3.高斯函数 3.4.3 GN 参考文献 3.4 ...

  2. 图神经网络/GNN(三)-基于图神经网络的节点表征学习

    Task3概览: 在图任务当中,首要任务就是要生成节点特征,同时高质量的节点表征也是用于下游机器学习任务的前提所在.本次任务通过GNN来生成节点表征,并通过基于监督学习对GNN的训练,使得GNN学会产 ...

  3. 图神经网络(三):数学基础

    一.复数空间 在实数空间中,加法.减法可以看成是沿数轴的左右平移,乘法.除法可以看成是沿数轴的拉伸和压缩.但是在现实生活中除了平移和缩放以外,还存在旋转.在复数发明之前,处理旋转问题是非常麻烦的. 1 ...

  4. Pytorch之经典神经网络CNN(三) —— AlexNet(CIFAR-10) (LRN)

    2012年 多伦多大学Hinton提出的 AlexNet AlexNet是第一个large-scale CNN, 从AlexNet之后CNN开始变得火了起来 贡献是提出了用多层最小卷积叠加来替换单个大 ...

  5. 图神经网络(三):节点分类

    节点分类问题 数据集:Cora 包含七类学术论文,论文与论文之间存在引用和被引用的关系 数据集导入 from torch_geometric.datasets import Planetoid fro ...

  6. 图神经网络GNN(三):基于图神经网络的节点表征学习

    1. 写在前面 这个系列整理的关于GNN的相关基础知识, 图深度学习是一个新兴的研究领域,将深度学习与图数据连接了起来,推动现实中图预测应用的发展. 之前一直想接触这一块内容,但总找不到能入门的好方法 ...

  7. 图神经网络(GNN)入门之旅(三)-拉普拉斯矩阵与GCN

    知乎专栏:图神经网络 第三篇: https://zhuanlan.zhihu.com/p/344005023

  8. 人大魏哲巍:图神经网络的理论基础

    [专栏:研究思路]近年来,由于图结构数据的强大表现力,用机器学习方法分析图的研究越来越受到重视.图神经网络是一类基于深度学习的处理图结构数据的方法,在众多领域展现出了卓越的性能,因此已成为一种广泛应用 ...

  9. 图神经网络基础知识——初识图学习

    初识图学习 一.简单的图基础 什么是图? 生活中的图 图的分类 同构图.异构图举例 图的度和邻居 图的表示 邻接矩阵 邻接表 边集 图的特征 二.图学习初印象 图学习的应用 节点级别任务 金融诈骗检测 ...

  10. 漫谈图神经网络 (三)

    恭喜你看到了本系列的第三篇!前面两篇分别介绍了基于循环的图神经网络和基于卷积的图神经网络,那么在本篇中,我们则主要关注在得到了各个结点的表示后,如何生成整个图的表示.其实之前我们也举了一些例子,比如最 ...

最新文章

  1. java 如何开启一个线程_Java-开启一个新的线程
  2. eclipse新建项目时JRE的三个选项分别是什么意思?
  3. 2.3 快速搭建你的第一个系统,并进行迭代-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  4. coredump 断点_coredump调试的使用
  5. Python自动化运维:Django之View视图和Template
  6. hdu 3999The order of a Tree
  7. 5G 之战让运营商备受冷落?! | 极客头条
  8. class 原生js获取父元素_JS获取节点的兄弟,父级,子级元素的方法
  9. 2012.4.17内存相关(二)
  10. 获取苹果设备的UDID
  11. Oracle用户管理的备份与恢复(冷热)
  12. js获取当前域名的方法
  13. 【LeetCode】马三来刷题之Permutations
  14. POI无法创建xlsm文件
  15. ROS2的create_publisher参数详解
  16. 解密-大象跳转如何实现微信中点击链接直接跳到默认浏览器(不是在微信内置浏览器打开)
  17. eclipse如何attach source?
  18. 用于跑深度学习的嵌入式硬件平台资料整理(一)
  19. Citus集群拓扑架构介绍
  20. 大型Excel插件SqlCel全新上市

热门文章

  1. ios 高德获取定位_单次定位-获取位置-开发指南-iOS 定位SDK | 高德地图API
  2. 蓝牙(BLE)自动配对
  3. 软件机器人失控:40%的bot程序都是恶意的
  4. 读论文:Fine-grained Image Classification via Combining Vision and Language
  5. [Eigen中文文档] 归约、访问者和广播
  6. 黄油刀的配置与使用——个人学习记录
  7. IOS下localstorage不起作用提示
  8. mysql char存汉子_char如何存储汉字
  9. ASP英文转换成大小写函数LCase,UCase
  10. java.io.IOException: There appears to be a gap in the edit log. We expected txid ***, but got txid