思维学普遍认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。
神经元就是一个很形象的人脑结构,
人工神经网络
就是模拟人思维的第二种方式。很多伟大的算法都出自于自然世界,如蚁群算法。所以上帝是世上最伟大的艺术家。而抽象思维个人觉得还是很神奇的东西,不过终会有一天我们能参透其中的秘密,灵感就不说了,根本无法描述,哈哈。这些都需要值得探索的方向,就像andrew说的,AI的世界很神奇,值得我们去探索,再赞同不过。
上图数神经网络的模型图(像神经元上的树突和轴突吗?哈哈)。首先先来说说bp神经网络和一般的多重参数logistic regression的区别。其实我觉得这两者是差不多的东西,只不过是计算模型上的差别。因为可以看到其实这两者的所有基本公司都是一样的。
上图是多项式公式
上图是cost function。都是和普通logistic regression是一致的。(这里的K是训练结果离散值的个数,比如你要通过ml识别英文字母,那这里的K自然是26 )。
(特别要注意的是,这里计算的时候cost要加上bias列,而Regularized的部分是不包括bias的,我的做法是theta1 = Theta1; theta1(:,1) = 0; theta2 = Theta2; theta2(:,1) = 0;)
以上便是神经网络模型的正向传递。andrew老师的assignment中是给出了Theta的,所以我们训练出的结果是比较准确的。而实际上一开始我们需要随机初始化Theta(i),然后通过BP的逆向调整获取最终的Theta。
Backpropagation:
BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的
误差平方和
最小。
其实我觉得BP算法最难理解就是如何算出gradient for the neural network cost function。首先来看看logistic regression的gradient方程
然后计算bp的gradient。
(1)计算最后一个layer的误差值。
(2)计算前一层layer的delta。
(3)计算gradient。
由此可知其实gradient是完全一致的,只不过bp的gradient是分了多层,一步步调整的,而logistic regression只有一层。
当然
传统的BP算法其收敛速度慢且容易陷入局部极小,所以有人利用高斯消元法来改进bp。有空的话我也去学习学习。