机器学习笔记015 | 神经网络算法介绍
这一次的笔记是关于神经网络(Neural Networks)算法的。
1 为什么要学习神经网络算法
在有了线性回归和逻辑回归算法之后,我们已经能够解决绝大部分的问题了。
那为什么还需要学习神经网络算法呢?
例如有这样的数据:
如果需要拟合这样的数据,那就需要构造一些多项式,如:
然后得到这样的拟合结果:
但实际的情况是,特征数量很可能不仅仅只有两个,也许几百上千个,那么这样的情况下,构造的多项式有多少呢?
例如特征数量 n = 100,如果只是计算二次项的话,最终也有大约为 n2 / 2 也就是 5000 个。
三阶、四阶、五阶那就更不用说了。
随着特征数量n的增大,高阶多项式的项数,会以几何级数递增。
举个例子,对于汽车的观察,我们看到的和计算机看到的,是不一样的东西:
对于计算机而言,它看到的是这些像素的亮度数据所形成的矩阵。
一个像素100×100的照片,也才几KB,其特征数量就有 n = 104 , 光是二阶多项式的项数就有 5 × 107 如果通过构建高阶多项式的方式进行拟合,那运算量就太大了。
而对于神经网络算法,即使特征数量n很大,也可以轻松搞定。
2 神经网络算法
2.1 神经网络算法是什么
神经网络算法其实是尝试模拟人脑运作方式的算法。
对于人脑而言,不同的信息来源对应着不同的信息处理系统,而这些系统组合起来,就构成了我们的神经网络。
例如眼睛看到“神经网络”这几个字的形状,然后将它会转换成对应的电信号,再往下传递。
大脑皮层的某个处理的部位,将这些电信号转换成我们能够理解的语言信息,我们就“看见”了“神经网络”这几个字。
这里眼睛是信号的输入端,如果更换成舌头呢?
上面这个图片,就是通过一个BrainPort的系统,利用舌头来“看”世界,让失明的人也能看见事物。
2.2 神经网络算法模型
为了更好地理解,我们首先看一下这个神经元细胞的图片:
这里树突是信号的接收端,可以接收来自其他神经元细胞的信号;细胞体是信号的处理端;轴突是信号的输出端,可以转递到其他的神经元细胞。
神经网络算法,就是要模拟一个个神经元细胞,通过输入和输出的联接,构成神经网络。
例如我们之前的逻辑回归模型,可以看作一个神经元细胞:
那么多个这样的神经元细胞组合起来,就构成了复杂神经网络:
这样复杂的结合,就能够实现类似于高阶多项式想要实现的效果。
文章转载自公众号:止一之路