深度学习入门 & 王木头学科学

感知机 perceptron

  • 线性函数 + 阶跃函数; 分界线 + 判断处于分界线的哪一边.

  • 感知机的提出: 解决非解析问题的简单模板.

  • 感知机的缺陷: 异或问题. 通过增加层, 提高维度.

  • 多层感知机与神经网络的区别: 激活函数是否连续. 连续光滑的函数是学习的一个关键要素.


损失函数

为何需要损失函数

既然通过预测精度即可衡量模型的好坏, 为何还要引入损失函数呢?

这是因为模型在学习的过程中, 需要导数(确切来讲是梯度,即偏导数向量). 神经网络的学习过程 -- 更新参数的过程 -- 使用梯度随机下降法,
此时一个光滑的损失函数(以参数作为输入, 衡量模型好坏)非常重要. 因为光滑的函数意味着, 我们修改一点参数, 损失也会改变一点(连续性),
反之亦然.

如果使用预测精度,假设某时刻预测精度为\(20%\), 微调参数,很可能识别结果不变,即预测精度仍是\(20%\), 此时参数的导数为\(0\).
即使精度出现变化, 也是离散跳变,无法计算导数. 这也是神经网络不使用感知机中的阶跃函数的原因.

可以用一个实际场景理解: 在学习投篮时,好在物理世界的投篮过程是光滑抛物线,当你第一次投篮太近时,通过增加一点投篮力度,
你可以预期投篮会朝向篮筐一点距离. 通过不断微调投篮力度、方向,最终你能够学习投篮.

如何理解损失函数

神经网络: 反向推理人脑模型

联邦法官斯图尔特: "你问我色情是什么, 我不知道, 但拿给我看, 就能看出来. I know it when I see it".
同样的, 即便你无法完整说出评判一张图片里的动物是否是猫的标准, 但拿给你看, 你能看出来.
而神经网络的学习过程恰好相反, 通过人脑的判断结果(带标签数据), 反向推导人脑模型.

损失函数: 量化两个概率模型的差别

为评判神经网络的概率模型与人脑概率模型的差别, 我们需要量化准则. 而这涉及共度问题, 也就是需要将两者放入同一度量体系.
(只有概率模型在同一概率分布才能直接比较,然而我们并不知道人脑或神经网络的概率模型).

最小二乘法: 直接比较预测结果距离

最小二乘法是最符合直觉的度量两个概率模型差距的方法: 直接比较神经网络预测结果和标签(人脑判断结果)之间的距离.

极大似然估计: 由事实数据反推概率分布

什么是似然

似然可以理解为概率的反面.

概率存在与理念世界,是我们对某个事件发生的先验知识, 指导我们对事件发生的预测.
例如对投硬币问题, 我们可以认为结果为正面或反面的概率均为\(1/2\), 如果连续投\(10\)次硬币,
结果\(3\)\(7\)反事件发生的概率可以计算出来.

而似然是以事件发生作为前提, 推测让事件发生最有可能发生的概率分布是什么, 也就是我们有了
后验知识, 以此倒退先验分布. 对于连续投\(10\)次硬币, 使得结果为\(3\)\(7\)反最有可能发生的
概率分布为结果为正面的概率为\(3/10\), 反面为\(7/10\).

似然值用公式可以表示为\(p(c_1, c_2, ..., c_{10} | \theta)\), 其中\(c_i\)表示第\(i\)
投硬币结果, \(\theta\)表示概率分布.

极大似然值作为神经网络的损失

如果问题是判断一个图片是不是猫的分类问题, 我们用\(x\)表示标签(人脑判断结果), \(y\)表示神经网络
预测结果,则我们希望求使得\(p(x_1, x_2, ..., x_n|W, b)\)为最大值(即极大似然值)的\(W\)\(b\).

\(p(x_1, x_2, ..., x_n|W, b)=\prod_{i=1}^n p(x_i|W, b)\)(独立同分布假设).

由于训练时\(W, b\)固定, 而由\(W, b\)确定的输出\(y_i\)由输入的变化而变化,
\(\prod_{i=1}^n p(x_i|W, b)=\prod_{i=1}^n p(x_i|y_i)\).

\(x_i\in {0, 1}\), 服从伯努利分布: \(f(x) = p^x(1-p)^{1-x}\), 所以
\(\prod_{i=1}^n p(x_i|y_i) = \prod_{i=1}^n y_i^{x_i}(1-y_i)^{1-x_i}\)(\(x\)表示事件
结果, \(y_i\)表示事件发生概率).

通过\(log\), 可以将上式改为连加而不改变单调性:
\(\prod_{i=1}^n y_i^{x_i}(1-y_i)^{1-x_i} = \sum_{i=1}^n \log{y_i^{x_i}(1-y_i)^{1-x_i}}\)

最后, 对于损失函数, 我们习惯求最小值而不是最大值, 加上负号, 我们得到了极大似然值作为损失的最终形态:
\(-\sum_{i=1}^n \log{y_i^{x_i}(1-y_i)^{1-x_i}}\)
神奇的是, 这一形态和交叉熵相同.

交叉熵: 系统信息量(熵)作为公度桥梁

posted @ 2024-01-05 15:43  代码改变头发  阅读(23)  评论(0编辑  收藏  举报