习题
5.1
试述将线性函数 \(f(\boldsymbol{x}) = \boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}\) 用作神经元激活函数的缺陷.
理想中的激活函数是阶跃函数, 但是它不连续, 不光滑, 所以要一个连续、光滑的函数替代它. 线性函数虽然连续、光滑, 但是它跟阶跃函数并不是那么相似. 线性函数对 \(0\) 周围的数值和对趋近 \(\infty\) 的数值是一视同仁的, 而这样的性质我们并不需要, 我们更在乎那些处于 \(0\) 周围的, 在被分为正 (大于 \(0\) ) 还是负 (小于 \(0\) ) 的界限边的 '模糊' 的数值, 因此有了 \(\mathrm{Sigmoid}\) 函数, 它的特点就是在 \(0\) 周围输出急剧变化.
5.2
试述使用图 \(5.2(\mathrm{b})\) 激活函数的神经元与对率回归的联系.
这已经非常明显了, 対率回归的激活函数也是 \(Sigmoid\) .
5.3
对于图 \(5.7\) 中的 \(v_{ih}\) 试推导出 \(\mathrm{BP}\) 算法中的更新公式 \((5.13)\) .
全部展开, 得
显然成立.
5.4
试述式 \((5.6)\) 中学习率的取值对神经网络训练的影响.
学习率太低, 训练速度太慢. 学习率太高, 不容易收敛 (在极值点附近反复迭代) .
5.5
试编实现标准 \(\mathrm{BP}\) 算法和积累 \(\mathrm{BP}\) 算法, 在西瓜数据集 \(3.0\) 上分别用这两个算法训练一个单隐层网络, 并进行比较.
《机器学习》西瓜书 第 3 章 编程实例
5.6
试设计一个 \(\mathrm{BP}\) 改进算法, 能通过动态调整学习率显著提升收敛速度. 编程实现该算法, 并选择两个 \(\mathrm{UCI}\) 数据集与标准 \(\mathrm{BP}\) 算法进行实验比较.
简单描述一下, 就是一开始学习率比较高 (来更快逼近) , 然后学习率慢慢变小 (提高精度) ,
5.7
根据式 \((5.18)\) 和 \((5.19)\) , 试构造一个能解决异或问题的单层 \(\mathrm{RBF}\) 神经网络.
《机器学习》西瓜书 第 3 章 编程实例
5.8
从网上下载或自己编程实现 \(\mathrm{SOM}\) 网络, 并观察其在西瓜数据集 \(3.0\alpha\) 上产生的结果.
《机器学习》西瓜书 第 3 章 编程实例
5.9*
试推导用于 \(\mathrm{Elman}\) 网络的 \(\mathrm{BP}\) 算法.
说实话这个问题太变态了, 不过上网搜索一番总算是差不多弄懂了, 我自己估计说不清楚, 所以推荐零基础入门深度学习(5) - 循环神经网络.
5.10
从网上下载或自己编程实现一个卷积神经网络, 并在手写字符识别数据 \(\mathrm{MNIST}\) 上进行实验测试.
《机器学习》西瓜书 第 3 章 编程实例