神经网络概述

  • 什么是神经网络

  人工神经网络(artificial neural network,缩写ANN),简称神经网络(neural network,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似

  神经网络主要由:输入层隐藏层输出层构成。当隐藏层只有一层时,该网络为三层神经网络,当没有隐藏层时,网络为两层的神经网络。实际中,网络输入层的每个神经元代表了一个特征,输出层个数代表了分类个数,而隐藏层层数以及隐藏层神经元是由人工设定。一个基本的三层神经网络可见下图:

                                    

  • 从逻辑回归到神经元

                                                

根据上图,我们可以看出,逻辑回归可以分为线性变换部分与非线性变换部分。而只有输入层与输出层且输出层只有一个神经元的神经网络的结构便于逻辑回归一致。只不过在神经网络中,线性变换(求和)非线性变换被集成在一个神经元(隐藏层或输出层)中。如下图所示

                                                

于是,对于具有多层或多个输出神经元的神经网络就不难理解了。其每个隐藏层神经元/输出层神经元的值(激活值),都是由上一层神经元,经过加权求和非线性变换而得到的。其中非线性变换函数(又被称为激活函数)可以是:sigmoid、tanh、relu 等函数。

  • 神经网络之浅层神经网络

添加少量隐层的神经网络就叫做浅层神经网络;也叫作传统神经网络, 一般为2隐层的神经网络(超过两隐层的话,效果会差很多)

                                

  • 神经网络之深度神经网络

增多中间层(隐层)的神经网络就叫做深度神经网络(DNN);可以认为深度学习是神经网络的一个发展

                            

  • 为什么要使用神经网络
首先,神经网络应用在分类问题中效果很好。 工业界中分类问题居多。LR或者linear SVM更适用线性分类。如果数据非线性可分(现实生活中多是非线性的),LR通常需要靠特征工程做特征映射,增加高斯项或者组合项;SVM需要选择核。 而增加高斯项、组合项会产生很多没有用的维度,增加计算量。GBDT可以使用弱的线性分类器组合成强分类器,但维度很高时效果可能并不好。而神经网络在三层及以上时,能够很好地进行非线性可分。现在我们使用下面的例子进行一下解释。

  有这样一组样本,如下图:



  若我们需要对上图中的样本进行分类,直观来看,很难找到一条线性分类边界对其进行分类,而观察上表中的输入输出值,我们可以看出分类结果与输入值是异或关系。而逻辑回归可以通过改变参数,来实现“与”、“或”、“非”简单操作我们先来观察一下逻辑回归如何实现这些操作



将逻辑与和逻辑或组合,再使用逻辑异或可以完成前面图中的非线性可分问题

所以,对线性分类器的的组合可以完成非线性可分的问题,从而对平面样本点的分布进行分类

                            

隐层决定了最终的分类效果 :



 由上图可以看出,随着隐层层数的增多,凸域将可以形成任意的形状,因此可以解决任何复杂的分类问题。实际上,Kolmogorov理论指出:双隐层感知器就足以解决任何复杂的分类问题。
  于是我们可以得出这样的结论:神经网络通过将线性分类器进行组合叠加,能够较好地进行非线性分类

  • 神经网络之过拟合
  1.     理论上来讲,单隐层的神经网络可以逼近任何连续函数(只要隐层的神经元 个数足够的多<一个神经元将数据集分为两类>);
  2. 虽然从数学表达上来讲,效果一样,但是在网络工程效果中,多隐层的神经网络效果要比单隐层的神经网络效果好;
  3. 对于一些分类的问题来讲(比如CTR预估),三层的神经网络效果优于两层的神经网络,但是 如果把层次不断增加(4,5,6,7....),对于最终的效果不会产生太大的变化;
  4. 提升隐层层数或者神经元个数,神经网络的“容量”会变大,那么空间表达能力会变强,从而有可能导致过拟合的问题,不要试图降低神经网络参数量来减缓过拟合,用正则化或者dropout层
  5. 对于视频/图片识别等问题,神经网络不太适合
  • 神经网络之传递函数(激活函数)

  • 神经网络之BP算法

    神经网络与普通的分类器不同,是一个巨大的网络,最后一层的输出与每一层的神经元都有关系。而神经网络的每一层,与下一层之间,都存在一个参数矩阵。我们需要通过优化算法求出每一层的参数矩阵,对于一个有K层的神经网络,我们共需要求解出 K-1个参数矩阵。因此我们无法直接对目标函数进行梯度的计算来求解参数矩阵。BP算法是一种求解参数矩阵W的算法,分为信号“正向传播(FP)”求损失,“反向 传播(BP)”回传误差;根据误差值修改每层的权重,继续迭代。主要需要两步:前向传播(Forward Propagation)反向传播(Back Propagation)

以三层的感知器BP算法为例












  • 径向基(RBF)神经网络
  1. RBF网络能够逼近任意非线性的函数。
  2. 可以处理系统内难以解析的规律性,具有很好的泛化能力,并且具有较快的学习速度。
  3. 有很快的学习收敛速度,已成功应用于非线性函数逼近、时间序列分析、数据分类、 模式识别、信息处理、图像处理、系统建模、控制和故障诊断等。
  4. 当网络的一个或多个可调参数(权值或阈值)对任何一个输出都有影响时,这样的网 络称为全局逼近网络。由于对于每次输入,网络上的每一个权值都要调整,从而导致 全局逼近网络的学习速度很慢,比如BP网络。
  5. 如果对于输入空间的某个局部区域只有少数几个连接权值影响输出,则该网络称为局部逼近网络,比如RBF网络。
  • 神经网络之DNN问题
  1. 一般来讲,可以通过增加神经元和网络层次来提升神经网络的学习能力,使 其得到的模型更加能够符合数据的分布场景;但是实际应用场景中,神经网 络的层次一般情况不会太大,因为太深的层次有可能产生一些求解的问题
  2. 在DNN的求解中有可能存在两个问题:梯度消失和梯度爆炸;我们在求解梯 度的时候会使用到链式求导法则,实际上就是一系列的连乘,如果每一层都小于1的话,则梯度越往前乘越小,导致梯度消失,而如果连乘的数字在每层 都是大于1的,则梯度越往前乘越大,导致梯度爆炸.
### 经典神经网络的基本概念与架构 经典神经网络(Artificial Neural Network, ANN)是一种模仿生物神经系统工作方式的计算模型,其核心目标是通过模拟人类大脑的学习机制来解决复杂的模式识别和预测问题。以下是关于经典神经网络结构与原理的主要概述: #### 1. 基本单元:神经元 神经网络的核心组成部分是一个称为“神经元”的基本单元。每个神经元接收多个输入信号 \(x_i\) 并对其进行加权求和操作 \(\sum w_ix_i\) ,其中 \(w_i\) 是权重参数[^3]。随后,该加权和经过一个激活函数 \(f\) 转换为输出值 \(y=f\left( \sum w_ix_i+b \right)\),\(b\) 表示偏置项。 常见的激活函数包括 Sigmoid 函数、ReLU (Rectified Linear Unit) 和 Tanh 函数等。这些非线性变换使得神经网络能够逼近任意复杂的非线性映射关系[^1]。 #### 2. 层次结构 经典的前馈神经网络通常由以下几类层次构成: - **输入层**: 接收外部数据作为初始输入。 - **隐藏层**: 处理中间计算逻辑的一系列全连接层或多层感知机(Multi-Layer Perceptron, MLP)。每一层中的节点仅与其前后相邻两层相连。 - **输出层**: 提供最终的结果或决策变量。 每两个连续层之间存在完全互联的关系,即当前层每一个神经元都会接受到来自上一层所有神经元传递过来的信息并发送自己的输出给下一层的所有成员[^2]。 #### 3. 学习过程 为了使构建好的神经网络具备解决问题的能力,需要经历训练阶段调整各个连接上的权重以及偏差值直到达到预期性能为止。这一优化流程主要依赖于梯度下降法及其变种算法完成最小化损失函数的目标。 具体来说,在监督学习环境下,已知样本集{(xi,yi)}被用来指导整个系统的自我修正动作;而在无监督或者强化学习情境里,则更多依靠内在规律发现或是环境反馈来进行相应修改[^1]。 ```python import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) class Neuron: def __init__(self, weights, bias): self.weights = weights self.bias = bias def feedforward(self, inputs): total = np.dot(self.weights, inputs) + self.bias return sigmoid(total) weights = np.array([0, 1]) bias = 4 n = Neuron(weights, bias) x = np.array([2, 3]) print(n.feedforward(x)) ``` 以上代码片段展示了一个简单的单个神经元如何利用Sigmoid激活函数进行前向传播运算的例子[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值