-
神经网络起源:一个生物神经网络是由一组化学上相连或功能上相关的神经元组成。一个神经元可能与许多其他神经元相连,网络中的神经元和连接的总数可能很广泛。连接,称为突触,通常是从轴突到树突形成的,尽管树突和其他连接是可能的。除了电信号外,还有其他形式的信号,这些信号来自于神经递质的扩散。
神经网络的起源可以追溯到20世纪40年代,当时科学家们开始尝试模拟人脑的工作原理。以下是神经网络发展的几个重要里程碑:
-
1943年:McCulloch-Pitts模型:
- Warren McCulloch 和 Walter Pitts 提出了第一个数学模型,用于描述神经元的工作原理。这个模型被称为 McCulloch-Pitts 神经元,是一种简单的二进制模型,能够模拟基本的逻辑运算。
-
1958年:感知器(Perceptron) :
- Frank Rosenblatt 提出了感知器模型,这是第一个能够学习的神经网络模型。感知器能够通过调整权重来学习和分类数据。
-
1969年:感知器的局限性:
- Marvin Minsky 和 Seymour Papert 在他们的著作《Perceptrons》中指出,单层感知器无法解决非线性可分问题,如 XOR 问题。这一发现导致了神经网络研究的停滞。
-
1986年:反向传播算法:
- David Rumelhart、Geoffrey Hinton 和 Ronald Williams 提出了反向传播算法(Backpropagation),这是一种用于训练多层神经网络的有效方法。反向传播算法的提出使得神经网络能够解决更复杂的问题,重新激发了对神经网络的研究兴趣。
-
2006年:深度学习的兴起:
- Geoffrey Hinton 等人提出了深度信念网络(Deep Belief Networks),标志着深度学习的兴起。深度学习通过使用多层神经网络,能够在大规模数据集上进行有效的学习和推理。
-
-
神经网络模型组成:特征、权重和激活函数
a. 通过分析、设计特征工程,真实世界可以用有限个特征描述。
b. 而在神经网络中,每一层的参数就是特征,整个神经网络通过若干参数来描述真实世界。
c. 输入层、输出层、隐藏层的数量和每层参数所用函数,都可以通过特征工程来做相应设计。
d. 每一个神经网元都是由两部分组成:一个求和、一个函数,
e. 这个函数我们称为“激活函数”,通过它来为下一层的计算进行判断,来激活下一层,所以叫激活函数f
-
神经网络模型-训练过程
a. 数据准备:确定深度学习模型的输入特征与输出标签数据样本
b. 设计模型结构:开发者通过 AI 框架开发了神经网络模型结构,实线代表权重、圆代表对输入特征数据计算的操作
c. 训练过程:
i. 前向传播(Forward Propagation):输入到输出各层计算(如卷积、池化层等),产生输出并完成损失函数计算。ii. 反向传播(Back Propagation):由输出到输入反向完成整个模型中各层的权重和输出对损失函数的梯度求解。iii. 梯度更新(Weight Update):根据指定的指定学习率,对模型权重通过梯度下降算法完成权重的更新。
-
神经网络模型-推理过程
a. 推理(Inference)只需要执行训练过程中的前向传播过程
b. 当完成模型训练,意味着在给定的数据集上,模型已经达到最佳或者满足需求的预测效果。如果 AI 算法工程师对模型预测效果满意,就可以进入模型部署进行推理和使用模型。
-
神经网络模型-学习(训练)与工作(推理)流程
a. 训练:通过设计合适 AI 模型结构以及损失函数和优化算法,将数据集以 mini-batch (数据集分为多个批次,作用是每次使用少量数据更新模型参数,再用新的数据验证等刚得到模型参数的计算效果)反复进行前向计算并计算损失,反向计算梯度利用优化函数来更新模型,使得损失函数最小。训练过程最重要是梯度计算和反向传播。
b. 推理:在训练好的模型结构和参数基础上,进行一次前向传播得到模型输出。相对于训练,推理不涉及梯度和损失优化。最终目标是将训练好的模型部署生产环境中。
-
神经网络结构与参数的关系
a. 人类提供了网络的结构,架构是神经网络的天赋
b. 机器自己根据数据找出所有的参数,机器自己后天学习的成果,得到的不同f函数就是不同模型
-
神经网络计算过程
a. 如果用传统的程序代码写出来,就是对数组用很多循环进行加减乘除。
b. 如果用数学方法则都是线性代数的矩阵运算,特别适合用GPU做并行计算。
-
简单的神经网络模型就是感知机模型,可以简单地理解为单层的神经网络
-
Weights (权重)和 biases(偏置)被称为的网络参数
-
激活函数通俗理解是3个作用:
a. 归一化:前面的输出z可以是任意字,激活函数把z进行“归一化”,使得输出重新落到(0,1)区间
b. 权重化:前面输出z在下一层是否值得关注?应按多大的权重关注?用(0,1)区间表示权重。
c. 传递阀门:再进一步,如果权重低于某个阈值,可以置0,表示不继续传递
d. PS:激活函数多种,根据需求来选择使用
-
神经网络的学习过程
- 利用神经网络学习的全过程
-
神经网络的结构通常包括输入层、隐藏层和输出层:
-
输入层(Input Layer) :
- 输入层接收原始数据,每个神经元对应一个输入特征。
-
隐藏层(Hidden Layer) :
- 隐藏层位于输入层和输出层之间,负责提取和表示数据的特征。神经网络可以有一个或多个隐藏层,层数越多,网络越深。
-
输出层(Output Layer) :
- 输出层生成最终的预测结果,每个神经元对应一个输出类别或回归值。
-