当前位置:文档之家› 神经网络学习笔记及R实现

神经网络学习笔记及R实现

神经网络学习笔记及R实现
神经网络学习笔记及R实现

神经网络

一、神经网络简介

人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式物理结构:人工神经元将模拟生物神经元的功能

计算模拟:人脑的神经元有局部计算和存储的功能,通过连接构成一个系统。人工神经网络中也有大量有局部处理能力的神经元,也能够将信息进行大规模并行处理存储与操作:人脑和人工神经网络都是通过神经元的连接强度来实现记忆存储功能,同时为概括、类比、推广提供有力的支持

训练:同人脑一样,人工神经网络将根据自己的结构特性,使用不同的训练、学习过程,自动从实践中获得相关知识

神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

二、BP神经网络算法描述

1、sigmoid函数分类

回顾我们前面提到的感知器,它使用示性函数作为分类的办法。然而示性函数作为分类器它的跳点让人觉得很难处理,幸好sigmoid函数y=1/(1+e^-x)有类似的性质,且有着光滑性这一优良性质。我们通过下图可以看见sigmoid函数的图像:

错误!

Sigmoid函数有着计算代价不高,易于理解与实现的优点但也有着欠拟合,分类精度不高的特性,我们在支持向量机一章中就可以看到sigmoid函数差劲的分类结果

确定隐藏层的节点个数

2、BP神经网络结构

BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。由下图可知,BP神经网络是一个三层的网络:

输入层(input layer):输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;

隐藏层(Hidden Layer):中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程;

输出层(Output Layer):顾名思义,输出层向外界输出信息处理结果;

当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐藏层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止

3、反向传播算法

反向传播这一算法把我们前面提到的delta规则的分析扩展到了带有隐藏节点的神经网络。为了理解这个问题,设想Bob给Alice讲了一个故事,然后Alice又讲给了Ted,Ted 检查了这个事实真相,发现这个故事是错误的。现在 Ted 需要找出哪些错误是Bob造成的而哪些又归咎于Alice。当输出节点从隐藏节点获得输入,网络发现出现了误差,权系数的调整需要一个算法来找出整个误差是由多少不同的节点造成的,网络需要问,“是谁让我误入歧途?到怎样的程度?如何弥补?”这时,网络该怎么做呢?

同样源于梯度降落原理,在权系数调整分析中的唯一不同是涉及到t(p,n)与y(p,n)的差分。通常来说Wi的改变在于:

alpha * s'(a(p,n)) * d(n) *X(p,i,n)

其中d(n)是隐藏节点n的函数,让我们来看:

n 对任何给出的输出节点有多大影响;

输出节点本身对网络整体的误差有多少影响。

一方面,n 影响一个输出节点越多,n 造成网络整体的误差也越多。另一方面,如果输出节点影响网络整体的误差越少,n 对输出节点的影响也相应减少。这里d(j)是对网络的整体误差的基值,W(n,j) 是 n 对 j 造成的影响,d(j) * W(n,j) 是这两种影响的总和。但是 n 几乎总是影响多个输出节点,也许会影响每一个输出结点,这样,d(n) 可以表示为:SUM(d(j)*W(n,j))

这里j是一个从n获得输入的输出节点,联系起来,我们就得到了一个培训规则。

第1部分:在隐藏节点n和输出节点j之间权系数改变,如下所示:

alpha *s'(a(p,n))*(t(p,n) - y(p,n)) * X(p,n,j)

第 2 部分:在输入节点i和输出节点n之间权系数改变,如下所示:

alpha *s'(a(p,n)) * sum(d(j) * W(n,j)) * X(p,i,n)

这里每个从n接收输入的输出节点j都不同。关于反向传播算法的基本情况大致如此。

通常把第 1部分称为正向传播,把第2部分称为反向传播。反向传播的名字由此而来。4、最速下降法与其改进

最速下降法的基本思想是:要找到某函数的最小值,最好的办法是沿函数的梯度方向探寻,如果梯度记为d,那么迭代公式可写为w=w-alpha*d,其中alpha可理解为我们前面提到的学习速率。

最速下降法有着收敛速度慢(因为每次搜索与前一次均正交,收敛是锯齿形的),容易陷入局部最小值等缺点,所以他的改进办法也有不少,最常见的是增加动量项与学习率可变。

增加冲量项(Momentum)

修改权值更新法则,使第n次迭代时的权值的更新部分地依赖于发生在第n‐1次迭代时的更新

Delta(w)(n)=-alpha*(1-mc)*Delta(w)(n)+mc*Delta(w)(n-1)

右侧第一项就是权值更新法则,第二项被称为冲量项

梯度下降的搜索轨迹就像一个球沿误差曲面滚下,冲量使球从一次迭代到下一次迭代时以同样的方向滚动

冲量有时会使这个球滚过误差曲面的局部极小值或平坦区域

冲量也具有在梯度不变的区域逐渐增大搜索步长的效果,从而加快收敛。

改变学习率

当误差减小趋近目标时,说明修正方向是正确的,可以增加学习率;当误差增加超过一个范围时,说明修改不正确,需要降低学习率。

R语言实现

library(AMORE)

# 数据载入及处理

dat <- read.table('german.data-numeric', header=F)

for (i in 1:25) {

dat[,i] <- as.numeric(as.vector(dat)[,i])

}

# 划分训练集和测试集

train_dat <- dat[1:500,]

test_dat <- dat[501:1000,]

# 进行训练

net <- newff(n.neurons=c(24,8,2,1), learning.rate.global=1e-2,

momentum.global=0.5,

error.criterium="LMS", Stao=NA, https://www.doczj.com/doc/2912761973.html,yer="tansig",

https://www.doczj.com/doc/2912761973.html,yer="purelin", method="ADAPTgdwm")

result <- train(net, train_dat[1:24], train_dat[25], error.criterium="LMS", report=TRUE, show.step=100, n.shows=5 )

# 进行测试

y <- sim(result$net, test_dat[1:24])

y[which(y<1.5)] <- 1

y[which(y>=1.5)] <- 2

# 计算正确率

sum = 0

for(i in 1:500){

if(y[i]==test_dat[i,25]){ sum =sum+1

}

}

cat("正确率", sum/500, "n")

循环神经网络(RNN, Recurrent Neural Networks)介绍

循环神经网络(RNN, Recurrent Neural Networks)介绍 标签:递归神经网络RNN神经网络LSTMCW-RNN 2015-09-23 13:24 25873人阅读评论(13) 收藏举报分类: 数据挖掘与机器学习(23) 版权声明:未经许可, 不能转载 目录(?)[+]循环神经网络(RNN, Recurrent Neural Networks)介绍 这篇文章很多内容是参考: https://www.doczj.com/doc/2912761973.html,/2015/09/recurrent-neural-networks-tutorial-part-1-introd uction-to-rnns/,在这篇文章中,加入了一些新的内容与一些自己的理解。 循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。但是,目前网上与RNNs有关的学习资料很少,因此该系列便是介绍RNNs的原理以及如何实现。主要分成以下几个部分对RNNs进行介绍: 1. RNNs的基本介绍以及一些常见的RNNs(本文内容); 2. 详细介绍RNNs中一些经常使用的训练算法,如Back Propagation Through Time(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学习算法,以及梯度消失问题(vanishing gradient problem) 3. 详细介绍Long Short-Term Memory(LSTM,长短时记忆网络);

多层循环神经网络在动作识别中的应用

Computer Science and Application 计算机科学与应用, 2020, 10(6), 1277-1285 Published Online June 2020 in Hans. https://www.doczj.com/doc/2912761973.html,/journal/csa https://https://www.doczj.com/doc/2912761973.html,/10.12677/csa.2020.106132 Multilayer Recurrent Neural Network for Action Recognition Wei Du North China University of Technology, Beijing Received: Jun. 8th, 2020; accepted: Jun. 21st, 2020; published: Jun. 28th, 2020 Abstract Human action recognition is a research hotspot of computer vision. In this paper, we introduce an object detection model to typical two-stream network and propose an action recognition model based on multilayer recurrent neural network. Our model uses three-dimensional pyramid di-lated convolution network to process serial video images, and combines with Long Short-Term Memory Network to provide a pyramid convolutional Long Short-Term Memory Network that can analyze human actions in real-time. This paper uses five kinds of human actions from NTU RGB + D action recognition datasets, such as brush hair, sit down, stand up, hand waving, falling down. The experimental results show that our model has good accuracy and real-time in the aspect of monitoring video processing due to using dilated convolution and obviously reduces parameters. Keywords Action Recognition, Dilated Convolution, Long Short-Term Memory Network, Deep Learning 多层循环神经网络在动作识别中的应用 杜溦 北方工业大学,北京 收稿日期:2020年6月8日;录用日期:2020年6月21日;发布日期:2020年6月28日 摘要 人体动作识别是目前计算机视觉的一个研究热点。本文在传统双流法的基础上,引入目标识别网络,提出了一种基于多层循环神经网络的人体动作识别算法。该算法利用三维扩张卷积金字塔处理连续视频图

循环神经网络注意力的模拟实现

循环神经网络注意力的模拟实现 我们观察PPT的时候,面对整个场景,不会一下子处理全部场景信息,而会有选择地分配注意力,每次关注不同的区域,然后将信息整合来得到整个的视觉印象,进而指导后面的眼球运动。将感兴趣的东西放在视野中心,每次只处理视野中的部分,忽略视野外区域,这样做最大的好处是降低了任务的复杂度。 深度学习领域中,处理一张大图的时候,使用卷积神经网络的计算量随着图片像素的增加而线性增加。如果参考人的视觉,有选择地分配注意力,就能选择性地从图片或视频中提取一系列的区域,每次只对提取的区域进行处理,再逐渐地把这些信息结合起来,建立场景或者环境的动态内部表示,这就是本文所要讲述的循环神经网络注意力模型。 怎么实现的呢? 把注意力问题当做一系列agent决策过程,agent可以理解为智能体,这里用的是一个RNN 网络,而这个决策过程是目标导向的。简要来讲,每次agent只通过一个带宽限制的传感器观察环境,每一步处理一次传感器数据,再把每一步的数据随着时间融合,选择下一次如何配置传感器资源;每一步会接受一个标量的奖励,这个agent的目的就是最大化标量奖励值的总和。 下面我们来具体讲解一下这个网络。 如上所示,图A是带宽传感器,传感器在给定位置选取不同分辨率的图像块,大一点的图像块的边长是小一点图像块边长的两倍,然后resize到和小图像块一样的大小,把图像块组输出到B。 图B是glimpse network,这个网络是以theta为参数,两个全连接层构成的网络,将传感器输出的图像块组和对应的位置信息以线性网络的方式结合到一起,输出gt。 图C是循环神经网络即RNN的主体,把glimpse network输出的gt投进去,再和之前内部信息ht-1结合,得到新的状态ht,再根据ht得到新的位置lt和新的行为at,at选择下一步配置传感器的位置和数量,以更好的观察环境。在配置传感器资源的时候,agent也会

相关主题
文本预览
相关文档 最新文档