神经网络笔记
2025-05-07 21:49:51 # AI相关

神经网络(Neural Networks)

神经网络(Neural Network)是一种模仿人类大脑神经元结构和工作方式的计算模型,广泛用于机器学习和人工智能中,尤其擅长处理图像识别、语音识别、自然语言处理等复杂任务。

通俗理解:

可以把神经网络看成是一种"黑盒子"系统,它通过输入一些数据,不断学习其中的规律,并给出相应的输出结果。就像人类通过经验不断学习和改进一样,神经网络也通过大量的数据训练自己。

组成结构

神经网络通常由以下几个部分组成:

  1. 输入层(Input Layer):接收原始数据,比如图片的像素值或文本的向量表示。
  2. 隐藏层(Hidden Layers):中间若干层神经元节点,每一层都会对数据进行处理和特征提取。
  3. 输出层(Output Layer):输出最终结果,比如分类标签或预测数值。

每一层都包含多个“神经元”,它们通过**权重(weight)偏置(bias)连接,并经过一个激活函数(activation function)**进行非线性变换。

举个简单的例子:

比如你要训练一个神经网络来识别猫和狗的图片:

  • 输入层:接收图片的像素数据。
  • 隐藏层:提取特征,比如耳朵形状、毛发颜色、眼睛位置等。
  • 输出层:给出结果,例如“这是一只猫”或“这是一只狗”。

常见的算法

前馈神经网络(Feedforward Neural Network, FNN)、卷积神经网络(Convolutional Neural Network, CNN)、循环神经网络(Recurrent Neural Network, RNN)、生成对抗网络(Generative Adversarial Network, GAN)等。

前馈神经网络(FNN)

  • 描述:最基本的神经网络结构,信息从输入层单向流向输出层,没有循环。
  • 用途:图像分类、特征提取、函数拟合等。
  • 核心算法:前向传播 + 反向传播(Backpropagation)

卷积神经网络(CNN)

  • 描述:专门用于处理图像等具有空间结构的数据,利用卷积层提取局部特征。
  • 组成:卷积层、池化层、全连接层
  • 用途:图像识别(如人脸识别、物体检测)、视频分析、医疗图像等。
  • 代表网络:LeNet, AlexNet, VGG, ResNet

循环神经网络(RNN)

  • 描述:具有“记忆”能力,适用于序列数据,通过隐藏状态传递前一时刻信息。
  • 用途:自然语言处理(NLP)、时间序列预测、语音识别
  • 变种
    • LSTM(Long Short-Term Memory)
    • GRU(Gated Recurrent Unit)

生成对抗网络(GAN)

  • 描述:由生成器(Generator)和判别器(Discriminator)组成,进行对抗训练。
  • 用途:图像生成、风格迁移、数据增强、超分辨率
  • 代表算法:DCGAN、StyleGAN、CycleGAN

前馈神经网络(FNN)

前馈神经网络(Feedforward Neural Network, FNN)是一种人工神经网络,其中信息单向流动——从输入层流向输出层,中间经过一个或多个隐藏层没有环路或反馈连接

网络结构组成

一个典型的 FNN 包括:

  1. 输入层
    接收原始特征输入(如图像像素、文本向量、数值特征等)

  2. 隐藏层(1个或多个)
    每层包含多个神经元,执行线性加权和 + 激活函数

    z[l]=W[l]a[l1]+b[l],a[l]=σ(z[l])
  3. 输出层
    给出最终结果,如分类概率、回归数值等。
    通常会根据任务选用不同激活函数(如 softmax、sigmoid、linear)

前向传播(Forward Propagation)

基本流程

假设有一个简单的前馈神经网络(Feedforward Neural Network),它由以下几部分组成:

  • 输入层(Input Layer)
  • 一个或多个隐藏层(Hidden Layers)
  • 输出层(Output Layer)

每一层的神经元通过权重(weights)和偏置(biases)连接。

对于第 l 层的向前传播步骤如下:

  1. 加权求和

    z[l]=W[l]a[l1]+b[l]

    其中:

    • W[l]:第 l 层的权重矩阵
    • a[l1]:上一层的输出(或输入层的原始输入)
    • b[l]:第 l 层的偏置向量
    • z[l]:未激活的线性组合结果
  2. 激活函数

    a[l]=σ(z[l])

    其中 σ 是激活函数(如 ReLU、Sigmoid、Tanh 等),用于引入非线性。

这个过程从输入层一直进行到输出层,最终输出预测值 y^=a[L],其中 L 是最后一层。

简单例子

假设我们有一个两层神经网络(一个隐藏层),用于二分类:

  • 输入:2个特征 x1,x2
  • 隐藏层:3个神经元,使用 ReLU 激活
  • 输出层:1个神经元,使用 Sigmoid 激活

向前传播过程:

  1. 计算隐藏层:

    z[1]=W[1]x+b[1](3×2)a[1]=ReLU(z[1])
  2. 计算输出层:

    z[2]=W[2]a[1]+b[2](1×3)y^=σ(z[2])

作用

  • 前向传播是预测过程的一部分。

  • 在训练中,它是损失函数计算的前提。

  • 在反向传播(backpropagation)中会用到中间的 z[l]a[l] 值。