区块链技术博客
www.b2bchain.cn

MATLAB神经网络系列学习之开篇求职学习资料

本文介绍了MATLAB神经网络系列学习之开篇求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

人工智能想必大家都有一定的了解,它在现在科技发展的进程中发挥着巨大的作用,而且炒的越来越热。所谓处处都有人工智能,不学习人工智能说明已经在这个时代out了。神经网络就是人工智能发展的一部分,其在人工智能的发展中发挥着重要作用。

今天是MATLAB神经网络系列学习的开篇,从今天开始让我们一起走上MATLAB神经网络系列学习从入门到精通的道路。以浅显易懂的方式讲解MATLAB神经网络知识,深入浅出的通过案例分析对神经网络进行剖析。相信通过本专栏关于MATLAB 神经网络系列的学习,不仅对神经网络进行深入掌握,而且对MATLAB这个工具的使用也会得到升华。


  • 神经网络
    • 什么是神经网络
    • 神经元模型
    • 神经元激活函数
      • 线性函数
        • 线性函数
        • 斜面函数
        • 阈值函数
      • 非线性函数
        • S型函数(Sigmoid函数)
        • Sigmoid函数导数
        • 双极性Sigmoid函数
        • 双极性Sigmoid函数导数
    • 感知机和神经网络
  • 神经网络的类别
    • 总类别

神经网络

什么是神经网络

我们首先先看下百度百科对神经网络的定义
MATLAB神经网络系列学习之开篇

我们为什么需要神经网络?神经网络能够利用计算机的高速运算水平来为我们对两个事物之间的关系进行确定,一旦我们得知两个事物之间的关系,我们就能够运用一个参数的值去预测另一个参数的值。这里有点类似于线性回归,我们在线性回归中往往通过最小二乘法确定函数y=ax+b的参数a、b的值,这样我们就确定了变量x与y的映射关系,我们利用映射关系 y=f(x) 即可通过我们已知的量来得到未知量的值。

举一个例子,我们现在有一些苹果, x=1,2,3,4,……代表了苹果的个数,而 y=2.3,4.6,6,…… 代表了对应不同苹果个数的苹果重量,我们通过所给的这些有限的数据去推导得到x与y的映射关系,一旦得到了映射关系,我们就可以说,现在只要告诉我苹果的数量,就可以得到这些苹果的预测重量。

所谓的神经网络,当然没有那么神秘。我们看到神经两个字,就会联想到学习。我们从小到大逐渐的学习过程,其实就类似于人工神经网络的学习过程。比如说,我们小时候吃东西,苹果、米饭、蔬菜、粗粮,在从小到大的学习过程中,我们知道这些东西是可以食用的,等到我们逐渐长大,我们也不会像小时候一样把泥巴往嘴里放,我们不用家长告知就知道什么可以吃,什么不可以吃,此时我们的大脑就可以看做是一个训练好的神经网络。给大脑一个输入,即眼睛所看见的物品,大脑经过运算给出一个输出,这个东西可不可以吃。当然下边这个人除外,他的大脑神经网络是训练好的,可是非要强行改变输出参数。

神经元模型

神经元是神经网络中最基本的结构,也可以说是神经网络的基本单元,它的设计灵感完全来源于生物学上神经元的信息传播机制。我们学过生物的同学都知道,神经元有两种状态:兴奋和抑制。一般情况下,大多数的神经元是处于抑制状态,但是一旦某个神经元收到刺激,导致它的电位超过一个阈值,那么这个神经元就会被激活,处于“兴奋”状态,进而向其他的神经元传播化学物质(其实就是信息)。

一个神经元通常具有多个树突,主要用来接受传入信息;而轴突只有一条,轴突尾端有许多轴突末梢可以给其他多个神经元传递信息。轴突末梢跟其他神经元的树突产生连接,从而传递信号。这个连接的位置在生物学上叫做“突触”。

下图为生物学上的神经元结构示意图:
MATLAB神经网络系列学习之开篇

典型神经元结构 (图片来自维基百科)

1943年,心理学家McCulloch和数学家Pitts参考了生物神经元的结构,发表了抽象的神经元模型MP。

MATLAB神经网络系列学习之开篇

Warren McCulloch(左)和 Walter Pitts(右)

MATLAB神经网络系列学习之开篇

从上图M-P神经元模型可以看出,神经元的输出

$$
begin{align}
y = f(sum_{i=1}^{n}w_{i}x_{i} – theta)
end{align}
$$

其中$theta$为我们之前提到的神经元的激活阈值,函数f(·)也被称为是激活函数。如上图所示,函数f(·)可以用一个阶跃方程表示,大于阈值激活;否则则抑制。但是这样有点太粗暴,因为阶跃函数不光滑,不连续,不可导,因此我们更常用的方法是用sigmoid函数来表示函数函数f(·)。

sigmoid函数的表达式和分布图如下所示:

MATLAB神经网络系列学习之开篇

$f(x) = frac{1}{1+e^{-x}}$

如果我们将神经元图中的所有变量用符号表示,并且写出输出的计算公式的话,就是下图。

MATLAB神经网络系列学习之开篇

神经元计算

可见z是在输入和权值的线性加权和叠加了一个函数g的值。在MP模型里,函数g是sgn函数,也就是取符号函数。这个函数当输入大于0时,输出1,否则输出0。

下面对神经元模型的图进行一些扩展。首先将sum函数与sgn函数合并到一个圆圈里,代表神经元的内部计算。其次,把输入a与输出z写到连接线的左上方,便于后面画复杂的网络。最后说明,一个神经元可以引出多个代表输出的有向箭头,但值都是一样的。

神经元可以看作一个计算与存储单元。计算是神经元对其的输入进行计算功能。存储是神经元会暂存计算结果,并传递到下一层。

MATLAB神经网络系列学习之开篇

神经元扩展

当我们用“神经元”组成网络以后,描述网络中的某个“神经元”时,我们更多地会用“单元”(unit)来指代。同时由于神经网络的表现形式是一个有向图,有时也会用“节点”(node)来表达同样的意思。

神经元激活函数

线性函数

线性函数

$$fleft ( xright )=kx+c$$

斜面函数

$$
fleft ( xright )=left{begin{matrix}
T & x> c\
kx & left | xright |leqslant c\
-T & x<-c
end{matrix}right.
$$

阈值函数

$$
fleft ( xright )=left{begin{matrix}
1 & xgeqslant c\
0 & x<c\
end{matrix}right.
$$

非线性函数

S型函数(Sigmoid函数)

$$
f(x)=frac{1}{1+e^{-alpha x}} space (x in R)
$$

Sigmoid函数导数

$$
f'(x)=frac{alpha e^{-alpha x}}{(1+e^{-alpha x})^2}=alpha f(x)[1-f(x)]
$$

双极性Sigmoid函数

$$
h(x)=frac{2}{1+e^{-alpha x}} space -1 spacespace(x in R)
$$

双极性Sigmoid函数导数

$$
h'(x)=frac{2alpha e^{-alpha x}}{(1+e^{-alpha x})^2}=alpha frac{1-h(x)^2}{2}
$$

引入激活函数的目的是在模型中引入非线性。如果没有激活函数,那么无论你的神经网络有多少层,最终都是一个线性映射,单纯的线性映射无法解决线性不可分问题。引入非线性可以让模型解决线性不可分问题。

感知机和神经网络

感知机(perceptron)是由两层神经元组成的结构,输入层用于接受外界输入信号,输出层(也被称为是感知机的功能层)就是M-P神经元。下图表示了一个输入层具有三个神经元(分别表示为$x_{0}$、$x_{1}$、$x_{2}$)的感知机结构:

MATLAB神经网络系列学习之开篇

感知机结构

根据上图不难理解,感知机模型可以由如下公式表示:

$$
y = f(wx + b)
$$

其中,w为感知机输入层到输出层连接的权重,b表示输出层的偏置。事实上,感知机是一种判别式的线性分类模型,可以解决与、或、非这样的简单的线性可分(linearly separable)问题,线性可分问题的示意图见下图:

MATLAB神经网络系列学习之开篇

线性可分问题

一个神经元有n个输入,每一个输入对应一个权值w,神经元内会对输入与权重做乘法后求和,求和的结果与偏置做差,最终将结果放入激活函数中,由激活函数给出最后的输出,输出往往是二进制的,0 状态代表抑制,1 状态代表激活。

MATLAB神经网络系列学习之开篇

感知机的输出

神经网络的类别

总类别

MATLAB神经网络系列学习之开篇

神经网络的类别

神经网络其实是一个非常宽泛的称呼,它包括两类,一类是用计算机的方式去模拟人脑,这就是我们常说的ANN(人工神经网络),另一类是研究生物学上的神经网络,又叫生物神经网络。对于我们计算机人士而言,肯定是研究前者。

在人工神经网络之中,又分为前馈神经网络和反馈神经网络这两种。那么它们两者的区别是什么呢?这个其实在于它们的结构图。我们可以把结构图看作是一个有向图。其中神经元代表顶点,连接代表有向边。对于前馈神经网络中,这个有向图是没有回路的。而对于反馈神经网络中,结构图的有向图是有回路的。反馈神经网络也是一类重要的神经网络。其中Hopfield网络就是反馈神经网络。深度学习中的RNN也属于一种反馈神经网络。

具体到前馈神经网络中,就有了分别描述的三个网络:单层神经网络,双层神经网络,以及多层神经网络。深度学习中的CNN属于一种特殊的多层神经网络。另外,在一些Blog中和文献中看到的BP神经网络是什么?其实它们就是使用了反向传播BP算法的两层前馈神经网络。也是最普遍的一种两层神经网络。

人工智能想必大家都有一定的了解,它在现在科技发展的进程中发挥着巨大的作用,而且炒的越来越热。所谓处处都有人工智能,不学习人工智能说明已经在这个时代out了。神经网络就是人工智能发展的一部分,其在人工智能的发展中发挥着重要作用。

今天是MATLAB神经网络系列学习的开篇,从今天开始让我们一起走上MATLAB神经网络系列学习从入门到精通的道路。以浅显易懂的方式讲解MATLAB神经网络知识,深入浅出的通过案例分析对神经网络进行剖析。相信通过本专栏关于MATLAB 神经网络系列的学习,不仅对神经网络进行深入掌握,而且对MATLAB这个工具的使用也会得到升华。


  • 神经网络
    • 什么是神经网络
    • 神经元模型
    • 神经元激活函数
      • 线性函数
        • 线性函数
        • 斜面函数
        • 阈值函数
      • 非线性函数
        • S型函数(Sigmoid函数)
        • Sigmoid函数导数
        • 双极性Sigmoid函数
        • 双极性Sigmoid函数导数
    • 感知机和神经网络
  • 神经网络的类别
    • 总类别

神经网络

什么是神经网络

我们首先先看下百度百科对神经网络的定义
MATLAB神经网络系列学习之开篇

我们为什么需要神经网络?神经网络能够利用计算机的高速运算水平来为我们对两个事物之间的关系进行确定,一旦我们得知两个事物之间的关系,我们就能够运用一个参数的值去预测另一个参数的值。这里有点类似于线性回归,我们在线性回归中往往通过最小二乘法确定函数y=ax+b的参数a、b的值,这样我们就确定了变量x与y的映射关系,我们利用映射关系 y=f(x) 即可通过我们已知的量来得到未知量的值。

举一个例子,我们现在有一些苹果, x=1,2,3,4,……代表了苹果的个数,而 y=2.3,4.6,6,…… 代表了对应不同苹果个数的苹果重量,我们通过所给的这些有限的数据去推导得到x与y的映射关系,一旦得到了映射关系,我们就可以说,现在只要告诉我苹果的数量,就可以得到这些苹果的预测重量。

所谓的神经网络,当然没有那么神秘。我们看到神经两个字,就会联想到学习。我们从小到大逐渐的学习过程,其实就类似于人工神经网络的学习过程。比如说,我们小时候吃东西,苹果、米饭、蔬菜、粗粮,在从小到大的学习过程中,我们知道这些东西是可以食用的,等到我们逐渐长大,我们也不会像小时候一样把泥巴往嘴里放,我们不用家长告知就知道什么可以吃,什么不可以吃,此时我们的大脑就可以看做是一个训练好的神经网络。给大脑一个输入,即眼睛所看见的物品,大脑经过运算给出一个输出,这个东西可不可以吃。当然下边这个人除外,他的大脑神经网络是训练好的,可是非要强行改变输出参数。

神经元模型

神经元是神经网络中最基本的结构,也可以说是神经网络的基本单元,它的设计灵感完全来源于生物学上神经元的信息传播机制。我们学过生物的同学都知道,神经元有两种状态:兴奋和抑制。一般情况下,大多数的神经元是处于抑制状态,但是一旦某个神经元收到刺激,导致它的电位超过一个阈值,那么这个神经元就会被激活,处于“兴奋”状态,进而向其他的神经元传播化学物质(其实就是信息)。

一个神经元通常具有多个树突,主要用来接受传入信息;而轴突只有一条,轴突尾端有许多轴突末梢可以给其他多个神经元传递信息。轴突末梢跟其他神经元的树突产生连接,从而传递信号。这个连接的位置在生物学上叫做“突触”。

下图为生物学上的神经元结构示意图:
MATLAB神经网络系列学习之开篇

典型神经元结构 (图片来自维基百科)

1943年,心理学家McCulloch和数学家Pitts参考了生物神经元的结构,发表了抽象的神经元模型MP。

MATLAB神经网络系列学习之开篇

Warren McCulloch(左)和 Walter Pitts(右)

MATLAB神经网络系列学习之开篇

从上图M-P神经元模型可以看出,神经元的输出

$$
begin{align}
y = f(sum_{i=1}^{n}w_{i}x_{i} – theta)
end{align}
$$

其中$theta$为我们之前提到的神经元的激活阈值,函数f(·)也被称为是激活函数。如上图所示,函数f(·)可以用一个阶跃方程表示,大于阈值激活;否则则抑制。但是这样有点太粗暴,因为阶跃函数不光滑,不连续,不可导,因此我们更常用的方法是用sigmoid函数来表示函数函数f(·)。

sigmoid函数的表达式和分布图如下所示:

MATLAB神经网络系列学习之开篇

$f(x) = frac{1}{1+e^{-x}}$

如果我们将神经元图中的所有变量用符号表示,并且写出输出的计算公式的话,就是下图。

MATLAB神经网络系列学习之开篇

神经元计算

可见z是在输入和权值的线性加权和叠加了一个函数g的值。在MP模型里,函数g是sgn函数,也就是取符号函数。这个函数当输入大于0时,输出1,否则输出0。

下面对神经元模型的图进行一些扩展。首先将sum函数与sgn函数合并到一个圆圈里,代表神经元的内部计算。其次,把输入a与输出z写到连接线的左上方,便于后面画复杂的网络。最后说明,一个神经元可以引出多个代表输出的有向箭头,但值都是一样的。

神经元可以看作一个计算与存储单元。计算是神经元对其的输入进行计算功能。存储是神经元会暂存计算结果,并传递到下一层。

MATLAB神经网络系列学习之开篇

神经元扩展

当我们用“神经元”组成网络以后,描述网络中的某个“神经元”时,我们更多地会用“单元”(unit)来指代。同时由于神经网络的表现形式是一个有向图,有时也会用“节点”(node)来表达同样的意思。

神经元激活函数

线性函数

线性函数

$$fleft ( xright )=kx+c$$

斜面函数

$$
fleft ( xright )=left{begin{matrix}
T & x> c\
kx & left | xright |leqslant c\
-T & x<-c
end{matrix}right.
$$

阈值函数

$$
fleft ( xright )=left{begin{matrix}
1 & xgeqslant c\
0 & x<c\
end{matrix}right.
$$

非线性函数

S型函数(Sigmoid函数)

$$
f(x)=frac{1}{1+e^{-alpha x}} space (x in R)
$$

Sigmoid函数导数

$$
f'(x)=frac{alpha e^{-alpha x}}{(1+e^{-alpha x})^2}=alpha f(x)[1-f(x)]
$$

双极性Sigmoid函数

$$
h(x)=frac{2}{1+e^{-alpha x}} space -1 spacespace(x in R)
$$

双极性Sigmoid函数导数

$$
h'(x)=frac{2alpha e^{-alpha x}}{(1+e^{-alpha x})^2}=alpha frac{1-h(x)^2}{2}
$$

引入激活函数的目的是在模型中引入非线性。如果没有激活函数,那么无论你的神经网络有多少层,最终都是一个线性映射,单纯的线性映射无法解决线性不可分问题。引入非线性可以让模型解决线性不可分问题。

感知机和神经网络

感知机(perceptron)是由两层神经元组成的结构,输入层用于接受外界输入信号,输出层(也被称为是感知机的功能层)就是M-P神经元。下图表示了一个输入层具有三个神经元(分别表示为$x_{0}$、$x_{1}$、$x_{2}$)的感知机结构:

MATLAB神经网络系列学习之开篇

感知机结构

根据上图不难理解,感知机模型可以由如下公式表示:

$$
y = f(wx + b)
$$

其中,w为感知机输入层到输出层连接的权重,b表示输出层的偏置。事实上,感知机是一种判别式的线性分类模型,可以解决与、或、非这样的简单的线性可分(linearly separable)问题,线性可分问题的示意图见下图:

MATLAB神经网络系列学习之开篇

线性可分问题

一个神经元有n个输入,每一个输入对应一个权值w,神经元内会对输入与权重做乘法后求和,求和的结果与偏置做差,最终将结果放入激活函数中,由激活函数给出最后的输出,输出往往是二进制的,0 状态代表抑制,1 状态代表激活。

MATLAB神经网络系列学习之开篇

感知机的输出

神经网络的类别

总类别

MATLAB神经网络系列学习之开篇

神经网络的类别

神经网络其实是一个非常宽泛的称呼,它包括两类,一类是用计算机的方式去模拟人脑,这就是我们常说的ANN(人工神经网络),另一类是研究生物学上的神经网络,又叫生物神经网络。对于我们计算机人士而言,肯定是研究前者。

在人工神经网络之中,又分为前馈神经网络和反馈神经网络这两种。那么它们两者的区别是什么呢?这个其实在于它们的结构图。我们可以把结构图看作是一个有向图。其中神经元代表顶点,连接代表有向边。对于前馈神经网络中,这个有向图是没有回路的。而对于反馈神经网络中,结构图的有向图是有回路的。反馈神经网络也是一类重要的神经网络。其中Hopfield网络就是反馈神经网络。深度学习中的RNN也属于一种反馈神经网络。

具体到前馈神经网络中,就有了分别描述的三个网络:单层神经网络,双层神经网络,以及多层神经网络。深度学习中的CNN属于一种特殊的多层神经网络。另外,在一些Blog中和文献中看到的BP神经网络是什么?其实它们就是使用了反向传播BP算法的两层前馈神经网络。也是最普遍的一种两层神经网络。

人工智能想必大家都有一定的了解,它在现在科技发展的进程中发挥着巨大的作用,而且炒的越来越热。所谓处处都有人工智能,不学习人工智能说明已经在这个时代out了。神经网络就是人工智能发展的一部分,其在人工智能的发展中发挥着重要作用。

今天是MATLAB神经网络系列学习的开篇,从今天开始让我们一起走上MATLAB神经网络系列学习从入门到精通的道路。以浅显易懂的方式讲解MATLAB神经网络知识,深入浅出的通过案例分析对神经网络进行剖析。相信通过本专栏关于MATLAB 神经网络系列的学习,不仅对神经网络进行深入掌握,而且对MATLAB这个工具的使用也会得到升华。


  • 神经网络
    • 什么是神经网络
    • 神经元模型
    • 神经元激活函数
      • 线性函数
        • 线性函数
        • 斜面函数
        • 阈值函数
      • 非线性函数
        • S型函数(Sigmoid函数)
        • Sigmoid函数导数
        • 双极性Sigmoid函数
        • 双极性Sigmoid函数导数
    • 感知机和神经网络
  • 神经网络的类别
    • 总类别

神经网络

什么是神经网络

我们首先先看下百度百科对神经网络的定义
MATLAB神经网络系列学习之开篇

我们为什么需要神经网络?神经网络能够利用计算机的高速运算水平来为我们对两个事物之间的关系进行确定,一旦我们得知两个事物之间的关系,我们就能够运用一个参数的值去预测另一个参数的值。这里有点类似于线性回归,我们在线性回归中往往通过最小二乘法确定函数y=ax+b的参数a、b的值,这样我们就确定了变量x与y的映射关系,我们利用映射关系 y=f(x) 即可通过我们已知的量来得到未知量的值。

举一个例子,我们现在有一些苹果, x=1,2,3,4,……代表了苹果的个数,而 y=2.3,4.6,6,…… 代表了对应不同苹果个数的苹果重量,我们通过所给的这些有限的数据去推导得到x与y的映射关系,一旦得到了映射关系,我们就可以说,现在只要告诉我苹果的数量,就可以得到这些苹果的预测重量。

所谓的神经网络,当然没有那么神秘。我们看到神经两个字,就会联想到学习。我们从小到大逐渐的学习过程,其实就类似于人工神经网络的学习过程。比如说,我们小时候吃东西,苹果、米饭、蔬菜、粗粮,在从小到大的学习过程中,我们知道这些东西是可以食用的,等到我们逐渐长大,我们也不会像小时候一样把泥巴往嘴里放,我们不用家长告知就知道什么可以吃,什么不可以吃,此时我们的大脑就可以看做是一个训练好的神经网络。给大脑一个输入,即眼睛所看见的物品,大脑经过运算给出一个输出,这个东西可不可以吃。当然下边这个人除外,他的大脑神经网络是训练好的,可是非要强行改变输出参数。

神经元模型

神经元是神经网络中最基本的结构,也可以说是神经网络的基本单元,它的设计灵感完全来源于生物学上神经元的信息传播机制。我们学过生物的同学都知道,神经元有两种状态:兴奋和抑制。一般情况下,大多数的神经元是处于抑制状态,但是一旦某个神经元收到刺激,导致它的电位超过一个阈值,那么这个神经元就会被激活,处于“兴奋”状态,进而向其他的神经元传播化学物质(其实就是信息)。

一个神经元通常具有多个树突,主要用来接受传入信息;而轴突只有一条,轴突尾端有许多轴突末梢可以给其他多个神经元传递信息。轴突末梢跟其他神经元的树突产生连接,从而传递信号。这个连接的位置在生物学上叫做“突触”。

下图为生物学上的神经元结构示意图:
MATLAB神经网络系列学习之开篇

典型神经元结构 (图片来自维基百科)

1943年,心理学家McCulloch和数学家Pitts参考了生物神经元的结构,发表了抽象的神经元模型MP。

MATLAB神经网络系列学习之开篇

Warren McCulloch(左)和 Walter Pitts(右)

MATLAB神经网络系列学习之开篇

从上图M-P神经元模型可以看出,神经元的输出

$$
begin{align}
y = f(sum_{i=1}^{n}w_{i}x_{i} – theta)
end{align}
$$

其中$theta$为我们之前提到的神经元的激活阈值,函数f(·)也被称为是激活函数。如上图所示,函数f(·)可以用一个阶跃方程表示,大于阈值激活;否则则抑制。但是这样有点太粗暴,因为阶跃函数不光滑,不连续,不可导,因此我们更常用的方法是用sigmoid函数来表示函数函数f(·)。

sigmoid函数的表达式和分布图如下所示:

MATLAB神经网络系列学习之开篇

$f(x) = frac{1}{1+e^{-x}}$

如果我们将神经元图中的所有变量用符号表示,并且写出输出的计算公式的话,就是下图。

MATLAB神经网络系列学习之开篇

神经元计算

可见z是在输入和权值的线性加权和叠加了一个函数g的值。在MP模型里,函数g是sgn函数,也就是取符号函数。这个函数当输入大于0时,输出1,否则输出0。

下面对神经元模型的图进行一些扩展。首先将sum函数与sgn函数合并到一个圆圈里,代表神经元的内部计算。其次,把输入a与输出z写到连接线的左上方,便于后面画复杂的网络。最后说明,一个神经元可以引出多个代表输出的有向箭头,但值都是一样的。

神经元可以看作一个计算与存储单元。计算是神经元对其的输入进行计算功能。存储是神经元会暂存计算结果,并传递到下一层。

MATLAB神经网络系列学习之开篇

神经元扩展

当我们用“神经元”组成网络以后,描述网络中的某个“神经元”时,我们更多地会用“单元”(unit)来指代。同时由于神经网络的表现形式是一个有向图,有时也会用“节点”(node)来表达同样的意思。

神经元激活函数

线性函数

线性函数

$$fleft ( xright )=kx+c$$

斜面函数

$$
fleft ( xright )=left{begin{matrix}
T & x> c\
kx & left | xright |leqslant c\
-T & x<-c
end{matrix}right.
$$

阈值函数

$$
fleft ( xright )=left{begin{matrix}
1 & xgeqslant c\
0 & x<c\
end{matrix}right.
$$

非线性函数

S型函数(Sigmoid函数)

$$
f(x)=frac{1}{1+e^{-alpha x}} space (x in R)
$$

Sigmoid函数导数

$$
f'(x)=frac{alpha e^{-alpha x}}{(1+e^{-alpha x})^2}=alpha f(x)[1-f(x)]
$$

双极性Sigmoid函数

$$
h(x)=frac{2}{1+e^{-alpha x}} space -1 spacespace(x in R)
$$

双极性Sigmoid函数导数

$$
h'(x)=frac{2alpha e^{-alpha x}}{(1+e^{-alpha x})^2}=alpha frac{1-h(x)^2}{2}
$$

引入激活函数的目的是在模型中引入非线性。如果没有激活函数,那么无论你的神经网络有多少层,最终都是一个线性映射,单纯的线性映射无法解决线性不可分问题。引入非线性可以让模型解决线性不可分问题。

感知机和神经网络

感知机(perceptron)是由两层神经元组成的结构,输入层用于接受外界输入信号,输出层(也被称为是感知机的功能层)就是M-P神经元。下图表示了一个输入层具有三个神经元(分别表示为$x_{0}$、$x_{1}$、$x_{2}$)的感知机结构:

MATLAB神经网络系列学习之开篇

感知机结构

根据上图不难理解,感知机模型可以由如下公式表示:

$$
y = f(wx + b)
$$

其中,w为感知机输入层到输出层连接的权重,b表示输出层的偏置。事实上,感知机是一种判别式的线性分类模型,可以解决与、或、非这样的简单的线性可分(linearly separable)问题,线性可分问题的示意图见下图:

MATLAB神经网络系列学习之开篇

线性可分问题

一个神经元有n个输入,每一个输入对应一个权值w,神经元内会对输入与权重做乘法后求和,求和的结果与偏置做差,最终将结果放入激活函数中,由激活函数给出最后的输出,输出往往是二进制的,0 状态代表抑制,1 状态代表激活。

MATLAB神经网络系列学习之开篇

感知机的输出

神经网络的类别

总类别

MATLAB神经网络系列学习之开篇

神经网络的类别

神经网络其实是一个非常宽泛的称呼,它包括两类,一类是用计算机的方式去模拟人脑,这就是我们常说的ANN(人工神经网络),另一类是研究生物学上的神经网络,又叫生物神经网络。对于我们计算机人士而言,肯定是研究前者。

在人工神经网络之中,又分为前馈神经网络和反馈神经网络这两种。那么它们两者的区别是什么呢?这个其实在于它们的结构图。我们可以把结构图看作是一个有向图。其中神经元代表顶点,连接代表有向边。对于前馈神经网络中,这个有向图是没有回路的。而对于反馈神经网络中,结构图的有向图是有回路的。反馈神经网络也是一类重要的神经网络。其中Hopfield网络就是反馈神经网络。深度学习中的RNN也属于一种反馈神经网络。

具体到前馈神经网络中,就有了分别描述的三个网络:单层神经网络,双层神经网络,以及多层神经网络。深度学习中的CNN属于一种特殊的多层神经网络。另外,在一些Blog中和文献中看到的BP神经网络是什么?其实它们就是使用了反向传播BP算法的两层前馈神经网络。也是最普遍的一种两层神经网络。

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » MATLAB神经网络系列学习之开篇求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们