一步一步建立直观
先预测,再点“演示本步”核对右图。每一步都重设到指定情形,随后可以自由修改参数。
01让一个单元先做一件能看清的事
输入向量不是一张图片的含义,而是被编码成数值的特征。右图只保留两个输入:权重决定各输入的影响方向和强度,偏置移动触发门槛。先计算加权和 ,再经过 ReLU 得到输出,这样便能把“收集证据”与“决定是否激活”分成两个步骤。
02开关边界怎样切分输入空间
关闭单元时,加权和落在零以下,ReLU 把输出截成零。右图固定第二输入,只画输出随第一输入变化的曲线;折点对应 ,两侧分别是关闭段和激活段。拖动输入点,观察跨过折点后的变化:单个单元只产生简单的分段线性结构,多层网络通过组合这些结构形成更复杂的表示。
03训练改变规则,推理使用规则
给定目标输出后,损失衡量当前结果与目标的差异。调权重或偏置是在改变这条输入输出规则;只拖动输入是在用既定规则计算新的样本。二者应明确区分。此处只有一个标量目标和一个单元,不代表真实分类网络的全部架构与训练过程。
3.1.1 从输入数字到可调整的判断¶
一张灰度小图可以按固定顺序展成向量,每个分量记录一个像素。要判断图中类别,最简单的尝试是给各像素分配权重,求加权和,再加一个偏置。正权重把某些像素的亮度当作支持证据,负权重当作反对证据,偏置调节整体阈值。
单个神经元接收这个分数,再通过非线性函数输出激活。以 为例,输入 时分数为零,Sigmoid 输出一半。这里权重、输入、激活是三类对象:训练调整权重,样本提供输入,前向计算产生激活。
3.1.2 为什么堆很多层之前要插入非线性¶
如果每层只是仿射映射,前后层可以合并:第二层展开后,仍是一个新矩阵乘原输入再加新偏置。增加深度只把同一个仿射动作拆成多步,并没有得到新的非线性边界。激活函数打断这种合并,允许不同输入区域产生不同响应。
用图形理解时,可以把第一层看成建立一组可调整的测量,后续层组合这些测量。但“某个神经元识别一条笔画”只是可能的解释,不能仅凭网络结构认定训练必然得到这种分工。
本节先把计算规则写清楚,还没有解决权重从哪里来。下一节引入损失,把“判断好不好”压缩成可优化的数,再利用微积分修改参数。理解前向计算、评价结果、更新参数三步的区别,是后续所有模型的基础。
与本图相连的定义与证明:3.5 · 严格激活区域中的权重梯度。本节的具体条件与形式化范围见下文。
数学表述 3.1.1¶
把输入表示为向量后,每一层先做带偏置的线性组合,再经过非线性函数。参数控制哪些输入影响哪些输出。
例如 。若输入维度为 、输出为 ,权重形状为 ,偏置有 个分量。
例 3.1.1 把概念用于具体计算
单神经元 ,输入 时 ,Sigmoid 输出为 。
练习 3.1.1¶
可合并为什么?
展开解答与检查
;若中间插入 ReLU,一般不能这样整体合并。
Lean 对照 3.1.1 命题、证明与适用边界
精确验证两个标量仿射层的复合公式,说明非线性激活为何重要。
NeuralNetworks.affine_composition
theorem affine_composition (a b c d x : ℝ) :
a*(b*x+c)+d = (a*b)*x+(a*c+d) := by ring