本文为学习笔记,供自己复习回顾,分享,交流,如果专家们发现谬误之处欢迎批评与修正。
----------------------------------------------------------------------------------------------------------------------------
其实神经网络很早就出现了,只是近些年来,随着硬件价格降低以及网络和软硬件性能的提升,得以可以在工业界迅速的火了起来,也带动了更多人研究与从事相关应用开发。
人工神经网络是人们想让机器像人一样思考,所以模拟人脑神经网络而发明的。
人体神经元是这样工作的:
节选自 http://www.ruanyifeng.com/blog/2017/07/neural-network.html
按我的理解就是,就是神经元(neuron)通过轴突(axon)或树突(dendrites)将信号传递给下个神经元,期间会产生神经脉冲的改变,之后会产生相应的动作或记忆,如果长时间在统一脉冲反复刺激下会改变神经元键的连接物体(学名神经健,树突与轴突的连接体)的连接强度来进行学习,从而达到“记忆”的功能。
所以人们就模拟人脑神经网络产生了人工神经网络,工作图如下,
神经元接受来X1-Xn输入(人脑:外部刺激),并且通过带权重的连接(人脑:末梢,突触) 进行传递,神经元将接收到的总输入值与阈值进行比较,之后通过激活函数处理后产生输出。这里需要注意的一点是,我看了三本书,只有周老师的书中模型是带有阈值的,其他书有提到,后面也有说明,权重和阈值的学习可统一为权重的学习,因为阈值可看作一个固定输入-1.0的哑节点对应的附加权重。
当然是好用了才用了,不好用谁还用,所以我总结了我上课以及课本上看到的优点分享给大家:
1. 不需要做假设,做统计分析都知道,线性回归什么的都需要满足假设,具有统计学意义后才能用,所以神经网络不用做假设。
2.准确性高,为什么准确性高,神经网络通过大量的运算,这样可以提高准确率,更何况人家模仿人脑呢(其实,并不用考虑类人脑,没啥太多关系)
3. 黑盒有木有,不需要太理解有木有,调参工程师的干活!!!!
(所以缺点也在这里咯,可解释低,e.g. 你和老板说,你用神经网络跑出的模型老厉害了,准确率百分之999999,但你解释不了为啥,小王用普通模型,跟老板做了一系列"洗脑",老板连连称好。。。。WT~~MMP,老子调了好几天的参-----)
4.做什么都可以,无论是回归还是分类,聚类还是预测。
5.确实好用好么!!!!!!
感知机可以说是最简单的神经网络了,就是输入结点和偏差之后就输出节点了。
偏差也会有权重为W0,因此
y = f(w0 + x1w1 + x2w2) |
假设激活函数是跳跃函数,
f(x) = 0 if x <=0 1 otherwise |
举例说明:
x1= 1, x2 = 0, w0 =‐3, w1 = 2, w2 = 6, Weighted sum =‐1, y = 0 x1 = 1, x2 = 0, w0 =‐2, w1 = 3, w2 = 5, Weighted sum = 1, y = 1 |
单层感知机可以用来做线性分类,在二维空间是一条直线,在多维空间中产生超平面,也叫做线性可分。
那么感知机如何进行学习的呢??
神经网络都是通过不断进行权重调整来获取最小误差。
所以感知机也是如此,
1.如果预测与实际相符,就不改变权重
2.如果预测为0,实际为1,提高权重
3.如果预测为1,实际为0,降低权重
权重的改变多少大小是通过学习率来控制的,一般而言,刚开始学习率大些,之后慢慢减小,为了是获得误差全局最小,而越过局部极小。
但单层感知机无法解决非线性问题,例如,异或问题。
所以就有多层感知机,也就是多层神经网络,通过隐藏层进行学习,将信息向前反馈到下一层,所以也叫做前馈网络(MLFF,Multi-Layer Forward Networks)
因为多层神经网络的计算能力大,所以需要更强大学习算法,所以引入了BP反向传播算法。
BP反向传播就是将传递到输出层的的误差反向逐层传递到隐藏层对隐藏层的权重进行修改,西瓜书上有很好的公式推导,可以去看看,这样做无需先确定输入输出关系,可以通过BP学习规则后进行确定。
本文参考西瓜书以及上课课件,由于是学习笔记作为复习用,所以本文涉及的几种神经网络为课件上的,其他的如果有需要可以去看西瓜书。
RBF是径向基函数,RBF网络是一种单隐层全连接的前馈神经瓦洛,用径向基函数作为隐藏层激活函数,输出层是对隐藏层输出的线性组合。
径向基有点类似于核函数,应该说就是核函数可以是欧氏距离单调函数,或者高斯,logistics等等。
概念上类似于KNN,预测值近似等于其他输入相近点,核函数不代表独立训练集,但是代表模式训练簇。
e.g. 上图中对于一个点的最好预测值,是通过线性相加RBF输出值乘以权重得到的。
RNN 循环神经网络适用于出现时间序列的数据,常见的是LSTM。
可以进行神经元自循环和反向连接。
自组织映射网络,是一种无监督网络,将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构,即将高位空间中相似的样本点映射到网络输出层中的临近神经元。
这样可以应用于聚类
P.S. 由于时间和篇幅的关系,这里并没有进行更深层次的讲解,很多很重要的知识点并没有涉及到,例如:梯度下降应用,激活函数等等,只是借着这篇来对今天所学内容进行回顾,并能给大家进行一个简单的浏览了解神经网络。
本文参考的两本书,各有千秋,以我理解,周老师的西瓜书内容更丰富,更细致些,而Michael 更偏向于思想的理解,希望大家看时,可以对比着来看,加深理解。
参考:1. 周志华《机器学习》
2. Michael《数据挖掘导论》