引言

在正式进入神经网络的技术细节之前,我们有必要先退一步,看清它在整个知识版图中的位置。

人工智能是一个终极目标——它希望让机器具备像人一样的感知、推理和决策能力。而机器学习,则是实现这个目标的一条核心路径:不靠人为编写规则,而是让计算机从海量数据中自行发现规律。神经网络,正是机器学习这条大河中最重要的支流之一;当它不断加深、规模扩大之后,便形成了我们今天所说的深度学习。

本章的目的,就是在这片大地上为读者画一张概念地图——标出人工智能、机器学习、神经网络和深度学习之间的隶属关系,也点明神经网络与其他经典算法(如支持向量机、决策树等)的异同。只有先把这张地图看清,后面每一章具体讲结构、算法和训练时,才不会迷失方向,才能真正理解每一步“为什么这么做”的全局意义。


总览

在这里插入图片描述

  • 人工智能 AIArtificial Intelligence)—— 让计算机模拟人类的思维,解决一些不能用代码描述的问题

    一些问题不能用传统的编程方法解决,因为没有一个确定的算法流程,但是人类很容易解决,因为人类大脑不是根据固定的算法来推导的,而是根据以往的认知或者经验来推理

    将这个思想放到计算机上,即让计算机自己形成一套模型,然后利用这套模型解决问题。这里的模型,可以看做计算机的“经验”或者“认知”

  • 机器学习 MLMachine Learning)—— 从数据中积累经验,逐渐形成自己的认知,这个让计算机不断学习的过程,称为机器学习。按照学习方式分类,可以分为4类:

    名称描述类比例子
    监督学习数据全部有标签
    对照着学习规律
    有答案的练习题给一堆标注“猫”和“狗”的图
    无监督学习数据全部没有标签
    自己找规律
    没答案的试卷把相似新闻自动归类
    半监督学习大部分数据没有标签,少数有标签
    结合着学习
    先做几道例题
    再做海量没答案的卷子
    100张CT片有诊断结果,用来
    辅助学习剩下10000张无标签的CT片
    强化学习做对奖励,做错惩罚
    自己摸索出最优策略
    训狗,做对给肉,做错没吃AlphaGo下棋

监督学习

  • 概念 —— 监督学习属于机器学习下的一个范畴,其思想是:给机器一组带标签的数据,让它学会从输入到输出的映射关系

    例如,输入是房屋的面积和地段,输出是房价;输入是一张图片,输出是“猫”还是“狗”

    在这里插入图片描述

  • 形式化表达 —— 给定训练数据集

    在这里插入图片描述

    其中, x i x_i xi 是输入特征, y i y_i yi 是标签,监督学习目的是找到函数 f ( x ) f(x) f(x) ,使 f ( x i ) f(x_i) f(xi) 尽可能逼近真实值 y i y_i yi

  • 任务 —— 监督学习有两个主要任务:回归和分类

    • 回归 —— 预测连续的、具体的数值
    • 分类 —— 对各种事物进行分类,用于离散预测
  • 监督学习算法 —— 监督学习算法发展如下:

    在这里插入图片描述

    • 回归算法

      算法描述特点
      线性回归画一条直线去拟合数据最简单、可解释性强,假设数据是线性关系
      多项式回归画一条曲线去拟合数据在线性回归的基础上加入了变量的高次项来拟合
      岭回归 / Lasso 回归 / 弹性网络给直线加紧箍咒通过增加正则化项来防止模型过于复杂,减少过拟合
    • 分类算法

      算法描述特点
      K近邻
      KNN
      近朱者赤,近墨者黑
      寻找周围最近的K个邻居的标签,依此投票决定自己
      - 不需要训练,惰性学习
      - 对距离度量敏感,计算量大
      支持向量机
      SVM
      找一个超平面,使得两类样本到此平面的最小距离最大- 擅长高维数据、小样本
      - 核技巧可处理非线性分类
      朴素贝叶斯根据过去的数据算出各种概率
      再由贝叶斯公式算后验概率,哪个大就判哪个
      - 假设特征之间相互独立(朴素的由来)
      - 对小样本和缺失数据鲁棒,常用于文本分类
      决策树一连串“是/否”的是非题,像猜谜游戏一样层层往下走
      最后到达一个叶子节点,即答案
      - 可解释性强,可视化好
      - 容易过拟合,需要剪枝。
      随机森林种一大堆决策树,每棵树用不同的数据子集和特征子集训练
      最后大家一起投票决定结果。
      - 比单棵决策树更稳定、更准
      - 不容易过拟合
      逻辑回归虽然名字里有“回归”,但实际是做分类的
      输出0~1之间的概率,通常以0.5为阈值来划分类别
      - 线性分类器中的标杆
      - 输出概率,可解释性好
      - 只能处理线性可分问题
      神经网络模仿大脑神经元,一层层传递信息
      每个神经元把输入加权求和再激活,传给下一层
      - 可以拟合任意复杂函数
      - 需要大量数据和算力

神经网络

  • 概念

    • 更进一步的,在监督学习下,我们看到了神经网络这一概念

    • 神经网络的思想是:通过模拟生物神经元连接方式,由输入层、隐藏层、输出层组成的可学习的计算系统

  • 神经网络分类

    • 单层神经网络 —— 只有输入层和输出层、没有隐藏层,只能解决线性可分问题

    在这里插入图片描述

    • 多层神经网络 —— 包含一个或多个隐藏层,通过层层非线性变换能解决复杂问题

      • 浅层学习 —— 使用只有少量隐藏层(通常为 1-2 \text{1-2} 1-2 层)的神经网络进行学习,依赖人工构造特征,表达能力有限,但计算简单

      • 深度学习 —— 使用包含大量隐藏层(通常数十甚至数百层)的神经网络进行学习,强调模型深度,能自动从原始数据中逐层提取抽象特征

        浅层学习与深度学习的历史

        反向传播算法( BP \text{BP} BP)的提出,让神经网络能从大量数据中学习统计规律,掀起了基于统计模型的机器学习热潮,但当时的神经网络多为仅含一层隐层的浅层模型。

        90 90 90 年代, SVM \text{SVM} SVM Boosting \text{Boosting} Boosting 等浅层模型在理论与应用大获成功,而深度神经因训练困难、理论分析复杂而相对沉寂。

        2006 2006 2006 年, Hinton \text{Hinton} Hinton 提出深度网络可通过逐层初始化有效训练,开启了深度学习的浪潮。


深度学习

  • 概念 —— 深度学习的思想是:使用包含大量隐藏层(通常数十甚至数百层)的神经网络进行学习,自动从原始数据提取抽象特征

  • 网络架构分类 —— 神经网络长什么样,用什么样的结构来处理数据

    在这里插入图片描述

    算法描述特点
    全连接神经网络
    FCNN \text{FCNN} FCNN
    每个神经元与上一层的所有神经元都有连接
    就像一群人完全平等地互相传递信息
    - 结构最简单、最基础
    - 参数最多(每个连接一个权重)
    - 适合表格数据、简单分类
    - 输入必须展平为一维向量
    卷积神经网络
    CNN \text{CNN} CNN
    拿个小窗口在图上滑来滑去
    每次只看一小块
    最后把所有小块看到的拼起来理解整张图
    - 适合图像、视频
    - 局部连接 + 权值共享(参数量少)
    - 能自动提取边缘→形状→物体特征
    循环神经网络
    RNN \text{RNN} RNN
    有记忆的神经元,读完一句话会记住前面说了啥
    用来理解“我今天吃了____”这种依赖上下文的任务
    - 适合文本、语音、时间序列
    - 循环结构,有“记忆”
    - 易梯度消失/爆炸,记不住太长序列
    自注意力网络
    Transformer \text{Transformer} Transformer
    抛弃记忆结构,一步看全整个序列
    用“注意力”给每个词打分,谁跟谁关系大就多关注谁
    - 适合长文本、翻译、大模型
    - 并行计算(比 RNN \text{RNN} RNN快得多)
    - 自注意力机制是核心
  • 任务范式分类 —— 神经网络用来做什么,用什么样的方法论解决哪类问题

    在这里插入图片描述

算法描述代表网络特点
图像分类判断整张图是什么 VGG \text{VGG} VGG NiN \text{NiN} NiN ResNet \text{ResNet} ResNet- 输出一个类别标签
- 回答"是什么"
目标检测框出图中物体在哪、是什么 YOLO \text{YOLO} YOLO Faster R-CNN \text{Faster R-CNN} Faster R-CNN SSD \text{SSD} SSD- 输出多个边界框与每个框的类别
- 回答"是什么"和"在哪"
语义分割给图中每个像素打上类别标签 FCN \text{FCN} FCN UNet \text{UNet} UNet DeepLab \text{DeepLab} DeepLab- 输出分割类别图
- 回答"是什么"和"边界在哪"
实例分割在语义分割基础上区分同类不同个体 Mask R-CNN \text{Mask R-CNN} Mask R-CNN YOLACT \text{YOLACT} YOLACT- 输出分辨不同个体的分割类别图
- 回答"是什么"、“边界在哪”、“是谁”

在这里插入图片描述

算法描述特点
变分自编码器
VAE \text{VAE} VAE
把图像压缩成几个关键数字,再解压还原
压缩时留有余地(用概率分布而非确定值)
保证解压出的图大致合理
- 生成速度快,一步到位
- 生成质量一般(细节偏模糊)
- 隐空间连续,便于插值编辑
生成对抗网络
GAN \text{GAN} GAN
一个伪造假画,一个当鉴定师抓假画
俩人互相对抗、共同进步,最后伪造能以假乱真
- 能生成逼真图像、人脸、艺术品
- 训练难度高(两方要平衡)
- 生成器 + 判别器互相对抗
扩散模型先从一张图慢慢加噪声直到变成雪花点
然后反过来,从雪花点一步步去噪,还原成清晰图像
- 目前最火的AI绘画核心
- 生成质量比 GAN \text{GAN} GAN更稳
- 生成慢(要走很多步),但质量高
自回归模型一个一个词接着往下写
每次根据前面写好的内容预测下一个词
新词出来后再接着预测再下一个
- 适合文本、语音等序列生成
- 典型代表是 GPT \text{GPT} GPT 系列
- 生成过程串行,速度较慢
  • 注意:网络架构是如何实现,任务范式是完成什么,二者并非对立,而是正交搭配

    • 同一架构可实现不同范式 —— Transformer \text{Transformer} Transformer 可以服务于分类( ViT \text{ViT} ViT)、检测( DETR \text{DETR} DETR)、 GAN \text{GAN} GAN 的生成器( ViTGAN \text{ViTGAN} ViTGAN)等
    • 同一范式可选用不同架构实现 —— 扩散模型可以基于 Transformer \text{Transformer} Transformer Sora \text{Sora} Sora)、基于 CNN \text{CNN} CNN DALL⋅E 3 \text{DALL·E 3} DALL⋅E 3)、基于 RNN \text{RNN} RNN DiS \text{DiS} DiS)等
    任务范式网络架构模型描述
    生成对抗网络 FCNN \text{FCNN} FCNN原始 GAN \text{GAN} GAN- Goodfellow \text{Goodfellow} Goodfellow 提出的首个 GAN \text{GAN} GAN,生成器和判别器均用全连接层
    生成对抗网络 CNN \text{CNN} CNN DCGAN \text{DCGAN} DCGAN- 首次将 CNN \text{CNN} CNN 引入 GAN \text{GAN} GAN,用转置卷积上采样,批归一化稳定训练
    生成对抗网络 Transformer \text{Transformer} Transformer SAGAN \text{SAGAN} SAGAN- 在 GAN \text{GAN} GAN 中引入自注意力机制,建模长距离依赖
    自回归模型 Transformer \text{Transformer} Transformer GPT \text{GPT} GPT- OpenAI \text{OpenAI} OpenAI 的文本生成模型,逐词预测,文本生成与多任务推理
    - 采用纯 Transformer Decoder \text{Transformer Decoder} Transformer Decoder
    扩散模型 U-Net \text{U-Net} U-Net CNN \text{CNN} CNN DALL⋅E 3 \text{DALL·E 3} DALL⋅E 3- OpenAI \text{OpenAI} OpenAI 的图像生成模型,由文本到高质量图像生成
    - 采用潜空间扩散 + CLIP \text{CLIP} CLIP 引导
    扩散模型 Transformer \text{Transformer} Transformer Sora \text{Sora} Sora- OpenAI \text{OpenAI} OpenAI 的视频生成模型,由文本/图像到连贯长视频生成
    - 采用扩散 Transformer \text{Transformer} Transformer 架构

无监督学习

  • 概念

    • 在机器学习范畴下,除了监督学习,还有无监督学习、半监督学习以及强化学习。

    • 无监督学习的思想是:给机器一组无标签的数据,机器自己不断探索和归纳总结,尝试发现数据的内在规律和特征,对训练数据打标签

    在这里插入图片描述

  • 形式化表达 —— 给定训练数据集

    在这里插入图片描述

    其中, x i x_i xi 是输入特征,无监督学习目的挖掘出数据的潜在模式,例如哪些样本相似

  • 任务 —— 无监督学习有两个主要任务:聚类和降维

    • 聚类 —— 将输入数据划分成几个组别,组别是根据数据的相似度划分
    • 降维 —— 将高维数据转换为低维数据,同时尽量保留数据的重要信息
  • 无监督学习算法

    • 聚类算法

      算法类型描述特点
      K-means基于划分的聚类先随便选 K 个点当“老大”
      然后让每个小弟跟最近的“老大”
      再重新选“老大”,重复直到稳定
      - 简单快速
      - 需要预先指定K值
      - 只能发现球形簇
      DBSCAN基于密度的聚类扎堆的算一伙,孤立的算噪声
      不管形状是圆是弯都能找出来
      - 不用指定簇个数
      - 能发现任意形状簇
      - 能自动识别噪声点
      层次聚类基于层次的聚类画一棵“家族树”,从每个点自成一族开始
      反复把最近的两族合并
      - 生成可解释的树状图
      - 不需要预先指定K
      - 计算量大
      谱聚类基于图论的聚类把数据点看成网络节点,相似的点连边
      然后切图,让不同组的连接尽量少
      - 擅长处理非凸形状簇
      - 基于图拉普拉斯矩阵
      - 对相似度图敏感
      高斯混合模型
      GMM
      基于概率模型的聚类假设数据是由多个高斯分布混合生成的
      猜每个点属于哪个分布的概率
      - 输出“软聚类”(概率归属)
      - 能描述椭圆形状簇 - 需要指定组件数
    • 降维算法

      算法类型描述特点
      主成分分析
      PCA
      线性降维找到数据“方差最大”的方向投影,
      丢掉不重要的方向,压缩数据
      - 最经典、最快
      - 线性变换,可解释性强
      - 假设主成分正交
      线性判别分析
      LDA
      线性降维投影后让
      同类尽量挤一起,不同类尽量远
      - 实际是有监督(需要标签)
      - 常用于分类前的降维
      t-SNE非线性降维高维中相似的点,在低维里也要靠得近
      不相似的尽量远
      - 可视化效果极佳
      - 计算慢,不适合新数据投影
      - 只保留局部结构
      UMAP非线性降维t-SNE 的升级版
      又快又能保留全局结构
      - 比t-SNE快得多
      - 能保留更多全局结构
      - 支持新数据投影
      自编码器
      Autoencoder
      深度学习降维先把数据“压缩”成低维码
      再“解压”回去
      中间那层就是降维结果
      - 能学非线性变换
      - 需要训练神经网络
      - 可结合正则化做特征学习

半监督学习

  • 概念

    • 半监督学习的思想介于全监督学习与无监督学习

    • 其思想是:给机器少量有标签数据大量无标签数据,让机器结合二者学习

  • 应用场景 —— 现实中,获取有标签的数据往往很昂贵,而无标签数据却很多

    • 医学影像 — 标注一张 CT 片需要专业医生,成本高。

    • 语音识别 — 少量人工标注语音 + 大量未标注语音数据

  • 常见学习方法

    方法思路
    自训练- 先用少量标注数据训练模型,让模型给未标注数据打伪标签
    - 把高置信度的加入训练集,重复迭代
    伪标签法- 模型对未标注数据预测出伪标签,当成真的算损失(本质是最简单的自训练)
    协同训练- 训练两个不同视角的模型,互相给对方未标注数据打伪标签
    - 选置信度高的喂给对方再训练
    生成式方法- 假设每个类别数据服从某种分布,用EM算法同时估计分布参数和未标注数据的类别
    图半监督学习- 把所有数据(标+未标)建成一张图,节点是样本,边是相似度
    - 让标签沿着边传染给邻居。
    半监督 SVM- 找一条分类边界,不仅要分开已标注数据,还要让它避开高密度未标注数据(即边界应该划在数据稀疏区)
    一致性正则化- 对同一个未标注样本做两次不同的数据增强,模型对两次输出的预测应该一致(不能变来变去)
    MixMatch- 对未标注数据做多次增强并平均预测结果作为伪标签
    - 再把增强后的数据和伪标签混合起来训练
    FixMatch- 对弱增强的未标注数据生成伪标签
    - 再要求模型在强增强版本上也预测同一个标签
    对比学习方法- 让同一样本的不同增强版本在特征空间里靠近,不同样本的版本互相推远
    - 对比损失利用未标注数据。

强化学习

  • 概念 —— 机器在互动环境中通过试错学习,做对了给奖励,做错了没奖励,目标是最大化累积奖励

  • 应用场景 —— 需要序列决策、有长期后果的任务,难以直接给“正确答案”

    • 游戏 — AlphaGo 击败围棋冠军,需要长远布局,不是只看眼前一步
    • 机器人 — 学习行走、抓取物体,摔倒了才知道动作不对
    • 自动驾驶 — 在复杂路况下决策,既要快又要安全
    • 推荐系统 — 不断试探用户偏好,平衡“推熟悉的”和“尝试新内容”
  • 核心要素 —— 马尔可夫决策过程 MDP

    要素理解类比
    状态智能体当前看到的局面棋盘的棋子分布、机器人的关节角度
    动作智能体可以做的操作下一颗棋、左腿向前迈一步
    奖励做动作后环境给的即时反馈赢了+1分、撞墙-10分
    策略智能体的行动指南在什么状态下该做什么动作
  • 常见方法

    方法思路
    值迭代- 先算出每个状态/动作的“价值”(长期回报预期),再选价值最高的动作
    - 基于动态规划,需要知道环境模型
    策略迭代- 先定一个策略→评估它好不好→改进策略→循环,直到最优
    - 同样基于动态规划
    Q-learning- 学一个 Q 表: Q ( 状态 , 动作 ) = 这个动作的预期总奖励 Q(状态, 动作) = 这个动作的预期总奖励 Q(状态,动作)=这个动作的预期总奖励
    - 不需要知道环境模型(离线学习),是经典的“无模型”方法
    深度 Q 网络
    DQN
    - Q-learning 的神经网络升级版:用神经网络代替Q表
    - 能处理状态空间极大的问题(如下围棋、打雅达利游戏)
    策略梯度- 不计算“价值”,直接优化策略函数:哪个动作的概率该提高?
    - 天生适合连续动作问题(如机器人控制)
    演员-评论家
    Actor-Critic
    - 策略梯度(演员负责选动作)+ 价值函数(评论家负责打分)
    - 两个网络互相配合,训练更稳定

总结

在这里插入图片描述

从这张图可以清晰地看到神经网络在整个计算机科学中的位置,它的层级脉络如下:
人工智能AI → 机器学习ML → 监督学习 → 神经网络 → 多层感知器 → 深度学习 → FCN、CNN、RNN、Transformer等 \text{人工智能AI → 机器学习ML → 监督学习 → 神经网络 → 多层感知器 → 深度学习 → FCN、CNN、RNN、Transformer等} 人工智能AI → 机器学习ML → 监督学习 → 神经网络 → 多层感知器 → 深度学习 → FCNCNNRNNTransformer

  • 人工智能是让计算机模拟人类智能的宏大目标
  • 机器学习是实现这一目标的核心路径 —— 让计算机从数据中自己学出规律,而非手工编写规则。
  • 监督学习是机器学习中应用最广的分支,通过"带答案的数据"来训练模型。
  • 神经网络是监督学习中的一类算法,模仿大脑神经元连接方式。
    • 单层感知器是最原始的形态,但只能处理线性问题;
    • 堆叠多层形成多层感知器,能够表达任意非线性函数。
  • 当网络层数进一步加深、数据量和算力大幅增长时,便进入了深度学习阶段,衍生出全连接网络、卷积神经网络、 Transformer \text{Transformer} Transformer 等各种强大架构


参考内容:

更多推荐