神经网络的基础:从感知机到复杂网络的进化

发布于:2024-05-09 ⋅ 阅读:(30) ⋅ 点赞:(0)

一、神经网络的例子

理解感知机

在探索神经网络之前,我们首先回顾了感知机的基本概念。感知机是一种二分类的线性分类模型,它的基本功能是将输入的特征向量转化为一个预测结果。虽然感知机在理论上能够表示复杂的函数,但它有一个显著的局限性——权重的设置仍需人工完成。这不仅耗时耗力,而且限制了模型处理更复杂场景的能力。

神经网络的兴起

为了克服感知机的这些限制,神经网络的概念应运而生。神经网络的核心优势在于其能够自动地从数据中学习和调整权重参数,这一点对于应对现实世界中的复杂和动态问题至关重要。

结构上的细节

神经网络的结构比感知机复杂得多,通常包含三个主要的层次:输入层、隐藏层(或多个隐藏层,也称为中间层)、输出层。隐藏层的引入特别关键,因为它们允许网络捕捉数据中的复杂模式和关系,这是单层感知机所不能做到的。

  • 输入层 负责接收形式各样的原始数据输入。
  • 隐藏层 处理输入数据,每一层通过不同的权重和激活函数进一步提取特征。
  • 输出层 根据从隐藏层传递来的信息生成最终结果。

在这里插入图片描述

网络的深度和复杂性

神经网络可以有多个隐藏层,这使得它们可以构建为深度网络。上图描述的是一个具有一层隐藏层的简单网络模型,通常被称为“2层网络”(实际有权重的层数为两层)。值得注意的是,有些文献可能将其描述为“3层网络”,因为从输入层到输出层共有三层结构,但在实际应用中,我们通常按有权重处理的层数来界定网络的深度。

信号如何传递

在神经网络中,信息的传递和处理方式与感知机相似,但更为复杂和高效。每个神经元接收来自前一层的加权输入,通过激活函数转换这些输入,然后将输出传递到下一层。这种层层传递和非线性的激活引入了可以捕捉更复杂关系的能力。

二、理解神经信号的传递

2.1 感知机的结构和功能

在深入神经网络之前,了解感知机的工作原理是至关重要的。

在这里插入图片描述

感知机接收多个输入,通过各自的权重调整这些输入的重要性,再加上一个偏置项,以决定输出。考虑一个基本的感知机,它接收两个输入 x 1 x_1 x1 x 2 x_2 x2,并产生一个输出 y y y。其数学模型可以表示为以下条件函数:
y = { 0 if  ( b + w 1 x 1 + w 2 x 2 ≤ 0 ) 1 if  ( b + w 1 x 1 + w 2 x 2 > 0 ) y = \begin{cases} 0 & \text{if } (b + w_1 x_1 + w_2 x_2 \leq 0) \\ 1 & \text{if } (b + w_1 x_1 + w_2 x_2 > 0) \end{cases} y={01if (b+w1x1+w2x20)if (b+w1x1+w2x2>0)
其中 b b b是偏置, w 1 w_1 w1 w 2 w_2 w2是对应于输入 x 1 x_1 x1 x 2 x_2 x2的权重。偏置 b b b控制了神经元激活的阈值,而权重确定了各输入信号的影响力。

2.2 优化函数

为了简化上述条件表达式,我们引入一个函数 h ( x ) h(x) h(x),它将输入信号的加权和转换为输出。这个函数定义如下:
h ( x ) = { 0 if  ( x ≤ 0 ) 1 if  ( x > 0 ) h(x) = \begin{cases} 0 & \text{if } (x \leq 0) \\ 1 & \text{if } (x > 0) \end{cases} h(x)={01if (x0)if (x>0)
利用函数 h ( x ) h(x) h(x),可以重新写出感知机的输出 y y y,如下所示:
y = h ( b + w 1 x 1 + w 2 x 2 ) y = h(b + w_1 x_1 + w_2 x_2) y=h(b+w1x1+w2x2)
这种表示方式不仅简化了数学表达,而且也提供了一个清晰的视角来看如何通过修改权重和偏置来优化感知机的性能。

2.3 明确表示偏置

在某些情况下,为了更清楚地表示出偏置 b b b,可以将其作为一个单独的输入信号,与一个恒定输入1相乘。这样,偏置就成为了模型中的一个独立变量,如图示:

在这里插入图片描述

这个表示方法强调了偏置在调整神经网络整体活性中的独立角色。

三、理解感知机和激活函数的作用

3.1 基础感知机模型

在基本的感知机模型中,我们考虑两个输入 x 1 x_1 x1 x 2 x_2 x2,它们通过对应的权重 w 1 w_1 w1 w 2 w_2 w2与输入相乘,并加上一个偏置 b b b,最后通过一个激活函数 h ( x ) h(x) h(x)来决定输出 y y y。这个过程可以用以下两个公式表示:
a = b + w 1 x 1 + w 2 x 2 (1) a = b + w_1 x_1 + w_2 x_2 \tag{1} a=b+w1x1+w2x2(1)

y = h ( a ) (2) y = h(a) \tag{2} y=h(a)(2)

在上述方程中, a a a是加权输入和偏置的总和,这个值被称为“激活”,而 y y y是激活函数 h ( a ) h(a) h(a)的输出,它基于 a a a的值来决定最终的输出。

在这里插入图片描述

3.2 激活函数的引入

激活函数 h ( x ) h(x) h(x)的引入是神经网络设计中的一项革命性创新。它允许模型引入非线性因素,这是处理复杂问题时不可或缺的。在最简单的形式中,激活函数可以是一个阶跃函数,这种函数在输入超过某个阈值时输出1,否则输出0。具体的表达式如下:
h ( x ) = { 0 if  x ≤ 0 1 if  x > 0 h(x) = \begin{cases} 0 & \text{if } x \leq 0 \\ 1 & \text{if } x > 0 \end{cases} h(x)={01if x0if x>0
感知机与神经网络的关系

感知机模型可以视为神经网络的一个单一层版本。在这个模型中,每个输入都是直接与输出相关联,没有中间或隐藏层。然而,在现代的多层神经网络中,可以有多个这样的感知机层,每层可能使用不同类型的激活函数,例如Sigmoid或ReLU,这些都是平滑且连续的函数,能处理比简单阶跃函数更复杂的情况。

图示解析

以下是激活函数在感知机中的示意图, 左图是一般的神经元的图,右图是在神经元内部明确显示激活函数的计算过程的图(a 表示输入信号的总和,h()表示激活函数,y表示输出)

在这里插入图片描述

图中明确显示了激活函数的计算过程。信号的加权总和在节点 a a a中计算,并通过激活函数转换成输出 y y y。在这种表示中, a a a y y y都是神经网络中的节点,实际上与传统意义上的“神经元”含义相同。