【神经网络概述】

本文回顾了神经网络的发展历程,从早期的感知机到多层感知机,再到现代的深度学习技术,包括卷积神经网络(CNN)、循环神经网络(RNN)等。探讨了这些技术如何解决梯度消失等问题,以及它们在图像识别、语音识别等领域的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享链接

斯坦福大学公开课:http://open.163.com/special/opencourse/machinelearning.html

深度学习教程:http://deeplearning.net/tutorial/

知乎专栏:无痛的机器学习

=================================================================================================================================

[本文核心内容源于:https://www.zhihu.com/question/34681168]

神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。早期感知机的推动者是Rosenblatt。

但是,Rosenblatt的单层感知机有一个严重得不能再严重的问题,即它对稍复杂一些的函数都无能为力(比如最为典型的“异或”操作)。连异或都不能拟合,你还能指望有什么实际用途。

随着数学的发展,这个缺点直到上世纪八十年代才被Rumelha等人发明的多层感知机(multilayer perceptron)克服。多层感知机,顾名思义,就是有多个隐含层的感知机。

多层感知机可以摆脱早期离散传输函数的束缚,使用sigmoid或tanh等连续函数模拟神经元对激励的响应,在训练算法上则使用Werbos发明的反向传播BP算法。这就是我们现在所说的神经网络NN。

多层感知机解决了之前无法模拟异或逻辑的缺陷,同时更多的层数也让网络更能够刻画现实世界中的复杂情形。相信年轻如Hinton当时一定是春风得意。

多层感知机给我们带来的启示是,神经网络的层数直接决定了它对现实的刻画能力——利用每层更少的神经元拟合更加复杂的函数[1]。

即便大牛们早就预料到神经网络需要变得更深,但是有一个梦魇总是萦绕左右。随着神经网络层数的加深,优化函数越来越容易陷入局部最优解,并且这个“陷阱”越来越偏离真正的全局最优。利用有限数据训练的深层网络,性能还不如较浅层网络。同时,另一个不可忽略的问题是随着网络层数增加,“梯度消失”现象更加严重。具体来说,我们常常使用sigmoid作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。

2006年,Hinton利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层[2],神经网络真正意义上有了“深度”,由此揭开了深度学习的热潮。这里的“深度”并没有固定的定义——在语音识别中4层网络就能够被认为是“较深的”,而在图像识别中20层以上的网络屡见不鲜。为了克服梯度消失,ReLU、maxout等传输函数代替了sigmoid,形成了如今DNN的基本形式。单从结构上来说,全连接的DNN和图1的多层感知机是没有任何区别的。

值得一提的是,今年出现的高速公路网络(highwaynetwork)和深度残差学习(deep residual learning)进一步避免了梯度消失,网络层数达到了前所未有的一百多层(深度残差学习:152层)[3,4]!具体结构题主可自行搜索了解。如果你之前在怀疑是不是有很多方法打上了“深度学习”的噱头,这个结果真是深得让人心服口服。

如图1所示,我们看到全连接DNN的结构里下层神经元和所有上层神经元都能够形成连接,带来的潜在问题是参数数量的膨胀。假设输入的是一幅像素为1K*1K的图像,隐含层有1M个节点,光这一层就有10^12个权重需要训练,这不仅容易过拟合,而且极容易陷入局部最优。另外,图像中有固有的局部模式(比如轮廓、边界,人的眼睛、鼻子、嘴等)可以利用,显然应该将图像处理中的概念和神经网络技术相结合。此时我们可以祭出题主所说的卷积神经网络CNN。对于CNN来说,并不是所有上下层神经元都能直接相连,而是通过“卷积核”作为中介。同一个卷积核在所有图像内是共享的,图像通过卷积操作后仍然保留原先的位置关系。

全连接的DNN存在一个问题——无法对时间序列上的变化进行建模。然而,样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。对了适应这种需求,就出现了题主所说的另一种神经网络结构——循环神经网络RNN。全连接的DNN还存在着另一个问题——无法对时间序列上的变化进行建模。然而,样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。对了适应这种需求,另一种神经网络结构——循环神经网络RNN


### 经典神经网络的基本概念与架构 经典神经网络(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、付费专栏及课程。

余额充值