为何要钻研神经网络算法
- 神经网络是一种古老的算法,然而又是许多机器学习的首选技术。
- 咱们曾经有线性回归和逻辑回归算法了,为啥还要钻研神经网络算法呢?
咱们来看下蕴含足够多非线性项的逻辑回归问题。对于简单的机器学习问题,会含有上百个特色,就算咱们只看二次项,也会有十分多的项数;如果拓展到三次项,就更甭提了。这时计算是非常复杂的
接下来咱们看一下计算机视觉问题。退出咱们想通过机器学习训练分类器,看图像是不是汽车。在计算机看来,它看车门把手,实际上看到的是蕴含像素点亮度的数据矩阵,不能像人类那样间接看出门把手来。
所以咱们先提供两类图片,一类是各种图片,一类是其余货色,让计算机进行学习后,再输出图片,让他断定图片是不是汽车
这里要解决的数据也是十分多的,假如只有 50*50 个像素点,那么特征向量要蕴含所有像素点的亮度,也有 2500 维;要是用 rgb 三原色示意的话,就成了 7500 维。如果咱们依然想通过蕴含所有二次项或者三次项的假如函数解决问题的话,样本数据太大,计算成本太高(了解:神经网络就是把原始特色转化成了更高级更形象的特色)
- 为了解决这些数据量十分大(假如函数的参数十分多)的非线性回归,咱们引入了神经网络
神经网络的来生前世
- 人们想设计出模拟人类大脑的算法。开始,人们认为模拟仿佛要写上千个程序来做形形色色的事件(看、听、触觉);然而起初人们发现,大脑做那么多事件仿佛只须要一个繁多的算法。只管这只是一种假如,然而目前有相干的证据:
(1)神经重接试验。听觉皮层依附耳朵承受信号,传递到听觉皮层,做出反馈。神经学家将耳朵和听觉皮层的神经切断,而将眼睛连到听觉皮层上,发现能看到货色。
这表明,人类的脑组织能解决光、声、触觉等多种信号。所以咱们假如,存在一种算法,能同时解决这些信号,而不是运行各种不同的程序
神经网络模型的示意
- 咱们先看单个神经元:
单个神经元蕴含三局部,胞体负责计算,输出神经承受其余神经元的信息,输入神经则负责给其余神经元传递信号。神经元的工作就是,承受其余神经元信息,做一些计算,而后将后果传送到其余节点
- 接着咱们用一个简略的模型模拟神经元:
黄圈相似神经元,通过承受参数,计算输入一个相似逻辑回归的函数。值得注意的是,每层的神经网络都有一个偏置参数 0,这个参数恒为 1,能够画进去也能够不画进去;这个相似逻辑回归函数的函数称为激励函数,它与逻辑回归函数完全相同
- 下边来看神经网络:
神经网络就是许多神经元组合在一起的汇合。例如上图,有三个输出单元(每一层的参数 0 不算),一个暗藏层,暗藏层含有三个暗藏节点,一个输入节点。第一层称为输出层,输出特色;最初一层称为输入层,输入神经网络的最终计算结果。暗藏层可能有多个,咱们称为暗藏层,是因为咱们在最终的输入输出中,看不到暗藏层的输入输出(不是 x 不是 y)
- 神经网络的计算过程:
(1)a 示意激励,即一个神经元读入数据通过计算后,输入的值。a 的上标 j 示意第 j 层,a 的下标 i 示意第 i 个神经元
(2)神经网络每一层的参数通过矩阵示意,即参数矩阵示意从一层到另外一层的作用。如咱们有三个输出单元,三个暗藏单元,那么参数矩阵就是(3+1)* 3 维的矩阵. 这些参数又称为权重
(3)g 激励函数,与逻辑回归函数完全相同,将参数范畴固定在 0~1 间
如何高效计算,用向量化办法实现神经网络模型
前向流传算法:从输出层到最初一层计算出输入层的激励
- 神经网络模型先在输出层输出特色,而后一层层的计算暗藏单元的激励值,最初失去假如函数的输入。每个神经元的激励值,都是上一层的激励值(第一层则是特征值)和参数两两相乘,而后外边套一个激励函数失去
- 将过程向量化:
(1)将输出层用 n * 1 矩阵示意(不要忘了恒为 1 的参数 0),与输出层到暗藏层的参数矩阵相乘,外边套上激励函数失去暗藏层三个单元的激励值;
(2)而后退出参数 0,将暗藏层用矩阵示意,与暗藏层到输入层的参数矩阵相乘,外边套上激励函数失去输入值
- 比照逻辑回归:
咱们能够看出,前向流传算法(从暗藏层到输入层)的过程和逻辑回归算法很类似。只是逻辑回归输入输出层的值是原始特色,而前向流传算法则是经过训练学习的更形象的特色。这也进一步印证了神经网络将特色由原始向形象、高级加工的过程