前馈神经网络:单隐藏层、softmax、交叉熵和梯度下降

单隐藏层的神经网络怎么从输入算出预测?分类时 softmax 和交叉熵是什么?反向传播算的梯度对不对?

SOA SRMSOA PACAS MAS-II
对过的标准答案
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数值计算