神经网络从原理到实现

 神经网络从原理到实现

1.简单介绍

在机器学习和认知科学领域,人工神经网络(artificial neural network,缩写ANN),简称神经网络(neural network,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。现代神经网络是一种非线性统计性数据建模工具。

典型的神经网络具有以下三个部分:

• 结构 (Architecture) 结构指定了网络中的变量和它们的拓扑关系。例如,神经网络中的变量可以是神经元连接的权重(weights)和神经元的激励值(activities of the neurons)。

• 激励函数(Activity Rule) 大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值。一般激励函数依赖于网络中的权重(即该网络的参数)。

• 学习规则(Learning Rule)学习规则指定了网络中的权重如何随着时间推进而调整。这一般被看做是一种长时间尺度的动力学规则。一般情况下,学习规则依赖于神经元的激励值。它也可能依赖于监督者提供的目标值和当前权重的值。

2.初识神经网络

如上文所说,神经网络主要包括三个部分:结构、激励函数、学习规则。图1是一个三层的神经网络,输入层有d个节点,隐层有q个节点,输出层有l个节点。除了输入层,每一层的节点都包含一个非线性变换。

神经网络从原理到实现

图1

那么为什么要进行非线性变换呢?

(1)如果只进行线性变换,那么即使是多层的神经网络,依然只有一层的效果。类似于0.6*(0.2x1+0.3x2)=0.12x1+0.18x2。

(2)进行非线性变化,可以使得神经网络可以拟合任意一个函数,图2是一个四层网络的图。

神经网络从原理到实现

图2

下面使用数学公式描述每一个神经元工作的方式

(1)输出x
(2)计算z=w*x
(3)输出new_x = f(z),这里的f是一个函数,可以是sigmoid、tanh、relu等,f就是上文所说到的激励函数。

3.反向传播(bp)算法

有了上面的网络结构和激励函数之后,这个网络是如何学习参数(学习规则)的呢?

首先我们先定义下本文使用的激活函数、目标函数

(1)激活函数(sigmoid):

def sigmoid(z): return 1.0/(1.0+np.exp(-z))

sigmoid函数有一个十分重要的性质:,即计算导数十分方便。

def sigmoid_prime(z): return sigmoid(z)*(1-sigmoid(z))

下面给出一个简单的证明:

(2)目标函数(差的平方和),公式中的1/2是为了计算导数方便。

然后,这个网络是如何运作的

(1)数据从输入层到输出层,经过各种非线性变换的过程即前向传播。

def feedforward(self, a): for b, w in zip(self.biases, self.weights): a = sigmoid(np.dot(w, a)+b) return a

其中,初始的权重(w)和偏置(b)是随机赋值的

biases = [np.random.randn(y, 1) for y in sizes[1:]] weights = [np.random.randn(y, x) for x, y in zip(sizes[:-1], sizes[1:])]

(2)参数更新,即反向传播

在写代码之前,先进行推导,即利用梯度下降更新参数,以上面的网络结构(图1)为例

(1)输出层与隐层之间的参数更新

(2)隐层与输入层之间的参数更新

神经网络从原理到实现

有两点需要强调下:

用户喜欢...

将电动汽车引入智能电网以实现稳定性和安全性

插电式混合动力汽车和电池电动汽车(PHEV,BEV)的健康市场可以在不牺牲个人交通提供的自由的情况下,显着减少尾气排放的环境负担。欧盟立法者是改变清洁车辆的最积极的倡导者之一,一...


在恶劣的环境中实现复杂的传感和控制系统

在许多工业应用中,感知,记录和交流关于环境条件的数据是至关重要的。许多工业过程涉及高温,高压,振动和腐蚀性气体或液体,但是传感对于控制和监测这些过程是非常重要的,通常在非...


【科普】CNN(卷积神经网络)、RNN(递归神经网络)、DNN(深度神经网络)内部网络结构的区别

先说DNN,从结构上来说他和传统意义上的NN(神经网络)没什么区别,但是神经网络发展时遇到了一些瓶颈问题。 一开始的神经元不能表示异或运算,科学家通过增加网络层数,增加隐藏层可...


unity静态批处理原理理解

1、静态批处理的时间点 1)在游戏导出的时候,在player setting中勾选static batching,这样在导出包的时候就进行批处理,导出来的包就会比较大 2 ) 在游戏场景中勾选场景物体的static选项,在加...


统计模式识别的原理与方法

1 统计模式识别的原理与方法简介 1.1 模式识别 什么是模式和模式识别? 广义地说,存在于时间和空间中可观察的事物,如果可以区别它们是否相同或相似,都可以称之为模式;狭义地说,模...


机器学习方法:从线性模型到神经网络

发现模式 一个模型实际上都是一个从输入到输出的函数,我们希望用这些模型发现数据中的模式,发现数据中存在的函数依赖,当然前提是数据中本身就存在这样的函数依赖。数据集有很多...


图像识别的原理、过程、应用前景,精华篇!

图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。随着计算机技术的发展,人类对图像识别技术的认识越来越深刻。图像识别技术的过...


学习OpenGL ES之教你实现SkyBox

不知道大家是否还记得基于CubeMap的反射效果里介绍的CubeMap,本文将使用CubeMap来制作3D游戏中的一个经典技术,天空盒(SkyBox)。老规矩,先来看下效果图。效果中的地形模型在前面的文章中...


从图像到知识:深度神经网络实现图像理解的原理解析

摘要:本文将详细解析深度神经网络识别图形图像的基本原理。针对卷积神经网络,本文将详细探讨网络中每一层在图像识别中的原理和作用,例如卷积层(convolutional layer),采样层(pooling la...


[深入剖析]递归神经网络

递归神经网络(RNN)是一类神经网络,包括一层内的加权连接(与传统前馈网络相比,连接仅馈送到后续层)。因为 RNN 包含循环,所以它们可以在处理新输入的同时存储信息。这种记忆使它...


浅谈深度学习的技术原理及其在计算机视觉的应用

目前,深度学习几乎成了计算机视觉领域的标配,也是当下人工智能领域最热门的研究方向。计算机视觉的应用场景和深度学习背后的技术原理是什么呢?下面让我们来一探究竟。 计算机视...


神经网络算法的优势与应用

人工神经网络(ANN)以大脑处理机制作为基础,开发用于建立复杂模式和预测问题的算法。 首先了解大脑如何处理信息: 在大脑中,有数亿个神经元细胞,以电信号的形式处理信息。外部信...


游戏开发中的人工智能(十四):神经网络(1)

接上文 游戏开发中的人工智能(十三):不确定状态下的决策:贝叶斯技术 本文内容:“神经网络”技术让游戏具有学习和适应的能力。事实上,从决策判断到预测玩家的行为,都可以应用...


如何才能实现“通用”型 AI?科学家:从人脑寻找灵感

深度学习在单个领域已经取得了可喜的突破。但是若论综合实力,现在的AI根本无法跟人相比。人是通用学习机器,但AI不是。脑科学家Jeff Hawkins 称科学家需要不断从人脑那里寻找灵感来开发...


Unity应用架构设计(8)——使用ServiceLocator实现对象的注入

对象的 『注入』 是企业级软件开发经常听到的术语。如果你是一个 Java 程序员,一定对注入有着深刻的映像。不管是SSH框架还是SSM框架,Spring 全家桶永远是绕不过去的弯。通过依赖注入,可...


徒手实现CNN:综述论文详解卷积网络的数学本质

近日南洋理工大学研究者发布了一篇描述卷积网络数学原理的论文,该论文从数学的角度阐述整个卷积网络的运算与传播过程。该论文对理解卷积网络的数学本质非常有帮助,有助于读者「徒...