Java教程

吃瓜教程|Datawhale-10月(4)

本文主要是介绍吃瓜教程|Datawhale-10月(4),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

吃瓜教程|Datawhale-10月(4)

神经网络

神经元模型

M-P 神经元模型(一个用来模拟生物行为的数学模型)

在此模型中,神经元接收到来自 n 个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数(模拟“抑制”或“激活”)处理以产生神经元的输入。

image-20211025211936129

理想的激活函数是阶跃函数,它将输入值映射为0或1。然而阶跃函数不连续,不光滑,所以实际上用 Sigmoid 函数作为激活函数。

把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。

我们将神经网络视为是由下式相互嵌套而得的模型:

\[y=f\left(\sum_{i=1}^{n} w_{i} x_{i}-\theta\right)=f\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right) \]

单个 M-P 神经元:感知机( sgn (阶跃函数)作激活函数)、对数几率回归( sigmoid 作激活函数)

多个 M-P 神经元:神经网络

感知机和多层网络

感知机由两层神经元组成,输入层接受外界输入信号后传递给输出层,输出层是M-P神经元,也称为“阈值逻辑单元”。

image-20211025221453837

对于 \(y_{j}=f(\sum_{i}w_{i}x_{i}-\theta_{j})=f(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta)\) ,假如 f 是阶跃函数,则有

  • 与( \(x_{1}\and x_{2}\) ):令 \(w_{1}=w_{2}=1,\theta =2\) ,则 \(y=f(1\cdot x_{1}+1\cdot x_{2}-2)\) ,仅在 \(x_{1}=x_{2}=1\) 时,y = 1。
  • 或( \(x_{1}\or x_{2}\) ):令 \(w_{1}=w_{2}=1,\theta =0.5\) ,则 \(y=f(1\cdot x_{1}+1\cdot x_{2}-0.5)\) ,当 \(x_{1}=1或x_{2}=1\) 时,y = 1。
  • 非( \(\neg x_{1}\) ):令 \(w_{1}=-0.6,w_{2}=0,\theta =-0.5\) ,则 \(y=f(-0.6\cdot x_{1}+0\cdot x_{2}+0.5)\) ,当 \(x_{1}=1时,y=0;x_{1}=0\) 时,y = 1。

更一般地,给定训练数据集,权重 \(w_{i}(i=1,2,...,n)\) 以及阈值 \(\theta\) 可通过学习得到。阈值 \(\theta\) 可视为一个固定输入为-1.0的“哑结点”所对应的连接权重 \(w_{n+1}\) ,这样,权重和阈值的学习就可以统一为权重的学习。

对于训练样本 \((x,y)\) ,若当前感知机的输出为 \(\hat{y}\) ,则感知机这样调整权重:

\[\begin{aligned} w_{i} & \leftarrow w_{i}+\Delta w_{i} \\ \Delta w_{i} &=\eta(y-\hat{y}) x_{i} \end{aligned} \]

其中 \(\eta \in (0,1)\) 称为学习率。

从几何角度来说,给定一个线性可分的数据集 \(T\) ,感知机的学习目标是求得能对数据集 \(T\) 中的正负样本完全正确划分的超平面,其中 \(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta\) 即为超平面方程。
\(n\) 维空间的超平面 \(\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b=0\right. , 其中 \left.\boldsymbol{w}, \boldsymbol{x} \in \mathbb{R}^{n}\right)\) :

  • 超平面方程不唯一

  • 法向量 \(\boldsymbol{w}\) 垂直于超平面

  • 法向量 \(\boldsymbol{w}\) 和位移项 \(b(或者-\theta)\) 确定一个唯一超平面

  • 法向量 \(\boldsymbol{w}\) 指向的那一半空间为正空间, 另一半为负空间

感知机只有输出层神经元进行激活函数处理,即只有一层功能神经元,其学习能力非常有限,只能解决线性可分问题。

若要解决非线性可分问题(比如异或),需要用到多层功能神经元。

下图的是更常见的神经网络,上下层神经元全互联,神经元之间不存在同层连接,也没有跨层连接,通常被称为多层前馈神经网络。

image-20211025225055318

输入层仅接收外界输入,不进行函数处理,隐层和输入层包含功能性神经元,对信号进行加工。因此图5.6(a)是两层神经网络,为了避免歧义可称为单隐层神经网络。神经网络的学习过程就是调整神经元之间的连接权重以及每个功能神经元的阈值。

image-20211025233744416

感知机学习策略

随机初始化 \(\boldsymbol{w}, b\) ,将全体训练样本代入模型找出误分类样本,假设此时误分类样本集合为 \(M \subseteq T\) ,对任意一个误分类样本 \((\boldsymbol{x}, y) \in M\) 来说,当 \(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}- \theta \geqslant 0\) 时,模型输出值为 \(\hat{y}=1\) ,样本真实标记为 y = 0 ,反之,当 \(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta<0\) 时,模型输出值为 \(\hat{y}=0\) ,样本真实标记为 y = 1 。综合两种情形可知,以下公式恒成立:

\[(\hat{y}-y)\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta\right) \geq 0 \]

所以,给定数据集 \(T\) ,其损失函数可以定义为:

\[L(\boldsymbol{w}, \theta)=\sum_{\boldsymbol{x} \in M}(\hat{y}-y)\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}-\theta\right) \]

显然,此损失函数是非负的。如果没有误分类点,损失函数值是 0 。而且,误分类点越少,误分类点离超平面越近,损失函数值就越小。

误差逆传播算法

也称 BP 算法
未完待续

这篇关于吃瓜教程|Datawhale-10月(4)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!