机器学习常识+: 深度网络本质的作用是特征提取

摘要: 本贴从极简的角度描述深度网络的特征提取本质.

1. 线性模型

一维线性模型

题目 1: 到水果店买苹果, 1 个苹果 5 元钱, 2 个苹果 9 元钱, 3 个苹果 13 元钱. 请问: 6 个苹果多少钱?
解: 将苹果的数量为 x x x, 价格记为 y y y, 我们需要获得一个函数 f f f, 使得
y = f ( x ) y = f(x) y=f(x)
假设 f f f 为线性函数, 可以将其记为
f ( x ) = a x + b (1) f(x) = ax + b \tag{1} f(x)=ax+b(1)
代入前两条数据, 有 f ( 1 ) = a + b = 5 f(1) = a + b = 5 f(1)=a+b=5; f ( 2 ) = 2 a + b = 9 f(2) = 2a + b = 9 f(2)=2a+b=9. 可求得 a = 4 a = 4 a=4, b = 1 b = 1 b=1.
将该结果代入第 3 条数据, 有 f ( 3 ) = 3 × 4 + 1 = 13 f(3) = 3 \times 4 + 1 = 13 f(3)=3×4+1=13. 与数据本身一致, 完美!
因此, 6 个苹果需要花 f ( 6 ) = 6 × 4 + 1 = 25 f(6) = 6 \times 4 + 1 = 25 f(6)=6×4+1=25 元钱.
解释: 包装费 1 元, 苹果每个 4 元.

多维线性模型

题目 2: 学生们参加考试, 几个学生的单科成绩 (换算成百分制) 与总成绩如表1所示.

学生编号政治| 语文数学英语物理化学总分
1909295858880
2888285777670
10928882907578

自变量 (关于科目) 有 6 个, 因变量 (总分) 有 1 个, 函数记为:
y = f ( x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ) = a x 1 + b x 2 + c x 3 + d x 1 + e x 2 + f x 3 + g y = f(x_1, x_2, x_3, x_4, x_5, x_6 ) = a x_1 + b x_2 + c x_3 + d x_1 + e x_2 + f x_3 + g y=f(x1,x2,x3,x4,x5,x6)=ax1+bx2+cx3+dx1+ex2+fx3+g
这里 a a a f f f 相当于每科的加权系数, g g g 如果不为 0, 可以认为是基础分数 (如体育达标).

线性模型的本质是特征提取器

从题目2可以看出, 线性模型是基本的特征提取器, 它从单科成绩 (基本特征) 通过加权和, 提取出了总成绩 (复合特征).

线性模型的优缺点

优点: 简单, 易于计算, 避免过拟合
缺点: 只能拟合简单的情况

2. 全连接神经网络 BP

全连接神经网络在线性模型上进行了 3 方面的改进:
a) 从原始的 m m m 个特征提取了 m 1 m_1 m1 个特征;
b) 对提取的特征使用激活函数, 进行简单的特征变换, 改变了线性的特点;
c) 在第 2) 点的支撑下, 做成多层网络, 各层的特征数依次是 m m m, m 1 m_1 m1, m 2 m_2 m2, …, m k m_k mk. 只要最后一层的特征数与目标特征数 (因变量的个数) 一致就行.
除了输入层与输出层, 中间的层次都称为隐藏层.
有两个流派:
a) 深度学习. k k k 值比较大, 也就是在提取的 (浅层) 特征基础上, 进一步获得新的 (深层) 特征, 具有更强的表达能力.
b) 宽度学习. k k k 值比较小, 甚至可以取 2. 但 m 1 m_1 m1 非常大. 基本思想是: 一次性搞了这么多特征, 总有几个是赌对了的.
早就有理论证明, 深度学习与宽度学习等价.
当变量只有一个的时候, 神经网络的作用相当于一个函数:
y = f ( x 1 , x 2 , … , x m ) (1) y = f(x_1, x_2, \dots, x_m ) \tag{1} y=f(x1,x2,,xm)(1)

3. dropout 技术

i i i 层的 m i m_i mi 个节点, 与第 i + 1 i + 1 i+1 层的 m i + 1 m_{i + 1} mi+1 个节点都有连接, 这导致两方面问题:
a) 参数量大, 训练开销大;
b) 过拟合, 即训练数据上效果好, 但测试数据的效果不好.
为了解决该问题, 我们需要随机去除掉一些连接吗?
No. 现有技术更加武断, 直接在训练的时候忽略 (但不是物理删除) 某些节点. 这相当于每次只提取部分特征, 但在预测的时候使用所有特征这种方案很大程度缓解了上述问题. Amazing~

4. 循环神经网络 RNN

对于文本 (如小说)、时序 (如股票) 等序列数据, 数据点 (特征) 之间存在前后关系. 如果使用全连接神经网络, 忽视了这样的关系, 就会导致效果不好. 为此, 循环神经网络把上一时间点的输出也作为下一时间点的输入, 即考虑了上文对下文的影响. 这样就可以提取时序特征.

5. 长短期记忆网络 LSTM

延续了 RNN 的思想, 但并不是越近的上文越重要, 而是要把一些离得比较远的、重要的信息也记住. 网络比较复杂, 记忆门、遗忘门之类.

6. Transformer

RNN 和 LSTM 可以利用上文信息, 而 Transformer 还可以利用下文信息. 广为流传的一个例子是: “研表究明,汉字序顺并不定一影阅响读”. 人类在阅读的时候, 可能很快地抓取关键信息, 而从一定程度上忽略顺序.
Transformer 具有两个特点:
a) 并行, 而不是串行地理解序列的不同部分;
b) 由于 a) 带来的速度提升.

7. 卷积神经网络 CNN

对于计算机视觉领域, 图片数据是二维的, 像素点之间不但有左右相邻, 还有上下相邻. 这时使用 RNN 肯定就不合适了.
卷积核类似于一个哈哈镜, 使用它扫描图片一遍, 就获得了新的特征, 这个被称为 卷积操作. 不同的卷积核导致不同的新特征. 这些卷积核获得的结果又叠加, 获得了下一层的图. 本质上讲, 卷积操作就是将全连接网络的加权和改成了卷积再求和.
假设前一层有 m i m_i mi 个图 (或称有 m i m_i mi 个通道, 彩色图通常作为 RGB 3 通道输入), 后一层有 m i + 1 m_{i+1} mi+1 个图, 则这两层之间有 m i × m i + 1 m_i \times m_{i+1} mi×mi+1 条连边, 需要相应个数的卷积核.
需要注意, 这里是按照图的个数来计算卷积核 (参数) 个数, 而不是按照像素点. 因此, 参数量比全连接神经网络的少很多.
由于每层的图片有长度、宽度, 还有通道数, 构成了三维的 Tensor (张量), 网络中的数据就像是张量在从左到右流动. 这就是TensorFlow 名字的由来.
一般来说, 卷积操作之后要跟激活操作.
池化既是一个特征提取的过程, 也是一个特征降维的过程. 以 2 × 2 2 \times 2 2×2 平均池化为例, 4 4 4 个格子里的数据取均值, 获得 1 1 1 个新的特征.
以针对手写阿拉伯数字识别的 MNIST 数据集为例.

  • 原始图像为 28 × 28 28 \times 28 28×28 的矩阵 (每个点取 [ 0 , 255 ] [0, 255] [0,255] 的值表示灰度), 其通道数为 1, 即 1 × 28 × 28 1 \times 28 \times 28 1×28×28 的张量.
  • 第 1 层使用 6 6 6 5 × 5 5 \times 5 5×5 的卷积核, 获得了 6 × 24 × 24 6 \times 24 \times 24 6×24×24 的张量 ( 28 − 5 + 1 = 24 28 - 5 + 1 = 24 285+1=24).
  • 第 1 层激活后, 使用 2 × 2 2 \times 2 2×2 的平均池化, 获得了 6 × 12 × 12 6 \times 12 \times 12 6×12×12 的张量 ( 24 / 2 = 12 24/2 = 12 24/2=12).
  • 第 2 层使用 12 12 12 5 × 5 5 \times 5 5×5 的卷积核, 获得了 12 × 8 × 8 12 \times 8 \times 8 12×8×8 的张量 ( 12 − 5 + 1 = 8 12 - 5 + 1 = 8 125+1=8).
  • 第 2 层激活后, 使用 2 × 2 2 \times 2 2×2 的平均池化, 获得了 12 × 4 × 4 12 \times 4 \times 4 12×4×4 的张量 ( 8 / 2 = 4 8/2 = 4 8/2=4).
  • 第 3 层 (输出层) 使用 10 10 10 4 × 4 4 \times 4 4×4 的卷积核, 获得了 10 × 1 × 1 10 \times 1 \times 1 10×1×1 的张量. 即 10 10 10 维向量. 如果第 1 1 1 个分量最大, 则判断输入为 0 0 0; 第 10 10 10 个分量最大, 则判断输入为 9 9 9.

8. ViT: Vision Transformer

把图片打碎成多个小块来理解 (提取特征), 同时打通了文字与图片之间的壁垒。 Amazing + ^{+} +.

9. 编码-解码器 Encoder-decoder

以机器翻译.

  • 编码: 把一个源语言 (中文、英文等) 写句子通过若干的操作 (one-hot 编码, RNN 读入与输出, 卷积等等), 获得机器的内部表示 (可以是长度为 512 的实数向量). 这可以看作是特征提取的过程.
  • 解码: 把内部表示通过类似的操作, 获得自然语言的表示. 这也是特征提取的过程.
    需要注意, 不管把中文翻译为英文或法文, 有可能获得的机器内部编码是一致的.
    自监督学习利用这个原理, 把中文句子编码后解码成中文句子, 这样就有大量的数据来训练编码器.
    同样的原理可以用于图像处理, 比如去噪、风格迁移.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值