IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 二、感知机 -> 正文阅读

[人工智能]二、感知机

(1)
"""
感知机是什么?感知机接受多个输入信号,输出一个信号。感知机的多个输入信号都有各自固有的权重,这些权重发挥着各个信号的重要性作用。
也即权重越大,对应该权重的信号的重要性就越高。
如下例子:x1,x2是输入信号,y是输出信号,w1、w2是权重,当输人信号被送往神经元时,会被分别乘以固定权重(w1*x1,w2*x2)。
神经元会计算传送过来的信号总和,只有当这个总和超过了某个界限值时,才会输出1.此处将这个界限值称为阈值,用theta表示。

"""

"""
感知机的运行原理用数学式表示如下:

y={0,1}
(w1*x1+w2*x2<=theta时,y=0)
(w1*x1+w2*x2>theta时,y=1)
"""

#简单逻辑电路
"""
与门(And gate):是有两个输入和一个输出的门电路。与门仅在两个输入值均为1时输出1,其他时候则输出0。
真值表如下:
x1  x2   y
0   0    0
1   0    0
0   1    0
1   1    1
"""

"""
与非门(Not AND Gate):颠倒了与门的输出,用真值表表示,仅当x1和x2同时为1时输出0,其他时候输出1.
x1   x2   y
0    0    1
1    0    1
0    1    1
1    1    0
"""

"""
或门:只要有一个输入信号为1,输出就为1的逻辑电路
x1   x2   y
0    0    0
1    0    1
0    1    1
1    1    1
"""
#这里决定感知机参数并不是计算机,而是我们人。我们看着真值表这种“训练数据”,人工想到了参数的值。而机器学习的课题就是将
#这个决定参数值的工作交由计算机自动进行。"学习"是确定合适的参数的过程,而人要做的就是思考感知机的构造(模型),并把训练数据交给计算机。
#感知机的简单实现:现在使用Python来实现刚才的逻辑电路,此处先定义一个接收参数x1和x2的AND函数
def AND(x1,x2):
    w1,w2,theta=0.5,0.5,0.7
    tmp=x1*w1+x2*w2
    if tmp<=theta:
        return 0
    elif tmp>theta:
        return 1
#在函数内初始化参数w1,w2,theta,当输入的加权总和超过阈值时返回1,否则返回0,打印输出结果,实现了与门。
print(AND(0,0))#0
print(AND(0,1))#0
print(AND(1,0))#0
print(AND(1,1))#1

(2)导入权重和偏置

#2.导入权重和偏置
"""
刚才的与门实现比较直接、容易理解,此处我们将其修改为另外一种实现方式;先将上式的theta换为:-b,

y={0,1}
(b+w1*x1+w2*x2<=0时,y=0)
(b+w1*x1+w2*x2>0时,y=1)
此处b成为偏置,w1和w2称为权重,感知机会计算输入信号和权重的乘积,然后加上偏置,如果这个值大于0则输出1,否则输出0.
"""
import numpy as np
x=np.array([0,1])#输入
w=np.array([0.5,0.5])#权重
b=-0.7 #偏置

print(w*x)#[0,0.5]
print(np.sum(w*x))#计算相乘后各个元素的总和
print(np.sum(w*x)+b)#结果再加上偏置#-0.19999999999999996

#使用权重和偏置可以如下面所示实现与门
def AND(x1,x2):
    x=np.array([0,1])
    w=np.array([0.5,0.5])
    b=-0.7
    tmp=np.sum(w*x)+b
    if tmp<=0:
        return 0
    else:
        return 1

#注意:偏置b和权重w1、和w2的作用不同。具体来说。w1和w2是控制输入信号的重要性的参数,而偏置b是调整神经元被激活的容易程度的参数。

#接着实现非门
def NAND(x1,x2):
    x=np.array([x1,x2])
    w=np.array([-0.5,-0.5])#仅权重和偏置与AND不同!
    b=0.7
    tmp=np.sum(w*x)+b
    if tmp<=0:
        return 0
    else:
        return 1

#实现或门
def OR(x1,x2):
    x=np.array([x1,x2])
    w=np.array([0.5,0.5])#仅权重和偏置与AND不同!
    b=-0.2
    tmp=np.sum(w*x)+b
    if tmp<=0:
        return 0
    else:
        return 1



"""
异或门:也被称为逻辑异或电路。仅当x1或者x2中的一方为1时,才会输出1("异或"是拒绝其他的意思)
x1   x2   y
0    0    0
1    0    1
0    1    1
1    1    0

事实上用前面介绍的感知机是无法实现这个异或门的。
"""

?

?

?感知机的局限性就在于它只能表示由一条直线分割的空间。上图这样弯曲的曲线无法用感知机表示。上图这样的曲线分割而成的空间称为非线性空间,由直线分割而成的空间称为线性空间。

?

?多层感知机不能直接表示异或门有点遗憾,严格来说,应该是“单层感知无法分离非线性空间”。但实际上感知机的绝妙之处在于它可以“叠加层”(通过叠加层来表示异或门)。

?

?

#异或门的实现
def XOR(x1, x2):
 s1 = NAND(x1, x2)
 s2 = OR(x1, x2)
 y = AND(s1, s2)
 return y
#这个XOR函数会输出预期的结果。
XOR(0, 0) # 输出0
XOR(1, 0) # 输出1
XOR(0, 1) # 输出1
XOR(1, 1) # 输出0

?用感知机表示异或门:异或门是一种多层结构的神经网络。这里,将最左边的 一列称为第0层,中间的一列称为第1层,最右边的一列称为第2层。

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:27:05  更:2021-12-04 13:28:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/19 20:39:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码