最近一直在看深度学习,作为一个新手,首先从神经网络开始入手,并开始理解神经网络中的基本原理,亲自动手通过python语言搭建了属于自己的简单的神经网络,用于识别mnist数据集中的图片(参照了 Rashid大神写的Make your own neutral network)。在接触神经网络之前觉得神经网络完全是一个黑盒子,我们像做乐高一样,接入神经网络中的每个层次就可以构建出属于自己的神经网络(利用tensorflow),通过自己手动搭建神经网络发现,里面蕴含了丰富的数学原理,非常有意思。
神经网络的基本思想
不知道是不是我接触神经网络时间过于少,但是就我目前的理解来看,神经网络的最简单的基本原理就是我们的一次多项式y=a×x ,所有复杂的神经网络就是我们找到一个输入,寻找输入与输出的关系,但是我们按照一定规律去查找就像二分法找找,我们反复去修正,最终总能得到系数a。以这个一次多项式为例,我们给定一个输入x1,我们随机给a一个值a1吧,x1就是我们输入神经网络中的输入,a1×x1就是我们这个神经网络得到的值即预测值,而x1实际对应的值是y1,当y1(实际值)比a1×x1(预测值)大的时候,我们要做的就是调整a变大,当y1(实际值)比a1×x1(预测值)小的时候,我们要做的就是调整a变小。到现在我们可以知道神经网络的一个基本思路就是数据从神经网络中输入,然后与实际的数据比较会产生误差,通过误差去调整系数的大小,然后我们换个说法,就是数据在神经网络中通过一定的方式正向传递流动,最终传递后的计算结果与实际值会产生一个误差,通过误差的大小反向去纠正神经网络中的各项系数,这就是我理解的神经网络。下面给出了一个具有三层网络架构的神经网络,在构建属于自己的神经第二部分,我会将上述讲到的原理,应用到这个三层神经网络中,然后深入剖析。