感知机是什么?- 一个人工智能系统的概念解释

释放双眼,带上耳机,听听看~!
本文解释了感知机系统的原始定义和现代简化版本,以及使用JavaScript编写的Perceptron类来展示如何训练和预测输入数据的类别。

感知机是什么?

由几代科学家思想精华积累,最终由Frank Rosenblatt发扬光大的一个计算机系统的概念。

简述原始的定义可以概括为:

一个像人脑一样通过多方面的学习认知的计算机,这个系统不是依靠通过事先编程的确定规则,而是依靠概率统计的方法,通过分析大量数据得到的统计结果来确保程序的可靠性。以这种方式运作的系统被称为”感知机系统”

简单举例来讲,一个关于判断一张图片是不是猫的Perceptron猫系统,就是通过分析训练有关于猫的大量的图片数据,从而可以在输入一张新的图片时,Perceptron猫系统程序会告知你这张图片是不是一个猫(输出分成两类: 是猫 1 或不是猫 0)

现代简化版本概念

Perceptron算法的核心思想是使用一个线性函数,将输入数据映射到一个输出值,然后使用一个阈值函数将该输出值转换为 1 或 0。在学习过程中,Perceptron会自动调整其权重和阈值核心步骤,以便正确分类输入数据。

如下图所示

感知机是什么?- 一个人工智能系统的概念解释

其表示的Perceptron系统含义可以理解为:

x1输入值对应的权重为w1

x2输入值对应的权重为w2

当 x1 * w1 + x2 * w2 小于等于阈值(threshold)时Perceptron系统输出 0

当 x1 * w1 + x2 * w2 大于阈值(threshold)时Perceptron系统输出 1

结合具体的与门系统例子说明,与门系统是一个如下描述的系统

与门系统的的输入只能是0或1,输出是0,1,有两个输入值即 x1 ,x2,如果两个输入都是1,则输出为1,否则都输出0,即下图所示

感知机是什么?- 一个人工智能系统的概念解释

那么对应的权重值 w1, w2,阈值z可以是 (1,1,1)或其他任意满足以上系统规定的值

这是通过人类大脑思考得到的权重以及阈值,怎么通过程序去实现自动找到准确的阈值和权重值呢?

首先,我们将使用JavaScript编写一个Perceptron类,该类将具有以下方法:

  • constructor:用于随机初始化权重和阈值
  • train:用于训练Perceptron,调整其权重和阈值以得到正确的输出值
  • guess:用于预测输入数据的类别
class Perceptron {
  constructor(numInputs) {
    this.weights = new Array(numInputs);
    for (let i = 0; i < numInputs; i++) {
      // 随机初始化 x1 x2权重值
      this.weights[i] = Math.random() * 2 - 1;
    }
    // 随机初始化阈值 z
    this.threshold = Math.random() * 2 - 1;
  }

  train(inputs, target) {
    let guess = this.guess(inputs);
    let error = target - guess;
    for (let i = 0; i < this.weights.length; i++) {
      // 矫正权重值
      this.weights[i] += error * inputs[i];
    }
    // 矫正阈值
    this.threshold += error;
  }

  guess(inputs) {
    let sum = 0;
    for (let i = 0; i < this.weights.length; i++) {
      sum += inputs[i] * this.weights[i];
    }
    return sum > this.threshold ? 1 : 0;
  }
}

如果我们不训练,直接推断

let andPerceptron = new Perceptron(2);
andPerceptron.train([1, 1]); // 返回0 不是我们想要的结果

经过10000次训练,很容易自动推断出正确的权重值以及阈值

let andPerceptron = new Perceptron(2);

// 训练AND门
for (let i = 0; i < 10000; i++) {
  // 四种情况正确的数据推断
  andPerceptron.train([0, 0], 0);
  andPerceptron.train([0, 1], 0);
  andPerceptron.train([1, 0], 0);
  andPerceptron.train([1, 1], 1);
}
// 测试AND门
console.log(andPerceptron.guess([0, 0])); // 0
console.log(andPerceptron.guess([0, 1])); // 0
console.log(andPerceptron.guess([1, 0])); // 0
console.log(andPerceptron.guess([1, 1])); // 1

距离创造自己的chatgat迈出了第一步,也是最重要的一步,欢迎点赞收藏

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

ChatGPT应用探索:从嵌入式医疗问答机器人到Linux服务器操作

2023-12-18 1:51:14

AI教程

基于深度学习的高精度汽车自行车检测识别系统

2023-12-18 3:51:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索