机器学习——MP神经元 McCulloch and Pitts neuron | 感知机网络 Perceptron network | 感知机算法 Perceptron Learning Algori
参考文章:
一看就懂的感知机算法PLA(基础概念)
感知机 PLA(Perceptron Learning Algorithm)(加深理解)
McCulloch and Pitts 神经元
基本原理如下图:
由McCulloch和Pitts于1943年发表,简单模拟了神经元的反应流程,包括:
- 多个带有权重的输入,相当于「突触」
- 是输入值,表示外界的刺激。
- 表示权重,表示刺激的不同强度。
- 一个转换函数,相当于「汇聚电信号的细胞膜」
- 也就是对所有带权重的输入进行简单的求和,将多个值合并为1个值。
- 一个阈值(threshold),也称**函数,决定了外界刺激要达到什么程度神经元才会被**
- 当刺激大于阈值时,神经被**;否则没有。
根据以上信息我们可以得到一个基本的神经元表示:
由线性相加和阈值比较两个过程组成,最后根据比较结果将样本划分为正负两类。
感知机网络 Perceptron network
感知机网络是由多个相互独立的MP神经元组成(对于每个神经元,只有输入值是相同的,其他都不同,包括输入值对应的各个权重)
- 因此权值变为,表示输入的索引,表示神经元的索引
- 因为感知机有多个神经元,所以我们也将得到相同数量的输出,比如5个神经元输出集合。
- 因为是监督学习,我们还有一个正确的结果集,两者比较就能够发现出错的神经元(这里是出错)。
- 对于出错的神经元,我们需要改变它的权重(也就是算法学习的过程),先给出完整公式
- 首先我们要找到要修改的权重:通过对比输出集和正确的结果集(步骤2&3),找到出错的神经元后,就能知道该神经元的所有权重都需要修改。
- 然后要判断该权重应该增大还是减小:通过「输出值」减去「正确值」,将得到。当结果为时,说明输出太大,要减小;反之要增大。此时
- 但我们还要决定权重每次变化的程度,于是引入一个新的系数,表示学习速率(learning rate)。于是公式变成
- 现在还有一个问题:并非所有的输入值都是正数。在步骤42中,我们希望通过使权值减小,进而使该神经元中的每个都减小。但假如输入中存在负数,那么当权值减小时,反而会增大。因此考虑了的符号后,得到最终公式。这样还有一个好处就是,不同的权重的变化程度都与对应的输入有关。
- 学习速率是手动输入的,建议取值范围是<0.1,0.4>,太高会导致每当有错误的适合都进行太大的改变,导致感知机网络始终无法稳定下来;而数值太低,则会延长计算时间。
- 在感知机网络学习正确模型的过程中,除了考虑修改权重,我们还需要考虑修改阈值。即,当所有输入都是0的时候,我们只能通过阈值的变化来改变分类结果
- 在最开始的神经元的表达式中,将「线性求和」和「阈值比较」合并,得到其中的公式部分
- 可将视为,而对应的则被固定为(实际上可以是任何非0的值,但一旦确定就不能改变,-1可能是最常见的取值)。也被称为偏移节点(bias node)或偏移输入。
感知机学习算法 Perceptron Learning Algorithm
-
初始化所有权重为较小的随机数(包括正负)
-
训练 Training
- 进行T次迭代,或者直到所有输出都正确
- 对于每一个输入向量(输入值)
-
计算每一个神经元的输出值的
-
更新每一个错误的权重值w_{ij}$
-
- 对于每一个输入向量(输入值)
- 进行T次迭代,或者直到所有输出都正确