• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

神经网络

人工神经网络是生物神经网络在简化意义上的技术复制。作为一门学科,它的主要任务是根据生物神经网络的原理和实际应用的需要,建立一个实用的人工神经网络模型,设计相应的学习算法,模拟人脑的一些智能活动,然后在技术上实现它,解决实际问题。因此,生物神经网络主要研究智能的机制;人工神经网络主要研究智能机制的实现,两者相辅相成。生物神经网络主要指人脑的神经网络,是人工神经网络的技术原型。人脑是人类思维的物质基础,思维功能位于大脑皮层,大脑皮层包含约10 ^ 11个神经元,每个神经元通过突触与约103个其他神经元相连,形成高度复杂灵活的动态网络。生物神经网络作为一门学科,主要研究人脑神经网络的结构、功能和工作机制,旨在探索人脑思维和智能活动的规律。

gnpbbbcyf344307.png

一、神经网络概述

随着人们对感知机兴趣的下降,神经网络的研究沉寂了很久。80年代初,将模拟和数字混合制作VLSI的技术提高到一个新的水平,并投入实用。此外,数字计算机的发展在一些应用领域遇到了困难。这一背景表明,从人工神经网络中寻求出路的时机已经成熟。美国物理学家霍普菲尔德于1982年和1984年在《美国科学院院刊》上发表了两篇关于人工神经网络的论文,引起了很大的反响。人们重新认识了神经网络的力量及其应用的现实性。随即,一大批学者和研究人员围绕Hopfield提出的方法开展了进一步的工作,形成了20世纪80年代中期以来人工神经网络的研究热潮。

1. 神经网络算法思想

在生物神经网络中,每个神经元的树突接收来自前一个神经元的电信号,并将其组合成更强的信号。如果结合的信号强到超过阈值,这个神经元就会被激活,也会发出信号,信号会沿着轴突到达这个神经元的末梢,然后传递到更多神经元的树突,如下图所示。

模仿生物神经网络,构建一个多层人工神经网络,每层的人工神经元与前后两层的神经元相连,如图2所示。相关的连接权重显示在每个连接上,较小的权重会减弱信号,而较大的权重会放大信号。对于神经网络中的单个神经元,人工神经元的前半部分(图3中红色虚线框)相当于生物神经元的树突,它是输入端,用来接收和组合多个神经元输出的信号;人工神经元的后半部分(图3中绿色的虚线框)相当于生物神经元的轴突,是输出端,用来输出信号给后面更多的神经元;前后的分界线是激活功能,相当于生物神经元的阈值功能。它用于判断输入的组合信号是否达到阈值。如果达到阈值,神经元就会被激活,信号就会输出到输出端。否则,信号将被抑制,不会产生输出。

因此,神经网络的基本原理是将神经网络的输出值Y与训练样本中标定的真实输出值进行比较,计算输出误差,然后用这个误差值来指导调整前、后两层每两个神经元之间的连接权值,从而逐步提高神经网络的输出值,直到与训练样本的真实输出值的误差很小,在设定的可容忍范围内。可以看出,前、后两层每两个神经元之间的连接权值是神经网络需要学习的内容。只有不断优化这些连接权值,神经网络的输出才能越来越好,达到我们满意的结果。

3.神经网络的正向计算输出

如上图2所示,输入信号从第一层(即输入层)进入神经网络后,无论输入层之后有多少层,都可以通过以下两步来计算通过每一层后的输出信号:一是用连接权值来调整和组合前一层各神经元输入的信号;第二是将激活函数应用于组合信号,以生成该层的输出信号。对于第一层的输入层,只表示输入层中每个神经元的输入,对于输入层中的每个神经元不使用激活函数。因此,如果用一个强大的矩阵运算来表示上述输入层之后的每一层神经网络的正向输出值,则为:

[公式][公式]

其中,公式(1)是利用连接权值对上一层神经元输入的信号进行调整并合并,[公式]是合并后的信号向量,[公式]是本层神经元与上一层神经元之间的连接权值矩阵,[公式]是上一层的输入信号向量;公式(2)是对合并后的信号应用激活函数,生成本层的输出信号,[公式]是本层的输出信号向量,[公式]是采用的激活函数(即S门限函数)。

神经元

神经元是神经网络的基本计算单元,也称为节点或单元。它可以接受来自其他神经元或外部数据的输入,然后计算出一个输出。每个输入值都有一个权重,权重取决于该输入相对于其他输入值的重要性。然后对神经元执行一个特定的函数F,定义如下图所示。该函数将对神经元的所有输入值及其权重执行操作。

2. 神经网络的计算步骤

三层神经网络编码框架

在上述神经网络基本原理和相关计算公式的基础上,可以用Python语言做出三层,但不限于每一层。

节点数目的神经网络。因此,一个神经网络类至少应该包括以下三个函数:

初始化函数——设定输入层、中间层和输出层节点的数目,设置学习率的大小, 随机初始化输入层和中间层以及中间层和输出层之间的连接权重矩阵。
训练函数——给定训练集样本后,正向计算输出值并根据样本标定的真实值算出误差值,再反向传播误差算出中间层的误差值,最后计算出误差函数相对于连接权重的斜率并利用梯度下降法更新输入层和中间层以及中间层和输出层之间的连接权重矩阵。
查询函数——给定输入后,计算出自输入层以后每一层神经网络的正向输出值并输出神经网络的最终值。

3. B-P神经网络

如下图所示,这个神经网络分为3个网络层,分别是输入层,隐藏层和输出层,每个网络层都包含有多个神经元,每个神经元都会跟相邻的前一个层的神经元有连接,这些连接其实也是该神经元的输入。根据神经元所在层的不同,前向神经网络的神经元也分为三种,分别为:
输入神经元:位于输入层,主要是传递来自外界的信息进入神经网络中,比如图片信息,文本信息等,这些神经元不需要执行任何计算,只是作为传递信息,或者说是数据进入隐藏层。
隐藏神经元:位于隐藏层,隐藏层的神经元不与外界有直接的连接,它都是通过前面的输入层和后面的输出层与外界有间接的联系,因此称之为隐藏层,上图只是有1个网络层,但实际上隐藏层的数量是可以有很多的,远多于1个,当然也可以没有,那就是只有输入层和输出层的情况了。隐藏层的神经元会执行计算,将输入层的输入信息通过计算进行转换,然后输出到输出层。
输出神经元:位于输出层,输出神经元就是将来自隐藏层的信息输出到外界中,也就是输出最终的结果,如分类结果等。
前向网络中,信息是从输入层传递到输出层,只有前向这一个方向,没有反向传播,也不会循环(不同于RNN,它的神经元间的连接形成了一个循环)。

st2tjnaf5dh4308.png

二、 神经网络R实现

1. 神经网络的数据结构

决策树用到的数据结构如下图所示。

   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa

2. R处理程序

rm(list = ls())
install.packages("party")
library(party)
data(iris)              #数据输入
head(iris,5)    
#建构决策树模型
output<-ctree(Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width,iris)
plot(output)
plot(output,type="simple")

bj51kiqub3c4309.png
0na5kpb3h4s4310.png

3. 计算结果

predtree<-predict(output,iris)   #利用预测集进行预测
table(iris$Species,predtree,dnn=c("真实值","预测值"))    #输出混淆矩阵
           预测值
真实值       setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         49         1
  virginica       0          5        45                #决策树模型的评估

4.泛化外推预测

row1=c(4.5,2.7,3.1,4.2,0)
names(row1)<-c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width","Species")
row1=t(row1)
row1=as.data.frame(row1)              #泛化数据
lei<-predict(output,row1)
[1] virginica                         #所属类别
Levels: setosa versicolor virginica 

三、总结

2021年6月9日,英国《自然》杂志发表一项人工智能突破性成就,美国科学家团队报告机器学习工具已可以极大地加速计算机芯片设计。研究显示,该方法能给出可行的芯片设计,且芯片性能不亚于人类工程师的设计,而整个设计过程只要几个小时,而不是几个月,这为今后的每一代计算机芯片设计节省数千小时的人力。这种方法已经被谷歌用来设计下一代人工智能计算机系统。研究团队将芯片布局规划设计成一个强化学习问题,并开发了一种能给出可行芯片设计的神经网络。

参考文献

(神经网络的基本原理)[https://zhuanlan.zhihu.com/p/68624851]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now