1.机器学习模型
上图展示了机器学习的基本模型, 我们先从最简单的线性回归来解释每个部分的基本概念。
公式如下
对图中每一个点来说
代价函数J为
为了简化起见,我们假设b=0。所有J是和W有关的函数,我们只需求
2.神经网络
2.1处理单元(processing element)
处理单元(PE)也叫神经元(neuron), 是神经网络中最小的单位上图展示了一个最简单的PE, 省略了偏置b。非线性方程也被称为激活函数。本例选取符号函数作为激活函数。若y等于-1,则判定为红色点, 若y等于1,则判定为蓝色点。 由分类图可以看出,我们只需要一个处理单元也就是一条直线就可以对红蓝色点进行分类。
2.2多层神经网络
如果我们想分离上图中三角形区域和其他区域,直觉上来说只需要含有三个PE的单层网络来分就够了。但是三个PE的单层网络只能分离出浅蓝色区域和其他,原因是对每个PE来说,直线下方表示-1,上方表示1。若要表示三角形区域,我们需要增加网络层数。
理论上来说,神经元越多,神经网络的层数越多,所能表示的区域就可以越复杂。大家可以想一想,怎样的网络结构能够表示这个面具,把黑白区分开来。
2.3 反向传播算法(Back Propagation algorithm)
基于W更新的公式,每次我们都需要知道计算值与目标值之间的差值e。当神经网络的层数增加后,我们只知道最后一层也就是输出层的e而不知道中间层的e。为了计算中间层的e来更新w,引入了基于链式求导法则的反向传播算法。y是整个网络的输出,net是x的线性组合,f是激活函数
3.总结
本文用平面内的二维数据作为例子,简要的讲述了一下神经网络的基本概念和作用。神经网络最主要的作用是当网络层数增加以后,可以表示任何空间,不论是二维,三维,四维或是图像的1080*1080的数据。Dr.Princepe的一句话我很喜欢"Everyone treats neural net as a black box, but it's not. It all depends on you"在模型构造前需要根据当前数据的分布来选取参数,盲目调参是不可取的。
顺带一提
网络初始化时w一般从0-1中随机选取一个作为初始参数,再根据w的迭代公式进行调整。
以后可能会写一写用原生的python实现一个简单的神经网络,有助于神经网络细节的理解。原生的python性能很差,现在基本都用tensorflow框架,用python调c++的库。