人工智能入门-第一周
神经网络
什么是神经网络?
神经网络(Neural Network)是一种模拟生物神经系统的计算模型,由大量相互连接的人工神经元组成。
这些神经元通过权重连接成多个层次,从而可以学习和处理复杂的非线性关系。
神经网络的基本结构
神经元通常包含三层:
- 输入层(Input Layer):接受外部输入数据,每一个输入对应一个神经元。
- 隐藏层(Hidden Layers):位于输入层和输出层之间,可以有一个或多个隐藏层,每一层的每一个神经元都接收前一层所有神经元的输出信号,并且通过激活函数进行非线性变换。
- 输出层(Output Layer):生成最终输出结果,每个输出对应一个神经元。
神经元
什么是神经元?
神经元(Neuron)是神经网络的基本构建单元,模拟了生物神经系统的神经细胞。每一个神经元接收其他神经元的输出信号,通过计算生成输出信号,并传递给下一个神经元或网络的输出层。
神经元的基本结构
典型的人工神经元包含以下部分:
- 输入(Inputs):
- 接收前一层神经元的输出,或者从神经网络的输入层直接获得原始数据
- 输入通常用向量表示,如\(x=\left[x_1,x_2,...,x_n\right]\)。
- 权重(Weights):
- 每一个输入连接都有一个权重,与输入信号进行加权求和。
- 权重用向量表示,如\(w=\left[w_1,w_2,...,w_n\right]\)。
- 偏置(Bias):
- 每个神经元还有一个偏置项(bias),用于调整加权和的输出
- 偏置通常表示为\(b\)。
- 加权和(Weighted Sum):
- 神经元对输入信号和权重进行加权求和,加上偏置项。
- 计算公式:\(z=w\bullet x+b\)
- 激活函数(Activation Function):
- 加权和通过激活函数进行非线性变换,生成神经元输出。
- 常见激活函数有Sigmoid,Tanh和ReLU
- 输出(Output):
- 激活函数的输出即为神经元的输出信号
- 输出可以作为下一层神经元的输入,或作为最终输出结果。
神经元工作流程
- 接收输入信号:接收上一层神经元的输入或从输入层接收输入信号。
- 加权求和:将输入信号与对应的权重相乘,然后求和,并加上偏置。
- 激活函数:将加权和传递给激活函数,生成非线性输出。
- 传递输出信号:将激活函数的输出传递给下一层神经元或输出层。
神经元的数学表示
一个神经元的数学表示如下
\(z=w\bullet x+b\)
\(a = \sigma(z)\)
其中\(z\)是加权和,\(w\)是权重向量,\(x\)是输入向量,\(b\)是偏置,\(\sigma\)是激活函数,\(a\)是激活函数的输出。
单个神经元简易计算过程的示例代码
激活函数
什么是激活函数?
激活函数(Activation Function)是神经网络中的一个重要组成部分。
主要作用是引入非线性变换,使神经网络能够学习和表示复杂的非线性关系。
激活函数通过将线性组合的输入信号转变为非线性输出,从而使得神经网络可以逼近任意复杂函数。
常见的激活函数
Sigmoid函数
- 特点:输出范围为 (0, 1),常用于二分类问题的输出层。
- 优点:输出值在 (0, 1) 之间,适合处理概率问题。
- 缺点:容易导致梯度消失问题,特别是在深层网络中。
Tanh(双曲正切)函数
- 特点:输出范围为 (-1, 1),常用于隐藏层。
- 优点:输出均值为0,相对于Sigmoid,梯度消失问题有所减缓。
- 缺点:仍然可能导致梯度消失问题。
ReLU(Rectified Linear Unit)函数
-
特点:输出范围为 [0, ∞),常用于隐藏层。
-
优点:计算简单,不会出现梯度消失问题。
-
缺点:可能导致神经元“死亡”问题,即某些神经元可能永远不会被激活(输出为0)。
Leaky ReLU函数
特点:输出范围为 (-∞, ∞)。
优点:解决ReLU的“死亡”问题,通过引入一个很小的负斜率。
缺点:需要手动调整负斜率参数。
Softmax函数
- 特点:将输入向量转换为概率分布,常用于多分类问题的输出层。
- 优点:输出为概率分布,所有值之和为1。
- 缺点:计算量较大,特别是在大规模分类任务中。
激活函数简单使用代码
全连接神经网络
什么是全连接神经网络?
全连接神经网络(Fully Connected Neural Network,FCNN),是一种基础的神经网络模型。
特点是每一层中的每一个神经元都与下一层中的每一个神经元相连。
典型的神经网络训练过程
- 生成标签数据
- 将标签数据数值化
- 将数值化后的标签数据标准化(一般用归一化),构成数据向量
- 将权重矩阵与数据向量(+偏置)做矩阵乘法,得到结果向量
- 将结果向量通过激活函数(Sigmod、Relu、Tanh)得到logits
- 对logits做oftmax,得到概率分布
- 如果预测错误,使用损失函数计算损失(LOSS)
- 再通过求梯度等方法,使用损失去调整权重矩阵
PS
- 神经网络的计算只有浮点数的加减乘除。