当时忙期末ANN部分笔记未整理,网站笔记不全,建议参考mirror。其余部分笔记完整。

引入

Artificial Neural Network (ANN)是人工智能学科的分支,其由人类大脑结构仿生而来。其具有自我学习,适应新环境,从已有经验学习解决新问题的能力。

人类神经元与仿生神经元

image-20241225132851629

人类神经元上,一个细胞可以通过轴突(Axon)发送信号给另一个细胞,另一个细胞使用树突(Dendrites) 接收并汇聚所有收到的信号后,进行处理。人类大脑中约有100亿个神经元,每个神经元有约1万个突触与其他神经元相连。(具体数据与解刨学有关,不一定准确)。

在人脑系统中,采用低频(约100Hz)并行计算的策略,这与高频但是核心数少的现代计算机有所差异。

image-20241225135357469

人工神经元与人类神经元类似,它接受多个输入,且针对每个输入有一个权重值,将输入加权求和后,放入“激活函数”中,计算本神经元的输出,将其输出给下一神经元。

其中这个激活函数是非线性的。为什么需要这个“激活函数”呢?因为早在信号与系统就学过,线性系统无法通过加减乘除变为非线性系统,因此一旦需要输出结果具有非线性特性,无论有多少个神经元协作,都无法实现非线性输出。因此在这里引入非线性的激活函数来使得系统具有非线性特征。常用的激活函数有Sigmoid, Tanh, RelU等等。

人工神经网络

组成

image-20241225142007251

人工神经网络由多个神经元构成多层组成,神经元在这里被称为节点(node)。如上图。每个神经元都会将自己的输出传递给其他的神经元。其中第一层被称为输入层(input layer),最后一层被称为输出层(output layer),中间的被称为隐层(hidden layer)。

以计算第二层第一个神经元的输出为例,它接受第一层输出的$a_{1,1},a_{1,2},a_{1,3}$,输入权重分别是$w_{1,1},w_{1,2},w_{1,3}$激活函数是$f$ 因此输出结果等于

如果一个神经网络由大于一个的隐层,则称其为深度神经网络(deep neural network)。如果该网络是单层神经网络,则代表它只有输入层和输出层两个层,否则则为多层神经网络。

对于多层神经网络,假设输入层有l个节点,2个隐层分别有m1和m2个节点,输出层有n个节点,则可以记为$l-m_1-m_2-n$。

类型

如果一个神经网络中,每个神经元的信号都是传递给下一个神经元,无自传递或者反向传递,则称其为前馈网络(feedforward network)。若有传递给自己或者之前的神经元的,则为反馈网络(feedback network)。这里的反馈网络和后面的误差反向传播并无关系,无论是前馈网络还是反馈网络都需要反向传播来学习。除此之外还有一种图网络(graph network),前馈神经网络和反馈神经网络的输入都可表示为向量或者向量序列,而图网络则是输入图结构的数据,本课程未涉及。

img

ANN学习原理(以梯度下降法为例)

基本概念

ANN用于学习的数据集可以分为训练数据集(training set,通常占数据集70%)和测试数据集(testing set, 通常占数据集30%)。训练数据集用于训练模型参数,测试数据集用于验证模型表现是否符合预期。

ANN每个节点的初始权重都是随机确定的,常见的初始化方法是根据高斯分布抽样,也有众多其他初始化算法。

ANN通过计算 输出结果 与 训练数据的期望结果 误差来进行学习,常用的误差表达式有均方差(Mean Squared Error MSE)或均方根(Root Mean Squared Error RMSE)