第五章 神经网络--机器学习(周志华)课后参考答案

来源:互联网 发布:童声配音软件 编辑:程序博客网 时间:2024/04/20 15:38
原文链接

机器学习(周志华) 参考答案 第五章 神经网络

机器学习(周志华西瓜书) 参考答案 总目录

  • http://blog.csdn.net/icefire_tyh/article/details/52064910

    这章就是真正的两句话讲完一个知识点,然后后面还出个题让你编程
  • 1
  • 2

神经网络作为一个相当大的,多学科交叉的学科领域,并不是仅仅应用于机器学习。书上3张纸介绍了6种神经网络,都是泛泛几句话介绍。选了几本关于神经网络的书放进某东的购物车,等着下次300-200买起来慢慢研究。

1.试述将线性函数f(x)=wtx用作神经元激活函数的缺陷。

必须要强调的是,神经网络中必须要有非线性的激活函数,无论是在隐层,还是输出层,或者全部都是。如果单用wtx作为激活函数,无论多少层的神经网络会退化成一个线性回归,只不过是把他复杂化了。


2.试述使用图5.2(b)激活函数的神经元与对率回归的联系。

两者都是希望将连续值映射到{0,1}上,但由于阶跃函数不光滑,不连续的性质,所以才选择了sigmoid作为映射函数。不同之处在于激活函数不一定要使用sigmoid,只要是非线性的可导函数都可以使用。


3.对于图5.7中vih,试推导出BP算法中的更新公式。

Ekvih=Ekbhbhahahvih
ahvih=xi
eh=Ekbhbhah在书中5.15已经证明
所以得到更新公式υehxi


4.试述学习率的取值对神经网络训练的影响。

如果学习率太低,每次下降的很慢,使得迭代次数非常多。
如果学习率太高,在后面迭代时会出现震荡现在,在最小值附近来回波动。


5.试编程实现标准BP算法与累积BP算法,在西瓜数据集3.0上分别用这个算法训练一个单隐层网络,并进行比较。

  • http://blog.csdn.net/icefire_tyh/article/details/52106069

6.试设计一个BP改进算法,能通过动态学习率显著提升收敛速度。

这真是一个蛋疼的题,本来以为方法很多,结果没有一个能用的。
  • 1
  • 2

固定的学习率要么很慢要么在后期震荡,设计一种自适应的动态学习率算法是有必要的。

  • 对四种参数的最速方向做一位搜索
    这是很直观的一种方法,已知f(x)在x0的导数为d,那么下降方向就是-d。一位搜索就是求试f(x+td)最小的t,也就是当前的学习率。
    然而这方法的t用解析法并不好求,ft(x+td)=0也是无解的。
    使用近似方法尝试了下收敛速度并没有显著提升

  • 对四种参数做牛顿迭代
    虽然不符合题目改学习率的要求,但是牛顿法肯定能大大提高收敛速度,只是没有了学习率这个概念。
    然而Hessian矩阵求的我想吐血,最后也没去继续了。

书中给出了两篇文献供参考

  • Neural Networks: Tricks of the Trade
  • Neural Smithing:Supervised learning in Feedforward Artificial Neural Networks

    暂时不解这个题,等以后遇到好的方法再来更新。


7.根据式5.18和5.19,试构造一个能解决异或问题的RBF神经网络。

  • http://blog.csdn.net/icefire_tyh/article/details/52106074

8.从网上下载或自己编程实现一个SOM网络,并观察在西瓜数据集3.0a上产生的结果。

SOM网络书上真的就是草草介绍了下,顺便配了个看不懂的图。我去翻了下《MATLAB神经网络43个案例分析》这本书,里面对SOM讲的还是很明白的,包括原理与训练方法。
简单的说,SOM网络在平面放M*N个神经元(M,N自定义),神经元按8邻接来连接。网络将输入层映射到平面上M*N个神经元上(M,N自定义),每个输入与每个神经元都有一个初始权值,然后计算各个神经元的权值向量与输入向量的距离,选择距离最小的神经元更新他以及他8邻接神经元的权值向量,循环这个过程直到收敛。
如果神经元比样本数多,足够多次迭代后所有样本会映射到了不同的神经元上。
网络生成后就通过输入算出离他最近的神经元,将它标记为该神经元的分类。
matlab中有现成的SOM网络,我就没自己编程了。

clearsimpleclassInputs = xlsread('C:\Users\icefire\Desktop\ml\西瓜3.xlsx', 'sheet1', 'A7:Q8');net = newsom(simpleclassInputs,[8 8]);  %64个神经元%迭代次数1000次net.trainParam.epochs=1000; net = train(net,simpleclassInputs);plotsompos(net,simpleclassInputs);%获取每个样本映射到哪个神经元sim(net,simpleclassInputs);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

最终得到SOM网络为
SOM网络

64个神经元最终的位置,并可以查看样本映射到了哪个神经元上。


9.试推导用于Elman网络的BP算法。

Elman比正常网络多了个反馈,把前一次的bh作为隐层的输入来调节隐层。
假设用uih来表示反馈输入与隐层连接的参数,由于前一次计算的bh作为常数输入,uijvij的计算方法一样,Δuih=ηehbh,其中e_h书上5.15给出。就是相当于多了几个输入会变的输入层神经元。


10.实现一个卷积神经网络。

CNN作为深度学习一个重要工具,Stanford专门有个CS231n来讲CNN。等我把西瓜书弄完再回头解决这个问题,我感觉一时半会搞不定,还是先把机器学习基础的做完再说。

阅读全文
0 0
原创粉丝点击