感知器
感知器
最初的感知器被设计成接受多个二进制输入,并产生一个二进制输出(0或1)。 p>
想法是使用不同的权重来表示每个输入的重要性,并且值的总和应该大于阈值 在做出决定之前的值,例如 true 或 false(0 或 1)。
感知器示例
想象一个感知器(在你的大脑中)。
感知器试图决定你是否应该去听音乐会。
画师好不好? 天气好吗?
这些事实应该有什么权重?
标准 | 输入 | 权重 |
---|---|---|
艺术家很好 | x1 = 0 或 1 | w1 = 0.7 |
天气很好 | x2 = 0 或 1 | w2 = 0.6 |
朋友会来 | x3 = 0 或 1 | w3 = 0.5 |
提供食物 | x4 = 0 或 1 | w4 = 0.3 |
提供酒精 | x5 = 0 或 1 | w5 = 0.4 |
感知器算法
Frank Rosenblatt 提出了这个算法:
- 设置阈值
- 将所有输入与其权重相乘
- 总结所有结果
- 激活输出
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)
在神经科学中,单神经元编码还是分布式编码对于理解大脑功能最相关存在争议。
很明显,像上面这样的决定不是由一个神经元单独做出的。
至少必须有其他神经元决定艺术家好不好,天气好不好......
神经网络
感知器定义了进入神经网络的第一步。
感知器是一个单层神经网络。
神经网络是一个多层感知器。