Adaline 和 Madaline 神经网络详解

受人类神经系统启发,人工神经网络 是一种用于处理数据的网络,它包含三种类型的层,即输入层、隐藏层和输出层。基本的神经网络仅包含两层,即输入层和输出层。这些层之间通过加权路径连接,用于计算净输入数据。在这一部分,我们将讨论两种基本的神经网络类型:没有任何隐藏层的 Adaline 和只有一个隐藏层的 Madaline。

1. Adaline (自适应线性神经元)

  • 只有一个线性单元的网络被称为 Adaline (Adaptive Linear Neural,自适应线性神经元)。具有线性激活函数的单元被称为线性单元。在 Adaline 中,只有一个输出单元,且输出值为双极性的 (+1, -1)。输入单元和输出单元之间的权重是可调的。它使用 Delta 规则,即 $w{i}(new)=w{i}(old) + \alpha(t-y{in})x{i}$,其中 $w{i}$、$y{in}$ 和 $t$ 分别是权重、预测输出值和真实值。
  • 这种学习规则旨在最小化激活值与目标值之间的均方误差。Adaline 由可训练的权重组成,它将实际输出与计算输出进行比较,并根据计算出的误差应用训练算法。

#### 工作流程:

!Adaline Network-removebg-preview.jpg)Adaline 结构图

首先,计算 Adaline 网络的净输入,然后对其输出应用激活函数,接着将其与原始输出进行比较。如果两者相等,则直接输出;否则,将误差发送回网络,并根据通过 Delta 学习规则计算出的误差更新权重。即 $w{i}(new)=w{i}(old) + \alpha(t-y{in})x{i}$,其中 $w{i}$、$y{in}$ 和 $t$ 分别是权重、预测输出值和真实值。

架构:

!Adaline ArchitectureAdaline 架构图

在 Adaline 中,所有的输入神经元通过加权连接路径直接连接到输出神经元。存在一个激活函数为 1 的偏置 b。

算法:

步骤 1: 初始化权重,设为较小的随机值(不要设为零)。设定学习率 $\alpha$。
步骤 2: 当停止条件为 False 时,执行步骤 3 到 7。
步骤 3: 对每个训练集执行步骤 4 到 6。
步骤 4: 设置输入单元 $xi$ 的激活值为 $si$ (i=1 到 n)。
步骤 5: 计算输出单元的净输入

$$y{in} = \sum wix_i + b$$

这里,b 是偏置,n 是神经元的总数。

步骤 6: 更新权重和偏置 (i=1 到 n)

$$w{i}(new) = w{i}(old) + \alpha(t-y{in})x{i}$$

$$b(new)=b(old) + \alpha(t-y_{in})$$

并计算

误差:$(t-y_{in})^2$

当预测输出和真实值相同时,权重将不会改变。

步骤 7: 测试停止条件。停止条件可能是当权重变化率很低或不再变化时。

代码实现

问题:使用 Adaline 网络设计 OR 门?
解决方案:

  • 最初,假设所有权重都是较小的随机值,例如 0.1,并将学习率设置为 0.1。
  • 同时,设置最小平方误差为 2。
  • 权重将被更新,直到总误差大于最小平方误差。
x1

x2

t —

— 1

1

1 1

-1

1 -1

1

1 -1

-1

-1
  • 计算净输入 $y{in} = \sum wi x_i + b$

$y_{in} = 0.1\times1 + 0.1\times1 +0.1 =0.3$ (当 x1=x2=1)

  • 现在,计算 $(t-y_{in})=(1-0.3)=0.7$
  • 现在,更新权重和偏置

$wi(new) = wi(old) + \alpha(t-y{in})xi$

$w_1(new) = 0.1 + 0.1(1-0.3)1 = 0.17$

$w_2(new) = 0.1 + 0.1(1-0.3)1 = 0.17$

$b(new)=b(old) + \alpha(t-y_{in})$

$b(new)= 0.1 + 0.1(1-0.3) = 0.17$

  • 计算误差 $error = (t-y_{in})^2 = 0.7^2 = 0.49$

类似地,对其他输入向量重复相同的步骤,你会得到下表:

x1

x2

t

yin

(t-yin)

∆w1

∆w2

∆b

w1 (0.1)

w2 (0.1)

b (0.1)

(t-yin)^2

1

1

1

0.3

0.7

0.07

0.07

0.07

0.17

0.17

0.17

0.49

1

-1

1

0.17

0.83

0.083

-0.083

0.083

0.253

0.087

0.253

0.69

-1

1

1

0.087

0.913

-0.0913

0.0913

0.0913

0.1617

0.1783

0.3443

0.83

-1

-1

-1

0.0043

-1.0043

0.1004

0.1004

-0.1004

0.2621

0.2787

0.2439

1.01这是第 1 个 Epoch,其中总误差为 $0.49 + 0.69 + 0.83 + 1.01 = 3.02$。因此将运行更多的 Epoch,直到总误差变得小于等于最小平方误差,即 2。

Python3

`

# Import necessary libraries
import numpy as np

#Adaline neural network
def Adaline(Input, Target, lr=0.2, stop=0.001):
    weight = np.random.random(In
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/47597.html
点赞
0.00 平均评分 (0% 分数) - 0