感知器

感知器

最初的感知器被设计成接受多个二进制输入,并产生一个二进制输出(0或1)。

想法是使用不同的权重来表示每个输入的重要性,并且值的总和应该大于阈值 在做出决定之前的值,例如 truefalse(0 或 1)。

感知器



感知器示例

想象一个感知器(在你的大脑中)。

感知器试图决定你是否应该去听音乐会。

画师好不好? 天气好吗?

这些事实应该有什么权重?

标准输入权重
艺术家很好x1 = 0 或 1w1 = 0.7
天气很好x2 = 0 或 1w2 = 0.6
朋友会来x3 = 0 或 1w3 = 0.5
提供食物x4 = 0 或 1w4 = 0.3
提供酒精x5 = 0 或 1w5 = 0.4

感知器算法

Frank Rosenblatt 提出了这个算法:

  1. 设置阈值
  2. 将所有输入与其权重相乘
  3. 总结所有结果
  4. 激活输出

1. 设置阈值

  • 阈值 = 1.5

2. 将所有输入与其权重相乘

  • x1 * w1 = 1 * 0.7 = 0.7
  • x2 * w2 = 0 * 0.6 = 0
  • x3 * w3 = 1 * 0.5 = 0.5
  • x4 * w4 = 0 * 0.3 = 0
  • x5 * w5 = 1 * 0.4 = 0.4

3. 将所有结果相加

  • 0.7 + 0 + 0.5 + 0 + 0.4 = 1.6(加权和)

4. 激活输出

  • 如果总和 > 1.5 ("是的,我会去音乐会"),则返回 true

如果您的阈值是 1.5,那么对于其他人来说可能会有所不同。

实例

const treshold = 1.5;
const inputs = [1, 0, 1, 0, 1];
const weights = [0.7, 0.6, 0.5, 0.3, 0.4];

let sum = 0;
for (let i = 0; i < inputs.length; i++) {
  sum += inputs[i] * weights[i];
}

const activate = (sum > 1.5);

亲自试一试 »


感知器术语

  • 感知器输入
  • 节点值
  • 节点权重
  • 激活函数

感知器输入

感知器输入称为节点。

节点既有值又有权重。


节点值

在上面的示例中,节点值为: 1, 0, 1, 0, 1


节点权重

权重显示每个节点的强度。

在上面的示例中,节点权重为:0.7, 0.6, 0.5, 0.3, 0.4


激活函数

激活函数将结果(加权和)映射为所需的值,例如 0 或 1。

二进制输出(0 或 1)可以解释为(否或是)或(假或真)。

在上面的例子中,激活函数很简单: (sum > 1.5)

神经科学中,单神经元编码还是分布式编码对于理解大脑功能最相关存在争议。

很明显,像上面这样的决定不是由一个神经元单独做出的。

至少必须有其他神经元决定艺术家好不好,天气好不好......

神经网络

感知器定义了进入神经网络的第一步。

感知器是一个单层神经网络

神经网络是一个多层感知器