前馈神经网络:单隐藏层、softmax、交叉熵和梯度下降
单隐藏层的神经网络怎么从输入算出预测?分类时 softmax 和交叉熵是什么?反向传播算的梯度对不对?
- 对过的标准答案
- 4 条
- 覆盖的考试公式
- 1 个
- 参数
- 10 个
- 开源库
- 1 个
01当场运行
改一个参数,当场重算
正在用默认参数运行,计算量大的方法最多要 20 秒。
04出处和说明
公式从哪里来,有什么限制
列出参考的教材、论文和考试公式条目。方法的限制和实现上的说明也写在这里。
参考
- James、Witten、Hastie、Tibshirani:An Introduction to Statistical Learning(第 2 版)10.1 单隐藏层网络,10.2 多层网络,10.7 拟合神经网络
- Goodfellow、Bengio、Courville:Deep Learning(2016)6.5 反向传播
覆盖的考试公式
- SML-011神经网络(单层、多层、softmax、交叉熵、梯度下降)MAS-II
公式条目按精算考试的公式表整理,编号和中文名是平台自己的。
这个方法算什么
按 ISLR 第 10 章的写法:K 个隐藏单元 A_k = g(w_k0 + Σ_j w_kj X_j),输出 f(X) = β₀ + Σ_k β_k A_k(回归),分类时 M 个输出经过 softmax 变成概率,损失是交叉熵。用反向传播求梯度、全批量梯度下降 θ ← θ − ρ∇R(θ) 训练,并用中心差分核对梯度。给出损失随迭代的曲线、第一个观测的逐层计算和准确率。
说明和限制
- 公开数据集的输入先标准化(均值 0、标准差 1),回归时 y 也标准化,均方误差换回原来的单位。自己输入的数据不做任何变换,方便手算。
- 固定的初始值:第 k 个隐藏单元对每个输入的权重是 0.1k,偏置 0;回归的输出权重都是 1/K,分类的输出权重都是 0(开始时每类的概率都是 1/M)。隐藏单元的初始值要不同,否则梯度对称,它们会一直一样。
- softmax 加交叉熵对输出层的线性预测 Z 的梯度就是 f − y(每个观测),反向传播从这里开始。
- 学习率太大,损失会振荡甚至变大;太小,收敛很慢。实际训练常用小批量的随机梯度下降和 Adam(见 neural.frequency_net)。
数据
看参数里选的数据:选平台的数据集时是真实数据或公开样例,填自己的数时只用输入的数。上面运行的输出里写明这一次用的是哪种。
开源库和版本
- numpy2.4.6BSD-3-Clause数值计算
05同族的方法
神经网络定价,还有 3 个方法
同一个方法族里的其他方法。在智能体里,用一句话就能调用这些方法。
在智能体里这样问“单隐藏层的神经网络怎么从输入算出预测?分类时 softmax 和交叉熵是什么?反向传播算的梯度对不对?梯度下降的步长怎么影响训练?”