神经网络——单层感知器 10行代码完成初代神经网络

简介: 神经网络——单层感知器 10行代码完成初代神经网络

@[TOC](神经网络——单层感知器

1 感知器(Perceptron)

感知器(Perceptron)是一种具有单层计算单元的神经网络,只能用来解决线性可分的
二分类问题。在高维空间中的模式分类相当于用一个超平面将样本分开。如果二类模式
线性可分,则算法一定收敛。单层感知器的结构和功能都非常简单,在目前解决实际问
题中很少被采用,但是由于其较易学习和理解,是研究其他网络的基础。

2 研究步骤

  1. 理解结构,类似于之前的神经元模型,用于解决二分类线性可分问题,或者是线性函

数逼近问题

  1. 确定激活函数,这里常用的是单极性(或双极性)阈值函数:

在这里插入图片描述
3 确定输出的计算公式:
在这里插入图片描述

  1. 确定权值调整公式:先要定义学习信号,这里学习信号定义为期望输出和实际输出的

差: 。则权值调整公式为;
在这里插入图片描述
4 学习算法步骤
1 观察输入向量,一般需要标准化,当量纲差别不大时不需要标准化。
2 初始化:

  • 选取学习率η(0 < η < 1),η值太大会影响训练的稳定性、太小会降低收敛速度
  • 初始化权值向量Wj = (ω0j ,ω1j ,ω2j , . . . ,ωnj )T

, 设置为全零值或者较小的非零随
机数

  • 设定精度控制参数ϵ(相应的循环时精度控制变量d = ϵ + 1) - 设定最大迭代次数M

计算输出:输入样本:$x^p=(-1 , x_1^p,x_2^p,......,x_n^p)^T$,计算出节点j的实际输出:$o_j^p$
4 根据选择的学习方法调整权值:$W_j=W_j+η(d_j^p-d_o^p)$,其中$d_j$ 是第 个样本在
j节点 的期望输出

5 循环调整权值直到满足收敛条件,终止循环。收敛条件是:
误差小于某个预先设定的精度控制参数:$|d_j-o_j|<ϵ$ (这里为了防止偶然因素
导致的提前收敛,可以设定误差连续若干次小于 ,为了防止算法不一定收敛而
进入死循环), 或者是累积误差小于精度控制参数:
在这里插入图片描述
迭代次数达到设定值 (可以两个条件混合使用)

3 R 代码实现

使用R自带的数据集iris,划分x和y

# Take iris as an example
#clean resources
rm(list=ls())
#display the first 5 items
head(iris)

adata<-iris[,1:4]
colnames(adata)<-c("x1","x2","x3","y")

标准化数据消除量纲的影响

#Standardized data
adata[,1:3]<-scale(adata[,1:3])

设置$x_0$为阈值,(类比线性回归截距项),使得系数更加自由(没有$x_0$一定回过原点,给函数加了限制条件,设置$x_0$函数更自由)

adata<-cbind(x0=1,adata)
#select stop residual

初始化残差和,学习率,随机权重

eps=5.5
#initialization residuals
d=eps+1
##learning efficient
eta=0.005
##random weight
w=runif(4,0,1)

依靠公式进行感知器神经网络

while(d>=eps and i <200){
  d<-0;i=1
  for(i in 1:nrow(adata)){
    xi=adata[i,1:4]
    delta=adata[i,5]-sum(xi*w)
    w=w+eta*delta*xi
    d=d+delta^2
  }
   i=i+1
  print(d)
}
# view weight
w

在这里插入图片描述

#Residual sum
sum((adata[,5]-(as.matrix(adata[,1:4]))%*%t(w))^2)
#linear regression
lma<-lm(y~x1+x2+x3,data=adata)
lma
sum(summary(lma)$residual^2)

在这里插入图片描述
对比和线性回归的区别,发现和线性回归差别不大,线性回归更优(因为线性回归是最小二乘法得出的最优解)

目录
相关文章
|
5天前
|
机器学习/深度学习 自动驾驶 搜索推荐
深度学习之探索神经网络、感知器与损失函数
在当今的数字化时代,深度学习作为一种强大的机器学习技术,正在迅速改变着我们的生活方式。无论是智能推荐系统、自动驾驶车辆还是语音识别应用,深度学习都在背后默默地发挥作用。
13 1
|
1月前
|
机器学习/深度学习 人工智能 编解码
【神经网络】基于对抗神经网络的图像生成是如何实现的?
对抗神经网络,尤其是生成对抗网络(GAN),在图像生成领域扮演着重要角色。它们通过一个有趣的概念——对抗训练——来实现图像的生成。以下将深入探讨GAN是如何实现基于对抗神经网络的图像生成的
18 3
|
1月前
|
机器学习/深度学习 算法 文件存储
【博士每天一篇文献-算法】 PNN网络启发的神经网络结构搜索算法Progressive neural architecture search
本文提出了一种名为渐进式神经架构搜索(Progressive Neural Architecture Search, PNAS)的方法,它使用顺序模型优化策略和替代模型来逐步搜索并优化卷积神经网络结构,从而提高了搜索效率并减少了训练成本。
34 9
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch代码实现神经网络
这段代码示例展示了如何在PyTorch中构建一个基础的卷积神经网络(CNN)。该网络包括两个卷积层,分别用于提取图像特征,每个卷积层后跟一个池化层以降低空间维度;之后是三个全连接层,用于分类输出。此结构适用于图像识别任务,并可根据具体应用调整参数与层数。
|
1月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
34 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
|
23天前
|
机器学习/深度学习 网络安全 TensorFlow
探索操作系统的心脏:内核与用户空间的奥秘云计算与网络安全:技术挑战与未来趋势深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第29天】在数字世界的每一次点击与滑动背后,都隐藏着一个不为人知的故事。这个故事关于操作系统——计算机的灵魂,它如何协调硬件与软件,管理资源,并确保一切运行得井井有条。本文将带你走进操作系统的核心,揭示内核与用户空间的秘密,展现它们如何共同编织出我们日常数字生活的底层结构。通过深入浅出的讲解和代码示例,我们将一同解锁操作系统的神秘面纱,理解其对现代计算的重要性。 【8月更文挑战第29天】本文将深入探讨卷积神经网络(CNN)的基本原理和结构,以及它们如何被广泛应用于图像识别任务中。我们将通过代码示例来展示如何使用Python和TensorFlow库构建一个简单的CNN模型,并训练
|
1月前
|
机器学习/深度学习 Linux TensorFlow
【Tensorflow+keras】用代码给神经网络结构绘图
文章提供了使用TensorFlow和Keras来绘制神经网络结构图的方法,并给出了具体的代码示例。
35 0
|
3天前
|
SQL 安全 网络安全
网络安全与信息安全:保护你的数字世界##
网络安全和信息安全是现代社会中至关重要的话题。随着数字化进程的加速,网络攻击和数据泄露事件频发,给个人、企业乃至国家安全带来了巨大威胁。本文将探讨网络安全漏洞、加密技术以及安全意识等方面的关键知识,帮助你提升对网络安全的认知,保护自己的数字资产。 ##
22 5
|
1天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第19天】在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术以及安全意识等方面的知识,帮助读者更好地了解网络安全的重要性,提高自己的网络安全防护能力。
26 13
|
2天前
|
SQL 安全 算法
网络安全与信息安全:保护你的数字世界
【9月更文挑战第18天】在这个数字信息时代,网络安全和信息安全的重要性不言而喻。从网络漏洞的发现到加密技术的应用,再到安全意识的提升,每一个环节都至关重要。本文将深入探讨这些主题,并提供实用的建议和代码示例,以帮助读者更好地保护自己的数字世界。
22 11