从一个简单的神经网络模型开始

关于神经网络的文章写的也不少了,但一直没弄明白神经网络到底是怎么运作的;而现有的神经网络模型又太复杂,如Transformer,CNN,RNN,以及各种应用场景(NLP,CV,分类任务,回归任务等等);导致我们无法看到神经网络最本质的东西。 所以,今天我们就来从最简单的神经网络开始学起。 简单神经网络神经网络的基本原理很简单,那就是模仿由人类大脑神经元构成的神经网络;神经元结构如下图所示:上图是生物学中神经元的基本结构,神经元由树突和轴突以及细胞核组成;而不同神经元之间通过轴突进行连接;当然这些都是中学生物学的基础,就不多说了。

关于神经网络的文章写的也不少了,但一直没弄明白神经网络到底是怎么运作的;而现有的神经网络模型又太复杂,如Transformer,CNN,RNN,以及各种应用场景(NLP,CV,分类任务,回归任务等等);导致我们无法看到神经网络最本质的东西。

所以,今天我们就来从最简单的神经网络开始学起。

从一个简单的神经网络模型开始

简单神经网络

神经网络的基本原理很简单,那就是模仿由人类大脑神经元构成的神经网络;神经元结构如下图所示:

从一个简单的神经网络模型开始

上图是生物学中神经元的基本结构,神经元由树突和轴突以及细胞核组成;而不同神经元之间通过轴突进行连接;当然这些都是中学生物学的基础,就不多说了。

我们主要是把现在的神经网络模型与生物学的神经网络模型做对比;如下图所示,其中每个圆圈就代表一个神经元;对应着生物学模型中的紫色部分,而每个神经元的计算过程就相当于生物学神经元中的细胞核部分;而突触就是下图中的箭头部分。

从一个简单的神经网络模型开始

神经网络模型一般情况下分为多层,其中比较特殊的一点就是输入层和输出层;输入层与输出层根据不同的场景神经元数量各不相同,但基本上节点数都是固定的,且输入层和输出层由于需要和外界交互,因此比较特殊;而中间的隐藏层由多层神经网络组成,且每一层的输出都是下一层的输入。

而神经元的结构是一个包含输入,输出与计算功能的模型;输入可以类比生物神经元中的树突,而输出则为神经元的轴突;计算部分就是细胞核——进行信号处理和转换。

如下图所示,红色框中的就是一个简单的神经元计算模型。

从一个简单的神经网络模型开始

而在实际应用中,不同的神经元实现不尽相同,但大都基于以下的神经元数学模型:

图片

其实很多人都有一个错误的认知,那就是在神经网络中最重要的是神经元;其实在神经网络中最重要的是权重(W),神经网络训练的目的就是调整不同神经元的不同权重值,当然这里并不是说神经元不重要。

而当有多个神经元组成一个网络层,然后再由多个网络层组成一个复杂的神经网络结构。

从一个简单的神经网络模型开始

如上图所示,每个圆圈都是一个神经元,一个神经元可能存在多个输入,也就是上层神经元的轴突部分;然后神经元接受到输入之后,经过细胞核(函数计算)之后产生一个结果,并输出给下层的神经网络中的神经元;如上图中的Z1的输入来自于a1,a2和a3。而a1,a2和a3的输出又可以同时输出给Z1和Z2两个神经元。

而具体每个神经元有几个输入,以及输出结果给到几个神经元就有不同的神经网络结构所决定。

虽然说目前有单个神经元或者由单层神经网络组成的神经网络模型并没有太大实际应用价值;但其为学习复杂神经网络提供了基础的理论和数学模型。

而这也是神经网络模型的基础,面对复杂的各种神经网络模型和结构,大部分人都被气复杂的表象所蒙蔽,因此我们最好从最简单的学起。虽然它目前并没有什么用,但能够让你了解神经网络的基本运作原理;当你再面对复杂神经网络时,你就知道了其底层的运作原理。

相关资讯

再谈什么是神经网络,透过现象看本质

面对着网络上各种各样关于神经网络的内容,很多想学习神经网络的人都无从下手,包括作者自己;面对各种乱七八糟的概念,名词,很多人都被这些东西蒙住了眼睛。 所以,今天我们就抛开各种高大上的概念,从本质出发来学习什么网络;我们今天不讨论CNN,RNN,Transformer,LSTM等各种神经网络架构;只讨论什么是神经网络。 神经网络对神经网络有过了解的人应该都知道,神经网络就是仿生学的一种实现,使用的是数学模型模拟人类的大脑神经系统;具体的可以看一下上一篇文章——从一个简单的神经网络模型开始。

怎么实现一个神经网络?神经网络的组成结构

对学习神经网络技术的人来说,自己设计一个神经网络模型是很多人都想做的事情;也是神经网络技术学习过程中必不可少的一个环节;但是很多人又不知道应该怎么下手。 所以今天就介绍一下怎么设计一个神经网络模型。 实现一个神经网络很多人认为神经网络复杂的原因是因为没有了解过神经网络的组成结构;因此,就很难弄清楚神经网络模型中每个环节的作用,所以我们就先从神经网络的结构入手。

模型训练之数据集操作:矩阵变换

对神经网络技术有所了解的人应该都知道,要想训练一个高性能的神经网络模型,除了神经网络本身的设计之外,还一个非常重要的前提就是数据集的质量问题;因此,打造一个高质量的数据集就是一个必不可少的过程。 但具体怎么才能开发一个合格的数据集,这时就离不开对数据集的各种操作;而由于在神经网络中,数据的主要载体是多维数组,也就是矩阵;因此一般情况下,数据集的数据格式也会以矩阵的形式存在。 而学会对矩阵的操作就是一个必不可少的技能之一;下面我们就以MINST数据集为例,来简单介绍一下对数据集的操作过程。